Merge "Use metadata and personality with server rebuild" into stable/newton

This commit is contained in:
Jenkins 2017-01-24 05:56:18 +00:00 committed by Gerrit Code Review
commit b883783627
3 changed files with 20 additions and 6 deletions

View File

@ -494,12 +494,13 @@ echo -e '%s\tALL=(ALL)\tNOPASSWD: ALL' >> /etc/sudoers
result=msg, resource_status=status)
def rebuild(self, server_id, image_id, password=None,
preserve_ephemeral=False):
preserve_ephemeral=False, meta=None, files=None):
"""Rebuild the server and call check_rebuild to verify."""
server = self.fetch_server(server_id)
if server:
server.rebuild(image_id, password=password,
preserve_ephemeral=preserve_ephemeral)
preserve_ephemeral=preserve_ephemeral,
meta=meta, files=files)
return True
else:
return False

View File

@ -1122,13 +1122,23 @@ class Server(stack_user.StackUser, sh.SchedulerHintsMixin,
image_update_policy = (
prop_diff.get(self.IMAGE_UPDATE_POLICY) or
self.properties[self.IMAGE_UPDATE_POLICY])
instance_meta = prop_diff.get(self.METADATA,
self.properties[self.METADATA])
if instance_meta is not None:
instance_meta = self.client_plugin().meta_serialize(instance_meta)
personality_files = self.properties[self.PERSONALITY]
image = prop_diff[self.IMAGE]
preserve_ephemeral = (
image_update_policy == 'REBUILD_PRESERVE_EPHEMERAL')
password = (prop_diff.get(self.ADMIN_PASS) or
self.properties[self.ADMIN_PASS])
kwargs = {'password': password,
'preserve_ephemeral': preserve_ephemeral}
'preserve_ephemeral': preserve_ephemeral,
'meta': instance_meta,
'files': personality_files}
prg = progress.ServerUpdateProgress(self.resource_id,
'rebuild',
handler_extra={'args': (image,),

View File

@ -2013,11 +2013,13 @@ class ServersTest(common.HeatTestCase):
if 'REBUILD' == policy:
mock_rebuild.assert_called_once_with(
return_server, '2', password=password,
preserve_ephemeral=False)
preserve_ephemeral=False,
meta=None, files={})
else:
mock_rebuild.assert_called_once_with(
return_server, '2', password=password,
preserve_ephemeral=True)
preserve_ephemeral=True,
meta=None, files={})
def test_server_update_image_rebuild_status_rebuild(self):
# Normally we will see 'REBUILD' first and then 'ACTIVE".
@ -2078,7 +2080,8 @@ class ServersTest(common.HeatTestCase):
six.text_type(error))
self.assertEqual((server.UPDATE, server.FAILED), server.state)
mock_rebuild.assert_called_once_with(
return_server, '2', password=None, preserve_ephemeral=False)
return_server, '2', password=None, preserve_ephemeral=False,
meta=None, files={})
def test_server_update_properties(self):
return_server = self.fc.servers.list()[1]