public static void removeFromNetworkCache(Network network) { networkMap.remove(network.getUuid()); }
public static void addToNetworkCache(Network network) { networkMap.put(network.getUuid(), network); }
public static void addToQosNetworksCache(Uuid qosUuid, Network network) { if (qosNetworksMap.containsKey(qosUuid)) { if (!qosNetworksMap.get(qosUuid).containsKey(network.getUuid())) { qosNetworksMap.get(qosUuid).put(network.getUuid(), network); } } else { HashMap<Uuid, Network> networkMap = new HashMap<>(); networkMap.put(network.getUuid(), network); qosNetworksMap.put(qosUuid, networkMap); } }
@Override protected void remove(InstanceIdentifier<Network> identifier, Network input) { LOG.debug("Remove Network notification handler is invoked {} ", input); ifMgr.removeNetwork(input.getUuid()); }
@Override protected void add(InstanceIdentifier<Network> identifier, Network input) { LOG.debug("Add Network notification handler is invoked {} ", input); ifMgr.addNetwork(input.getUuid()); }
/** * Return the virtual bridge ID configured in the specified by the * neutron network. * * @param nw A neutron network instance. * @return The virtual bridge ID. */ public static String getBridgeId(Network nw) { return convertUUIDToKey(nw.getUuid()); }
public static Optional<Network> findNetwork(Uuid uuid, @Nullable Networks networks) { if (networks == null || networks.getNetwork() == null) { return Optional.absent(); } for (Network network : networks.getNetwork()) { if (network.getUuid().equals(uuid)) { return Optional.of(network); } } return Optional.absent(); }
/** * Determine whether the specified neutron network is changed or not. * * <p> * This method compares network fields only used by * {@link NetworkHandler#neutronNetworkUpdated(Network)}. * </p> * * @param before Neutron network instance before modification. * @param after Neutron network instance after modification. * @return {@code true} if the specified neutron network is updated. * {@code false} otherwise. */ static boolean isChanged(@Nonnull Network before, @Nonnull Network after) { // Compare UUIDs. boolean same = (Objects.equals(before.getTenantId(), after.getTenantId()) && Objects.equals(before.getUuid(), after.getUuid())); if (same) { // Compare name and shared. same = (Objects.equals(before.getName(), after.getName()) && Objects.equals(before.isShared(), after.isShared())); } return !same; }
public static void handleNeutronNetworkQosUpdate(DataBroker db, OdlInterfaceRpcService odlInterfaceRpcService, Network network, Uuid qosUuid) { if (LOG.isTraceEnabled()) { LOG.trace("Handling Network QoS update: net: {} qos: {}", network.getUuid(), qosUuid); } QosPolicy qosPolicy = NeutronvpnUtils.qosPolicyMap.get(qosUuid); if (qosPolicy == null || qosPolicy.getBandwidthLimitRules() == null || qosPolicy.getBandwidthLimitRules().isEmpty()) { return; } List<Uuid> subnetIds = NeutronvpnUtils.getSubnetIdsFromNetworkId(db, network.getUuid()); if (subnetIds != null) { for (Uuid subnetId : subnetIds) { List<Uuid> portIds = NeutronvpnUtils.getPortIdsFromSubnetId(db, subnetId); if (portIds != null) { for (Uuid portId : portIds) { Port port = NeutronvpnUtils.portMap.get(portId); if (port != null && (port.getAugmentation(QosPortExtension.class) == null || port.getAugmentation(QosPortExtension.class).getQosPolicyId() == null)) { setPortBandwidthLimits(db, odlInterfaceRpcService, port, qosPolicy.getBandwidthLimitRules().get(0)); } } } } } }
public static void handleNeutronNetworkQosRemove(DataBroker db, OdlInterfaceRpcService odlInterfaceRpcService, Network network, Uuid qosUuid) { if (LOG.isTraceEnabled()) { LOG.trace("Handling Network QoS removal: net: {} qos: {}", network.getUuid(), qosUuid); } List<Uuid> subnetIds = NeutronvpnUtils.getSubnetIdsFromNetworkId(db, network.getUuid()); if (subnetIds != null) { for (Uuid subnetId : subnetIds) { List<Uuid> portIds = NeutronvpnUtils.getPortIdsFromSubnetId(db, subnetId); if (portIds != null) { for (Uuid portId : portIds) { Port port = NeutronvpnUtils.portMap.get(portId); if (port != null && (port.getAugmentation(QosPortExtension.class) == null || port.getAugmentation(QosPortExtension.class).getQosPolicyId() == null)) { BandwidthLimitRulesBuilder bwLimitBuilder = new BandwidthLimitRulesBuilder(); setPortBandwidthLimits(db, odlInterfaceRpcService, port, bwLimitBuilder.setMaxBurstKbps(BigInteger.ZERO) .setMaxKbps(BigInteger.ZERO).build()); } } } } } }
public void removeExternalNetwork(Network net) { Uuid extNetId = net.getUuid(); // Create and add Networks object for this External Network to the ExternalNetworks list InstanceIdentifier<Networks> netsIdentifier = InstanceIdentifier.builder(ExternalNetworks.class). child(Networks.class, new NetworksKey(extNetId)).build(); try { Optional<Networks> optionalNets = NeutronvpnUtils.read(dataBroker, LogicalDatastoreType.CONFIGURATION, netsIdentifier); LOG.trace("Removing Networks node: " + extNetId.getValue()); if (!optionalNets.isPresent()) { LOG.info("External Network " + extNetId.getValue() + " not available in the datastore"); return; } // Delete Networks object from the ExternalNetworks list //isLockAcquired = NeutronvpnUtils.lock(lockManager, extNetId.getValue()); LOG.trace("Deleting External Network " + extNetId.getValue()); MDSALUtil.syncDelete(dataBroker, LogicalDatastoreType.CONFIGURATION, netsIdentifier); LOG.trace("Deleted External Network " + extNetId.getValue() + " successfully from CONFIG Datastore"); } catch (Exception ex) { LOG.error("Deletion of External Network " + extNetId.getValue() + " failed" + ex.getMessage()); } finally { //if (isLockAcquired) { // NeutronvpnUtils.unlock(lockManager, extNetId.getValue()); //} } }
@Deprecated private void removeTenantNetworkDomains(Network network, TenantId tenantId, ReadWriteTransaction rwTx) { L2FloodDomainId l2FdId = new L2FloodDomainId(network.getUuid().getValue()); Optional<L2FloodDomain> potentialL2Fd = DataStoreHelper.removeIfExists(LogicalDatastoreType.CONFIGURATION, IidFactory.l2FloodDomainIid(tenantId, l2FdId), rwTx); if (!potentialL2Fd.isPresent()) { LOG.warn("Illegal state - l2-flood-domain {} does not exist.", l2FdId.getValue()); return; } L2BridgeDomainId l2BdId = new L2BridgeDomainId(l2FdId); Optional<L2BridgeDomain> potentialL2Bd = DataStoreHelper.removeIfExists(LogicalDatastoreType.CONFIGURATION, IidFactory.l2BridgeDomainIid(tenantId, l2BdId), rwTx); if (!potentialL2Bd.isPresent()) { LOG.warn("Illegal state - l2-bridge-domain {} does not exist.", l2BdId.getValue()); return; } L3ContextId l3CtxId = new L3ContextId(l2FdId); Optional<L3Context> potentialL3Ctx = DataStoreHelper.removeIfExists(LogicalDatastoreType.CONFIGURATION, IidFactory.l3ContextIid(tenantId, l3CtxId), rwTx); if (!potentialL3Ctx.isPresent()) { LOG.warn("Illegal state - l3-context {} does not exist.", l3CtxId.getValue()); return; } } }
@Override protected void remove(InstanceIdentifier<Network> identifier, Network input) { if (LOG.isTraceEnabled()) { LOG.trace("Removing Network : key: " + identifier + ", value=" + input); } if (!NeutronvpnUtils.isNetworkTypeSupported(input)) { //FIXME: This should be removed when support for GRE network types is added LOG.error("Neutronvpn doesn't support gre network provider type for this network {}.", input); return; } //Delete ELAN instance for this network String elanInstanceName = input.getUuid().getValue(); ElanInstance elanInstance = elanService.getElanInstance(elanInstanceName); if (elanInstance != null) { elanService.deleteExternalElanNetwork(elanInstance); deleteElanInstance(elanInstanceName); } if (NeutronvpnUtils.getIsExternal(input)) { nvpnNatManager.removeExternalNetwork(input); NeutronvpnUtils.removeFromNetworkCache(input); } }
@Override public void onDeleted(Network network, Neutron oldNeutron, Neutron newNeutron) { LOG.trace("deleted network - {}", network); ReadWriteTransaction rwTx = dataProvider.newReadWriteTransaction(); TenantId tenantId = new TenantId(network.getTenantId().getValue()); ContextId id = new ContextId(network.getUuid().getValue()); Optional<ForwardingContext> potentialL2Fd = DataStoreHelper.removeIfExists(LogicalDatastoreType.CONFIGURATION, L2L3IidFactory.l2FloodDomainIid(tenantId, id), rwTx); if (!potentialL2Fd.isPresent()) { LOG.warn("Illegal state - l2-flood-domain {} does not exist.", id.getValue()); return; } Optional<ForwardingContext> potentialL2Bd = DataStoreHelper.removeIfExists(LogicalDatastoreType.CONFIGURATION, L2L3IidFactory.l2BridgeDomainIid(tenantId, id), rwTx); if (!potentialL2Bd.isPresent()) { LOG.warn("Illegal state - l2-bridge-domain {} does not exist.", id.getValue()); return; } Optional<ForwardingContext> potentialL3Ctx = DataStoreHelper.removeIfExists(LogicalDatastoreType.CONFIGURATION, L2L3IidFactory.l3ContextIid(tenantId, id), rwTx); if (!potentialL3Ctx.isPresent()) { LOG.warn("Illegal state - l3-context {} does not exist.", id.getValue()); return; } removeTenantNetworkDomains(network, tenantId, rwTx); DataStoreHelper.submitToDs(rwTx); }
private ElanInstance createElanInstance(Network input) { String elanInstanceName = input.getUuid().getValue(); Class<? extends SegmentTypeBase> segmentType = NeutronvpnUtils.getSegmentTypeFromNeutronNetwork(input); String segmentationId = NeutronUtils.getSegmentationIdFromNeutronNetwork(input); String physicalNetworkName = NeutronvpnUtils.getPhysicalNetworkName(input); ElanInstance elanInstance = createElanInstance(elanInstanceName, segmentType, segmentationId, physicalNetworkName); InstanceIdentifier<ElanInstance> id = createElanInstanceIdentifier(elanInstanceName); MDSALUtil.syncWrite(dataBroker, LogicalDatastoreType.CONFIGURATION, id, elanInstance); return elanInstance; }
@Deprecated private void createTenantNetworkDomains(Network network, TenantId tenantId, ReadWriteTransaction rwTx) { Name name; L3ContextBuilder l3CtxBuilder = new L3ContextBuilder(); L2FloodDomainBuilder l2FdBuilder = new L2FloodDomainBuilder(); L2BridgeDomainBuilder l2BdBuilder = new L2BridgeDomainBuilder(); if (!Strings.isNullOrEmpty(network.getName())) { try { name = new Name(network.getName()); l3CtxBuilder.setName(name); l2FdBuilder.setName(name); l2BdBuilder.setName(name); } catch (Exception e) { name = null; LOG.info("Name of Neutron Network '{}' is ignored.", network.getName()); LOG.debug("Name exception", e); } } L2FloodDomainId l2FdId = new L2FloodDomainId(network.getUuid().getValue()); L3ContextId l3ContextId = new L3ContextId(l2FdId); L3Context l3Context = l3CtxBuilder.setId(l3ContextId).build(); rwTx.put(LogicalDatastoreType.CONFIGURATION, IidFactory.l3ContextIid(tenantId, l3Context.getId()), l3Context, true); L2BridgeDomainId l2BdId = new L2BridgeDomainId(l2FdId); L2BridgeDomain l2Bd = l2BdBuilder.setId(l2BdId).setParent(l3Context.getId()).build(); rwTx.put(LogicalDatastoreType.CONFIGURATION, IidFactory.l2BridgeDomainIid(tenantId, l2BdId), l2Bd, true); L2FloodDomain l2Fd = l2FdBuilder.setId(l2FdId).setParent(l2BdId).build(); rwTx.put(LogicalDatastoreType.CONFIGURATION, IidFactory.l2FloodDomainIid(tenantId, l2FdId), l2Fd, true); }
result.setID(network.getUuid().getValue());
result.setID(network.getUuid().getValue());
private NeutronNetwork fromMd(Network network) { NeutronNetwork result = new NeutronNetwork(); result.setAdminStateUp(network.isAdminStateUp()); result.setNetworkName(network.getName()); result.setShared(network.isShared()); result.setStatus(network.getStatus()); // todo remove '-' chars as tenant id doesn't use them if (network.getTenantId() != null) { result.setTenantID(network.getTenantId().getValue()); } result.setID(network.getUuid().getValue()); NetworkL3Extension l3Extension = network.getAugmentation(NetworkL3Extension.class); result.setRouterExternal(l3Extension.isExternal()); NetworkProviderExtension providerExtension = network.getAugmentation(NetworkProviderExtension.class); result.setProviderPhysicalNetwork(providerExtension.getPhysicalNetwork()); result.setProviderSegmentationID(providerExtension.getSegmentationId()); result.setProviderNetworkType(NETWORK_MAP.get(providerExtension.getNetworkType())); List<NeutronNetwork_Segment> segments = new ArrayList<>(); if (providerExtension.getSegments() != null) { for (Segments segment: providerExtension.getSegments()) { NeutronNetwork_Segment neutronSegment = new NeutronNetwork_Segment(); neutronSegment.setProviderPhysicalNetwork(segment.getPhysicalNetwork()); neutronSegment.setProviderSegmentationID(segment.getSegmentationId()); neutronSegment.setProviderNetworkType(NETWORK_MAP.get(segment.getNetworkType())); segments.add(neutronSegment); } } result.setSegments(segments); return result; }