]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Add API tests for subnet-create with subnetpool
authorzengfagao <zengfa.gao@hp.com>
Thu, 2 Apr 2015 16:44:53 +0000 (09:44 -0700)
committerzengfagao <zengfa.gao@hp.com>
Fri, 3 Apr 2015 16:37:13 +0000 (09:37 -0700)
With subnetpool, we can create subnet with subnetpool.
User can specify CIDR or prefixlen for subnet allocation.
If neither is specified, CIDR will be chosen from the
pool using the default-prefixlen of the pool.

Change-Id: I2c4d81496e10826bed83a977ff0398f781d16c33
Partially-Implements: blueprint subnet-allocation

neutron/tests/api/test_subnetpools.py

index 9acc38892823bc7d72a190c801943e9774f5bd28..73aad6806171a93c16bac165f46c027a3d0bad71 100644 (file)
@@ -181,6 +181,64 @@ class SubnetPoolsTest(base.BaseNetworkTest):
         self.assertEqual(name, subnetpool['name'])
         self.assertTrue(subnetpool['shared'])
 
+    def _create_subnet_from_pool(self, subnet_values=None, pool_values=None):
+        pool_name, pool_id = self._create_subnetpool(self.client, pool_values)
+        subnet_name = data_utils.rand_name(SUBNETPOOL_NAME)
+        network = self.create_network()
+        network_id = network['id']
+        kwargs = {'name': subnet_name,
+                  'subnetpool_id': pool_id}
+        if subnet_values:
+            kwargs.update(subnet_values)
+        body = self.client.create_subnet(
+            network_id=network_id,
+            ip_version=self.ip_version,
+            **kwargs)
+        subnet = body['subnet']
+        self.addCleanup(self.client.delete_subnetpool, pool_id)
+        self.addCleanup(self.client.delete_network, network_id)
+        return pool_id, subnet
+
+    @test.attr(type='smoke')
+    @test.idempotent_id('1362ed7d-3089-42eb-b3a5-d6cb8398ee77')
+    def test_create_subnet_from_pool_with_prefixlen(self):
+        subnet_values = {"prefixlen": self.max_prefixlen}
+        pool_id, subnet = self._create_subnet_from_pool(subnet_values)
+        cidr = str(subnet['cidr'])
+        self.assertEqual(pool_id, subnet['subnetpool_id'])
+        self.assertTrue(cidr.endswith(str(self.max_prefixlen)))
+
+    @test.attr(type='smoke')
+    @test.idempotent_id('86b86189-9789-4582-9c3b-7e2bfe5735ee')
+    def test_create_subnet_from_pool_with_subnet_cidr(self):
+        subnet_values = {"cidr": self.subnet_cidr}
+        pool_id, subnet = self._create_subnet_from_pool(subnet_values)
+        cidr = str(subnet['cidr'])
+        self.assertEqual(pool_id, subnet['subnetpool_id'])
+        self.assertEqual(cidr, self.subnet_cidr)
+
+    @test.attr(type='smoke')
+    @test.idempotent_id('83f76e3a-9c40-40c2-a015-b7c5242178d8')
+    def test_create_subnet_from_pool_with_default_prefixlen(self):
+        # If neither cidr nor prefixlen is specified,
+        # subnet will use subnetpool default_prefixlen for cidr.
+        pool_id, subnet = self._create_subnet_from_pool()
+        cidr = str(subnet['cidr'])
+        self.assertEqual(pool_id, subnet['subnetpool_id'])
+        prefixlen = self._subnetpool_data['subnetpool']['min_prefixlen']
+        self.assertTrue(cidr.endswith(str(prefixlen)))
+
+    @test.attr(type='smoke')
+    @test.idempotent_id('a64af292-ec52-4bde-b654-a6984acaf477')
+    def test_create_subnet_from_pool_with_quota(self):
+        pool_values = {'default_quota': 4}
+        subnet_values = {"prefixlen": self.max_prefixlen}
+        pool_id, subnet = self._create_subnet_from_pool(subnet_values,
+                                                        pool_values)
+        cidr = str(subnet['cidr'])
+        self.assertEqual(pool_id, subnet['subnetpool_id'])
+        self.assertTrue(cidr.endswith(str(self.max_prefixlen)))
+
 
 class SubnetPoolsTestV6(SubnetPoolsTest):