|
11 | 11 | # under the License. |
12 | 12 |
|
13 | 13 | import os |
| 14 | +import uuid |
14 | 15 |
|
15 | 16 | from keystoneauth1 import exceptions as _exceptions |
16 | 17 |
|
@@ -72,3 +73,86 @@ def setUp(self): |
72 | 73 | except _exceptions.EndpointNotFound: |
73 | 74 | self.skipTest('Service {service_type} not found in cloud'.format( |
74 | 75 | service_type=service_type)) |
| 76 | + |
| 77 | + |
| 78 | +class NetworkBaseFunctionalTest(BaseFunctionalTest): |
| 79 | + def create_network(self, prefix='sdk-test'): |
| 80 | + cidr = '192.168.0.0/16' |
| 81 | + ipv4 = 4 |
| 82 | + uuid_v4 = uuid.uuid4().hex[:8] |
| 83 | + router_name = prefix + '-router-' + uuid_v4 |
| 84 | + net_name = prefix + '-net-' + uuid_v4 |
| 85 | + subnet_name = prefix + '-subnet-' + uuid_v4 |
| 86 | + |
| 87 | + network = self.conn.network.create_network(name=net_name) |
| 88 | + self.assertEqual(net_name, network.name) |
| 89 | + net_id = network.id |
| 90 | + subnet = self.conn.network.create_subnet( |
| 91 | + name=subnet_name, |
| 92 | + ip_version=ipv4, |
| 93 | + network_id=net_id, |
| 94 | + cidr=cidr |
| 95 | + ) |
| 96 | + self.assertEqual(subnet_name, subnet.name) |
| 97 | + subnet_id = subnet.id |
| 98 | + |
| 99 | + router = self.conn.network.create_router(name=router_name) |
| 100 | + self.assertEqual(router_name, router.name) |
| 101 | + router_id = router.id |
| 102 | + interface = router.add_interface( |
| 103 | + self.conn.network, |
| 104 | + subnet_id=subnet_id |
| 105 | + ) |
| 106 | + self.assertEqual(interface['subnet_id'], subnet_id) |
| 107 | + self.assertIn('port_id', interface) |
| 108 | + return { |
| 109 | + 'router_id': router_id, |
| 110 | + 'subnet_id': subnet_id, |
| 111 | + 'network_id': net_id |
| 112 | + } |
| 113 | + |
| 114 | + def destroy_network(self, params: dict): |
| 115 | + router_id = params.get('router_id') |
| 116 | + subnet_id = params.get('subnet_id') |
| 117 | + network_id = params.get('network_id') |
| 118 | + router = self.conn.network.get_router(router_id) |
| 119 | + |
| 120 | + interface = router.remove_interface( |
| 121 | + self.conn.network, |
| 122 | + subnet_id=subnet_id |
| 123 | + ) |
| 124 | + self.assertEqual(interface['subnet_id'], subnet_id) |
| 125 | + self.assertIn('port_id', interface) |
| 126 | + sot = self.conn.network.delete_router( |
| 127 | + router_id, |
| 128 | + ignore_missing=False |
| 129 | + ) |
| 130 | + self.assertIsNone(sot) |
| 131 | + sot = self.conn.network.delete_subnet( |
| 132 | + subnet_id, |
| 133 | + ignore_missing=False |
| 134 | + ) |
| 135 | + self.assertIsNone(sot) |
| 136 | + sot = self.conn.network.delete_network( |
| 137 | + network_id, |
| 138 | + ignore_missing=False |
| 139 | + ) |
| 140 | + self.assertIsNone(sot) |
| 141 | + |
| 142 | + def create_port(self, network_id, prefix='sdk-test'): |
| 143 | + uuid_v4 = uuid.uuid4().hex[:8] |
| 144 | + port_name = prefix + '-port-' + uuid_v4 |
| 145 | + |
| 146 | + port = self.conn.network.create_port( |
| 147 | + name=port_name, |
| 148 | + network_id=network_id |
| 149 | + ) |
| 150 | + self.assertEqual(port_name, port.name) |
| 151 | + return port |
| 152 | + |
| 153 | + def destroy_port(self, port): |
| 154 | + sot = self.conn.network.delete_port( |
| 155 | + port, |
| 156 | + ignore_missing=False |
| 157 | + ) |
| 158 | + self.assertIsNone(sot) |
0 commit comments