Merge pull request #82 from vexxhost/improve-funcs

Improve funcs
diff --git a/staffeln/conductor/backup.py b/staffeln/conductor/backup.py
index ddfffb3..7b8e523 100755
--- a/staffeln/conductor/backup.py
+++ b/staffeln/conductor/backup.py
@@ -209,10 +209,8 @@
                 self.openstacksdk.delete_backup(backup_object.backup_id)
                 backup_object.delete_backup()
             elif backup["status"] in ("error", "error_restoring"):
-                # TODO(Alex): need to discuss
-                #  now if backup is in error status, then retention service
-                #  does not remove it from openstack but removes it from the
-                #  backup table so user can delete it on Horizon.
+                # Try to remove it from cinder
+                self.openstacksdk.delete_backup(backup_object.backup_id)
                 backup_object.delete_backup()
             else:  # "deleting", "restoring"
                 LOG.info(
@@ -224,12 +222,9 @@
                 )
 
         except OpenstackSDKException as e:
-            LOG.warn(
-                _("Backup %s deletion failed." "%s" % (backup_object.backup_id, str(e)))
-            )
-            # TODO(Alex): Add it into the notification queue
-            # remove from the backup table
-            backup_object.delete_backup()
+            LOG.warn(_(f"Backup {backup_object.backup_id} deletion failed. {str(e)}"))
+            # We don't delete backup object if any exception occured
+            # backup_object.delete_backup()
             return False
 
     #  delete all backups forcily regardless of the status
@@ -237,14 +232,17 @@
         try:
             project_id = backup_object.project_id
             if project_id not in self.project_list:
-                LOG.info(
+                LOG.warn(
                     _(
-                        "Project %s for backup %s is not existing in Openstack."
-                        "Start removing backup object from Staffeln."
-                        % (project_id, backup_object.backup_id)
+                        f"Project {project_id} for backup "
+                        f"{backup_object.backup_id} is not existing in "
+                        "Openstack. Please check your access right to this project. "
+                        "Skip this backup from remove now and will retry later."
                     )
                 )
-                backup_object.delete_backup()
+                # Don't remove backup object, keep it and retry on next periodic task
+                # backup_object.delete_backup()
+                return
 
             self.openstacksdk.set_project(self.project_list[project_id])
             backup = self.openstacksdk.get_backup(
@@ -264,21 +262,22 @@
             self.openstacksdk.delete_backup(uuid=backup_object.backup_id)
             backup_object.delete_backup()
 
+            # TODO(ricolin) should check if backup delete completed
+
         except Exception as e:
             if skip_inc_err and "Incremental backups exist for this backup" in str(e):
                 pass
             else:
                 LOG.warn(
                     _(
-                        "Backup %s deletion failed. Need to delete manually."
-                        "Start removing backup object from Staffeln."
-                        "%s" % (backup_object.backup_id, str(e))
+                        f"Backup {backup_object.backup_id} deletion failed. "
+                        f"Please check into the exception: {str(e)}."
+                        "Skip this backup from remove now and will retry later."
                     )
                 )
 
-                # TODO(Alex): Add it into the notification queue
-                # remove from the backup table
-                backup_object.delete_backup()
+                # Don't remove backup object, keep it and retry on next periodic task
+                # backup_object.delete_backup()
 
     def update_project_list(self):
         projects = self.openstacksdk.get_projects()
@@ -305,7 +304,7 @@
                 # Ignore backup interval
                 return True
             interval = CONF.conductor.backup_min_interval
-            threshold_strtime = datetime.now() - timedelta(minutes=interval)
+            threshold_strtime = datetime.now() - timedelta(seconds=interval)
             backups = self.get_backups(
                 filters={
                     "volume_id__eq": volume_id,
diff --git a/staffeln/conductor/manager.py b/staffeln/conductor/manager.py
index 33fa22b..4f99ecc 100755
--- a/staffeln/conductor/manager.py
+++ b/staffeln/conductor/manager.py
@@ -128,8 +128,8 @@
         self.controller.create_queue(current_plan_tasks + current_wip_tasks)

 

     def _report_backup_result(self):

-        report_period_mins = CONF.conductor.report_period

-        threshold_strtime = datetime.now() - timedelta(minutes=report_period_mins)

+        report_period = CONF.conductor.report_period

+        threshold_strtime = datetime.now() - timedelta(seconds=report_period)

         filters = {"created_at__lt": threshold_strtime.astimezone()}

         old_tasks = self.controller.get_queues(filters=filters)

         for task in old_tasks:

diff --git a/staffeln/conf/conductor.py b/staffeln/conf/conductor.py
index fbd9f70..ab2a61a 100755
--- a/staffeln/conf/conductor.py
+++ b/staffeln/conf/conductor.py
@@ -20,24 +20,24 @@
     cfg.IntOpt(
         "backup_service_period",
         default=1800,
-        min=10,
+        min=60,
         help=_("The time of bakup period, the unit is one second."),
     ),
     cfg.IntOpt(
         "backup_min_interval",
-        default=30,
+        default=1800,
         min=0,
         help=_(
             "The time of minimum guaranteed interval between Staffeln "
-            "created backups, the unit is one minute. set to 0 if don't "
+            "created backups, the unit is one seconds. Set to 0 if don't "
             "need to enable this feature."
         ),
     ),
     cfg.IntOpt(
         "report_period",
-        default=1440,
-        min=10,
-        help=_("The time of report period, the unit is one minute."),
+        default=86400,
+        min=600,
+        help=_("The time of report period, the unit is one seconds."),
     ),
     cfg.StrOpt(
         "backup_cycle_timout",
@@ -85,7 +85,7 @@
     cfg.IntOpt(
         "retention_service_period",
         default=1200,
-        min=10,
+        min=60,
         help=_("The period of the retention service, the unit is one second."),
     ),
     cfg.IntOpt(