From: Bartosz Górski Date: Wed, 15 May 2013 06:04:56 +0000 (-0700) Subject: Adds dns_nameserver to OS::Quantum::Subnet. X-Git-Tag: 2014.1~606 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=2028411cae5a1c82164f7beea3ee907eaf869e72;p=openstack-build%2Fheat-build.git Adds dns_nameserver to OS::Quantum::Subnet. You can specify list of dns_nameserver in template file when you creating new subnet using Quantum resources. Change-Id: I8978eab11b3ba9fe469c220fc1e7847a2038b54e --- diff --git a/heat/engine/resources/quantum/subnet.py b/heat/engine/resources/quantum/subnet.py index 59c591da..3cf2f9c7 100644 --- a/heat/engine/resources/quantum/subnet.py +++ b/heat/engine/resources/quantum/subnet.py @@ -37,6 +37,7 @@ class Subnet(quantum.QuantumResource): 'ip_version': {'Type': 'Integer', 'AllowedValues': [4, 6], 'Default': 4}, + 'dns_nameservers': {'Type': 'List'}, 'gateway_ip': {'Type': 'String'}, 'allocation_pools': {'Type': 'List', 'Schema': { diff --git a/heat/tests/test_quantum.py b/heat/tests/test_quantum.py index 65ed7ba8..b69f0f74 100644 --- a/heat/tests/test_quantum.py +++ b/heat/tests/test_quantum.py @@ -20,6 +20,7 @@ from heat.common import template_format from heat.engine import properties from heat.engine import scheduler from heat.engine.resources.quantum import net +from heat.engine.resources.quantum import subnet from heat.engine.resources.quantum import floatingip from heat.engine.resources.quantum import port from heat.engine.resources.quantum.quantum import QuantumResource as qr @@ -54,7 +55,8 @@ quantum_template = ''' "network_id": { "Ref" : "network" }, "ip_version": 4, "cidr": "10.0.3.0/24", - "allocation_pools": [{"start": "10.0.3.20", "end": "10.0.3.150"}] + "allocation_pools": [{"start": "10.0.3.20", "end": "10.0.3.150"}], + "dns_nameservers": ["8.8.8.8"] } }, "port": { @@ -180,11 +182,43 @@ class FakeQuantum(): "id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766" }} + def create_subnet(self, name): + return {"subnet": { + "allocation_pools": [{"start": "10.0.3.20", "end": "10.0.3.150"}], + "cidr": "10.0.3.0/24", + "dns_nameservers": ["8.8.8.8"], + "enable_dhcp": True, + "gateway_ip": "10.0.3.1", + "id": "91e47a57-7508-46fe-afc9-fc454e8580e1", + "ip_version": 4, + "name": "name", + "network_id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766", + "tenant_id": "c1210485b2424d48804aad5d39c61b8f" + }} + + def delete_subnet(self, id): + return None + + def show_subnet(self, id): + return {"subnet": { + "name": "name", + "network_id": "fc68ea2c-b60b-4b4f-bd82-94ec81110766", + "tenant_id": "c1210485b2424d48804aad5d39c61b8f", + "allocation_pools": [{"start": "10.0.3.20", "end": "10.0.3.150"}], + "gateway_ip": "10.0.3.1", + "ip_version": 4, + "cidr": "10.0.3.0/24", + "dns_nameservers": ["8.8.8.8"], + "id": "91e47a57-7508-46fe-afc9-fc454e8580e1", + "enable_dhcp": False, + }} + class QuantumTest(HeatTestCase): def setUp(self): super(QuantumTest, self).setUp() self.m.StubOutWithMock(net.Net, 'quantum') + self.m.StubOutWithMock(subnet.Subnet, 'quantum') setup_dummy_db() def create_net(self, t, stack, resource_name): @@ -193,6 +227,13 @@ class QuantumTest(HeatTestCase): self.assertEqual(net.Net.CREATE_COMPLETE, resource.state) return resource + def create_subnet(self, t, stack, resource_name): + resource = subnet.Subnet('test_subnet', t['Resources'][resource_name], + stack) + scheduler.TaskRunner(resource.create)() + self.assertEqual(subnet.Subnet.CREATE_COMPLETE, resource.state) + return resource + def test_validate_properties(self): vs = {'router:external': True} data = {'admin_state_up': False, @@ -258,6 +299,34 @@ class QuantumTest(HeatTestCase): resource.delete() self.m.VerifyAll() + def test_subnet(self): + skipIf(subnet.clients.quantumclient is None, + 'quantumclient unavailable') + + fq = FakeQuantum() + subnet.Subnet.quantum().MultipleTimes().AndReturn(fq) + + self.m.ReplayAll() + t = template_format.parse(quantum_template) + stack = parse_stack(t) + resource = self.create_subnet(t, stack, 'subnet') + + resource.validate() + + ref_id = resource.FnGetRefId() + self.assertEqual('91e47a57-7508-46fe-afc9-fc454e8580e1', ref_id) + self.assertEqual('fc68ea2c-b60b-4b4f-bd82-94ec81110766', + resource.FnGetAtt('network_id')) + self.assertEqual('8.8.8.8', resource.FnGetAtt('dns_nameservers')[0]) + self.assertEqual('91e47a57-7508-46fe-afc9-fc454e8580e1', + resource.FnGetAtt('id')) + + self.assertEqual(subnet.Subnet.UPDATE_REPLACE, + resource.handle_update({})) + + resource.delete() + self.m.VerifyAll() + class QuantumFloatingIPTest(HeatTestCase): def setUp(self):