From 715f768275906c12024e4f01f9c93162fd48655e Mon Sep 17 00:00:00 2001 From: Sergey Kraynev Date: Fri, 27 Mar 2015 10:21:50 -0400 Subject: [PATCH] Move provider_net test to separate file Also template were updated in tests. Change-Id: I5dc8db849829e3e5ea0b5f942ac25fc5e2b7149b --- .../neutron/test_neutron_provider_net.py | 175 ++++++++++++++++++ heat/tests/neutron/test_neutron_resources.py | 155 ---------------- 2 files changed, 175 insertions(+), 155 deletions(-) create mode 100644 heat/tests/neutron/test_neutron_provider_net.py diff --git a/heat/tests/neutron/test_neutron_provider_net.py b/heat/tests/neutron/test_neutron_provider_net.py new file mode 100644 index 0000000000..f440c1dbcb --- /dev/null +++ b/heat/tests/neutron/test_neutron_provider_net.py @@ -0,0 +1,175 @@ +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import copy + +from neutronclient.common import exceptions as qe +from neutronclient.v2_0 import client as neutronclient + +from heat.common import exception +from heat.common import template_format +from heat.engine.resources.openstack.neutron import provider_net +from heat.engine import rsrc_defn +from heat.engine import scheduler +from heat.tests import common +from heat.tests import utils + + +provider_network_template = ''' +heat_template_version: 2015-04-30 +description: Template to test provider_net Neutron resources +resources: + provider_network_vlan: + type: OS::Neutron::ProviderNet + properties: + name: the_provider_network + network_type: vlan + physical_network: physnet_1 + segmentation_id: 101 + shared: true +''' + +stpna = { + "network": { + "status": "ACTIVE", + "subnets": [], + "name": "the_provider_network", + "admin_state_up": True, + "shared": True, + "provider:network_type": "vlan", + "provider:physical_network": "physnet_1", + "provider:segmentation_id": "101", + "tenant_id": "c1210485b2424d48804aad5d39c61b8f", + "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766" + } +} + +stpnb = copy.deepcopy(stpna) +stpnb['network']['status'] = "BUILD" + + +class NeutronProviderNetTest(common.HeatTestCase): + + def setUp(self): + super(NeutronProviderNetTest, self).setUp() + self.m.StubOutWithMock(neutronclient.Client, 'create_network') + self.m.StubOutWithMock(neutronclient.Client, 'show_network') + self.m.StubOutWithMock(neutronclient.Client, 'delete_network') + self.m.StubOutWithMock(neutronclient.Client, 'update_network') + + def create_provider_net(self): + # Create script + neutronclient.Client.create_network({ + 'network': { + 'name': u'the_provider_network', + 'admin_state_up': True, + 'provider:network_type': 'vlan', + 'provider:physical_network': 'physnet_1', + 'provider:segmentation_id': '101', + 'shared': True} + }).AndReturn(stpnb) + + neutronclient.Client.show_network( + 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' + ).AndReturn(stpnb) + + neutronclient.Client.show_network( + 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' + ).AndReturn(stpna) + + t = template_format.parse(provider_network_template) + stack = utils.parse_stack(t) + resource_defns = stack.t.resource_definitions(stack) + rsrc = provider_net.ProviderNet( + 'provider_net', resource_defns['provider_network_vlan'], stack) + + return rsrc + + def test_create_provider_net(self): + rsrc = self.create_provider_net() + + neutronclient.Client.show_network( + 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' + ).AndRaise(qe.NetworkNotFoundClient(status_code=404)) + + # Delete script + neutronclient.Client.delete_network( + 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' + ).AndReturn(None) + + neutronclient.Client.show_network( + 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' + ).AndReturn(stpna) + + neutronclient.Client.show_network( + 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' + ).AndRaise(qe.NetworkNotFoundClient(status_code=404)) + + neutronclient.Client.delete_network( + 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' + ).AndRaise(qe.NetworkNotFoundClient(status_code=404)) + + self.m.ReplayAll() + + rsrc.validate() + scheduler.TaskRunner(rsrc.create)() + self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state) + + ref_id = rsrc.FnGetRefId() + self.assertEqual('fc68ea2c-b60b-4b4f-bd82-94ec81110766', ref_id) + + self.assertIsNone(rsrc.FnGetAtt('status')) + self.assertEqual('ACTIVE', rsrc.FnGetAtt('status')) + self.assertRaises( + exception.InvalidTemplateAttribute, rsrc.FnGetAtt, 'Foo') + + self.assertIsNone(scheduler.TaskRunner(rsrc.delete)()) + self.assertEqual((rsrc.DELETE, rsrc.COMPLETE), rsrc.state) + rsrc.state_set(rsrc.CREATE, rsrc.COMPLETE, 'to delete again') + scheduler.TaskRunner(rsrc.delete)() + self.assertEqual((rsrc.DELETE, rsrc.COMPLETE), rsrc.state) + self.m.VerifyAll() + + def test_update_provider_net(self): + rsrc = self.create_provider_net() + + neutronclient.Client.update_network( + 'fc68ea2c-b60b-4b4f-bd82-94ec81110766', + {'network': { + 'shared': True, + 'name': 'prov_net', + 'admin_state_up': True, + 'provider:network_type': 'vlan', + 'provider:physical_network': 'physnet_1', + 'provider:segmentation_id': '102' + }}).AndReturn(None) + + self.m.ReplayAll() + + rsrc.validate() + + scheduler.TaskRunner(rsrc.create)() + self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state) + + 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() diff --git a/heat/tests/neutron/test_neutron_resources.py b/heat/tests/neutron/test_neutron_resources.py index efe71db396..9692282cf0 100644 --- a/heat/tests/neutron/test_neutron_resources.py +++ b/heat/tests/neutron/test_neutron_resources.py @@ -23,7 +23,6 @@ from heat.common import exception from heat.common import template_format from heat.engine.cfn import functions as cfn_funcs from heat.engine.resources.openstack.neutron import net -from heat.engine.resources.openstack.neutron import provider_net from heat.engine.resources.openstack.neutron import subnet from heat.engine import rsrc_defn from heat.engine import scheduler @@ -192,43 +191,6 @@ neutron_template_deprecated = ''' } ''' -provider_network_template = ''' -{ - "AWSTemplateFormatVersion" : "2010-09-09", - "Description" : "Template to test Neutron resources", - "Resources" : { - "provider_network_vlan": { - "Type": "OS::Neutron::ProviderNet", - "Properties": { - "name": "the_provider_network", - "network_type": "vlan", - "physical_network": "physnet_1", - "segmentation_id": "101", - "shared": true - } - } - } -} -''' - -stpna = { - "network": { - "status": "ACTIVE", - "subnets": [], - "name": "the_provider_network", - "admin_state_up": True, - "shared": True, - "provider:network_type": "vlan", - "provider:physical_network": "physnet_1", - "provider:segmentation_id": "101", - "tenant_id": "c1210485b2424d48804aad5d39c61b8f", - "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766" - } -} - -stpnb = copy.deepcopy(stpna) -stpnb['network']['status'] = "BUILD" - class NeutronNetTest(common.HeatTestCase): @@ -428,123 +390,6 @@ class NeutronNetTest(common.HeatTestCase): self.m.VerifyAll() -class NeutronProviderNetTest(common.HeatTestCase): - - def setUp(self): - super(NeutronProviderNetTest, self).setUp() - self.m.StubOutWithMock(neutronclient.Client, 'create_network') - self.m.StubOutWithMock(neutronclient.Client, 'show_network') - self.m.StubOutWithMock(neutronclient.Client, 'delete_network') - self.m.StubOutWithMock(neutronclient.Client, 'update_network') - - def create_provider_net(self): - # Create script - neutronclient.Client.create_network({ - 'network': { - 'name': u'the_provider_network', - 'admin_state_up': True, - 'provider:network_type': 'vlan', - 'provider:physical_network': 'physnet_1', - 'provider:segmentation_id': '101', - 'shared': True} - }).AndReturn(stpnb) - - neutronclient.Client.show_network( - 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' - ).AndReturn(stpnb) - - neutronclient.Client.show_network( - 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' - ).AndReturn(stpna) - - t = template_format.parse(provider_network_template) - stack = utils.parse_stack(t) - resource_defns = stack.t.resource_definitions(stack) - rsrc = provider_net.ProviderNet( - 'provider_net', resource_defns['provider_network_vlan'], stack) - - return rsrc - - def test_create_provider_net(self): - rsrc = self.create_provider_net() - - neutronclient.Client.show_network( - 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' - ).AndRaise(qe.NetworkNotFoundClient(status_code=404)) - - # Delete script - neutronclient.Client.delete_network( - 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' - ).AndReturn(None) - - neutronclient.Client.show_network( - 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' - ).AndReturn(stpna) - - neutronclient.Client.show_network( - 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' - ).AndRaise(qe.NetworkNotFoundClient(status_code=404)) - - neutronclient.Client.delete_network( - 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' - ).AndRaise(qe.NetworkNotFoundClient(status_code=404)) - - self.m.ReplayAll() - - rsrc.validate() - scheduler.TaskRunner(rsrc.create)() - self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state) - - ref_id = rsrc.FnGetRefId() - self.assertEqual('fc68ea2c-b60b-4b4f-bd82-94ec81110766', ref_id) - - self.assertIsNone(rsrc.FnGetAtt('status')) - self.assertEqual('ACTIVE', rsrc.FnGetAtt('status')) - self.assertRaises( - exception.InvalidTemplateAttribute, rsrc.FnGetAtt, 'Foo') - - self.assertIsNone(scheduler.TaskRunner(rsrc.delete)()) - self.assertEqual((rsrc.DELETE, rsrc.COMPLETE), rsrc.state) - rsrc.state_set(rsrc.CREATE, rsrc.COMPLETE, 'to delete again') - scheduler.TaskRunner(rsrc.delete)() - self.assertEqual((rsrc.DELETE, rsrc.COMPLETE), rsrc.state) - self.m.VerifyAll() - - def test_update_provider_net(self): - rsrc = self.create_provider_net() - - neutronclient.Client.update_network( - 'fc68ea2c-b60b-4b4f-bd82-94ec81110766', - {'network': { - 'shared': True, - 'name': 'prov_net', - 'admin_state_up': True, - 'provider:network_type': 'vlan', - 'provider:physical_network': 'physnet_1', - 'provider:segmentation_id': '102' - }}).AndReturn(None) - - self.m.ReplayAll() - - rsrc.validate() - - scheduler.TaskRunner(rsrc.create)() - self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state) - - 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() - - class NeutronSubnetTest(common.HeatTestCase): def setUp(self):