Resolve Conflict.
diff --git a/staffeln/db/sqlalchemy/api.py b/staffeln/db/sqlalchemy/api.py
index d16766f..41cd483 100644
--- a/staffeln/db/sqlalchemy/api.py
+++ b/staffeln/db/sqlalchemy/api.py
@@ -109,7 +109,13 @@
if filters is None:
filters = {}
- plain_fields = ["volume_id", "backup_id", "backup_completed", "instance_id"]
+ plain_fields = [
+ "volume_id",
+ "backup_id",
+ "backup_completed",
+ "instance_id",
+ "created_at",
+ ]
return self._add_filters(
query=query,
@@ -144,6 +150,7 @@
for raw_fieldname, value in filters.items():
fieldname, operator_ = self.__decompose_filter(raw_fieldname)
+
if fieldname in plain_fields:
query = self.__add_simple_filter(
query, model, fieldname, value, operator_
@@ -161,7 +168,6 @@
):
if not isinstance(value, datetime.datetime):
value = timeutils.parse_isotime(value)
-
return query.filter(self.valid_operators[operator_](field, value))
def __decompose_filter(self, raw_fieldname):
@@ -181,6 +187,7 @@
query = query.filter(getattr(model, fieldname) == value)
try:
+ # To avoid exception if the no result found in table.
obj = query.one_or_none()
except exc.NoResultFound:
LOG.error("ResourceNotFound")
@@ -324,3 +331,9 @@
)
except:
LOG.error("Backup resource not found.")
+
+ def soft_delete_backup(self, id):
+ try:
+ return self._soft_delete(models.Backup_data, id)
+ except:
+ LOG.error("Backup Not found.")
diff --git a/staffeln/objects/volume.py b/staffeln/objects/volume.py
index abe03ad..1a6c09d 100644
--- a/staffeln/objects/volume.py
+++ b/staffeln/objects/volume.py
@@ -27,7 +27,7 @@
"""
db_backups = cls.dbapi.get_backup_list(context, filters=filters)
- return [cls._from_db_object(cls(), obj) for obj in db_backups]
+ return [cls._from_db_object(cls(context), obj) for obj in db_backups]
@base.remotable
def create(self):
@@ -59,6 +59,11 @@
current = self.get_by_uuid(backup_id=self.backup_id)
self.obj_refresh(current)
+ @base.remotable
+ def delete_backup(self):
+ """Soft Delete the :class:`Queue_data` from the DB"""
+ db_obj = self.dbapi.soft_delete_backup(self.id)
+
@base.remotable_classmethod
def get_backup_by_backup_id(cls, context, backup_id):
"""Find a backup based on backup_id