]>
Commit | Line | Data |
---|---|---|
1 | #!/usr/bin/env bash | |
2 | ||
3 | set -ex | |
4 | ||
5 | KEYRING=$(mktemp) | |
6 | trap cleanup EXIT ERR HUP INT QUIT | |
7 | ||
8 | cleanup() { | |
9 | (ceph auth del client.mon_read || true) >/dev/null 2>&1 | |
10 | (ceph auth del client.mon_write || true) >/dev/null 2>&1 | |
11 | ||
12 | rm -f $KEYRING | |
13 | } | |
14 | ||
15 | expect_false() | |
16 | { | |
17 | set -x | |
18 | if "$@"; then return 1; else return 0; fi | |
19 | } | |
20 | ||
21 | create_pool_op() { | |
22 | ID=$1 | |
23 | POOL=$2 | |
24 | ||
25 | cat << EOF | CEPH_ARGS="-k $KEYRING" python3 | |
26 | import rados | |
27 | ||
28 | cluster = rados.Rados(conffile="", rados_id="${ID}") | |
29 | cluster.connect() | |
30 | cluster.create_pool("${POOL}") | |
31 | EOF | |
32 | } | |
33 | ||
34 | delete_pool_op() { | |
35 | ID=$1 | |
36 | POOL=$2 | |
37 | ||
38 | cat << EOF | CEPH_ARGS="-k $KEYRING" python3 | |
39 | import rados | |
40 | ||
41 | cluster = rados.Rados(conffile="", rados_id="${ID}") | |
42 | cluster.connect() | |
43 | cluster.delete_pool("${POOL}") | |
44 | EOF | |
45 | } | |
46 | ||
47 | create_pool_snap_op() { | |
48 | ID=$1 | |
49 | POOL=$2 | |
50 | SNAP=$3 | |
51 | ||
52 | cat << EOF | CEPH_ARGS="-k $KEYRING" python3 | |
53 | import rados | |
54 | ||
55 | cluster = rados.Rados(conffile="", rados_id="${ID}") | |
56 | cluster.connect() | |
57 | ioctx = cluster.open_ioctx("${POOL}") | |
58 | ||
59 | ioctx.create_snap("${SNAP}") | |
60 | EOF | |
61 | } | |
62 | ||
63 | remove_pool_snap_op() { | |
64 | ID=$1 | |
65 | POOL=$2 | |
66 | SNAP=$3 | |
67 | ||
68 | cat << EOF | CEPH_ARGS="-k $KEYRING" python3 | |
69 | import rados | |
70 | ||
71 | cluster = rados.Rados(conffile="", rados_id="${ID}") | |
72 | cluster.connect() | |
73 | ioctx = cluster.open_ioctx("${POOL}") | |
74 | ||
75 | ioctx.remove_snap("${SNAP}") | |
76 | EOF | |
77 | } | |
78 | ||
79 | test_pool_op() | |
80 | { | |
81 | ceph auth get-or-create client.mon_read mon 'allow r' >> $KEYRING | |
82 | ceph auth get-or-create client.mon_write mon 'allow *' >> $KEYRING | |
83 | ||
84 | expect_false create_pool_op mon_read pool1 | |
85 | create_pool_op mon_write pool1 | |
86 | ||
87 | expect_false create_pool_snap_op mon_read pool1 snap1 | |
88 | create_pool_snap_op mon_write pool1 snap1 | |
89 | ||
90 | expect_false remove_pool_snap_op mon_read pool1 snap1 | |
91 | remove_pool_snap_op mon_write pool1 snap1 | |
92 | ||
93 | expect_false delete_pool_op mon_read pool1 | |
94 | delete_pool_op mon_write pool1 | |
95 | } | |
96 | ||
97 | key=`ceph auth get-or-create-key client.poolaccess1 mon 'allow r' osd 'allow *'` | |
98 | rados --id poolaccess1 --key $key -p rbd ls | |
99 | ||
100 | key=`ceph auth get-or-create-key client.poolaccess2 mon 'allow r' osd 'allow * pool=nopool'` | |
101 | expect_false rados --id poolaccess2 --key $key -p rbd ls | |
102 | ||
103 | key=`ceph auth get-or-create-key client.poolaccess3 mon 'allow r' osd 'allow rw pool=nopool'` | |
104 | expect_false rados --id poolaccess3 --key $key -p rbd ls | |
105 | ||
106 | test_pool_op | |
107 | ||
108 | echo OK |