Exemple #1
0
    def _remove_autonetwork(self, server_networks, request):
        """
        Removes the automatically created network that was used prior to
        v1.4. 
        """
        server_networks_keys = list(server_networks.keys())
        neutron_enabled = is_enabled_by_config('network')
        # delete only if vm has one network
        if neutron_enabled and len(server_networks) == 1:
            networks = network_list_for_tenant(request, request.user.tenant_id)
            autonetwork = filter(lambda network: network.name in server_networks_keys, networks)
            auto_subnet_name = autonetwork_subnet_name(request)
            if len(autonetwork) != 1:
                return
            autonetwork_subnet = filter(lambda subnet: subnet.name == auto_subnet_name, autonetwork[0].subnets)
            if len(autonetwork_subnet) != 1:
                return
            router = router_list(request, network_id=autonetwork_subnet[0])
            if len(router) != 1:
                return

            router_remove_interface(request, router[0].id, subnet_id=autonetwork_subnet[0].id)
            router_delete(request, router[0].id)
            subnet_delete(request, autonetwork_subnet[0].id)
            network_delete(request, autonetwork[0].id)
Exemple #2
0
def get_available_networks(request,
                           include_subnets=True,
                           filter=None,
                           murano_networks=None):
    if murano_networks:
        env_names = [e.name for e in env_api.environments_list(request)]

        def get_net_env(name):
            for env_name in env_names:
                if name.startswith(env_name + '-network'):
                    return env_name

    network_choices = []
    tenant_id = request.user.tenant_id
    try:
        networks = neutron.network_list_for_tenant(request,
                                                   tenant_id=tenant_id)
    except exceptions.ServiceCatalogException:
        LOG.warn("Neutron not found. Assuming Nova Network usage")
        return None

    # Remove external networks
    networks = [
        network for network in networks if network.router__external is False
    ]
    if filter:
        networks = [
            network for network in networks
            if re.match(filter, network.name) is not None
        ]

    for net in networks:
        env = None
        netname = None

        if murano_networks and len(net.subnets) == 1:
            env = get_net_env(net.name)
        if env:
            if murano_networks == 'exclude':
                continue
            else:
                netname = _("Network of '%s'") % env

        if include_subnets:
            for subnet in net.subnets:
                if not netname:
                    full_name = "%(net)s: %(cidr)s" % dict(net=net.name,
                                                           cidr=subnet.cidr)
                    if subnet.name:
                        full_name += " (%s)" % subnet.name

                network_choices.append(((net.id, subnet.id), netname
                                        or full_name))

        else:
            netname = netname or net.name
            network_choices.append(((net.id, None), netname))
    return network_choices
Exemple #3
0
def populate_neutron_management_network_choices(self, request, context):
    try:
        tenant_id = self.request.user.tenant_id
        networks = neutron.network_list_for_tenant(request, tenant_id)
        network_list = [(network.id, network.name_or_id) for network in networks]
    except Exception:
        network_list = []
        exceptions.handle(request, _("Unable to retrieve networks."))
    return network_list
def populate_neutron_management_network_choices(self, request, context):
    try:
        tenant_id = self.request.user.tenant_id
        networks = neutron.network_list_for_tenant(request, tenant_id)
        network_list = [(network.id, network.name_or_id)
                        for network in networks]
    except Exception:
        network_list = []
        exceptions.handle(request, _('Unable to retrieve networks.'))
    return network_list
def get_available_networks(request, include_subnets=True,
                           filter=None, murano_networks=None, exclude_ext_net=True):
    if murano_networks:
        env_names = [e.name for e in env_api.environments_list(request)]

        def get_net_env(name):
            for env_name in env_names:
                if name.startswith(env_name + '-network'):
                    return env_name

    network_choices = []
    tenant_id = request.user.tenant_id
    try:
        networks = neutron.network_list_for_tenant(request,
                                                   tenant_id=tenant_id)
    except exceptions.ServiceCatalogException:
        LOG.warning("Neutron not found. Assuming Nova Network usage")
        return None

    # Remove external networks
    if exclude_ext_net:
        networks = [network for network in networks
                    if network.router__external is False]
    if filter:
        networks = [network for network in networks
                    if re.match(filter, network.name) is not None]

    for net in networks:
        env = None
        netname = None

        if murano_networks and len(net.subnets) == 1:
            env = get_net_env(net.name)
        if env:
            if murano_networks == 'exclude':
                continue
            else:
                netname = _("Network of '%s'") % env

        if include_subnets:
            for subnet in net.subnets:
                if not netname:
                    full_name = (
                        "%(net)s: %(cidr)s %(subnet)s" %
                        dict(net=net.name_or_id,
                             cidr=subnet.cidr,
                             subnet=subnet.name_or_id))

                network_choices.append(
                    ((net.id, subnet.id), netname or full_name))

        else:
            netname = netname or net.name_or_id
            network_choices.append(((net.id, None), netname))
    return network_choices
Exemple #6
0
    def get(self, request):
        """Get a list of the Networks for a project.

        Networks includes external and private. Also, each network
        has subnets.
        The returned result is an object with property 'items' and each
        item under this is a Network.
        """
        tenant_id = request.user.tenant_id
        result = neutron.network_list_for_tenant(request, tenant_id,
                                                 include_external=True)
        return {'items': [n.to_dict() for n in result]}
Exemple #7
0
    def get(self, request):
        """Get a list of the Networks for a project.

        Networks includes external and private. Also, each network
        has subnets.
        The returned result is an object with property 'items' and each
        item under this is a Network.
        """
        tenant_id = request.user.tenant_id
        result = neutron.network_list_for_tenant(request,
                                                 tenant_id,
                                                 include_external=True)
        return {'items': [n.to_dict() for n in result]}
Exemple #8
0
def get_network_name_mapping_for_tenant(request, tenant_id, **params):
    networks = neutron.network_list_for_tenant(request, tenant_id, **params)
    return create_network_name_mapping(networks)