def test_create_shared_ips_with_port_ids(self): def _make_body(ip): fix_ip = dict(ip_address=ip, subnet_id=sub['id']) port_info = {"port": dict(fixed_ips=[fix_ip])} return port_info with self._stubs(self.network, self.subnet, self.ports_info2) as ( net, sub, ports): for p in ports: port_db = db_api.port_find(self.context, id=p['id'], scope=db_api.ONE) assocs = db_api.ip_port_association_find(self.context, scope=db_api.ALL, port_id=p['id']) self.assertEqual(1, len(p.get('fixed_ips'))) self.assertEqual(1, len(port_db.ip_addresses)) ip_db = port_db.ip_addresses[0] self.assertEqual('none', ip_db.get_service_for_port(port_db)) self.assertEqual(1, len(assocs)) port_ids = [ports[0]['id'], ports[1]['id']] shared_ip = {'ip_address': dict(port_ids=port_ids, network_id=net['id'], version=4)} ip = ip_api.create_ip_address(self.context, shared_ip) self.assertEqual(ip_types.SHARED, ip['type']) ports_ip = ip_api.get_ports_for_ip_address(self.context, ip['id']) self.assertEqual(2, len(ports_ip))
def test_shared_ip_in_fixed_ip_list(self): def _make_body(service): body = dict(service=service) port_info = {"port": dict(body)} return port_info with self._stubs(self.network, self.subnet, self.ports_info2) as ( net, sub, ports): for p in ports: port_db = db_api.port_find(self.context, id=p['id'], scope=db_api.ONE) assocs = db_api.ip_port_association_find(self.context, scope=db_api.ALL, port_id=p['id']) self.assertEqual(1, len(p.get('fixed_ips'))) self.assertEqual(1, len(port_db.ip_addresses)) ip_db = port_db.ip_addresses[0] self.assertEqual('none', ip_db.get_service_for_port(port_db)) self.assertEqual(1, len(assocs)) device_ids = [ports[0]['device_id'], ports[1]['device_id']] shared_ip = {'ip_address': dict(device_ids=device_ids, network_id=net['id'], version=4)} ip = ip_api.create_ip_address(self.context, shared_ip) self.assertEqual(ip_types.SHARED, ip['type']) ports_ip = ip_api.get_ports_for_ip_address(self.context, ip['id']) self.assertEqual(2, len(ports_ip)) port = port_api.get_port(self.context, ports[0]['id']) self.assertEqual(2, len(port['fixed_ips'])) port_ip_update = ip_api.update_port_for_ip_address updated_port = port_ip_update(self.context, ip['id'], ports[0]['id'], _make_body('derp')) self.assertEqual('derp', updated_port.get('service')) port = ip_api.get_port_for_ip_address(self.context, ip['id'], ports[0]['id']) self.assertEqual('derp', port.get('service')) port = ip_api.get_port_for_ip_address(self.context, ip['id'], ports[1]['id']) self.assertEqual('none', port.get('service'))