Merge "Don't snapshot if server hasn't been created yet"
This commit is contained in:
commit
bce7ce4af1
@ -1268,18 +1268,7 @@ class Server(stack_user.StackUser, sh.SchedulerHintsMixin,
|
|||||||
zaqar.queue(queue_id).delete()
|
zaqar.queue(queue_id).delete()
|
||||||
self.data_delete('metadata_queue_id')
|
self.data_delete('metadata_queue_id')
|
||||||
|
|
||||||
def handle_snapshot_delete(self, state):
|
def _delete(self):
|
||||||
if state[0] != self.FAILED:
|
|
||||||
image_id = self.client().servers.create_image(
|
|
||||||
self.resource_id, self.physical_resource_name())
|
|
||||||
return progress.ServerDeleteProgress(
|
|
||||||
self.resource_id, image_id, False)
|
|
||||||
return self.handle_delete()
|
|
||||||
|
|
||||||
def handle_delete(self):
|
|
||||||
if self.resource_id is None:
|
|
||||||
return
|
|
||||||
|
|
||||||
if self.user_data_software_config():
|
if self.user_data_software_config():
|
||||||
self._delete_user()
|
self._delete_user()
|
||||||
self._delete_temp_url()
|
self._delete_temp_url()
|
||||||
@ -1296,6 +1285,23 @@ class Server(stack_user.StackUser, sh.SchedulerHintsMixin,
|
|||||||
return
|
return
|
||||||
return progress.ServerDeleteProgress(self.resource_id)
|
return progress.ServerDeleteProgress(self.resource_id)
|
||||||
|
|
||||||
|
def handle_snapshot_delete(self, state):
|
||||||
|
if self.resource_id is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
if state[1] != self.FAILED:
|
||||||
|
image_id = self.client().servers.create_image(
|
||||||
|
self.resource_id, self.physical_resource_name())
|
||||||
|
return progress.ServerDeleteProgress(
|
||||||
|
self.resource_id, image_id, False)
|
||||||
|
return self._delete()
|
||||||
|
|
||||||
|
def handle_delete(self):
|
||||||
|
if self.resource_id is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
return self._delete()
|
||||||
|
|
||||||
def check_delete_complete(self, prg):
|
def check_delete_complete(self, prg):
|
||||||
if not prg:
|
if not prg:
|
||||||
return True
|
return True
|
||||||
@ -1306,7 +1312,7 @@ class Server(stack_user.StackUser, sh.SchedulerHintsMixin,
|
|||||||
raise exception.Error(image.status)
|
raise exception.Error(image.status)
|
||||||
elif image.status == 'ACTIVE':
|
elif image.status == 'ACTIVE':
|
||||||
prg.image_complete = True
|
prg.image_complete = True
|
||||||
if not self.handle_delete():
|
if not self._delete():
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -3829,6 +3829,31 @@ class ServersTest(common.HeatTestCase):
|
|||||||
|
|
||||||
delete_server.assert_not_called()
|
delete_server.assert_not_called()
|
||||||
|
|
||||||
|
def test_handle_snapshot_delete(self):
|
||||||
|
t = template_format.parse(wp_template)
|
||||||
|
t['Resources']['WebServer']['DeletionPolicy'] = 'Snapshot'
|
||||||
|
tmpl = template.Template(t)
|
||||||
|
stack = parser.Stack(
|
||||||
|
utils.dummy_context(), 'snapshot_policy', tmpl)
|
||||||
|
stack.store()
|
||||||
|
rsrc = stack['WebServer']
|
||||||
|
mock_plugin = self.patchobject(nova.NovaClientPlugin, '_create')
|
||||||
|
mock_plugin.return_value = self.fc
|
||||||
|
delete_server = self.patchobject(self.fc.servers, 'delete')
|
||||||
|
delete_server.side_effect = nova_exceptions.NotFound(404)
|
||||||
|
create_image = self.patchobject(self.fc.servers, 'create_image')
|
||||||
|
|
||||||
|
# test resource_id is None
|
||||||
|
rsrc.handle_snapshot_delete((rsrc.CREATE, rsrc.FAILED))
|
||||||
|
delete_server.assert_not_called()
|
||||||
|
create_image.assert_not_called()
|
||||||
|
|
||||||
|
# test has resource_id but state is CREATE_FAILED
|
||||||
|
rsrc.resource_id = '4567'
|
||||||
|
rsrc.handle_snapshot_delete((rsrc.CREATE, rsrc.FAILED))
|
||||||
|
delete_server.assert_called_once_with('4567')
|
||||||
|
create_image.assert_not_called()
|
||||||
|
|
||||||
|
|
||||||
class ServerInternalPortTest(common.HeatTestCase):
|
class ServerInternalPortTest(common.HeatTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user