]> git.proxmox.com Git - ceph.git/blob - ceph/qa/workunits/rados/test_pool_access.sh
update sources to 12.2.7
[ceph.git] / ceph / qa / workunits / rados / test_pool_access.sh
1 #!/bin/bash -x
2
3 set -e
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_KEYRING="$KEYRING" python
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_KEYRING="$KEYRING" python
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_KEYRING="$KEYRING" python
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_KEYRING="$KEYRING" python
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