def _ensure_local_port(self, network_id, subnet_id, network_type, ip_address): driver = importutils.import_object(self.conf.interface_driver, self.conf) host_id = str(uuid.uuid5(uuid.NAMESPACE_DNS, socket.gethostname())) query_dict = dict(device_owner=DEVICE_OWNER_RUG, device_id=host_id, network_id=network_id) ports = self.api_client.list_ports(**query_dict)['ports'] if ports: port = Port.from_dict(ports[0]) LOG.info('already have local %s port, using %r', network_type, port) else: LOG.info('creating a new local %s port', network_type) port_dict = { 'admin_state_up': True, 'network_id': network_id, 'device_owner': DEVICE_OWNER_ROUTER_INT, # lying here for IP 'device_id': host_id, 'fixed_ips': [{ 'ip_address': ip_address.split('/')[0], 'subnet_id': subnet_id }], 'binding:host_id': socket.gethostname() } port = Port.from_dict( self.api_client.create_port(dict(port=port_dict))['port']) # remove lie that enabled us pick IP on slaac subnet self.api_client.update_port( port.id, {'port': { 'device_owner': DEVICE_OWNER_RUG }}) port.device_owner = DEVICE_OWNER_RUG LOG.info('new local %s port: %r', network_type, port) # create the tap interface if it doesn't already exist if not ip_lib.device_exists(driver.get_device_name(port)): driver.plug(port.network_id, port.id, driver.get_device_name(port), port.mac_address) # add sleep to ensure that port is setup before use time.sleep(1) driver.init_l3(driver.get_device_name(port), [ip_address]) return port
def _ensure_local_port(self, network_id, subnet_id, network_type, ip_address): driver = importutils.import_object(self.conf.interface_driver, self.conf) host_id = str(uuid.uuid5(uuid.NAMESPACE_DNS, socket.gethostname())) query_dict = dict(device_owner=DEVICE_OWNER_RUG, device_id=host_id, network_id=network_id) ports = self.api_client.list_ports(**query_dict)['ports'] if ports: port = Port.from_dict(ports[0]) LOG.info('already have local %s port, using %r', network_type, port) else: LOG.info('creating a new local %s port', network_type) port_dict = { 'admin_state_up': True, 'network_id': network_id, 'device_owner': DEVICE_OWNER_ROUTER_INT, # lying here for IP 'device_id': host_id, 'fixed_ips': [{ 'ip_address': ip_address.split('/')[0], 'subnet_id': subnet_id }], 'binding:host_id': socket.gethostname() } port = Port.from_dict( self.api_client.create_port(dict(port=port_dict))['port']) # remove lie that enabled us pick IP on slaac subnet self.api_client.update_port( port.id, {'port': {'device_owner': DEVICE_OWNER_RUG}} ) port.device_owner = DEVICE_OWNER_RUG LOG.info('new local %s port: %r', network_type, port) # create the tap interface if it doesn't already exist if not ip_lib.device_exists(driver.get_device_name(port)): driver.plug( port.network_id, port.id, driver.get_device_name(port), port.mac_address) # add sleep to ensure that port is setup before use time.sleep(1) driver.init_l3(driver.get_device_name(port), [ip_address]) return port
def purge_management_interface(self): driver = importutils.import_object(self.conf.interface_driver, self.conf) host_id = str(uuid.uuid5(uuid.NAMESPACE_DNS, socket.gethostname())) query_dict = dict(device_owner=DEVICE_OWNER_RUG, device_id=host_id) ports = self.api_client.list_ports(**query_dict)['ports'] if ports: port = Port.from_dict(ports[0]) device_name = driver.get_device_name(port) driver.unplug(device_name)
def purge_management_interface(self): driver = importutils.import_object( self.conf.interface_driver, self.conf ) host_id = str(uuid.uuid5(uuid.NAMESPACE_DNS, socket.gethostname())) query_dict = dict(device_owner=DEVICE_OWNER_RUG, device_id=host_id) ports = self.api_client.list_ports(**query_dict)['ports'] if ports: port = Port.from_dict(ports[0]) device_name = driver.get_device_name(port) driver.unplug(device_name)
def ensure_local_service_port(self): driver = importutils.import_object(self.conf.interface_driver, self.conf) host_id = str(uuid.uuid5(uuid.NAMESPACE_DNS, socket.gethostname())) query_dict = dict(device_owner=DEVICE_OWNER_RUG, device_id=host_id, network_id=self.conf.management_network_id) ports = self.api_client.list_ports(**query_dict)['ports'] ip_address = get_local_service_ip(self.conf) if ports: port = Port.from_dict(ports[0]) LOG.info('already have local service port, using %r', port) else: LOG.info('creating a new local service port') # create the missing local port port_dict = dict( admin_state_up=True, network_id=self.conf.management_network_id, device_owner=DEVICE_OWNER_RUG, device_id=host_id, fixed_ips=[{ 'ip_address': ip_address.split('/')[0], 'subnet_id': self.conf.management_subnet_id }] ) port = Port.from_dict( self.api_client.create_port(dict(port=port_dict))['port']) LOG.info('new local service port: %r', port) # create the tap interface if it doesn't already exist if not ip_lib.device_exists(driver.get_device_name(port)): driver.plug( port.network_id, port.id, driver.get_device_name(port), port.mac_address) # add sleep to ensure that port is setup before use time.sleep(1) driver.init_l3(driver.get_device_name(port), [ip_address]) return port
def _get_matchmaker(*args, **kwargs): global matchmaker if not matchmaker: matchmaker = importutils.import_object( CONF.rpc_zmq_matchmaker, *args, **kwargs) return matchmaker
def _get_matchmaker(*args, **kwargs): global matchmaker if not matchmaker: matchmaker = importutils.import_object(CONF.rpc_zmq_matchmaker, *args, **kwargs) return matchmaker