def get_nuage_gateway_vlans(self, context, filters=None, fields=None):
        if not filters:
            # No gateway or gatewayport specified by user
            if context.is_admin:
                msg = (_('--gatewayport or --gateway and --gatewayport option '
                         'is required'))
                raise nuage_exc.NuageBadRequest(msg=msg)

            fetch_tenant = context.tenant_id
        else:
            if context.is_admin:
                if 'gateway' in filters and 'gatewayport' not in filters:
                    msg = (_('--gateway and --gatewayport option '
                             'should be provided'))
                    raise nuage_exc.NuageBadRequest(msg=msg)
            else:
                if 'gateway' in filters or 'gatewayport' in filters:
                    msg = (_('--gateway or --gatewayport option not '
                             'supported'))
                    raise nuage_exc.NuageBadRequest(msg=msg)

            user_tenant = filters.get('tenant')
            fetch_tenant = self._check_for_permissions(context, user_tenant)

        def_netpart = cfg.CONF.RESTPROXY.default_net_partition_name
        netpart = nuagedb.get_default_net_partition(context, def_netpart)
        resp = self.nuageclient.get_gateway_port_vlans(fetch_tenant,
                                                       netpart['id'],
                                                       filters=filters)
        if resp:
            return [self._make_vlan_dict(
                vlan, fields=fields, context=context) for vlan in resp]
        else:
            return []
    def delete_gw_host_vport(self, context, port, subnet_mapping):
        port_params = {
            'neutron_port_id': port['id']
        }

        # Check if l2domain/subnet exist. In case of router_interface_delete,
        # subnet is deleted and then call comes to delete_port. In that
        # case, we just return
        vsd_subnet = self.nuageclient.get_subnet_or_domain_subnet_by_id(
            subnet_mapping['nuage_subnet_id'])
        if not vsd_subnet:
            return

        if subnet_mapping['nuage_managed_subnet']:
            port_params['l2dom_id'] = subnet_mapping['nuage_subnet_id']
            port_params['l3dom_id'] = subnet_mapping['nuage_subnet_id']
        else:
            if subnet_mapping['nuage_l2dom_tmplt_id']:
                port_params['l2dom_id'] = subnet_mapping['nuage_subnet_id']
            else:
                port_params['l3dom_id'] = subnet_mapping['nuage_subnet_id']
        nuage_vport = self.nuageclient.get_nuage_vport_by_neutron_id(
            port_params, required=False)
        if nuage_vport and (nuage_vport['type'] == constants.HOST_VPORT):
            def_netpart = cfg.CONF.RESTPROXY.default_net_partition_name
            netpart = nuagedb.get_default_net_partition(context, def_netpart)
            self.nuageclient.delete_nuage_gateway_vport(
                context.tenant_id,
                nuage_vport.get('ID'),
                netpart['id'])
    def create_nuage_gateway_vlan(self, context, nuage_gateway_vlan):
        vlan = nuage_gateway_vlan['nuage_gateway_vlan']
        def_netpart = cfg.CONF.RESTPROXY.default_net_partition_name
        netpart = nuagedb.get_default_net_partition(context, def_netpart)

        resp = self.nuageclient.create_gateway_port_vlan(context.tenant_id,
                                                         vlan, netpart['id'])
        return self._make_vlan_dict(resp, context=context)
    def update_nuage_gateway_vlan(self, context, id, nuage_gateway_vlan):
        vlan = nuage_gateway_vlan['nuage_gateway_vlan']
        def_netpart = cfg.CONF.RESTPROXY.default_net_partition_name
        netpart = nuagedb.get_default_net_partition(context, def_netpart)

        params = {'vlan': vlan, 'np_id': netpart['id']}
        resp = self.vsdclient.update_gateway_port_vlan(context.tenant_id, id,
                                                       params)
        return self._make_vlan_dict(resp, context=context)
    def update_nuage_gateway_vlan(self, context, id, nuage_gateway_vlan):
        vlan = nuage_gateway_vlan['nuage_gateway_vlan']
        def_netpart = cfg.CONF.RESTPROXY.default_net_partition_name
        netpart = nuagedb.get_default_net_partition(context, def_netpart)

        params = {
            'vlan': vlan,
            'np_id': netpart['id']
        }
        resp = self.nuageclient.update_gateway_port_vlan(context.tenant_id, id,
                                                         params)
        return self._make_vlan_dict(resp, context=context)
    def get_nuage_gateway_vport(self, context, id, fields=None):
        fetch_tenant = self._check_for_permissions(context, None)
        def_netpart = cfg.CONF.RESTPROXY.default_net_partition_name
        netpart = nuagedb.get_default_net_partition(context, def_netpart)

        resp = self.nuageclient.get_gateway_vport(fetch_tenant,
                                                  netpart['id'],
                                                  id)
        if resp:
            return self._make_vport_dict(resp, fields=fields, context=context)
        else:
            raise nuage_exc.NuageNotFound(resource='nuage_vport',
                                          resource_id=id)
    def get_nuage_gateway_vports(self, context, filters=None, fields=None):
        user_tenant = filters.get('tenant')
        fetch_tenant = self._check_for_permissions(context, user_tenant)

        def_netpart = cfg.CONF.RESTPROXY.default_net_partition_name
        netpart = nuagedb.get_default_net_partition(context, def_netpart)

        resp = self.nuageclient.get_gateway_vports(fetch_tenant,
                                                   netpart['id'],
                                                   filters)
        if resp:
            return [self._make_vport_dict(vport, fields=fields,
                                          context=context) for vport in resp]
        else:
            return []
Beispiel #8
0
    def get_nuage_gateway_vport(self, context, id, fields=None):
        fetch_tenant = self._check_for_permissions(context, None)
        def_netpart = cfg.CONF.RESTPROXY.default_net_partition_name
        netpart = nuagedb.get_default_net_partition(context, def_netpart)

        resp = self.nuageclient.get_gateway_vport(fetch_tenant, netpart['id'],
                                                  id)
        if resp:
            if not resp.get('subnet_id'):
                subnet_mapping = nuagedb.get_subnet_l2dom_by_nuage_id(
                    context.session, resp['nuage_subnet_id'])
                resp['subnet_id'] = subnet_mapping['subnet_id']
            return self._make_vport_dict(resp, fields=fields, context=context)
        else:
            raise nuage_exc.NuageNotFound(resource='nuage_vport',
                                          resource_id=id)
    def get_nuage_gateway_vport(self, context, id, fields=None):
        fetch_tenant = self._check_for_permissions(context, None)
        def_netpart = cfg.CONF.RESTPROXY.default_net_partition_name
        netpart = nuagedb.get_default_net_partition(context, def_netpart)

        resp = self.vsdclient.get_gateway_vport(context,
                                                fetch_tenant,
                                                netpart['id'],
                                                id)
        if not resp:
            raise nuage_exc.NuageNotFound(resource='nuage_vport',
                                          resource_id=id)
        if not resp.get('subnet_id'):
            nuage_subnet_id = resp['nuage_subnet_id']
            subnet_info = nuagedb.get_subnet_info_by_nuage_id(
                context.session, nuage_subnet_id)
            if subnet_info:
                if 'subnet_id' in subnet_info:
                    resp['subnet_id'] = subnet_info['subnet_id']
                    LOG.debug('get_nuage_gateway_vport: subnet_id '
                              'could be retrieved via subnet_info')
                elif resp.get('port_id'):
                    subnet_mapping = nuagedb.\
                        get_subnet_l2dom_by_nuage_id_and_port(
                            context.session, nuage_subnet_id, resp['vport_id'])
                    if subnet_mapping:
                        resp['subnet_id'] = subnet_mapping['subnet_id']
                        LOG.debug('get_nuage_gateway_vport: subnet_id '
                                  'could be retrieved via port')
                    else:
                        LOG.debug('get_nuage_gateway_vport: subnet_id '
                                  'could not be retrieved via port')
                else:
                    LOG.debug('get_nuage_gateway_vport: subnet_id could '
                              'not be retrieved')
            else:
                LOG.debug('get_nuage_gateway_vport: subnet_id could not '
                          'be retrieved as no subnet_info is present for '
                          'nuage_subnet_id={}'.format(nuage_subnet_id))
        else:
            LOG.debug('get_nuage_gateway_vport: subnet_id already '
                      'contained')
        return self._make_vport_dict(resp, fields=fields, context=context)
    def create_nuage_gateway_vport(self, context, nuage_gateway_vport):
        vport = nuage_gateway_vport['nuage_gateway_vport']
        subnet_id = vport.get('subnet')
        port_id = vport.get('port')
        def_netpart = cfg.CONF.RESTPROXY.default_net_partition_name
        netpart = nuagedb.get_default_net_partition(context, def_netpart)
        params = {
            'gatewayinterface': vport['gatewayvlan'],
            'np_id': netpart['id'],
            'tenant': vport.get('tenant')
        }

        if subnet_id:
            params['subnet'] = self.get_subnet(context, subnet_id)

        if port_id:
            p = self.get_port(context, port_id)
            if p.get('fixed_ips'):
                subnet_id = p['fixed_ips'][0]['subnet_id']
                subnet = self.get_subnet(context, subnet_id)
                params['enable_dhcp'] = subnet.get('enable_dhcp')
            params['port'] = p

        resp = self.nuageclient.create_gateway_vport(context.tenant_id,
                                                     params)
        if port_id:
            port = params['port']
            if resp['vport_gw_type'] == constants.SOFTWARE:
                self._delete_port_security_group_bindings(context, port['id'])
                self._process_port_create_security_group(
                    context,
                    port,
                    port[ext_sg.SECURITYGROUPS]
                )
                LOG.debug("Created security group for port %s", port['id'])
            self._check_floatingip_update(context, port,
                                          vport_type=constants.HOST_VPORT,
                                          vport_id=resp['vport_id'])
        return self._make_vport_dict(resp, context=context)
Beispiel #11
0
    def get_nuage_gateway_vlans(self, context, filters=None, fields=None):
        if not filters:
            # No gateway or gatewayport specified by user
            if context.is_admin:
                msg = (_('--gatewayport or --gateway and --gatewayport option '
                         'is required'))
                raise nuage_exc.NuageBadRequest(msg=msg)

            fetch_tenant = context.tenant_id
        else:
            if context.is_admin:
                if 'gateway' in filters and 'gatewayport' not in filters:
                    msg = (_('--gateway and --gatewayport option '
                             'should be provided'))
                    raise nuage_exc.NuageBadRequest(msg=msg)
            else:
                if 'gateway' in filters or 'gatewayport' in filters:
                    msg = (_('--gateway or --gatewayport option not '
                             'supported'))
                    raise nuage_exc.NuageBadRequest(msg=msg)

            user_tenant = filters.get('tenant')
            fetch_tenant = self._check_for_permissions(context, user_tenant)

        def_netpart = cfg.CONF.RESTPROXY.default_net_partition_name
        netpart = nuagedb.get_default_net_partition(context, def_netpart)
        resp = self.nuageclient.get_gateway_port_vlans(fetch_tenant,
                                                       netpart['id'],
                                                       filters=filters)
        if resp:
            return [
                self._make_vlan_dict(vlan, fields=fields, context=context)
                for vlan in resp
            ]
        else:
            return []
    def get_nuage_gateway_vports(self, context, filters=None, fields=None):
        user_tenant = filters.get('tenant')
        fetch_tenant = self._check_for_permissions(context, user_tenant)

        def_netpart = cfg.CONF.RESTPROXY.default_net_partition_name
        netpart = nuagedb.get_default_net_partition(context, def_netpart)

        subnet_id = filters['subnet'][0]
        subnet_mapping = nuagedb.get_subnet_l2dom_by_id(context.session,
                                                        subnet_id)
        if subnet_mapping:
            filters['nuage_subnet_id'] = [subnet_mapping['nuage_subnet_id']]
        else:
            msg = 'No neutron subnet to nuage subnet mapping found'
            raise nuage_exc.NuageBadRequest(msg=msg)

        resp = self.nuageclient.get_gateway_vports(fetch_tenant,
                                                   netpart['id'],
                                                   filters)
        if resp:
            return [self._make_vport_dict(vport, fields=fields,
                                          context=context) for vport in resp]
        else:
            return []
Beispiel #13
0
 def delete_nuage_gateway_vport(self, context, id):
     def_netpart = cfg.CONF.RESTPROXY.default_net_partition_name
     netpart = nuagedb.get_default_net_partition(context, def_netpart)
     self.nuageclient.delete_nuage_gateway_vport(context.tenant_id, id,
                                                 netpart['id'])
 def delete_nuage_gateway_vlan(self, context, id):
     def_netpart = cfg.CONF.RESTPROXY.default_net_partition_name
     netpart = nuagedb.get_default_net_partition(context, def_netpart)
     self.nuageclient.delete_gateway_port_vlan(id, netpart['id'])