示例#1
0
    def _get_ports_using_client(self, filters):
        # reformat filters for neutron client
        if "device_id" in filters:
            filters["device_id"] = filters["device_id"][0]
        if "fixed_ips" in filters:
            filters["fixed_ips"] = ["ip_address=%s" % filters["fixed_ips"]["ip_address"][0]]

        client = self._get_neutron_client()
        ports = client.list_ports(**filters)
        self.auth_info = client.get_auth_info()
        return ports["ports"]
示例#2
0
    def _get_ports_using_client(self, filters):
        # reformat filters for neutron client
        if 'device_id' in filters:
            filters['device_id'] = filters['device_id'][0]
        if 'fixed_ips' in filters:
            filters['fixed_ips'] = [
                'ip_address=%s' % filters['fixed_ips']['ip_address'][0]]

        client = self._get_neutron_client()
        ports = client.list_ports(**filters)
        self.auth_info = client.get_auth_info()
        return ports['ports']
示例#3
0
def configure_gateway_ext_port(novaclient,
                               neutronclient,
                               dvr_mode=None,
                               net_id=None):
    """Configure the neturong-gateway external port

    :param novaclient: Authenticated novaclient
    :type novaclient: novaclient.Client object
    :param neutronclient: Authenticated neutronclient
    :type neutronclient: neutronclient.Client object
    :param dvr_mode: Using DVR mode or not
    :type dvr_mode: boolean
    :param net_id: Network ID
    :type net_id: string
    :returns: Nothing: This fucntion is executed for its sideffect
    :rtype: None
    """

    if dvr_mode:
        uuids = get_ovs_uuids()
    else:
        uuids = get_gateway_uuids()

    deprecated_extnet_mode = deprecated_external_networking(dvr_mode)

    config_key = 'data-port'
    if deprecated_extnet_mode:
        config_key = 'ext-port'

    if not net_id:
        net_id = get_admin_net(neutronclient)['id']

    for uuid in uuids:
        server = novaclient.servers.get(uuid)
        ext_port_name = "{}_ext-port".format(server.name)
        for port in neutronclient.list_ports(device_id=server.id)['ports']:
            if port['name'] == ext_port_name:
                logging.warning('Neutron Gateway already has additional port')
                break
        else:
            logging.info('Attaching additional port to instance, '
                         'connected to net id: {}'.format(net_id))
            body_value = {
                "port": {
                    "admin_state_up": True,
                    "name": ext_port_name,
                    "network_id": net_id,
                    "port_security_enabled": False,
                }
            }
            port = neutronclient.create_port(body=body_value)
            server.interface_attach(port_id=port['port']['id'],
                                    net_id=None,
                                    fixed_ip=None)
    ext_br_macs = []
    for port in neutronclient.list_ports(network_id=net_id)['ports']:
        if 'ext-port' in port['name']:
            if deprecated_extnet_mode:
                ext_br_macs.append(port['mac_address'])
            else:
                ext_br_macs.append('br-ex:{}'.format(port['mac_address']))
    ext_br_macs.sort()
    ext_br_macs_str = ' '.join(ext_br_macs)
    if dvr_mode:
        application_name = 'neutron-openvswitch'
    else:
        application_name = 'neutron-gateway'

    if ext_br_macs:
        logging.info('Setting {} on {} external port to {}'.format(
            config_key, application_name, ext_br_macs_str))
        current_data_port = get_application_config_option(
            application_name, config_key)
        if current_data_port == ext_br_macs_str:
            logging.info('Config already set to value')
            return
        model.set_application_config(
            lifecycle_utils.get_juju_model(),
            application_name,
            configuration={config_key: ext_br_macs_str})
        juju_wait.wait(wait_for_workload=True)