示例#1
0
    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
示例#2
0
    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
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    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
示例#6
0
def _get_matchmaker(*args, **kwargs):
    global matchmaker
    if not matchmaker:
        matchmaker = importutils.import_object(
            CONF.rpc_zmq_matchmaker, *args, **kwargs)
    return matchmaker
示例#7
0
def _get_matchmaker(*args, **kwargs):
    global matchmaker
    if not matchmaker:
        matchmaker = importutils.import_object(CONF.rpc_zmq_matchmaker, *args,
                                               **kwargs)
    return matchmaker