From: Bartosz Górski Date: Wed, 14 Aug 2013 10:52:37 +0000 (-0700) Subject: Allowing to pass network name to router gateway X-Git-Tag: 2014.1~82^2 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=9cf5a38a6e48a5c97dc552fcdd00c26b05bb2842;p=openstack-build%2Fheat-build.git Allowing to pass network name to router gateway This patch allows to pass newtork name instead of network id to create router gateway. It is really useful feature because often router has gateway as public network. It is easy to pass the name because id will change after deleting the network and creating it again. Change-Id: I5768408b86b509ecfd117f17b10db06af82369d8 --- diff --git a/heat/engine/resources/neutron/router.py b/heat/engine/resources/neutron/router.py index 793b212e..243c1718 100644 --- a/heat/engine/resources/neutron/router.py +++ b/heat/engine/resources/neutron/router.py @@ -19,6 +19,7 @@ from heat.engine import scheduler if clients.neutronclient is not None: from neutronclient.common.exceptions import NeutronClientException + from neutronclient.neutron import v2_0 as neutronV20 from heat.openstack.common import log as logging @@ -117,7 +118,10 @@ class RouterGateway(neutron.NeutronResource): def handle_create(self): router_id = self.properties.get('router_id') - network_id = self.properties.get('network_id') + network_id = neutronV20.find_resourceid_by_name_or_id( + self.neutron(), + 'network', + self.properties.get('network_id')) self.neutron().add_gateway_router( router_id, {'network_id': network_id}) diff --git a/heat/tests/test_neutron.py b/heat/tests/test_neutron.py index 59500d75..dff9d5ba 100644 --- a/heat/tests/test_neutron.py +++ b/heat/tests/test_neutron.py @@ -12,6 +12,7 @@ # License for the specific language governing permissions and limitations # under the License. +import mox from testtools import skipIf @@ -524,6 +525,7 @@ class NeutronSubnetTest(HeatTestCase): @skipIf(neutronclient is None, 'neutronclient unavailable') class NeutronRouterTest(HeatTestCase): + @skipIf(router.neutronV20 is None, "Missing Neutron v2_0") def setUp(self): super(NeutronRouterTest, self).setUp() self.m.StubOutWithMock(neutronclient.Client, 'create_router') @@ -533,6 +535,8 @@ class NeutronRouterTest(HeatTestCase): self.m.StubOutWithMock(neutronclient.Client, 'remove_interface_router') self.m.StubOutWithMock(neutronclient.Client, 'add_gateway_router') self.m.StubOutWithMock(neutronclient.Client, 'remove_gateway_router') + self.m.StubOutWithMock(router.neutronV20, + 'find_resourceid_by_name_or_id') self.m.StubOutWithMock(clients.OpenStackClients, 'keystone') utils.setup_dummy_db() @@ -702,6 +706,11 @@ class NeutronRouterTest(HeatTestCase): def test_gateway_router(self): clients.OpenStackClients.keystone().AndReturn( fakes.FakeKeystoneClient()) + router.neutronV20.find_resourceid_by_name_or_id( + mox.IsA(neutronclient.Client), + 'network', + 'fc68ea2c-b60b-4b4f-bd82-94ec81110766' + ).AndReturn('fc68ea2c-b60b-4b4f-bd82-94ec81110766') neutronclient.Client.add_gateway_router( '3e46229d-8fce-4733-819a-b5fe630550f8', {'network_id': 'fc68ea2c-b60b-4b4f-bd82-94ec81110766'}