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)
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
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))