def create_project_net_partition_mapping(self, context,
                                             project_net_partition_mapping):
        session = context.session
        p2n = project_net_partition_mapping['project_net_partition_mapping']
        project = p2n['project']
        net_partition_id = p2n['net_partition_id']

        err = validators.validate_uuid(project)
        if err:
            raise nuage_exc.NuageBadRequest(resource='net_partition', msg=err)
        # Validate netpartition
        netpart = nuagedb.get_net_partition_by_id(session, net_partition_id)
        if not netpart:
            msg = _('Net partition {} is not a valid netpartition '
                    'ID.').format(net_partition_id)
            raise nuage_exc.NuageBadRequest(
                resource='project_net_partition_mapping', msg=msg)

        with session.begin(subtransactions=True):
            existing_mapping = nuagedb.get_project_net_partition_mapping(
                session, project)
            if existing_mapping:
                session.delete(existing_mapping)
            mapping = nuagedb.add_project_net_partition_mapping(
                session, net_partition_id, project)
        return self._make_project_net_partition_mapping(context, mapping)
 def get_net_partition(self, context, id, fields=None):
     net_partition = nuagedb.get_net_partition_by_id(context.session, id)
     if not net_partition:
         raise nuage_exc.NuageNotFound(resource='net_partition',
                                       resource_id=id)
     return self._make_net_partition_dict(net_partition,
                                          context=context,
                                          fields=fields)
 def delete_net_partition(self, context, id):
     net_partition = nuagedb.get_net_partition_by_id(context.session, id)
     if not net_partition:
         raise nuage_exc.NuageNotFound(resource='net_partition',
                                       resource_id=id)
     self._validate_delete_net_partition(context, id, net_partition['name'])
     self.vsdclient.delete_net_partition(net_partition['id'])
     with context.session.begin(subtransactions=True):
         nuagedb.delete_net_partition(context.session, net_partition)
    def _set_sub_ports(self, trunk_id, subports):
        _vsdclient = self.plugin_driver.vsdclient
        ctx = n_ctx.get_admin_context()
        for port in subports:
            LOG.debug('setting port id %(id)s  vlan %(vlan)s',
                      {'id': port.port_id, 'vlan': port.segmentation_id})
            os_port = self.core_plugin.get_port(ctx, port.port_id)
            subnet_mapping = db.get_subnet_l2dom_by_port_id(ctx.session,
                                                            port.port_id)
            fixed_ips = os_port['fixed_ips']
            subnets = {4: {}, 6: {}}
            ips = {4: None, 6: None}
            for fixed_ip in fixed_ips:
                subnet = self.core_plugin.get_subnet(ctx,
                                                     fixed_ip['subnet_id'])
                subnets[subnet['ip_version']] = subnet
                ips[subnet['ip_version']] = fixed_ip['ip_address']

            network_details = self.core_plugin.get_network(
                ctx,
                os_port['network_id'])
            if network_details['shared']:
                _vsdclient.create_usergroup(
                    os_port['tenant_id'],
                    subnet_mapping['net_partition_id'])

            np_name = db.get_net_partition_by_id(
                ctx.session,
                subnet_mapping['net_partition_id'])['name']

            data = {
                'id': os_port['id'],
                'mac': os_port['mac_address'],
                'ipv4': ips[4],
                'ipv6': ips[6],
                'net_partition_id': subnet_mapping['net_partition_id'],
                'net_partition_name': np_name,
                'nuage_subnet_id': subnet_mapping.get('nuage_subnet_id')
            }
            try:
                _vsdclient.add_subport(trunk_id, port, data)
            except Exception as ex:
                LOG.error("Failed to create subport: %s", ex)
                self.set_trunk_status(ctx, trunk_id,
                                      t_consts.TRUNK_DEGRADED_STATUS)
        updated_ports = self._update_subport_bindings(ctx,
                                                      trunk_id,
                                                      subports)
        if len(subports) != len(updated_ports[trunk_id]):
            LOG.error("Updated: %(up)s, subports: %(sub)s",
                      {'up': len(updated_ports[trunk_id]),
                       'sub': len(subports)})
            self.set_trunk_status(ctx, trunk_id,
                                  t_consts.TRUNK_DEGRADED_STATUS)
示例#5
0
 def _get_default_net_partition_for_current_project(self, context):
     session = context.session
     net_partition = nuagedb.get_net_partition_for_project(
         session, context.project_id)
     if not net_partition:
         net_partition = nuagedb.get_net_partition_by_id(
             session, self.default_np_id)
         if not net_partition:
             msg = _('Default net_partition was not created at '
                     'system startup.')
             raise NuageBadRequest(resource='subnet', msg=msg)
     return net_partition
示例#6
0
 def _get_netpartition_from_db(session, np_id_or_name):
     return (nuagedb.get_net_partition_by_id(session, np_id_or_name)
             or nuagedb.get_net_partition_by_name(session, np_id_or_name))