]> git.proxmox.com Git - ceph.git/blame - ceph/qa/workunits/mon/crush_ops.sh
update sources to v12.1.3
[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
29
30ceph osd erasure-code-profile set ec-foo-ssd crush-device-class=ssd m=2 k=2
31ceph osd pool create ec-foo 2 erasure ec-foo-ssd
32ceph osd pool rm ec-foo ec-foo --yes-i-really-really-mean-it
33
7c673cae
FG
34ceph osd crush rule ls | grep foo
35
36ceph osd crush rule rm foo
37ceph osd crush rule rm foo # idempotent
38ceph osd crush rule rm bar
39
40# can't delete in-use rules, tho:
c07f9fc5 41ceph osd pool create pinning_pool 1
31f18b77 42expect_false ceph osd crush rule rm replicated_rule
c07f9fc5 43ceph osd pool rm pinning_pool pinning_pool --yes-i-really-really-mean-it
7c673cae
FG
44
45# build a simple map
46expect_false ceph osd crush add-bucket foo osd
47ceph osd crush add-bucket foo root
48o1=`ceph osd create`
49o2=`ceph osd create`
50ceph osd crush add $o1 1 host=host1 root=foo
51ceph osd crush add $o1 1 host=host1 root=foo # idemptoent
52ceph osd crush add $o2 1 host=host2 root=foo
53ceph osd crush add $o2 1 host=host2 root=foo # idempotent
54ceph osd crush add-bucket bar root
55ceph osd crush add-bucket bar root # idempotent
56ceph osd crush link host1 root=bar
57ceph osd crush link host1 root=bar # idempotent
58ceph osd crush link host2 root=bar
59ceph osd crush link host2 root=bar # idempotent
60
61ceph osd tree | grep -c osd.$o1 | grep -q 2
62ceph osd tree | grep -c host1 | grep -q 2
63ceph osd tree | grep -c osd.$o2 | grep -q 2
64ceph osd tree | grep -c host2 | grep -q 2
65expect_false ceph osd crush rm host1 foo # not empty
66ceph osd crush unlink host1 foo
67ceph osd crush unlink host1 foo
68ceph osd tree | grep -c host1 | grep -q 1
69
70expect_false ceph osd crush rm foo # not empty
71expect_false ceph osd crush rm bar # not empty
72ceph osd crush unlink host1 bar
73ceph osd tree | grep -c host1 | grep -q 1 # now an orphan
74ceph osd crush rm osd.$o1 host1
75ceph osd crush rm host1
76ceph osd tree | grep -c host1 | grep -q 0
77
78expect_false ceph osd crush rm bar # not empty
79ceph osd crush unlink host2
80
81# reference foo and bar with a rule
82ceph osd crush rule create-simple foo-rule foo host firstn
83expect_false ceph osd crush rm foo
84ceph osd crush rule rm foo-rule
85
86ceph osd crush rm bar
87ceph osd crush rm foo
88ceph osd crush rm osd.$o2 host2
89ceph osd crush rm host2
90
91ceph osd crush add-bucket foo host
92ceph osd crush move foo root=default rack=localrack
93
94ceph osd crush create-or-move osd.$o1 1.0 root=default
95ceph osd crush move osd.$o1 host=foo
96ceph osd find osd.$o1 | grep host | grep foo
97
98ceph osd crush rm osd.$o1
99ceph osd crush rm osd.$o2
100
101ceph osd crush rm foo
102
103# test reweight
104o3=`ceph osd create`
105ceph osd crush add $o3 123 root=default
106ceph osd tree | grep osd.$o3 | grep 123
107ceph osd crush reweight osd.$o3 113
224ce89b 108expect_false ceph osd crush reweight osd.$o3 123456
7c673cae
FG
109ceph osd tree | grep osd.$o3 | grep 113
110ceph osd crush rm osd.$o3
111ceph osd rm osd.$o3
112
113# test reweight-subtree
114o4=`ceph osd create`
115o5=`ceph osd create`
116ceph osd crush add $o4 123 root=default host=foobaz
117ceph osd crush add $o5 123 root=default host=foobaz
118ceph osd tree | grep osd.$o4 | grep 123
119ceph osd tree | grep osd.$o5 | grep 123
120ceph osd crush reweight-subtree foobaz 155
224ce89b 121expect_false ceph osd crush reweight-subtree foobaz 123456
7c673cae
FG
122ceph osd tree | grep osd.$o4 | grep 155
123ceph osd tree | grep osd.$o5 | grep 155
124ceph osd crush rm osd.$o4
125ceph osd crush rm osd.$o5
126ceph osd rm osd.$o4
127ceph osd rm osd.$o5
128
c07f9fc5
FG
129# weight sets
130# make sure we require luminous before testing weight-sets
131ceph osd set-require-min-compat-client luminous
132ceph osd crush weight-set dump
133ceph osd crush weight-set ls
134expect_false ceph osd crush weight-set reweight fooset osd.0 .9
135ceph osd pool create fooset 8
136ceph osd pool create barset 8
137ceph osd pool set barset size 3
138expect_false ceph osd crush weight-set reweight fooset osd.0 .9
139ceph osd crush weight-set create fooset flat
140ceph osd crush weight-set create barset positional
141ceph osd crush weight-set ls | grep fooset
142ceph osd crush weight-set ls | grep barset
143ceph osd crush weight-set dump
144ceph osd crush weight-set reweight fooset osd.0 .9
145expect_false ceph osd crush weight-set reweight fooset osd.0 .9 .9
146expect_false ceph osd crush weight-set reweight barset osd.0 .9
147ceph osd crush weight-set reweight barset osd.0 .9 .9 .9
148ceph osd crush weight-set ls | grep -c fooset | grep -q 1
149ceph osd crush weight-set rm fooset
150ceph osd crush weight-set ls | grep -c fooset | grep -q 0
151ceph osd crush weight-set ls | grep barset
152ceph osd crush weight-set rm barset
153ceph osd crush weight-set ls | grep -c barset | grep -q 0
154ceph osd crush weight-set create-compat
155ceph osd crush weight-set ls | grep '(compat)'
156ceph osd crush weight-set rm-compat
157
7c673cae 158echo OK