root / rbd / create @ master
History | View | Annotate | Download (2.6 kB)
1 | 35acd6c9 | Dimitris Aragiorgis | #!/usr/bin/env python |
---|---|---|---|
2 | 35acd6c9 | Dimitris Aragiorgis | # |
3 | 35acd6c9 | Dimitris Aragiorgis | # Copyright (C) 2011 Greek Research and Technology Network |
4 | 35acd6c9 | Dimitris Aragiorgis | # |
5 | 35acd6c9 | Dimitris Aragiorgis | # This program is free software; you can redistribute it and/or modify |
6 | 35acd6c9 | Dimitris Aragiorgis | # it under the terms of the GNU General Public License as published by |
7 | 35acd6c9 | Dimitris Aragiorgis | # the Free Software Foundation; either version 2 of the License, or |
8 | 35acd6c9 | Dimitris Aragiorgis | # (at your option) any later version. |
9 | 35acd6c9 | Dimitris Aragiorgis | # |
10 | 35acd6c9 | Dimitris Aragiorgis | # This program is distributed in the hope that it will be useful, but |
11 | 35acd6c9 | Dimitris Aragiorgis | # WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | 35acd6c9 | Dimitris Aragiorgis | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
13 | 35acd6c9 | Dimitris Aragiorgis | # General Public License for more details. |
14 | 35acd6c9 | Dimitris Aragiorgis | # |
15 | 35acd6c9 | Dimitris Aragiorgis | # You should have received a copy of the GNU General Public License |
16 | 35acd6c9 | Dimitris Aragiorgis | # along with this program; if not, write to the Free Software |
17 | 35acd6c9 | Dimitris Aragiorgis | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
18 | 35acd6c9 | Dimitris Aragiorgis | # 02110-1301, USA. |
19 | 35acd6c9 | Dimitris Aragiorgis | |
20 | 35acd6c9 | Dimitris Aragiorgis | """Create a new rbd Image inside a RADOS cluster |
21 | 35acd6c9 | Dimitris Aragiorgis | |
22 | 35acd6c9 | Dimitris Aragiorgis | This program creates a new rbd Image file inside a RADOS cluster. |
23 | 35acd6c9 | Dimitris Aragiorgis | It takes it's input from environment variables. Specifically the |
24 | 35acd6c9 | Dimitris Aragiorgis | following variables should be present: |
25 | 35acd6c9 | Dimitris Aragiorgis | |
26 | 35acd6c9 | Dimitris Aragiorgis | - VOL_NAME: The name of the new Image file |
27 | 35acd6c9 | Dimitris Aragiorgis | - POOL: The RADOS pool in which to put the Image |
28 | 35acd6c9 | Dimitris Aragiorgis | - VOL_SIZE: The size of the new Image (in megabytes) |
29 | 35acd6c9 | Dimitris Aragiorgis | |
30 | 35acd6c9 | Dimitris Aragiorgis | Returns O after successfull creation, 1 on failure |
31 | 35acd6c9 | Dimitris Aragiorgis | |
32 | 35acd6c9 | Dimitris Aragiorgis | """ |
33 | 35acd6c9 | Dimitris Aragiorgis | |
34 | 35acd6c9 | Dimitris Aragiorgis | import os |
35 | 35acd6c9 | Dimitris Aragiorgis | import sys |
36 | 35acd6c9 | Dimitris Aragiorgis | |
37 | 68abdf0d | Dimitris Aragiorgis | sys.path.insert(0, "/etc/ganeti/share") |
38 | 35acd6c9 | Dimitris Aragiorgis | |
39 | 35acd6c9 | Dimitris Aragiorgis | from ganeti import utils |
40 | 35acd6c9 | Dimitris Aragiorgis | |
41 | 35acd6c9 | Dimitris Aragiorgis | |
42 | 35acd6c9 | Dimitris Aragiorgis | def ReadEnv(): |
43 | 35acd6c9 | Dimitris Aragiorgis | """Read the mandatory enviromental variables |
44 | 35acd6c9 | Dimitris Aragiorgis | |
45 | 35acd6c9 | Dimitris Aragiorgis | """ |
46 | 35acd6c9 | Dimitris Aragiorgis | name = os.getenv("VOL_NAME") |
47 | 35acd6c9 | Dimitris Aragiorgis | if name is None: |
48 | 35acd6c9 | Dimitris Aragiorgis | sys.stderr.write('The environment variable VOL_NAME is missing.\n') |
49 | 35acd6c9 | Dimitris Aragiorgis | sys.exit(1) |
50 | 35acd6c9 | Dimitris Aragiorgis | # pool = os.getenv("POOL") |
51 | 35acd6c9 | Dimitris Aragiorgis | pool = "rbd" |
52 | 35acd6c9 | Dimitris Aragiorgis | if pool is None: |
53 | 35acd6c9 | Dimitris Aragiorgis | sys.stderr.write('The environment variable POOL is missing.\n') |
54 | 35acd6c9 | Dimitris Aragiorgis | sys.exit(1) |
55 | 35acd6c9 | Dimitris Aragiorgis | size = os.getenv("VOL_SIZE") |
56 | 35acd6c9 | Dimitris Aragiorgis | if size is None: |
57 | 35acd6c9 | Dimitris Aragiorgis | sys.stderr.write('The environment variable VOL_SIZE is missing.\n') |
58 | 35acd6c9 | Dimitris Aragiorgis | sys.exit(1) |
59 | 35acd6c9 | Dimitris Aragiorgis | test_param = os.getenv("EXTP_TEST") |
60 | 35acd6c9 | Dimitris Aragiorgis | if test_param: |
61 | 35acd6c9 | Dimitris Aragiorgis | sys.stderr.write('parameter test = %s\n' % test_param) |
62 | 35acd6c9 | Dimitris Aragiorgis | |
63 | 35acd6c9 | Dimitris Aragiorgis | |
64 | 35acd6c9 | Dimitris Aragiorgis | return (name, pool, size) |
65 | 35acd6c9 | Dimitris Aragiorgis | |
66 | 35acd6c9 | Dimitris Aragiorgis | |
67 | 35acd6c9 | Dimitris Aragiorgis | def main(): |
68 | 35acd6c9 | Dimitris Aragiorgis | sys.stderr.write('Creation started...\n') |
69 | 35acd6c9 | Dimitris Aragiorgis | env = ReadEnv() |
70 | 35acd6c9 | Dimitris Aragiorgis | if env is None: |
71 | 35acd6c9 | Dimitris Aragiorgis | sys.stderr.write('Wrong environment. Aborting...\n') |
72 | 35acd6c9 | Dimitris Aragiorgis | sys.exit(1) |
73 | 35acd6c9 | Dimitris Aragiorgis | |
74 | 35acd6c9 | Dimitris Aragiorgis | rbd_name, rbd_pool, size = env |
75 | 35acd6c9 | Dimitris Aragiorgis | |
76 | 35acd6c9 | Dimitris Aragiorgis | sys.stderr.write('name: %s, pool: %s, size: %s\n' % (rbd_name, rbd_pool, size)) |
77 | 35acd6c9 | Dimitris Aragiorgis | cmd = ["rbd", "create", "-p", "%s" % rbd_pool, |
78 | 35acd6c9 | Dimitris Aragiorgis | "%s" % rbd_name, "--size", "%s" % size] |
79 | 35acd6c9 | Dimitris Aragiorgis | sys.stderr.write('Before RunCmd') |
80 | 35acd6c9 | Dimitris Aragiorgis | result = utils.RunCmd(cmd) |
81 | 35acd6c9 | Dimitris Aragiorgis | sys.stderr.write('After RunCmd') |
82 | 35acd6c9 | Dimitris Aragiorgis | if result.failed: |
83 | 35acd6c9 | Dimitris Aragiorgis | sys.stderr.write('rbd creation failed (%s): %s\n' % |
84 | 35acd6c9 | Dimitris Aragiorgis | (result.fail_reason, result.output)) |
85 | 35acd6c9 | Dimitris Aragiorgis | sys.exit(1) |
86 | 35acd6c9 | Dimitris Aragiorgis | |
87 | 35acd6c9 | Dimitris Aragiorgis | sys.exit(0) |
88 | 35acd6c9 | Dimitris Aragiorgis | |
89 | 35acd6c9 | Dimitris Aragiorgis | |
90 | 35acd6c9 | Dimitris Aragiorgis | if __name__ == "__main__": |
91 | 35acd6c9 | Dimitris Aragiorgis | sys.exit(main()) |