Merge "Freeze rsrc_defn base on properties.data when restore"

This commit is contained in:
Jenkins 2015-06-03 03:03:38 +00:00 committed by Gerrit Code Review
commit a8c4a155bb
2 changed files with 12 additions and 5 deletions

View File

@ -26,6 +26,7 @@ from heat.common.i18n import _
from heat.common.i18n import _LI
from heat.engine import attributes
from heat.engine import constraints
from heat.engine import function
from heat.engine import properties
from heat.engine import resource
from heat.engine.resources.openstack.neutron import subnet
@ -1465,10 +1466,7 @@ class Server(stack_user.StackUser):
def handle_restore(self, defn, restore_data):
image_id = restore_data['resource_data']['snapshot_image_id']
props = dict(
(key, value) for (key, value) in
six.iteritems(defn.properties(self.properties_schema))
if value is not None)
props = function.resolve(self.properties.data)
props[self.IMAGE] = image_id
return defn.freeze(properties=props)

View File

@ -3172,6 +3172,10 @@ class ServersTest(common.HeatTestCase):
def test_server_restore(self):
t = template_format.parse(wp_template)
# create server with network id
sp = t['Resources']['WebServer']['Properties']
sp['networks'] = [{'network': 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'}]
tmpl = template.Template(t)
stack = parser.Stack(utils.dummy_context(), "server_restore", tmpl)
stack.store()
@ -3186,9 +3190,10 @@ class ServersTest(common.HeatTestCase):
self.fc.servers.create(
image=744, flavor=3, key_name='test',
name=utils.PhysName("server_restore", "WebServer"),
nics=[{'net-id': 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'}],
security_groups=[],
userdata=mox.IgnoreArg(), scheduler_hints=None,
meta=None, nics=None, availability_zone=None,
meta=None, availability_zone=None,
block_device_mapping=None, block_device_mapping_v2=None,
config_drive=None, disk_config=None, reservation_id=None,
files={}, admin_pass=None).AndReturn(return_server)
@ -3199,6 +3204,10 @@ class ServersTest(common.HeatTestCase):
glance.GlanceClientPlugin.get_image_id(
'CentOS 5.2').MultipleTimes().AndReturn(1)
self.patchobject(neutron.NeutronClientPlugin, 'resolve_network',
return_value='aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa')
self.stub_NetworkConstraint_validate()
self.m.ReplayAll()
scheduler.TaskRunner(stack.create)()