]> git.proxmox.com Git - ceph.git/blob - ceph/qa/workunits/rbd/rbd_groups.sh
2c9fd318f3c1db25196a2b4f307663db2f5224d8
[ceph.git] / ceph / qa / workunits / rbd / rbd_groups.sh
1 #!/bin/sh -ex
2
3 #
4 # rbd_consistency_groups.sh - test consistency groups cli commands
5 #
6
7 #
8 # Functions
9 #
10
11 create_group()
12 {
13 local group_name=$1
14
15 rbd group create $group_name
16 }
17
18 list_groups()
19 {
20 rbd group list
21 }
22
23 check_group_exists()
24 {
25 local group_name=$1
26 list_groups | grep $group_name
27 }
28
29 remove_group()
30 {
31 local group_name=$1
32
33 rbd group remove $group_name
34 }
35
36 rename_group()
37 {
38 local src_name=$1
39 local dest_name=$2
40
41 rbd group rename $src_name $dest_name
42 }
43
44 check_group_does_not_exist()
45 {
46 local group_name=$1
47 for v in $(list_groups); do
48 if [ "$v" == "$group_name" ]; then
49 return 1
50 fi
51 done
52 return 0
53 }
54
55 create_image()
56 {
57 local image_name=$1
58 rbd create --size 10M $image_name
59 }
60
61 remove_image()
62 {
63 local image_name=$1
64 rbd remove $image_name
65 }
66
67 add_image_to_group()
68 {
69 local image_name=$1
70 local group_name=$2
71 rbd group image add $group_name $image_name
72 }
73
74 remove_image_from_group()
75 {
76 local image_name=$1
77 local group_name=$2
78 rbd group image remove $group_name $image_name
79 }
80
81 check_image_in_group()
82 {
83 local image_name=$1
84 local group_name=$2
85 for v in $(rbd group image list $group_name); do
86 local vtrimmed=${v#*/}
87 if [ "$vtrimmed" = "$image_name" ]; then
88 return 0
89 fi
90 done
91 return 1
92 }
93
94 check_image_not_in_group()
95 {
96 local image_name=$1
97 local group_name=$2
98 for v in $(rbd group image list $group_name); do
99 local vtrimmed=${v#*/}
100 if [ "$vtrimmed" = "$image_name" ]; then
101 return 1
102 fi
103 done
104 return 0
105 }
106
107 create_snapshot()
108 {
109 local group_name=$1
110 local snap_name=$2
111 rbd group snap create $group_name@$snap_name
112 }
113
114 remove_snapshot()
115 {
116 local group_name=$1
117 local snap_name=$2
118 rbd group snap remove $group_name@$snap_name
119 }
120
121 rename_snapshot()
122 {
123 local group_name=$1
124 local snap_name=$2
125 local new_snap_name=$3
126 rbd group snap rename $group_name@$snap_name $new_snap_name
127 }
128
129 list_snapshots()
130 {
131 local group_name=$1
132 rbd group snap list $group_name
133 }
134
135 rollback_snapshot()
136 {
137 local group_name=$1
138 local snap_name=$2
139 rbd group snap rollback $group_name@$snap_name
140 }
141
142 check_snapshot_in_group()
143 {
144 local group_name=$1
145 local snap_name=$2
146 list_snapshots $group_name | grep $snap_name
147 }
148
149 check_snapshot_not_in_group()
150 {
151 local group_name=$1
152 local snap_name=$2
153 for v in $(list_snapshots $group_name | awk '{print $1}'); do
154 if [ "$v" = "$snap_name" ]; then
155 return 1
156 fi
157 done
158 return 0
159 }
160
161 echo "TEST: create remove consistency group"
162 group="test_consistency_group"
163 new_group="test_new_consistency_group"
164 create_group $group
165 check_group_exists $group
166 rename_group $group $new_group
167 check_group_exists $new_group
168 remove_group $new_group
169 check_group_does_not_exist $new_group
170 echo "PASSED"
171
172 echo "TEST: add remove images to consistency group"
173 image="test_image"
174 group="test_consistency_group"
175 create_image $image
176 create_group $group
177 add_image_to_group $image $group
178 check_image_in_group $image $group
179 remove_image_from_group $image $group
180 check_image_not_in_group $image $group
181 remove_group $group
182 remove_image $image
183 echo "PASSED"
184
185 echo "TEST: create remove snapshots of consistency group"
186 image="test_image"
187 group="test_consistency_group"
188 snap="group_snap"
189 new_snap="new_group_snap"
190 sec_snap="group_snap2"
191 create_image $image
192 create_group $group
193 add_image_to_group $image $group
194 create_snapshot $group $snap
195 check_snapshot_in_group $group $snap
196 rename_snapshot $group $snap $new_snap
197 check_snapshot_not_in_group $group $snap
198 create_snapshot $group $sec_snap
199 check_snapshot_in_group $group $sec_snap
200 rollback_snapshot $group $new_snap
201 remove_snapshot $group $new_snap
202 check_snapshot_not_in_group $group $new_snap
203 remove_snapshot $group $sec_snap
204 check_snapshot_not_in_group $group $sec_snap
205 remove_group $group
206 remove_image $image
207 echo "PASSED"
208
209 echo "OK"