Refactored teh sync_volume_slice step with new style of deletion
[plstackapi.git] / planetstack / syndicate_observer / deleters / volume_deleter.py
1 import os\r
2 import sys\r
3 import traceback\r
4 \r
5 if __name__ == "__main__":\r
6     # for testing \r
7     if os.getenv("OPENCLOUD_PYTHONPATH"):\r
8         sys.path.append( os.getenv("OPENCLOUD_PYTHONPATH") )\r
9     else:\r
10         print >> sys.stderr, "No OPENCLOUD_PYTHONPATH variable set.  Assuming that OpenCloud is in PYTHONPATH"\r
11 \r
12     os.environ.setdefault("DJANGO_SETTINGS_MODULE", "planetstack.settings")\r
13 \r
14 \r
15 import logging\r
16 from logging import Logger\r
17 logging.basicConfig( format='[%(levelname)s] [%(module)s:%(lineno)d] %(message)s' )\r
18 logger = logging.getLogger()\r
19 logger.setLevel( logging.INFO )\r
20 \r
21 # point to planetstack \r
22 if __name__ != "__main__":\r
23     if os.getenv("OPENCLOUD_PYTHONPATH") is not None:\r
24         sys.path.insert(0, os.getenv("OPENCLOUD_PYTHONPATH"))\r
25     else:\r
26         logger.warning("No OPENCLOUD_PYTHONPATH set; assuming your PYTHONPATH works") \r
27 \r
28 \r
29 from syndicate_storage.models import Volume\r
30 from observer.deleter import Deleter\r
31 \r
32 from django.forms.models import model_to_dict\r
33 \r
34 \r
35 # syndicatelib will be in steps/..\r
36 parentdir = os.path.join(os.path.dirname(__file__),"..")\r
37 sys.path.insert(0,parentdir)\r
38 \r
39 import syndicatelib\r
40 \r
41 class VolumeDeleter(Deleter):\r
42         model='Volume'\r
43 \r
44         def __init__(self, **args):\r
45             Deleter.__init__(self, **args)\r
46 \r
47         def call(self, pk, model_dict):\r
48             try:\r
49                 volume_name = model_dict['name']\r
50                 syndicatelib.ensure_volume_absent( volume_name )\r
51                 return True\r
52             except Exception, e:\r
53                 traceback.print_exc()\r
54                 logger.exception("Failed to erase volume '%s'" % volume_name)\r
55                 return False\r
56             \r
57 \r
58 if __name__ == "__main__":\r
59    vd = VolumeDeleter()\r
60    \r
61    all_volumes = Volume.objects.all()\r
62    for vol in all_volumes:\r
63       vd( vol.pk, model_to_dict( vol ) )\r