Add ResourceNotFound exception in get_backup func
diff --git a/staffeln/common/openstack.py b/staffeln/common/openstack.py
index 1a7c10e..298a9f0 100644
--- a/staffeln/common/openstack.py
+++ b/staffeln/common/openstack.py
@@ -55,7 +55,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):

@@ -76,7 +79,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 5a489b3..2d917a9 100755
--- a/staffeln/conductor/backup.py
+++ b/staffeln/conductor/backup.py
@@ -104,8 +104,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."
@@ -113,8 +111,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)
@@ -123,7 +120,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()
@@ -137,13 +137,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,
@@ -159,17 +152,14 @@
         try:
             backup = self.openstacksdk.get_backup(uuid=backup_object.backup_id,
                                              project_id=backup_object.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,
@@ -312,33 +302,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 = [