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(