Merge "Check deleted flag in Instance.create()"
This commit is contained in:
commit
64eae8dce2
@ -479,6 +479,9 @@ class Instance(base.NovaPersistentObject, base.NovaObject,
|
||||
if self.obj_attr_is_set('id'):
|
||||
raise exception.ObjectActionError(action='create',
|
||||
reason='already created')
|
||||
if self.obj_attr_is_set('deleted') and self.deleted:
|
||||
raise exception.ObjectActionError(action='create',
|
||||
reason='already deleted')
|
||||
updates = self.obj_get_changes()
|
||||
expected_attrs = [attr for attr in INSTANCE_DEFAULT_FIELDS
|
||||
if attr in updates]
|
||||
|
@ -6278,10 +6278,14 @@ class ComputeTestCase(BaseTestCase):
|
||||
admin_context = context.get_admin_context()
|
||||
deleted_at = (timeutils.utcnow() -
|
||||
datetime.timedelta(hours=1, minutes=5))
|
||||
instance1 = self._create_fake_instance_obj({"deleted_at": deleted_at,
|
||||
"deleted": True})
|
||||
instance2 = self._create_fake_instance_obj({"deleted_at": deleted_at,
|
||||
"deleted": True})
|
||||
instance1 = self._create_fake_instance_obj()
|
||||
instance2 = self._create_fake_instance_obj()
|
||||
|
||||
timeutils.set_time_override(deleted_at)
|
||||
instance1.destroy()
|
||||
instance2.destroy()
|
||||
timeutils.clear_time_override()
|
||||
|
||||
self.flags(running_deleted_instance_timeout=3600,
|
||||
running_deleted_instance_action=action)
|
||||
|
||||
|
@ -3006,8 +3006,8 @@ class FloatingIPTestCase(test.TestCase):
|
||||
lambda *args, **kwargs: None)
|
||||
instance = objects.Instance(context=self.context)
|
||||
instance.project_id = self.project_id
|
||||
instance.deleted = True
|
||||
instance.create()
|
||||
instance.destroy()
|
||||
network = db.network_create_safe(self.context.elevated(), {
|
||||
'project_id': self.project_id,
|
||||
'host': CONF.host,
|
||||
|
@ -1058,6 +1058,13 @@ class _TestInstanceObject(object):
|
||||
inst2 = objects.Instance.get_by_uuid(self.context, inst1.uuid)
|
||||
self.assertEqual('foo-host', inst2.host)
|
||||
|
||||
def test_create_deleted(self):
|
||||
inst1 = objects.Instance(context=self.context,
|
||||
user_id=self.context.user_id,
|
||||
project_id=self.context.project_id,
|
||||
deleted=True)
|
||||
self.assertRaises(exception.ObjectActionError, inst1.create)
|
||||
|
||||
def test_create_with_extras(self):
|
||||
inst = objects.Instance(context=self.context,
|
||||
uuid=self.fake_instance['uuid'],
|
||||
|
Loading…
Reference in New Issue
Block a user