]> git.proxmox.com Git - ceph.git/blame - ceph/qa/workunits/mon/crush_ops.sh
bump version to 18.2.2-pve1
[ceph.git] / ceph / qa / workunits / mon / crush_ops.sh
CommitLineData
11fdf7f2 1#!/usr/bin/env bash
7c673cae 2
11fdf7f2 3set -ex
7c673cae
FG
4
5function expect_false()
6{
7 set -x
8 if "$@"; then return 1; else return 0; fi
9}
10
11ceph osd crush dump
12
13# rules
14ceph osd crush rule dump
15ceph osd crush rule ls
16ceph osd crush rule list
17
18ceph osd crush rule create-simple foo default host
19ceph osd crush rule create-simple foo default host
20ceph osd crush rule create-simple bar default host
21
d2e6a577 22ceph osd crush rm-device-class all
224ce89b
WB
23ceph osd crush set-device-class ssd osd.0
24ceph osd crush set-device-class hdd osd.1
25ceph osd crush rule create-replicated foo-ssd default host ssd
26ceph osd crush rule create-replicated foo-hdd default host hdd
b5b8bbf5
FG
27ceph osd crush rule ls-by-class ssd | grep 'foo-ssd'
28ceph osd crush rule ls-by-class ssd | expect_false grep 'foo-hdd'
29ceph osd crush rule ls-by-class hdd | grep 'foo-hdd'
30ceph osd crush rule ls-by-class hdd | expect_false grep 'foo-ssd'
224ce89b
WB
31
32ceph osd erasure-code-profile set ec-foo-ssd crush-device-class=ssd m=2 k=2
33ceph osd pool create ec-foo 2 erasure ec-foo-ssd
34ceph osd pool rm ec-foo ec-foo --yes-i-really-really-mean-it
35
7c673cae
FG
36ceph osd crush rule ls | grep foo
37
b5b8bbf5 38ceph osd crush rule rename foo foo-asdf
181888fb 39ceph osd crush rule rename foo foo-asdf # idempotent
b5b8bbf5
FG
40ceph osd crush rule rename bar bar-asdf
41ceph osd crush rule ls | grep 'foo-asdf'
42ceph osd crush rule ls | grep 'bar-asdf'
43ceph osd crush rule rm foo 2>&1 | grep 'does not exist'
44ceph osd crush rule rm bar 2>&1 | grep 'does not exist'
45ceph osd crush rule rename foo-asdf foo
181888fb 46ceph osd crush rule rename foo-asdf foo # idempotent
b5b8bbf5
FG
47ceph osd crush rule rename bar-asdf bar
48ceph osd crush rule ls | expect_false grep 'foo-asdf'
49ceph osd crush rule ls | expect_false grep 'bar-asdf'
7c673cae
FG
50ceph osd crush rule rm foo
51ceph osd crush rule rm foo # idempotent
52ceph osd crush rule rm bar
53
54# can't delete in-use rules, tho:
c07f9fc5 55ceph osd pool create pinning_pool 1
31f18b77 56expect_false ceph osd crush rule rm replicated_rule
c07f9fc5 57ceph osd pool rm pinning_pool pinning_pool --yes-i-really-really-mean-it
7c673cae
FG
58
59# build a simple map
60expect_false ceph osd crush add-bucket foo osd
61ceph osd crush add-bucket foo root
62o1=`ceph osd create`
63o2=`ceph osd create`
64ceph osd crush add $o1 1 host=host1 root=foo
65ceph osd crush add $o1 1 host=host1 root=foo # idemptoent
66ceph osd crush add $o2 1 host=host2 root=foo
67ceph osd crush add $o2 1 host=host2 root=foo # idempotent
68ceph osd crush add-bucket bar root
69ceph osd crush add-bucket bar root # idempotent
70ceph osd crush link host1 root=bar
71ceph osd crush link host1 root=bar # idempotent
72ceph osd crush link host2 root=bar
73ceph osd crush link host2 root=bar # idempotent
74
75ceph osd tree | grep -c osd.$o1 | grep -q 2
76ceph osd tree | grep -c host1 | grep -q 2
77ceph osd tree | grep -c osd.$o2 | grep -q 2
78ceph osd tree | grep -c host2 | grep -q 2
79expect_false ceph osd crush rm host1 foo # not empty
80ceph osd crush unlink host1 foo
81ceph osd crush unlink host1 foo
82ceph osd tree | grep -c host1 | grep -q 1
83
84expect_false ceph osd crush rm foo # not empty
85expect_false ceph osd crush rm bar # not empty
86ceph osd crush unlink host1 bar
87ceph osd tree | grep -c host1 | grep -q 1 # now an orphan
88ceph osd crush rm osd.$o1 host1
89ceph osd crush rm host1
90ceph osd tree | grep -c host1 | grep -q 0
11fdf7f2
TL
91expect_false ceph osd tree-from host1
92ceph osd tree-from host2
93expect_false ceph osd tree-from osd.$o2
7c673cae
FG
94
95expect_false ceph osd crush rm bar # not empty
96ceph osd crush unlink host2
97
11fdf7f2
TL
98ceph osd crush add-bucket host-for-test host root=root-for-test rack=rack-for-test
99ceph osd tree | grep host-for-test
100ceph osd tree | grep rack-for-test
101ceph osd tree | grep root-for-test
102ceph osd crush rm host-for-test
103ceph osd crush rm rack-for-test
104ceph osd crush rm root-for-test
105
7c673cae
FG
106# reference foo and bar with a rule
107ceph osd crush rule create-simple foo-rule foo host firstn
108expect_false ceph osd crush rm foo
109ceph osd crush rule rm foo-rule
110
111ceph osd crush rm bar
112ceph osd crush rm foo
113ceph osd crush rm osd.$o2 host2
114ceph osd crush rm host2
115
116ceph osd crush add-bucket foo host
117ceph osd crush move foo root=default rack=localrack
118
119ceph osd crush create-or-move osd.$o1 1.0 root=default
120ceph osd crush move osd.$o1 host=foo
121ceph osd find osd.$o1 | grep host | grep foo
122
123ceph osd crush rm osd.$o1
124ceph osd crush rm osd.$o2
125
126ceph osd crush rm foo
127
128# test reweight
129o3=`ceph osd create`
130ceph osd crush add $o3 123 root=default
131ceph osd tree | grep osd.$o3 | grep 123
132ceph osd crush reweight osd.$o3 113
224ce89b 133expect_false ceph osd crush reweight osd.$o3 123456
7c673cae
FG
134ceph osd tree | grep osd.$o3 | grep 113
135ceph osd crush rm osd.$o3
136ceph osd rm osd.$o3
137
138# test reweight-subtree
139o4=`ceph osd create`
140o5=`ceph osd create`
141ceph osd crush add $o4 123 root=default host=foobaz
142ceph osd crush add $o5 123 root=default host=foobaz
143ceph osd tree | grep osd.$o4 | grep 123
144ceph osd tree | grep osd.$o5 | grep 123
145ceph osd crush reweight-subtree foobaz 155
224ce89b 146expect_false ceph osd crush reweight-subtree foobaz 123456
7c673cae
FG
147ceph osd tree | grep osd.$o4 | grep 155
148ceph osd tree | grep osd.$o5 | grep 155
149ceph osd crush rm osd.$o4
150ceph osd crush rm osd.$o5
151ceph osd rm osd.$o4
152ceph osd rm osd.$o5
153
c07f9fc5
FG
154# weight sets
155# make sure we require luminous before testing weight-sets
156ceph osd set-require-min-compat-client luminous
157ceph osd crush weight-set dump
158ceph osd crush weight-set ls
159expect_false ceph osd crush weight-set reweight fooset osd.0 .9
160ceph osd pool create fooset 8
161ceph osd pool create barset 8
162ceph osd pool set barset size 3
163expect_false ceph osd crush weight-set reweight fooset osd.0 .9
164ceph osd crush weight-set create fooset flat
165ceph osd crush weight-set create barset positional
166ceph osd crush weight-set ls | grep fooset
167ceph osd crush weight-set ls | grep barset
168ceph osd crush weight-set dump
169ceph osd crush weight-set reweight fooset osd.0 .9
170expect_false ceph osd crush weight-set reweight fooset osd.0 .9 .9
171expect_false ceph osd crush weight-set reweight barset osd.0 .9
172ceph osd crush weight-set reweight barset osd.0 .9 .9 .9
173ceph osd crush weight-set ls | grep -c fooset | grep -q 1
174ceph osd crush weight-set rm fooset
175ceph osd crush weight-set ls | grep -c fooset | grep -q 0
176ceph osd crush weight-set ls | grep barset
177ceph osd crush weight-set rm barset
178ceph osd crush weight-set ls | grep -c barset | grep -q 0
179ceph osd crush weight-set create-compat
180ceph osd crush weight-set ls | grep '(compat)'
181ceph osd crush weight-set rm-compat
182
35e4c445
FG
183# weight set vs device classes
184ceph osd pool create cool 2
185ceph osd pool create cold 2
186ceph osd pool set cold size 2
187ceph osd crush weight-set create-compat
188ceph osd crush weight-set create cool flat
189ceph osd crush weight-set create cold positional
190ceph osd crush rm-device-class osd.0
191ceph osd crush weight-set reweight-compat osd.0 10.5
192ceph osd crush weight-set reweight cool osd.0 11.5
193ceph osd crush weight-set reweight cold osd.0 12.5 12.4
194ceph osd crush set-device-class fish osd.0
195ceph osd crush tree --show-shadow | grep osd\\.0 | grep fish | grep 10\\.
196ceph osd crush tree --show-shadow | grep osd\\.0 | grep fish | grep 11\\.
197ceph osd crush tree --show-shadow | grep osd\\.0 | grep fish | grep 12\\.
198ceph osd crush rm-device-class osd.0
199ceph osd crush set-device-class globster osd.0
200ceph osd crush tree --show-shadow | grep osd\\.0 | grep globster | grep 10\\.
201ceph osd crush tree --show-shadow | grep osd\\.0 | grep globster | grep 11\\.
202ceph osd crush tree --show-shadow | grep osd\\.0 | grep globster | grep 12\\.
203ceph osd crush weight-set reweight-compat osd.0 7.5
204ceph osd crush weight-set reweight cool osd.0 8.5
205ceph osd crush weight-set reweight cold osd.0 6.5 6.6
206ceph osd crush tree --show-shadow | grep osd\\.0 | grep globster | grep 7\\.
207ceph osd crush tree --show-shadow | grep osd\\.0 | grep globster | grep 8\\.
208ceph osd crush tree --show-shadow | grep osd\\.0 | grep globster | grep 6\\.
209ceph osd crush rm-device-class osd.0
210ceph osd pool rm cool cool --yes-i-really-really-mean-it
211ceph osd pool rm cold cold --yes-i-really-really-mean-it
212ceph osd crush weight-set rm-compat
213
28e407b8
AA
214# weight set vs device classes vs move
215ceph osd crush weight-set create-compat
216ceph osd crush add-bucket fooo host
217ceph osd crush move fooo root=default
218ceph osd crush add-bucket barr rack
219ceph osd crush move barr root=default
220ceph osd crush move fooo rack=barr
221ceph osd crush rm fooo
222ceph osd crush rm barr
223ceph osd crush weight-set rm-compat
224
11fdf7f2
TL
225# this sequence would crash at one point
226ceph osd crush weight-set create-compat
227ceph osd crush add-bucket r1 rack root=default
228for f in `seq 1 32`; do
229 ceph osd crush add-bucket h$f host rack=r1
230done
231for f in `seq 1 32`; do
232 ceph osd crush rm h$f
233done
234ceph osd crush rm r1
235ceph osd crush weight-set rm-compat
236
7c673cae 237echo OK