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