diff options
-rw-r--r-- | nova/objects/base.py | 1 | ||||
-rw-r--r-- | nova/objects/instance.py | 5 | ||||
-rw-r--r-- | nova/tests/fake_instance.py | 1 | ||||
-rw-r--r-- | nova/tests/objects/test_instance.py | 12 | ||||
-rw-r--r-- | nova/tests/objects/test_objects.py | 7 |
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) |