Unit tests: always use ResourceDefinition for handle_update()
Change-Id: Ib243d6d1f4ff41c83fddcd0a3741cc28ff954448
This commit is contained in:
parent
ead7117331
commit
a844ceb968
|
@ -202,8 +202,11 @@ class InstanceGroupTest(HeatTestCase):
|
|||
|
||||
self.m.ReplayAll()
|
||||
|
||||
update_snippet = copy.deepcopy(rsrc.parsed_template())
|
||||
update_snippet['Properties']['Size'] = '5'
|
||||
props = copy.copy(rsrc.properties.data)
|
||||
props['Size'] = 5
|
||||
update_snippet = rsrc_defn.ResourceDefinition(rsrc.name,
|
||||
rsrc.type(),
|
||||
props)
|
||||
tmpl_diff = {'Properties': {'Size': '5'}}
|
||||
prop_diff = {'Size': '5'}
|
||||
self.assertIsNone(rsrc.handle_update(update_snippet, tmpl_diff,
|
||||
|
|
|
@ -26,6 +26,7 @@ from heat.engine.resources import glance_utils
|
|||
from heat.engine.resources import instance
|
||||
from heat.engine.resources import loadbalancer as lb
|
||||
from heat.engine.resources import wait_condition as wc
|
||||
from heat.engine import rsrc_defn
|
||||
from heat.engine import scheduler
|
||||
from heat.engine import stack_user
|
||||
from heat.tests.common import HeatTestCase
|
||||
|
@ -198,7 +199,12 @@ class LoadBalancerTest(HeatTestCase):
|
|||
s)
|
||||
id_list.append(inst.FnGetRefId())
|
||||
|
||||
rsrc.handle_update(copy.deepcopy(rsrc.t), {}, {'Instances': id_list})
|
||||
prop_diff = {'Instances': id_list}
|
||||
props = copy.copy(rsrc.properties.data)
|
||||
props.update(prop_diff)
|
||||
update_defn = rsrc_defn.ResourceDefinition(rsrc.name, rsrc.type(),
|
||||
props)
|
||||
rsrc.handle_update(update_defn, {}, prop_diff)
|
||||
|
||||
self.assertEqual('4.5.6.7', rsrc.FnGetAtt('DNSName'))
|
||||
self.assertEqual('', rsrc.FnGetAtt('SourceSecurityGroup.GroupName'))
|
||||
|
@ -206,7 +212,7 @@ class LoadBalancerTest(HeatTestCase):
|
|||
self.assertRaises(exception.InvalidTemplateAttribute,
|
||||
rsrc.FnGetAtt, 'Foo')
|
||||
|
||||
self.assertIsNone(rsrc.handle_update({}, {}, {}))
|
||||
self.assertIsNone(rsrc.handle_update(rsrc.t, {}, {}))
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ from heat.common import urlfetch
|
|||
from heat.db import api as db_api
|
||||
from heat.engine import parser
|
||||
from heat.engine import resource
|
||||
from heat.engine import rsrc_defn
|
||||
from heat.engine import scheduler
|
||||
from heat.tests.common import HeatTestCase
|
||||
from heat.tests import generic_resource as generic_rsrc
|
||||
|
@ -277,11 +278,10 @@ Outputs:
|
|||
rsrc = stack['the_nested']
|
||||
|
||||
original_nested_id = rsrc.resource_id
|
||||
t = template_format.parse(self.test_template)
|
||||
new_res = copy.deepcopy(t['Resources']['the_nested'])
|
||||
new_res['Properties']['TemplateURL'] = (
|
||||
'https://server.test/new.template')
|
||||
prop_diff = {'TemplateURL': 'https://server.test/new.template'}
|
||||
props = copy.copy(rsrc.properties.data)
|
||||
props.update(prop_diff)
|
||||
new_res = rsrc_defn.ResourceDefinition(rsrc.name, rsrc.type(), props)
|
||||
updater = rsrc.handle_update(new_res, {}, prop_diff)
|
||||
updater.run_to_completion()
|
||||
self.assertIs(True, rsrc.check_update_complete(updater))
|
||||
|
@ -332,11 +332,10 @@ Outputs:
|
|||
|
||||
rsrc = stack['the_nested']
|
||||
|
||||
t = template_format.parse(self.test_template)
|
||||
new_res = copy.deepcopy(t['Resources']['the_nested'])
|
||||
new_res['Properties']['TemplateURL'] = (
|
||||
'https://server.test/new.template')
|
||||
prop_diff = {'TemplateURL': 'https://server.test/new.template'}
|
||||
props = copy.copy(rsrc.properties.data)
|
||||
props.update(prop_diff)
|
||||
new_res = rsrc_defn.ResourceDefinition(rsrc.name, rsrc.type(), props)
|
||||
updater = rsrc.handle_update(new_res, {}, prop_diff)
|
||||
updater.run_to_completion()
|
||||
self.assertIs(True, rsrc.check_update_complete(updater))
|
||||
|
@ -373,11 +372,10 @@ Outputs:
|
|||
|
||||
rsrc = stack['the_nested']
|
||||
|
||||
t = template_format.parse(self.test_template)
|
||||
new_res = copy.deepcopy(t['Resources']['the_nested'])
|
||||
new_res['Properties']['TemplateURL'] = (
|
||||
'https://server.test/new.template')
|
||||
prop_diff = {'TemplateURL': 'https://server.test/new.template'}
|
||||
props = copy.copy(rsrc.properties.data)
|
||||
props.update(prop_diff)
|
||||
new_res = rsrc_defn.ResourceDefinition(rsrc.name, rsrc.type(), props)
|
||||
ex = self.assertRaises(exception.RequestLimitExceeded,
|
||||
rsrc.handle_update, new_res, {}, prop_diff)
|
||||
self.assertIn(exception.StackResourceLimitExceeded.msg_fmt,
|
||||
|
|
|
@ -18,6 +18,7 @@ from testtools import skipIf
|
|||
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine.cfn import functions as cfn_funcs
|
||||
from heat.engine import clients
|
||||
from heat.engine import properties
|
||||
from heat.engine.resources.neutron import net
|
||||
|
@ -702,23 +703,16 @@ class NeutronNetTest(HeatTestCase):
|
|||
self.assertEqual('ACTIVE', rsrc.FnGetAtt('status'))
|
||||
self.assertRaises(
|
||||
exception.InvalidTemplateAttribute, rsrc.FnGetAtt, 'Foo')
|
||||
update_snippet = {
|
||||
"Type": "OS::Neutron::Net",
|
||||
"Properties": {
|
||||
"name": "mynet",
|
||||
"shared": True,
|
||||
"admin_state_up": True,
|
||||
"dhcp_agent_ids": [
|
||||
"bb09cfcd-5277-473d-8336-d4ed8628ae68"
|
||||
]
|
||||
}
|
||||
}
|
||||
prop_diff = {
|
||||
"name": "mynet",
|
||||
"dhcp_agent_ids": [
|
||||
"bb09cfcd-5277-473d-8336-d4ed8628ae68"
|
||||
]
|
||||
}
|
||||
props = copy.copy(rsrc.properties.data)
|
||||
props.update(prop_diff)
|
||||
update_snippet = rsrc_defn.ResourceDefinition(rsrc.name, rsrc.type(),
|
||||
props)
|
||||
rsrc.handle_update(update_snippet, {}, prop_diff)
|
||||
|
||||
scheduler.TaskRunner(rsrc.delete)()
|
||||
|
@ -835,17 +829,16 @@ class NeutronProviderNetTest(HeatTestCase):
|
|||
scheduler.TaskRunner(rsrc.create)()
|
||||
self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state)
|
||||
|
||||
update_snippet = {
|
||||
"Type": "OS::Neutron::ProviderNet",
|
||||
"Properties": {
|
||||
"name": "prov_net",
|
||||
"shared": True,
|
||||
"admin_state_up": True,
|
||||
"network_type": "vlan",
|
||||
"physical_network": "physnet_1",
|
||||
"segmentation_id": "102"
|
||||
}
|
||||
props = {
|
||||
"name": "prov_net",
|
||||
"shared": True,
|
||||
"admin_state_up": True,
|
||||
"network_type": "vlan",
|
||||
"physical_network": "physnet_1",
|
||||
"segmentation_id": "102"
|
||||
}
|
||||
update_snippet = rsrc_defn.ResourceDefinition(rsrc.name, rsrc.type(),
|
||||
props)
|
||||
self.assertIsNone(rsrc.handle_update(update_snippet, {}, {}))
|
||||
self.m.VerifyAll()
|
||||
|
||||
|
@ -894,20 +887,19 @@ class NeutronSubnetTest(HeatTestCase):
|
|||
|
||||
self.assertIn(stack['port'], stack.dependencies[stack['subnet']])
|
||||
self.assertIn(stack['port2'], stack.dependencies[stack['subnet']])
|
||||
update_snippet = {
|
||||
"Type": "OS::Neutron::Subnet",
|
||||
"Properties": {
|
||||
"name": 'mysubnet',
|
||||
"network": {"Ref": "network"},
|
||||
"tenant_id": "c1210485b2424d48804aad5d39c61b8f",
|
||||
"ip_version": 4,
|
||||
"cidr": "10.0.3.0/24",
|
||||
"allocation_pools": [
|
||||
{"start": "10.0.3.20", "end": "10.0.3.150"}],
|
||||
"dns_nameservers": ["8.8.8.8", "192.168.1.254"]
|
||||
}
|
||||
props = {
|
||||
"name": 'mysubnet',
|
||||
"network_id": cfn_funcs.ResourceRef(stack, "Ref", "network"),
|
||||
"tenant_id": "c1210485b2424d48804aad5d39c61b8f",
|
||||
"ip_version": 4,
|
||||
"cidr": "10.0.3.0/24",
|
||||
"allocation_pools": [
|
||||
{"start": "10.0.3.20", "end": "10.0.3.150"}],
|
||||
"dns_nameservers": ["8.8.8.8", "192.168.1.254"],
|
||||
}
|
||||
rsrc.handle_update(stack.resolve_static_data(update_snippet), {}, {})
|
||||
update_snippet = rsrc_defn.ResourceDefinition(rsrc.name, rsrc.type(),
|
||||
props)
|
||||
rsrc.handle_update(update_snippet, {}, {})
|
||||
|
||||
self.assertIsNone(scheduler.TaskRunner(rsrc.delete)())
|
||||
rsrc.state_set(rsrc.CREATE, rsrc.COMPLETE, 'to delete again')
|
||||
|
@ -1358,19 +1350,15 @@ class NeutronRouterTest(HeatTestCase):
|
|||
self.assertEqual('3e21026f2dc94372b105808c0e721661',
|
||||
rsrc.FnGetAtt('tenant_id'))
|
||||
|
||||
update_snippet = {
|
||||
"Type": "OS::Neutron::Router",
|
||||
"Properties": {
|
||||
"admin_state_up": False,
|
||||
"name": "myrouter",
|
||||
"l3_agent_id": "63b3fd83-2c5f-4dad-b3ae-e0f83a40f216"
|
||||
}
|
||||
}
|
||||
prop_diff = {
|
||||
"admin_state_up": False,
|
||||
"name": "myrouter",
|
||||
"l3_agent_id": "63b3fd83-2c5f-4dad-b3ae-e0f83a40f216"
|
||||
}
|
||||
props = copy.copy(rsrc.properties.data)
|
||||
props.update(prop_diff)
|
||||
update_snippet = rsrc_defn.ResourceDefinition(rsrc.name, rsrc.type(),
|
||||
props)
|
||||
rsrc.handle_update(update_snippet, {}, prop_diff)
|
||||
|
||||
self.assertIsNone(scheduler.TaskRunner(rsrc.delete)())
|
||||
|
@ -1968,19 +1956,17 @@ class NeutronFloatingIPTest(HeatTestCase):
|
|||
self.assertEqual('fc68ea2c-b60b-4b4f-bd82-94ec81110766',
|
||||
p.resource_id)
|
||||
|
||||
update_snippet = {
|
||||
"Type": "OS::Neutron::Port",
|
||||
"Properties": {
|
||||
"network": "xyz1234",
|
||||
"fixed_ips": [{
|
||||
"subnet_id": "sub1234",
|
||||
"ip_address": "10.0.0.11"
|
||||
}],
|
||||
"name": "test_port",
|
||||
"device_id": "d6b4d3a5-c700-476f-b609-1493dd9dadc2",
|
||||
'device_owner': 'network:floatingip'
|
||||
}
|
||||
props = {
|
||||
"network": "xyz1234",
|
||||
"fixed_ips": [{
|
||||
"subnet_id": "sub1234",
|
||||
"ip_address": "10.0.0.11"
|
||||
}],
|
||||
"name": "test_port",
|
||||
"device_id": "d6b4d3a5-c700-476f-b609-1493dd9dadc2",
|
||||
'device_owner': 'network:floatingip'
|
||||
}
|
||||
update_snippet = rsrc_defn.ResourceDefinition(p.name, p.type(), props)
|
||||
|
||||
p.handle_update(update_snippet, {}, {})
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ from heat.common import template_format
|
|||
from heat.engine import clients
|
||||
from heat.engine.resources.neutron import network_gateway
|
||||
from heat.engine.resources.neutron import neutron_utils
|
||||
from heat.engine import rsrc_defn
|
||||
from heat.engine import scheduler
|
||||
from heat.openstack.common.importutils import try_import
|
||||
from heat.tests.common import HeatTestCase
|
||||
|
@ -375,9 +376,10 @@ class NeutronNetworkGatewayTest(HeatTestCase):
|
|||
self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state)
|
||||
|
||||
# update name
|
||||
snippet_for_update = {
|
||||
'Type': u'OS::Neutron::NetworkGatewayUpdate',
|
||||
'Properties': {
|
||||
snippet_for_update = rsrc_defn.ResourceDefinition(
|
||||
rsrc.name,
|
||||
rsrc.type(),
|
||||
{
|
||||
'name': u'NetworkGatewayUpdate',
|
||||
'devices': [{
|
||||
'id': u'e52148ca-7db9-4ec3-abe6-2c7c0ff316eb',
|
||||
|
@ -386,16 +388,16 @@ class NeutronNetworkGatewayTest(HeatTestCase):
|
|||
'network': '6af055d3-26f6-48dd-a597-7611d7e58d35',
|
||||
'segmentation_type': 'vlan',
|
||||
'segmentation_id': 10}]
|
||||
}
|
||||
}
|
||||
})
|
||||
prop_diff = {'name': u'NetworkGatewayUpdate'}
|
||||
self.assertIsNone(rsrc.handle_update(snippet_for_update, IgnoreArg(),
|
||||
prop_diff))
|
||||
|
||||
# update connections
|
||||
snippet_for_update = {
|
||||
'Type': u'OS::Neutron::NetworkGateway',
|
||||
'Properties': {
|
||||
snippet_for_update = rsrc_defn.ResourceDefinition(
|
||||
rsrc.name,
|
||||
rsrc.type(),
|
||||
{
|
||||
'name': u'NetworkGateway',
|
||||
'devices': [{
|
||||
'id': u'e52148ca-7db9-4ec3-abe6-2c7c0ff316eb',
|
||||
|
@ -404,8 +406,7 @@ class NeutronNetworkGatewayTest(HeatTestCase):
|
|||
'network': u'6af055d3-26f6-48dd-a597-7611d7e58d35',
|
||||
'segmentation_type': u'flat',
|
||||
'segmentation_id': 0}]
|
||||
}
|
||||
}
|
||||
})
|
||||
prop_diff = {
|
||||
'connections': [{
|
||||
'network': u'6af055d3-26f6-48dd-a597-7611d7e58d35',
|
||||
|
@ -420,9 +421,10 @@ class NeutronNetworkGatewayTest(HeatTestCase):
|
|||
prop_diff))
|
||||
|
||||
# update devices
|
||||
snippet_for_update = {
|
||||
'Type': u'OS::Neutron::NetworkGateway',
|
||||
'Properties': {
|
||||
snippet_for_update = rsrc_defn.ResourceDefinition(
|
||||
rsrc.name,
|
||||
rsrc.type(),
|
||||
{
|
||||
'name': u'NetworkGateway',
|
||||
'devices': [{
|
||||
'id': u'e52148ca-7db9-4ec3-abe6-2c7c0ff316eb',
|
||||
|
@ -431,8 +433,7 @@ class NeutronNetworkGatewayTest(HeatTestCase):
|
|||
'network_id': u'6af055d3-26f6-48dd-a597-7611d7e58d35',
|
||||
'segmentation_type': u'vlan',
|
||||
'segmentation_id': 10}]
|
||||
}
|
||||
}
|
||||
})
|
||||
prop_diff = {
|
||||
'devices': [{
|
||||
'id': u'e52148ca-7db9-4ec3-abe6-2c7c0ff316eb',
|
||||
|
|
|
@ -12,11 +12,14 @@
|
|||
# under the License.
|
||||
|
||||
from heatclient.exc import HTTPNotFound
|
||||
|
||||
import copy
|
||||
import mock
|
||||
|
||||
from heat.common import exception
|
||||
from heat.engine import parser
|
||||
from heat.engine.resources.software_config import software_deployment as sd
|
||||
from heat.engine import rsrc_defn
|
||||
from heat.engine import template
|
||||
from heat.tests.common import HeatTestCase
|
||||
from heat.tests import utils
|
||||
|
@ -371,18 +374,16 @@ class SoftwareDeploymentTest(HeatTestCase):
|
|||
|
||||
derived_sc = self.mock_derived_software_config()
|
||||
sd = self.mock_deployment()
|
||||
rsrc = self.stack['deployment_mysql']
|
||||
|
||||
self.deployments.get.return_value = sd
|
||||
sd.update.return_value = None
|
||||
self.deployment.resource_id = sd.id
|
||||
config_id = '0ff2e903-78d7-4cca-829e-233af3dae705'
|
||||
prop_diff = {'config': config_id}
|
||||
snippet = {
|
||||
'Properties': {
|
||||
'server': '9f1f0e00-05d2-4ca5-8602-95021f19c9d0',
|
||||
'config': config_id,
|
||||
}
|
||||
}
|
||||
props = copy.copy(rsrc.properties.data)
|
||||
props.update(prop_diff)
|
||||
snippet = rsrc_defn.ResourceDefinition(rsrc.name, rsrc.type(), props)
|
||||
|
||||
self.deployment.handle_update(
|
||||
json_snippet=snippet, tmpl_diff=None, prop_diff=prop_diff)
|
||||
|
|
|
@ -640,14 +640,12 @@ class WaitConditionUpdateTest(HeatTestCase):
|
|||
'Status': 'SUCCESS', 'UniqueId': '1'}
|
||||
self._metadata_update(wait_condition_handle, test_metadata, 5)
|
||||
|
||||
update_snippet = {"Type": "AWS::CloudFormation::WaitCondition",
|
||||
"Properties": {
|
||||
"Handle": {"Ref": "WaitHandle"},
|
||||
"Timeout": "5",
|
||||
"Count": "5"}}
|
||||
prop_diff = {"Count": 5}
|
||||
parsed_snippet = self.stack.resolve_static_data(update_snippet)
|
||||
updater = rsrc.handle_update(parsed_snippet, {}, prop_diff)
|
||||
props = copy.copy(rsrc.properties.data)
|
||||
props.update(prop_diff)
|
||||
update_defn = rsrc_defn.ResourceDefinition(rsrc.name, rsrc.type(),
|
||||
props)
|
||||
updater = rsrc.handle_update(update_defn, {}, prop_diff)
|
||||
updater.run_to_completion()
|
||||
|
||||
self.assertEqual(5, rsrc.properties['Count'])
|
||||
|
@ -674,14 +672,12 @@ class WaitConditionUpdateTest(HeatTestCase):
|
|||
rsrc = self.stack['WaitForTheHandle']
|
||||
|
||||
self._metadata_update(wait_condition_handle, test_metadata, 3)
|
||||
update_snippet = {"Type": "AWS::CloudFormation::WaitCondition",
|
||||
"Properties": {
|
||||
"Handle": {"Ref": "WaitHandle"},
|
||||
"Timeout": "5",
|
||||
"Count": "5"}}
|
||||
prop_diff = {"Count": 5}
|
||||
parsed_snippet = self.stack.resolve_static_data(update_snippet)
|
||||
updater = rsrc.handle_update(parsed_snippet, {}, prop_diff)
|
||||
props = copy.copy(rsrc.properties.data)
|
||||
props.update(prop_diff)
|
||||
update_defn = rsrc_defn.ResourceDefinition(rsrc.name, rsrc.type(),
|
||||
props)
|
||||
updater = rsrc.handle_update(update_defn, {}, prop_diff)
|
||||
updater.run_to_completion()
|
||||
|
||||
self.assertEqual(5, rsrc.properties['Count'])
|
||||
|
@ -719,14 +715,12 @@ class WaitConditionUpdateTest(HeatTestCase):
|
|||
|
||||
self.m.ReplayAll()
|
||||
|
||||
update_snippet = {"Type": "AWS::CloudFormation::WaitCondition",
|
||||
"Properties": {
|
||||
"Handle": {"Ref": "WaitHandle"},
|
||||
"Timeout": "5",
|
||||
"Count": "5"}}
|
||||
prop_diff = {"Count": 5}
|
||||
parsed_snippet = self.stack.resolve_static_data(update_snippet)
|
||||
updater = rsrc.handle_update(parsed_snippet, {}, prop_diff)
|
||||
props = copy.copy(rsrc.properties.data)
|
||||
props.update(prop_diff)
|
||||
update_defn = rsrc_defn.ResourceDefinition(rsrc.name, rsrc.type(),
|
||||
props)
|
||||
updater = rsrc.handle_update(update_defn, {}, prop_diff)
|
||||
self.assertEqual(5, rsrc.properties['Count'])
|
||||
ex = self.assertRaises(wc.WaitConditionTimeout,
|
||||
updater.run_to_completion)
|
||||
|
|
Loading…
Reference in New Issue