From 39a3c8aff262b6b8a1257b84ac2832d4d813b68a Mon Sep 17 00:00:00 2001 From: zengfagao Date: Thu, 2 Apr 2015 09:44:53 -0700 Subject: [PATCH] Add API tests for subnet-create with subnetpool 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 | 58 +++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/neutron/tests/api/test_subnetpools.py b/neutron/tests/api/test_subnetpools.py index 9acc38892..73aad6806 100644 --- a/neutron/tests/api/test_subnetpools.py +++ b/neutron/tests/api/test_subnetpools.py @@ -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): -- 2.45.2