]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Adds dns_nameserver to OS::Quantum::Subnet.
authorBartosz Górski <bartosz.gorski@ntti3.com>
Wed, 15 May 2013 06:04:56 +0000 (23:04 -0700)
committerBartosz Górski <bartosz.gorski@ntti3.com>
Wed, 15 May 2013 06:19:33 +0000 (23:19 -0700)
You can specify list of dns_nameserver in template file when you creating new
subnet using Quantum resources.

Change-Id: I8978eab11b3ba9fe469c220fc1e7847a2038b54e

heat/engine/resources/quantum/subnet.py
heat/tests/test_quantum.py

index 59c591dac9c5dc2ce04eee51a406603b6570a060..3cf2f9c7e5fb2dddb214bb0886488299e79ba6ce 100644 (file)
@@ -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': {
index 65ed7ba8d88aa787630892e0b083bbdafe91c494..b69f0f74fc5ded02b019910e8bb77e946cb87e0d 100644 (file)
@@ -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):