Statistics
| Branch: | Revision:

root / shared-filer / remove @ bd924ffd

History | View | Annotate | Download (2.5 kB)

1 bd924ffd Dimitris Aragiorgis
#!/usr/bin/env python
2 bd924ffd Dimitris Aragiorgis
#
3 bd924ffd Dimitris Aragiorgis
# Copyright (C) 2012 Greek Research and Technology Network
4 bd924ffd Dimitris Aragiorgis
#
5 bd924ffd Dimitris Aragiorgis
# This program is free software; you can redistribute it and/or modify
6 bd924ffd Dimitris Aragiorgis
# it under the terms of the GNU General Public License as published by
7 bd924ffd Dimitris Aragiorgis
# the Free Software Foundation; either version 2 of the License, or
8 bd924ffd Dimitris Aragiorgis
# (at your option) any later version.
9 bd924ffd Dimitris Aragiorgis
#
10 bd924ffd Dimitris Aragiorgis
# This program is distributed in the hope that it will be useful, but
11 bd924ffd Dimitris Aragiorgis
# WITHOUT ANY WARRANTY; without even the implied warranty of
12 bd924ffd Dimitris Aragiorgis
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 bd924ffd Dimitris Aragiorgis
# General Public License for more details.
14 bd924ffd Dimitris Aragiorgis
#
15 bd924ffd Dimitris Aragiorgis
# You should have received a copy of the GNU General Public License
16 bd924ffd Dimitris Aragiorgis
# along with this program; if not, write to the Free Software
17 bd924ffd Dimitris Aragiorgis
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
18 bd924ffd Dimitris Aragiorgis
# 02110-1301, USA.
19 bd924ffd Dimitris Aragiorgis
20 bd924ffd Dimitris Aragiorgis
"""Remove an existing file under a shared directory
21 bd924ffd Dimitris Aragiorgis
22 bd924ffd Dimitris Aragiorgis
This program removes an existing file from a shared directory. It takes
23 bd924ffd Dimitris Aragiorgis
it's input from environment variables. Specifically the following variables
24 bd924ffd Dimitris Aragiorgis
should be present:
25 bd924ffd Dimitris Aragiorgis
26 bd924ffd Dimitris Aragiorgis
 - VOL_NAME: The name of the new Image file
27 bd924ffd Dimitris Aragiorgis
28 bd924ffd Dimitris Aragiorgis
Returns O after successfull creation, 1 on failure
29 bd924ffd Dimitris Aragiorgis
30 bd924ffd Dimitris Aragiorgis
"""
31 bd924ffd Dimitris Aragiorgis
32 bd924ffd Dimitris Aragiorgis
import os
33 bd924ffd Dimitris Aragiorgis
import sys
34 bd924ffd Dimitris Aragiorgis
35 bd924ffd Dimitris Aragiorgis
sys.path.append("/usr/share/ganeti/")
36 bd924ffd Dimitris Aragiorgis
37 bd924ffd Dimitris Aragiorgis
from ganeti import utils
38 bd924ffd Dimitris Aragiorgis
39 bd924ffd Dimitris Aragiorgis
40 bd924ffd Dimitris Aragiorgis
# Default shared directory
41 bd924ffd Dimitris Aragiorgis
SHARED_DIR = "/srv/ganeti/shared-file-storage"
42 bd924ffd Dimitris Aragiorgis
43 bd924ffd Dimitris Aragiorgis
44 bd924ffd Dimitris Aragiorgis
def ReadEnv():
45 bd924ffd Dimitris Aragiorgis
  """Read the mandatory enviromental variables
46 bd924ffd Dimitris Aragiorgis
47 bd924ffd Dimitris Aragiorgis
  """
48 bd924ffd Dimitris Aragiorgis
  name = os.getenv("VOL_NAME")
49 bd924ffd Dimitris Aragiorgis
  if name is None:
50 bd924ffd Dimitris Aragiorgis
    sys.stderr.write('The environment variable VOL_NAME is missing.\n')
51 bd924ffd Dimitris Aragiorgis
    return None
52 bd924ffd Dimitris Aragiorgis
  shared_dir_param = os.getenv("EXTP_SHARED_DIR")
53 bd924ffd Dimitris Aragiorgis
  if shared_dir_param is not None:
54 bd924ffd Dimitris Aragiorgis
    sys.stderr.write('Found shared dir param, value: %s\n' % shared_dir_param)
55 bd924ffd Dimitris Aragiorgis
56 bd924ffd Dimitris Aragiorgis
  return (name, shared_dir_param)
57 bd924ffd Dimitris Aragiorgis
58 bd924ffd Dimitris Aragiorgis
59 bd924ffd Dimitris Aragiorgis
def main():
60 bd924ffd Dimitris Aragiorgis
  sys.stderr.write('Removal started: reading environment...\n')
61 bd924ffd Dimitris Aragiorgis
62 bd924ffd Dimitris Aragiorgis
  # Read environment
63 bd924ffd Dimitris Aragiorgis
  env = ReadEnv()
64 bd924ffd Dimitris Aragiorgis
  if env is None:
65 bd924ffd Dimitris Aragiorgis
    sys.stderr.write('Wrong environment. Aborting\n')
66 bd924ffd Dimitris Aragiorgis
    return 1
67 bd924ffd Dimitris Aragiorgis
68 bd924ffd Dimitris Aragiorgis
  file_name, shared_dir_param = env
69 bd924ffd Dimitris Aragiorgis
70 bd924ffd Dimitris Aragiorgis
  if shared_dir_param is None:
71 bd924ffd Dimitris Aragiorgis
    shared_dir_param = SHARED_DIR
72 bd924ffd Dimitris Aragiorgis
73 bd924ffd Dimitris Aragiorgis
  file_path = utils.PathJoin(shared_dir_param, file_name)
74 bd924ffd Dimitris Aragiorgis
75 bd924ffd Dimitris Aragiorgis
  sys.stderr.write('Read environment successfully: file name: %s\n' % file_path)
76 bd924ffd Dimitris Aragiorgis
77 bd924ffd Dimitris Aragiorgis
  # Remove file
78 bd924ffd Dimitris Aragiorgis
  cmd = ["rm", "-f", "%s" % file_path]
79 bd924ffd Dimitris Aragiorgis
  result = utils.RunCmd(cmd)
80 bd924ffd Dimitris Aragiorgis
  if result.failed:
81 bd924ffd Dimitris Aragiorgis
    sys.stderr.write('Cannot remove Image file %s with `rm -f`: %s - %s\n' %
82 bd924ffd Dimitris Aragiorgis
                     (file_path, result.fail_reason, result.output))
83 bd924ffd Dimitris Aragiorgis
    return 1
84 bd924ffd Dimitris Aragiorgis
85 bd924ffd Dimitris Aragiorgis
  sys.stderr.write('Image file %s removed successfully\n' % file_path)
86 bd924ffd Dimitris Aragiorgis
  return 0
87 bd924ffd Dimitris Aragiorgis
88 bd924ffd Dimitris Aragiorgis
89 bd924ffd Dimitris Aragiorgis
if __name__ == "__main__":
90 bd924ffd Dimitris Aragiorgis
    sys.exit(main())