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