summaryrefslogtreecommitdiff
path: root/heat/tests/openstack/neutron/test_neutron_port.py
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-12-15 13:04:29 +0000
committerGerrit Code Review <review@openstack.org>2015-12-15 13:04:29 +0000
commit0079fb7cf4544ab79d789e0329bdc27c8aac17dc (patch)
tree47c8e1e62a739d3ae17bda24cda2c370f47efa5d /heat/tests/openstack/neutron/test_neutron_port.py
parentf84d2ea7952aefdcc23fbed7b6ff685eb6e32906 (diff)
parent3a82e0cd59f8d4bb9308969109dead0d7887c2f3 (diff)
downloadheat-0079fb7cf4544ab79d789e0329bdc27c8aac17dc.tar.gz
Merge "Neutron port, tolerate switching network name/id"
Diffstat (limited to 'heat/tests/openstack/neutron/test_neutron_port.py')
-rw-r--r--heat/tests/openstack/neutron/test_neutron_port.py75
1 files changed, 74 insertions, 1 deletions
diff --git a/heat/tests/openstack/neutron/test_neutron_port.py b/heat/tests/openstack/neutron/test_neutron_port.py
index 0335ee4fb..c03011403 100644
--- a/heat/tests/openstack/neutron/test_neutron_port.py
+++ b/heat/tests/openstack/neutron/test_neutron_port.py
@@ -571,6 +571,79 @@ class NeutronPortTest(common.HeatTestCase):
self.m.VerifyAll()
+ def test_port_needs_update_network(self):
+ props = {'network': u'net1234',
+ 'name': utils.PhysName('test_stack', 'port'),
+ 'admin_state_up': True,
+ 'device_owner': u'network:dhcp'}
+ neutronV20.find_resourceid_by_name_or_id(
+ mox.IsA(neutronclient.Client),
+ 'network',
+ 'net1234',
+ cmd_resource=None,
+ ).MultipleTimes().AndReturn('net1234')
+ neutronV20.find_resourceid_by_name_or_id(
+ mox.IsA(neutronclient.Client),
+ 'network',
+ 'old_network',
+ cmd_resource=None,
+ ).MultipleTimes().AndReturn('net1234')
+ create_props = props.copy()
+ create_props['network_id'] = create_props.pop('network')
+ neutronclient.Client.create_port(
+ {'port': create_props}
+ ).AndReturn({'port': {
+ "status": "BUILD",
+ "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766"
+ }})
+ neutronclient.Client.show_port(
+ 'fc68ea2c-b60b-4b4f-bd82-94ec81110766'
+ ).AndReturn({'port': {
+ "status": "ACTIVE",
+ "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766",
+ "fixed_ips": {
+ "subnet_id": "d0e971a6-a6b4-4f4c-8c88-b75e9c120b7e",
+ "ip_address": "10.0.0.2"
+ }
+ }})
+ neutronV20.find_resourceid_by_name_or_id(
+ mox.IsA(neutronclient.Client),
+ 'network',
+ 'new_network',
+ cmd_resource=None,
+ ).AndReturn('net5678')
+
+ self.m.ReplayAll()
+
+ # create port
+ t = template_format.parse(neutron_port_template)
+ t['resources']['port']['properties'].pop('fixed_ips')
+ stack = utils.parse_stack(t)
+
+ port = stack['port']
+ scheduler.TaskRunner(port.create)()
+
+ new_props = props.copy()
+
+ # test no replace, switch ID for name of same network
+ new_props = props.copy()
+ new_props['network'] = 'old_network'
+
+ update_snippet = rsrc_defn.ResourceDefinition(port.name, port.type(),
+ new_props)
+ self.assertTrue(port._needs_update(update_snippet,
+ port.frozen_definition(),
+ new_props, props, None))
+
+ new_props['network'] = 'new_network'
+ update_snippet = rsrc_defn.ResourceDefinition(port.name, port.type(),
+ new_props)
+ self.assertRaises(exception.UpdateReplace, port._needs_update,
+ update_snippet, port.frozen_definition(),
+ new_props, props, None)
+
+ self.m.VerifyAll()
+
def test_get_port_attributes(self):
subnet_dict = {'name': 'test-subnet', 'enable_dhcp': True,
'network_id': 'net1234', 'dns_nameservers': [],
@@ -719,7 +792,7 @@ class NeutronPortTest(common.HeatTestCase):
'network',
'net1234',
cmd_resource=None,
- ).AndReturn('net1234')
+ ).MultipleTimes().AndReturn('net1234')
neutronV20.find_resourceid_by_name_or_id(
mox.IsA(neutronclient.Client),
'subnet',