def delete_network(self, tenant_id, net_id): """ Deletes the network with the specified network identifier belonging to the specified tenant. :returns: a sequence of mappings with the following signature: {'net-id': uuid that uniquely identifies the particular quantum network } :raises: exception.NetworkInUse :raises: exception.NetworkNotFound """ LOG.debug("QuantumRestProxy: delete_network() called") net = self.get_network(tenant_id, net_id) for port in db.port_list(net_id): if port['interface_id']: raise exc.NetworkInUse(net_id=net_id) # Delete from DB db.network_destroy(net_id) # delete from network ctrl. Remote error on delete is ignored try: resource = '/tenants/%s/networks/%s' % (tenant_id, net_id) ret = self.servers.delete(resource) if not self.servers.action_success(ret): raise RemoteRestError(ret[2]) except RemoteRestError as e: LOG.error( 'QuantumRestProxy: Unable to update remote network: %s' % e.message) # return deleted network return net
def delete_network(self, tenant_id, net_id): """ Deletes the network with the specified network identifier belonging to the specified tenant. """ LOG.debug("delete_network() called\n") net = db.network_get(net_id) if net: if len(net[const.NETWORKPORTS]) > 0: ports_on_net = db.port_list(net_id) for port in ports_on_net: if port[const.INTERFACEID]: raise exc.NetworkInUse(net_id=net_id) for port in ports_on_net: self.delete_port(tenant_id, net_id, port[const.UUID]) self._invoke_device_plugins(self._func_name(), [tenant_id, net_id]) net_dict = cutil.make_net_dict(net[const.UUID], net[const.NETWORKNAME], []) self._release_vlan_for_tenant(tenant_id, net_id) cdb.remove_vlan_binding(net_id) db.network_destroy(net_id) return net_dict # Network not found raise exc.NetworkNotFound(net_id=net_id)
def delete_network(self, context, id): """ Deletes the network with the specified network identifier belonging to the specified tenant. """ LOG.debug(_("delete_network() called")) #We first need to check if there are any ports on this network with context.session.begin(): network = self._get_network(context, id) filter = {'network_id': [id]} ports = self.get_ports(context, filters=filter) # check if there are any tenant owned ports in-use prefix = db_base_plugin_v2.AGENT_OWNER_PREFIX only_svc = all(p['device_owner'].startswith(prefix) for p in ports) if not only_svc: raise exc.NetworkInUse(net_id=id) context.session.close() #Network does not have any ports, we can proceed to delete try: network = self._get_network(context, id) kwargs = {const.NETWORK: network, const.BASE_PLUGIN_REF: self} self._invoke_device_plugins(self._func_name(), [context, id, kwargs]) return super(PluginV2, self).delete_network(context, id) except: raise
def delete_network(self, tenant_id, net_id): """ Deletes the network with the specified network identifier belonging to the specified tenant. """ LOG.debug("LinuxBridgePlugin.delete_network() called") db.validate_network_ownership(tenant_id, net_id) net = db.network_get(net_id) if net: ports_on_net = db.port_list(net_id) if len(ports_on_net) > 0: for port in ports_on_net: if port[const.INTERFACEID]: raise exc.NetworkInUse(net_id=net_id) for port in ports_on_net: self.delete_port(tenant_id, net_id, port[const.UUID]) net_dict = cutil.make_net_dict(net[const.UUID], net[const.NETWORKNAME], [], net[const.OPSTATUS]) try: self._release_vlan_for_tenant(tenant_id, net_id) cdb.remove_vlan_binding(net_id) except Exception as excp: LOG.warning("Exception: %s" % excp) db.network_update(net_id, tenant_id, {const.OPSTATUS: OperationalStatus.DOWN}) db.network_destroy(net_id) return net_dict # Network not found raise exc.NetworkNotFound(net_id=net_id)
def delete_network(self, tenant_id, net_id): net = db.network_get(net_id) # Verify that no attachments are plugged into the network for port in db.port_list(net_id): if port.interface_id: raise q_exc.NetworkInUse(net_id=net_id) net = db.network_destroy(net_id) ovs_db.remove_vlan_binding(net_id) self.vmap.release(net_id) return self._make_net_dict(str(net.uuid), net.name, [], net.op_status)
def delete_network(self, tenant_id, net_id): db.validate_network_ownership(tenant_id, net_id) net = db.network_get(net_id) # Verify that no attachments are plugged into the network for port in db.port_list(net_id): if port.interface_id: raise q_exc.NetworkInUse(net_id=net_id) net = db.network_destroy(net_id) self.driver.delete_network(net) return self._make_net_dict(str(net.uuid), net.name, [], net.op_status)
def delete_network(self, context, id): with context.session.begin(): network = self._get_network(context, id) filter = {'network_id': [id]} ports = self.get_ports(context, filters=filter) if ports: raise q_exc.NetworkInUse(net_id=id) subnets_qry = context.session.query(models_v2.Subnet) subnets_qry.filter_by(network_id=id).delete() context.session.delete(network)
def delete_network(self, tenant_id, net_id): """ Deletes the network with the specified network identifier belonging to the specified tenant. """ LOG.debug("FakePlugin.delete_network() called") net = self._get_network(tenant_id, net_id) # Verify that no attachments are plugged into the network if net: for port in db.port_list(net_id): if port['interface_id']: raise exc.NetworkInUse(net_id=net_id) db.network_destroy(net_id) return net # Network not found raise exc.NetworkNotFound(net_id=net_id)