Merge pull request #34 from vexxhost/update-openstacksdk
Add ResourceNotFound exception in get_backup func
diff --git a/staffeln/common/openstack.py b/staffeln/common/openstack.py
index c2c2e15..7aaf1a0 100644
--- a/staffeln/common/openstack.py
+++ b/staffeln/common/openstack.py
@@ -62,7 +62,10 @@
# project_id=project_id, backup_id=uuid,
# )
# conn.block_storage.backups(volume_id=uuid,project_id=project_id)
- return self.conn.get_volume_backup(uuid)
+ try:
+ return self.conn.get_volume_backup(uuid)
+ except exceptions.ResourceNotFound:
+ return None
def create_backup(self, volume_id, project_id, force=True, wait=False):
@@ -83,7 +86,7 @@
self.conn.delete_volume_backup(uuid, force=force)
# TODO(Alex): After delete the backup generator, need to set the volume status again
except exceptions.ResourceNotFound:
- return
+ return None
def get_backup_quota(self, project_id):
diff --git a/staffeln/conductor/backup.py b/staffeln/conductor/backup.py
index 1ba0ecf..bbfd7c7 100755
--- a/staffeln/conductor/backup.py
+++ b/staffeln/conductor/backup.py
@@ -119,8 +119,6 @@
self.openstacksdk.delete_backup(task.backup_id)
task.delete_queue()
self.result.add_failed_backup(task.project_id, task.volume_id, reason)
- except OpenstackResourceNotFound:
- task.delete_queue()
except OpenstackSDKException as e:
reason = _("Backup %s deletion failed."
@@ -128,8 +126,7 @@
LOG.info(reason)
# TODO(Alex): If backup timeout and also back cancel failed,
# then what to do?
- # 1. notify
- # 2. set the volume status as in-use
+ # set the volume status as in-use
# remove from the queue table
task.delete_queue()
self.result.add_failed_backup(task.project_id, task.volume_id, reason)
@@ -138,7 +135,10 @@
def soft_remove_backup_task(self, backup_object):
try:
backup = self.openstacksdk.get_backup(backup_object.backup_id)
- if backup == None: return backup_object.delete_backup()
+ if backup == None:
+ LOG.info(_("Backup %s is not existing in Openstack."
+ "Or cinder-backup is not existing in the cloud." % backup_object.backup_id))
+ return backup_object.delete_backup()
if backup["status"] in ("available"):
self.openstacksdk.delete_backup(backup_object.backup_id)
backup_object.delete_backup()
@@ -152,13 +152,6 @@
LOG.info(_("Rotation for the backup %s is skipped in this cycle "
"because it is in %s status") % (backup_object.backup_id, backup["status"]))
- except OpenstackResourceNotFound:
- LOG.info(_("Backup %s is not existing in Openstack."
- "Or cinder-backup is not existing in the cloud." % backup_object.backup_id))
- # remove from the backup table
- backup_object.delete_backup()
- return False
-
except OpenstackSDKException as e:
LOG.info(
_("Backup %s deletion failed." "%s" % (backup_object.backup_id,
@@ -179,17 +172,14 @@
self.openstacksdk.set_project(self.project_list[project_id])
backup = self.openstacksdk.get_backup(uuid=backup_object.backup_id,
project_id=project_id)
- if backup == None: return backup_object.delete_backup()
+ if backup == None:
+ LOG.info(_("Backup %s is not existing in Openstack."
+ "Or cinder-backup is not existing in the cloud." % backup_object.backup_id))
+ return backup_object.delete_backup()
self.openstacksdk.delete_backup(uuid=backup_object.backup_id)
backup_object.delete_backup()
- except OpenstackResourceNotFound:
- LOG.info(_("Backup %s is not existing in Openstack."
- "Or cinder-backup is not existing in the cloud." % backup_object.backup_id))
- # remove from the backup table
- backup_object.delete_backup()
-
except OpenstackSDKException as e:
LOG.info(
_("Backup %s deletion failed." "%s" % (backup_object.backup_id,
@@ -352,33 +342,30 @@
status checked.
Call the backups api to see if the backup is successful.
"""
- try:
+ project_id = queue.project_id
- project_id = queue.project_id
+ # The case in which the error produced before backup gen created.
+ if queue.backup_id == "NULL":
+ self.process_pre_failed_backup(queue)
+ return
+ if project_id not in self.project_list: self.process_non_existing_backup(queue)
+ self.openstacksdk.set_project(self.project_list[project_id])
+ backup_gen = self.openstacksdk.get_backup(queue.backup_id)
- # The case in which the error produced before backup gen created.
- if queue.backup_id == "NULL":
- self.process_pre_failed_backup(queue)
- return
- if project_id not in self.project_list: self.process_non_existing_backup(queue)
- self.openstacksdk.set_project(self.project_list[project_id])
- backup_gen = self.openstacksdk.get_backup(queue.backup_id)
-
- if backup_gen == None:
- # TODO(Alex): need to check when it is none
- LOG.info(_("[Beta] Backup status of %s is returning none." % (queue.backup_id)))
- self.process_non_existing_backup(queue)
- return
- if backup_gen.status == "error":
- self.process_failed_backup(queue)
- elif backup_gen.status == "available":
- self.process_available_backup(queue)
- elif backup_gen.status == "creating":
- LOG.info("Waiting for backup of %s to be completed" % queue.volume_id)
- else: # "deleting", "restoring", "error_restoring" status
- self.process_using_backup(queue)
- except OpenstackResourceNotFound as e:
+ if backup_gen == None:
+ # TODO(Alex): need to check when it is none
+ LOG.info(_("[Beta] Backup status of %s is returning none." % (queue.backup_id)))
self.process_non_existing_backup(queue)
+ return
+ if backup_gen.status == "error":
+ self.process_failed_backup(queue)
+ elif backup_gen.status == "available":
+ self.process_available_backup(queue)
+ elif backup_gen.status == "creating":
+ LOG.info("Waiting for backup of %s to be completed" % queue.volume_id)
+ else: # "deleting", "restoring", "error_restoring" status
+ self.process_using_backup(queue)
+
def _volume_backup(self, task):
# matching_backups = [