+class CreateNetworkGatewayTests(OSIntegrationTestCase):
+ """
+ Test for the CreateNetwork class defined in create_nework.py
+ """
+
+ def setUp(self):
+ """
+ Sets up object for test
+ """
+ super(self.__class__, self).__start__()
+
+ self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
+
+ self.neutron = neutron_utils.neutron_client(self.os_creds)
+
+ self.ip_prfx = '10.1.0.'
+
+ # Initialize for cleanup
+ self.net_creator = None
+
+ def tearDown(self):
+ """
+ Cleans the network
+ """
+ if self.net_creator:
+ self.net_creator.clean()
+
+ super(self.__class__, self).__clean__()
+
+ def test_create_subnet_default_gateway_ip(self):
+ """
+ Tests the creation of an OpenStack network with a subnet that has a
+ default value assigned to the gateway IP.
+ """
+ # Create Network
+ subnet_config = SubnetConfig(
+ name=self.guid + '-subnet', cidr=self.ip_prfx + '0/24')
+ net_config = NetworkConfig(
+ name=self.guid + '-net', subnets=[subnet_config])
+ self.net_creator = OpenStackNetwork(
+ self.os_creds, net_config)
+ out_net = self.net_creator.create()
+
+ # Validate network was created
+ self.assertTrue(neutron_utils_tests.validate_network(
+ self.neutron, self.keystone,
+ self.net_creator.network_settings.name, True,
+ self.os_creds.project_name))
+
+ # Validate subnets
+ self.assertTrue(neutron_utils_tests.validate_subnet(
+ self.neutron,
+ self.net_creator.network_settings.subnet_settings[0].name,
+ self.net_creator.network_settings.subnet_settings[0].cidr, True))
+
+ self.assertEqual(self.ip_prfx + '1', out_net.subnets[0].gateway_ip)
+
+ def test_create_subnet_valid_gateway_ip(self):
+ """
+ Tests the creation of an OpenStack network with a subnet that has a
+ valid value assigned to the gateway IP.
+ """
+ # Create Network
+ subnet_config = SubnetConfig(
+ name=self.guid + '-subnet', cidr=self.ip_prfx + '0/24',
+ gateway_ip=self.ip_prfx + '2')
+ net_config = NetworkConfig(
+ name=self.guid + '-net', subnets=[subnet_config])
+ self.net_creator = OpenStackNetwork(
+ self.os_creds, net_config)
+ out_net = self.net_creator.create()
+
+ # Validate network was created
+ self.assertTrue(neutron_utils_tests.validate_network(
+ self.neutron, self.keystone,
+ self.net_creator.network_settings.name, True,
+ self.os_creds.project_name))
+
+ # Validate subnets
+ self.assertTrue(neutron_utils_tests.validate_subnet(
+ self.neutron,
+ self.net_creator.network_settings.subnet_settings[0].name,
+ self.net_creator.network_settings.subnet_settings[0].cidr, True))
+
+ self.assertEqual(self.ip_prfx + '2', out_net.subnets[0].gateway_ip)
+
+ def test_create_subnet_no_gateway(self):
+ """
+ Tests the creation of an OpenStack network with a subnet that has a
+ valid value assigned to the gateway IP.
+ """
+ # Create Network
+ subnet_config = SubnetConfig(
+ name=self.guid + '-subnet', cidr=self.ip_prfx + '0/24',
+ gateway_ip='none')
+ net_config = NetworkConfig(
+ name=self.guid + '-net', subnets=[subnet_config])
+ self.net_creator = OpenStackNetwork(
+ self.os_creds, net_config)
+ out_net = self.net_creator.create()
+
+ # Validate network was created
+ self.assertTrue(neutron_utils_tests.validate_network(
+ self.neutron, self.keystone,
+ self.net_creator.network_settings.name, True,
+ self.os_creds.project_name))
+
+ # Validate subnets
+ self.assertTrue(neutron_utils_tests.validate_subnet(
+ self.neutron,
+ self.net_creator.network_settings.subnet_settings[0].name,
+ self.net_creator.network_settings.subnet_settings[0].cidr, True))
+
+ self.assertIsNone(out_net.subnets[0].gateway_ip)
+
+ def test_create_subnet_invalid_gateway_ip(self):
+ """
+ Tests the creation of an OpenStack network with a subnet that has an
+ invalid value assigned to the gateway IP.
+ """
+ # Create Network
+ subnet_config = SubnetConfig(
+ name=self.guid + '-subnet', cidr=self.ip_prfx + '0/24',
+ gateway_ip='foo')
+ net_config = NetworkConfig(
+ name=self.guid + '-net', subnets=[subnet_config])
+ self.net_creator = OpenStackNetwork(
+ self.os_creds, net_config)
+
+ with self.assertRaises(BadRequest):
+ self.net_creator.create()
+
+
+class CreateNetworkIPv6Tests(OSIntegrationTestCase):
+ """
+ Test for the CreateNetwork class defined in create_nework.py when
+ """
+
+ def setUp(self):
+ """
+ Sets up object for test
+ """
+ super(self.__class__, self).__start__()
+
+ self.guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
+ self.neutron = neutron_utils.neutron_client(self.os_creds)
+
+ # Initialize for cleanup
+ self.net_creator = None
+
+ def tearDown(self):
+ """
+ Cleans the network
+ """
+ if self.net_creator:
+ self.net_creator.clean()
+
+ super(self.__class__, self).__clean__()
+
+ def test_create_network_one_ipv6_subnet(self):
+ """
+ Tests the creation of an OpenStack network without a router.
+ """
+ # Create Network
+ subnet_settings = SubnetConfig(
+ name=self.guid + '-subnet', cidr='1:1:0:0:0:0:0:0/64',
+ ip_version=6)
+ network_settings = NetworkConfig(
+ name=self.guid + '-net', subnet_settings=[subnet_settings])
+
+ self.net_creator = OpenStackNetwork(self.os_creds, network_settings)
+ self.net_creator.create()
+
+ # Validate network was created
+ self.assertTrue(neutron_utils_tests.validate_network(
+ self.neutron, self.keystone,
+ self.net_creator.network_settings.name, True,
+ self.os_creds.project_name))
+
+ network = self.net_creator.get_network()
+ self.assertEqual(1, len(network.subnets))
+ subnet = network.subnets[0]
+
+ self.assertEqual(network.id, subnet.network_id)
+ self.assertEqual(subnet_settings.name, subnet.name)
+ self.assertEqual('1:1::/64', subnet.cidr)
+ self.assertEqual(6, subnet.ip_version)
+ self.assertEqual(0, len(subnet.dns_nameservers))
+
+ def test_create_network_ipv4_ipv6_subnet(self):
+ """
+ Tests the creation of an OpenStack network without a router.
+ """
+ # Create Network
+ subnet4_settings = SubnetConfig(
+ name=self.guid + '-subnet4', cidr='10.0.1.0/24', ip_version=4)
+ subnet6_settings = SubnetConfig(
+ name=self.guid + '-subnet6', cidr='1:1:0:0:0:0:0:0/64',
+ ip_version=6)
+
+ network_settings = NetworkConfig(
+ name=self.guid + '-net',
+ subnet_settings=[subnet4_settings, subnet6_settings])
+
+ self.net_creator = OpenStackNetwork(self.os_creds, network_settings)
+ self.net_creator.create()
+
+ # Validate network was created
+ network = self.net_creator.get_network()
+ self.assertEqual(2, len(network.subnets))
+
+ subnet4 = None
+ subnet6 = None
+ for subnet in network.subnets:
+ if subnet.name == subnet4_settings.name:
+ subnet4 = subnet
+ if subnet.name == subnet6_settings.name:
+ subnet6 = subnet
+
+ # Validate IPv4 subnet
+ self.assertEqual(network.id, subnet4.network_id)
+ self.assertEqual(subnet4_settings.name, subnet4.name)
+ self.assertEqual(subnet4_settings.cidr, subnet4.cidr)
+ self.assertEqual(4, subnet4.ip_version)
+ self.assertEqual(0, len(subnet4.dns_nameservers))
+
+ # Validate IPv6 subnet
+ self.assertEqual(network.id, subnet6.network_id)
+ self.assertEqual(subnet6_settings.name, subnet6.name)
+ self.assertEqual('1:1::/64', subnet6.cidr)
+ self.assertEqual(6, subnet6.ip_version)
+ self.assertEqual(0, len(subnet6.dns_nameservers))
+
+