Set properties to before_props before calling handle_update
For some resources, we need to get the old properties while handle_update, e.g. for nova server resource, we calculate networks from old_nets and new_nets when update the server networks, but the properties of server is updated after rsrc_defn reparsing. So let's set the properties to before_props before calling handle_update. Change-Id: I24fea225a2749ee9baaa6273b78eed8126eb9e95 Closes-Bug: #1584623
This commit is contained in:
parent
025c4fe1d3
commit
b1617c8345
|
@ -1241,6 +1241,7 @@ class Resource(object):
|
|||
|
||||
prop_diff = self.update_template_diff_properties(after_props,
|
||||
before_props)
|
||||
self.properties = before_props
|
||||
|
||||
yield self.action_handler_task(action,
|
||||
args=[after, tmpl_diff,
|
||||
|
|
|
@ -859,9 +859,8 @@ class InstancesTest(common.HeatTestCase):
|
|||
before_props['NetworkInterfaces'] = old_interfaces
|
||||
update_props = self.instance_props.copy()
|
||||
update_props['NetworkInterfaces'] = new_interfaces
|
||||
update_template = instance.t.freeze(properties=update_props)
|
||||
instance.t = instance.t.freeze(properties=before_props)
|
||||
instance.reparse()
|
||||
after = instance.t.freeze(properties=update_props)
|
||||
before = instance.t.freeze(properties=before_props)
|
||||
|
||||
self.m.StubOutWithMock(self.fc.servers, 'get')
|
||||
self.fc.servers.get('1234').MultipleTimes().AndReturn(return_server)
|
||||
|
@ -873,7 +872,7 @@ class InstancesTest(common.HeatTestCase):
|
|||
None, None).AndReturn(None)
|
||||
self.m.ReplayAll()
|
||||
|
||||
scheduler.TaskRunner(instance.update, update_template)()
|
||||
scheduler.TaskRunner(instance.update, after, before)()
|
||||
self.assertEqual((instance.UPDATE, instance.COMPLETE), instance.state)
|
||||
self.m.VerifyAll()
|
||||
|
||||
|
@ -902,9 +901,8 @@ class InstancesTest(common.HeatTestCase):
|
|||
before_props['NetworkInterfaces'] = old_interfaces
|
||||
update_props = self.instance_props.copy()
|
||||
update_props['NetworkInterfaces'] = new_interfaces
|
||||
update_template = instance.t.freeze(properties=update_props)
|
||||
instance.t = instance.t.freeze(properties=before_props)
|
||||
instance.reparse()
|
||||
after = instance.t.freeze(properties=update_props)
|
||||
before = instance.t.freeze(properties=before_props)
|
||||
|
||||
self.m.StubOutWithMock(self.fc.servers, 'get')
|
||||
self.fc.servers.get('1234').MultipleTimes().AndReturn(return_server)
|
||||
|
@ -914,7 +912,7 @@ class InstancesTest(common.HeatTestCase):
|
|||
|
||||
self.m.ReplayAll()
|
||||
|
||||
scheduler.TaskRunner(instance.update, update_template)()
|
||||
scheduler.TaskRunner(instance.update, after, before)()
|
||||
self.assertEqual((instance.UPDATE, instance.COMPLETE), instance.state)
|
||||
|
||||
def test_instance_update_network_interfaces_new_include_old(self):
|
||||
|
@ -942,9 +940,8 @@ class InstancesTest(common.HeatTestCase):
|
|||
before_props['NetworkInterfaces'] = old_interfaces
|
||||
update_props = self.instance_props.copy()
|
||||
update_props['NetworkInterfaces'] = new_interfaces
|
||||
update_template = instance.t.freeze(properties=update_props)
|
||||
instance.t = instance.t.freeze(properties=before_props)
|
||||
instance.reparse()
|
||||
after = instance.t.freeze(properties=update_props)
|
||||
before = instance.t.freeze(properties=before_props)
|
||||
|
||||
self.m.StubOutWithMock(self.fc.servers, 'get')
|
||||
self.fc.servers.get('1234').MultipleTimes().AndReturn(return_server)
|
||||
|
@ -954,7 +951,7 @@ class InstancesTest(common.HeatTestCase):
|
|||
|
||||
self.m.ReplayAll()
|
||||
|
||||
scheduler.TaskRunner(instance.update, update_template)()
|
||||
scheduler.TaskRunner(instance.update, after, before)()
|
||||
self.assertEqual((instance.UPDATE, instance.COMPLETE), instance.state)
|
||||
|
||||
def test_instance_update_network_interfaces_new_old_all_different(self):
|
||||
|
@ -982,9 +979,8 @@ class InstancesTest(common.HeatTestCase):
|
|||
before_props['NetworkInterfaces'] = old_interfaces
|
||||
update_props = self.instance_props.copy()
|
||||
update_props['NetworkInterfaces'] = new_interfaces
|
||||
update_template = instance.t.freeze(properties=update_props)
|
||||
instance.t = instance.t.freeze(properties=before_props)
|
||||
instance.reparse()
|
||||
after = instance.t.freeze(properties=update_props)
|
||||
before = instance.t.freeze(properties=before_props)
|
||||
|
||||
self.m.StubOutWithMock(self.fc.servers, 'get')
|
||||
self.fc.servers.get('1234').MultipleTimes().AndReturn(return_server)
|
||||
|
@ -999,7 +995,7 @@ class InstancesTest(common.HeatTestCase):
|
|||
|
||||
self.m.ReplayAll()
|
||||
|
||||
scheduler.TaskRunner(instance.update, update_template)()
|
||||
scheduler.TaskRunner(instance.update, after, before)()
|
||||
self.assertEqual((instance.UPDATE, instance.COMPLETE), instance.state)
|
||||
|
||||
def test_instance_update_network_interfaces_no_old(self):
|
||||
|
@ -1096,13 +1092,15 @@ class InstancesTest(common.HeatTestCase):
|
|||
before_props = self.instance_props.copy()
|
||||
if old_interfaces is not None:
|
||||
before_props['NetworkInterfaces'] = old_interfaces
|
||||
update_props = self.instance_props.copy()
|
||||
update_props = copy.deepcopy(before_props)
|
||||
|
||||
if new_interfaces is not None:
|
||||
update_props['NetworkInterfaces'] = new_interfaces
|
||||
update_props['SubnetId'] = subnet_id
|
||||
|
||||
update_template = instance.t.freeze(properties=update_props)
|
||||
instance.t = instance.t.freeze(properties=before_props)
|
||||
after = instance.t.freeze(properties=update_props)
|
||||
before = instance.t.freeze(properties=before_props)
|
||||
|
||||
instance.reparse()
|
||||
|
||||
self.m.StubOutWithMock(self.fc.servers, 'get')
|
||||
|
@ -1128,7 +1126,7 @@ class InstancesTest(common.HeatTestCase):
|
|||
|
||||
self.m.ReplayAll()
|
||||
|
||||
scheduler.TaskRunner(instance.update, update_template)()
|
||||
scheduler.TaskRunner(instance.update, after, before)()
|
||||
self.assertEqual((instance.UPDATE, instance.COMPLETE), instance.state)
|
||||
self.m.VerifyAll()
|
||||
|
||||
|
|
Loading…
Reference in New Issue