]>
Commit | Line | Data |
---|---|---|
11fdf7f2 | 1 | #!/usr/bin/env bash |
7c673cae | 2 | |
11fdf7f2 | 3 | set -ex |
7c673cae FG |
4 | |
5 | function expect_false() | |
6 | { | |
7 | set -x | |
8 | if "$@"; then return 1; else return 0; fi | |
9 | } | |
10 | ||
1911f103 TL |
11 | function get_config_value_or_die() |
12 | { | |
13 | local pool_name config_opt raw val | |
14 | ||
15 | pool_name=$1 | |
16 | config_opt=$2 | |
17 | ||
18 | raw="`$SUDO ceph osd pool get $pool_name $config_opt 2>/dev/null`" | |
19 | if [[ $? -ne 0 ]]; then | |
20 | echo "error obtaining config opt '$config_opt' from '$pool_name': $raw" | |
21 | exit 1 | |
22 | fi | |
23 | ||
24 | raw=`echo $raw | sed -e 's/[{} "]//g'` | |
25 | val=`echo $raw | cut -f2 -d:` | |
26 | ||
27 | echo "$val" | |
28 | return 0 | |
29 | } | |
30 | ||
31 | function expect_config_value() | |
32 | { | |
33 | local pool_name config_opt expected_val val | |
34 | pool_name=$1 | |
35 | config_opt=$2 | |
36 | expected_val=$3 | |
37 | ||
38 | val=$(get_config_value_or_die $pool_name $config_opt) | |
39 | ||
40 | if [[ "$val" != "$expected_val" ]]; then | |
41 | echo "expected '$expected_val', got '$val'" | |
42 | exit 1 | |
43 | fi | |
44 | } | |
45 | ||
7c673cae FG |
46 | # note: we need to pass the other args or ceph_argparse.py will take |
47 | # 'invalid' that is not replicated|erasure and assume it is the next | |
48 | # argument, which is a string. | |
49 | expect_false ceph osd pool create foo 123 123 invalid foo-profile foo-ruleset | |
50 | ||
51 | ceph osd pool create foo 123 123 replicated | |
52 | ceph osd pool create fooo 123 123 erasure default | |
53 | ceph osd pool create foooo 123 | |
54 | ||
55 | ceph osd pool create foo 123 # idempotent | |
56 | ||
57 | ceph osd pool set foo size 1 | |
1911f103 | 58 | expect_config_value "foo" "min_size" 1 |
7c673cae | 59 | ceph osd pool set foo size 4 |
1911f103 | 60 | expect_config_value "foo" "min_size" 2 |
7c673cae | 61 | ceph osd pool set foo size 10 |
1911f103 | 62 | expect_config_value "foo" "min_size" 5 |
7c673cae FG |
63 | expect_false ceph osd pool set foo size 0 |
64 | expect_false ceph osd pool set foo size 20 | |
65 | ||
eafe8130 TL |
66 | ceph osd pool set foo size 3 |
67 | ceph osd getcrushmap -o crush | |
68 | crushtool -d crush -o crush.txt | |
69 | sed -i 's/max_size 10/max_size 3/' crush.txt | |
70 | crushtool -c crush.txt -o crush.new | |
71 | ceph osd setcrushmap -i crush.new | |
72 | expect_false ceph osd pool set foo size 4 | |
73 | ceph osd setcrushmap -i crush | |
74 | rm -f crush crush.txt crush.new | |
75 | ||
7c673cae FG |
76 | # should fail due to safety interlock |
77 | expect_false ceph osd pool delete foo | |
78 | expect_false ceph osd pool delete foo foo | |
79 | expect_false ceph osd pool delete foo foo --force | |
80 | expect_false ceph osd pool delete foo fooo --yes-i-really-mean-it | |
81 | expect_false ceph osd pool delete foo --yes-i-really-mean-it foo | |
82 | ||
83 | ceph osd pool delete foooo foooo --yes-i-really-really-mean-it | |
84 | ceph osd pool delete fooo fooo --yes-i-really-really-mean-it | |
85 | ceph osd pool delete foo foo --yes-i-really-really-mean-it | |
86 | ||
87 | # idempotent | |
88 | ceph osd pool delete foo foo --yes-i-really-really-mean-it | |
89 | ceph osd pool delete fooo fooo --yes-i-really-really-mean-it | |
90 | ceph osd pool delete fooo fooo --yes-i-really-really-mean-it | |
91 | ||
92 | # non-existent pool | |
93 | ceph osd pool delete fuggg fuggg --yes-i-really-really-mean-it | |
94 | ||
95 | echo OK | |
96 | ||
97 |