summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/objects/base.py1
-rw-r--r--nova/objects/instance.py5
-rw-r--r--nova/tests/fake_instance.py1
-rw-r--r--nova/tests/objects/test_instance.py12
-rw-r--r--nova/tests/objects/test_objects.py7
5 files changed, 23 insertions, 3 deletions
diff --git a/nova/objects/base.py b/nova/objects/base.py
index 1ba0f03b7..b263b14e4 100644
--- a/nova/objects/base.py
+++ b/nova/objects/base.py
@@ -180,6 +180,7 @@ class NovaObject(object):
'created_at': obj_utils.datetime_or_str_or_none,
'updated_at': obj_utils.datetime_or_str_or_none,
'deleted_at': obj_utils.datetime_or_str_or_none,
+ 'deleted': bool,
}
def __init__(self):
diff --git a/nova/objects/instance.py b/nova/objects/instance.py
index dbf9786df..0489f1374 100644
--- a/nova/objects/instance.py
+++ b/nova/objects/instance.py
@@ -149,7 +149,10 @@ class Instance(base.NovaObject):
for field in instance.fields:
if field in ['metadata', 'system_metadata']:
continue
- instance[field] = db_inst[field]
+ elif field == 'deleted':
+ instance.deleted = db_inst['deleted'] == db_inst['id']
+ else:
+ instance[field] = db_inst[field]
if 'metadata' in expected_attrs:
instance['metadata'] = utils.metadata_to_dict(db_inst['metadata'])
diff --git a/nova/tests/fake_instance.py b/nova/tests/fake_instance.py
index b63d16555..a8004364a 100644
--- a/nova/tests/fake_instance.py
+++ b/nova/tests/fake_instance.py
@@ -21,6 +21,7 @@ from nova.objects import instance as instance_obj
def fake_db_instance(**updates):
db_instance = {
'id': 1,
+ 'deleted': False,
'uuid': str(uuid.uuid4()),
'user_id': 'fake-user',
'project_id': 'fake-project',
diff --git a/nova/tests/objects/test_instance.py b/nova/tests/objects/test_instance.py
index 498767865..194f5f90c 100644
--- a/nova/tests/objects/test_instance.py
+++ b/nova/tests/objects/test_instance.py
@@ -38,6 +38,7 @@ class _TestInstanceObject(object):
fake_instance['launched_at'] = (
fake_instance['launched_at'].replace(
tzinfo=iso8601.iso8601.Utc(), microsecond=0))
+ fake_instance['deleted'] = False
return fake_instance
def test_datetime_deserialization(self):
@@ -175,6 +176,17 @@ class _TestInstanceObject(object):
inst.save()
self.assertEqual(inst.host, 'newhost')
+ def test_get_deleted(self):
+ ctxt = context.get_admin_context()
+ fake_inst = dict(self.fake_instance, id=123, deleted=123)
+ fake_uuid = fake_inst['uuid']
+ self.mox.StubOutWithMock(db, 'instance_get_by_uuid')
+ db.instance_get_by_uuid(ctxt, fake_uuid, []).AndReturn(fake_inst)
+ self.mox.ReplayAll()
+ inst = instance.Instance.get_by_uuid(ctxt, fake_uuid)
+ # NOTE(danms): Make sure it's actually a bool
+ self.assertEqual(inst.deleted, True)
+
class TestInstanceObject(test_objects._LocalTest,
_TestInstanceObject):
diff --git a/nova/tests/objects/test_objects.py b/nova/tests/objects/test_objects.py
index e7508ba38..e1c5f2c11 100644
--- a/nova/tests/objects/test_objects.py
+++ b/nova/tests/objects/test_objects.py
@@ -413,15 +413,18 @@ class _TestObject(object):
obj.created_at = dt
obj.updated_at = dt
obj.deleted_at = None
+ obj.deleted = False
expected = {'nova_object.name': 'MyObj',
'nova_object.namespace': 'nova',
'nova_object.version': '1.5',
'nova_object.changes':
- ['created_at', 'deleted_at', 'updated_at'],
+ ['deleted', 'created_at', 'deleted_at', 'updated_at'],
'nova_object.data':
{'created_at': timeutils.isotime(dt),
'updated_at': timeutils.isotime(dt),
- 'deleted_at': None}
+ 'deleted_at': None,
+ 'deleted': False,
+ }
}
self.assertEqual(obj.obj_to_primitive(), expected)