| import os | |
| import sys | |
| import traceback | |
| if __name__ == "__main__": | |
| # for testing | |
| if os.getenv("OPENCLOUD_PYTHONPATH"): | |
| sys.path.append( os.getenv("OPENCLOUD_PYTHONPATH") ) | |
| else: | |
| print >> sys.stderr, "No OPENCLOUD_PYTHONPATH variable set. Assuming that OpenCloud is in PYTHONPATH" | |
| os.environ.setdefault("DJANGO_SETTINGS_MODULE", "planetstack.settings") | |
| import logging | |
| from logging import Logger | |
| logging.basicConfig( format='[%(levelname)s] [%(module)s:%(lineno)d] %(message)s' ) | |
| logger = logging.getLogger() | |
| logger.setLevel( logging.INFO ) | |
| # point to planetstack | |
| if __name__ != "__main__": | |
| if os.getenv("OPENCLOUD_PYTHONPATH") is not None: | |
| sys.path.insert(0, os.getenv("OPENCLOUD_PYTHONPATH")) | |
| else: | |
| logger.warning("No OPENCLOUD_PYTHONPATH set; assuming your PYTHONPATH works") | |
| from syndicate_storage.models import Volume | |
| from observer.deleter import Deleter | |
| from django.forms.models import model_to_dict | |
| # syndicatelib will be in steps/.. | |
| parentdir = os.path.join(os.path.dirname(__file__),"..") | |
| sys.path.insert(0,parentdir) | |
| import syndicatelib | |
| class VolumeDeleter(Deleter): | |
| model='Volume' | |
| def __init__(self, **args): | |
| Deleter.__init__(self, **args) | |
| def call(self, pk, model_dict): | |
| try: | |
| volume_name = model_dict['name'] | |
| syndicatelib.ensure_volume_absent( volume_name ) | |
| return True | |
| except Exception, e: | |
| traceback.print_exc() | |
| logger.exception("Failed to erase volume '%s'" % volume_name) | |
| return False | |
| if __name__ == "__main__": | |
| vd = VolumeDeleter() | |
| all_volumes = Volume.objects.all() | |
| for vol in all_volumes: | |
| vd( vol.pk, model_to_dict( vol ) ) |