private @Nullable Subnet readSubnet(EndpointL3 l3Ep, ReadTransaction rTx) { NetworkDomainId l3EpNetworkContainment = l3Ep.getNetworkContainment(); if (l3EpNetworkContainment == null) { LOG.debug("L3 endpoint {} does not contain network containment.", l3Ep.getKey()); return null; } if (l3Ep.getTenant() == null) { LOG.debug("L3 endpoint {} does not contain tenat.", l3Ep.getKey()); return null; } Optional<Subnet> potentialSubnet = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION, IidFactory.subnetIid(l3Ep.getTenant(), new SubnetId(l3EpNetworkContainment)), rTx); if (!potentialSubnet.isPresent()) { LOG.debug( "Network containment {} of L3 endpoint {} does not point to a subnet or the subnet does not exist.", l3EpNetworkContainment.getValue(), l3Ep.getKey()); return null; } return potentialSubnet.get(); }
@Override public void onDeleted( org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.subnets.rev150712.subnets.attributes.subnets.Subnet neutronSubnet, Neutron oldNeutron, Neutron newNeutron) { LOG.trace("deleted subnet - {}", neutronSubnet); ReadWriteTransaction rwTx = dataProvider.newReadWriteTransaction(); NetworkDomainId subnetId = new NetworkDomainId(neutronSubnet.getUuid().getValue()); TenantId tenantId = new TenantId(neutronSubnet.getTenantId().getValue()); Optional<NetworkDomain> potentialSubnetDomain = DataStoreHelper.removeIfExists(LogicalDatastoreType.CONFIGURATION, L2L3IidFactory.subnetIid(tenantId, subnetId), rwTx); if (!potentialSubnetDomain.isPresent()) { LOG.warn("Illegal state - subnet network domain {} does not exist.", subnetId.getValue()); rwTx.cancel(); return; } removeTenantSubnet(tenantId, new SubnetId(subnetId), rwTx); // TODO remove default gateway EP in case when subnet is in provider physical network DataStoreHelper.submitToDs(rwTx); }
public GBPTenantPolicyCreator(DataBroker dataBroker, Intent intent) { this.dataProvider = dataBroker; this.intent = intent; this.mdsalUtils = new MdsalUtils(dataProvider); this.contractId = GBPRendererHelper.createUniqueId(); this.providerL3Addresses = new ArrayList<>(); this.consumerL3Addresses = new ArrayList<>(); this.bridgeDomainIds = new ArrayList<>(); this.l3ContextIds = new ArrayList<>(); this.providerNetworkDomainId = new NetworkDomainId(GBPRendererHelper.createUniqueId()); this.consumerNetworkDomainId = new NetworkDomainId(GBPRendererHelper.createUniqueId()); this.providerFloodDomainId = new L2FloodDomainId(GBPRendererHelper.createUniqueId()); this.consumerFloodDomainId = new L2FloodDomainId(GBPRendererHelper.createUniqueId()); }
private void syncExternalFlows(DestinationMapperFlows flows, Endpoint endpoint, Endpoint peerEndpoint, Endpoint gatewayEndpoint, Set<NodeConnectorId> externalPorts, OfWriter ofWriter) { EndpointFwdCtxOrdinals peerOrdinals = OrdinalFactory.getEndpointFwdCtxOrdinals(ctx, peerEndpoint); if (peerOrdinals == null) { return; } short goToTable = ctx.getPolicyManager().getTABLEID_POLICY_ENFORCER(); if (endpoint.getNetworkContainment().equals(peerEndpoint.getNetworkContainment())) { if (externalPorts.iterator().hasNext()) { // L2 flow flows.createExternalL2Flow(goToTable, EXTERNAL_L2, peerEndpoint, externalPorts, ofWriter); } } else if (gatewayEndpoint != null) { HashSet<Subnet> subnets = utils.getSubnets(peerEndpoint.getTenant()); if (subnets == null) { LOG.trace("No subnets in tenant {}", peerEndpoint.getTenant()); return; } for (L3Address l3Address : endpoint.getL3Address()) { if (l3Address.getIpAddress() == null || l3Address.getL3Context() == null) { LOG.error("Endpoint with L3Address but either IPAddress or L3Context is null. {}", endpoint.getL3Address()); continue; } // L3 flow flows.createExternalL3RoutedFlow(goToTable, L3_EXTERNAL, peerEndpoint, gatewayEndpoint, l3Address, externalPorts, ofWriter); } } }
public static NetworkDomain createSubnet( org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.subnets.rev150712.subnets.attributes.subnets.Subnet subnet, IpAddress virtualRouterIp) { SubnetBuilder sb = new SubnetBuilder(); sb.setIpPrefix(subnet.getCidr()); sb.setVirtualRouterIp(virtualRouterIp); NetworkDomainBuilder ndb = new NetworkDomainBuilder(); if (!Strings.isNullOrEmpty(subnet.getName())) { try { ndb.setName(new Name(subnet.getName())); } catch (Exception e) { LOG.info("Name '{}' of Neutron Subnet '{}' is ignored.", subnet.getName(), subnet.getUuid().getValue()); LOG.debug("Name exception", e); } } ndb.setNetworkDomainId(new NetworkDomainId(subnet.getUuid().getValue())); ndb.setNetworkDomainType(MappingUtils.SUBNET); ndb.setParent(MappingUtils.createParent(new NetworkDomainId(subnet.getNetworkId().getValue()), L2FloodDomain.class)); ndb.addAugmentation(SubnetAugmentForwarding.class, new SubnetAugmentForwardingBuilder().setSubnet(sb.build()) .build()); return ndb.build(); }
&& extEp.getNetworkContainment().equals(endpoint.getNetworkContainment())) { Subnet subnet = ctx.getTenant(extEp.getTenant()).resolveSubnet(new SubnetId(extEp.getNetworkContainment())); L2FloodDomain l2Fd = ctx.getTenant(extEp.getTenant())
List<Subnet> getLocalSubnets(NodeId nodeId) { Collection<Endpoint> endpointsForNode = ctx.getEndpointManager().getEndpointsForNode(nodeId); List<Subnet> localSubnets = new ArrayList<>(); for (Endpoint endpoint : endpointsForNode) { HashSet<Subnet> subnets = getSubnets(endpoint.getTenant()); if (subnets.isEmpty()) { LOG.debug("No local subnets in tenant {} for EP {}.", endpoint.getTenant(), endpoint.getKey()); continue; } NetworkDomainId epNetworkContainment = getEPNetworkContainment(endpoint, ctx.getTenant(endpoint.getTenant())); for (Subnet subnet : subnets) { if (epNetworkContainment.getValue().equals(subnet.getId().getValue())) { localSubnets.add(subnet); } } } return localSubnets; }
routerL3CtxId, new NetworkDomainId(ipWithSubnetFromGwPort.getSubnetId().getValue())); if (!registeredExternalGateway) { LOG.warn("Could not add L3Prefix as gateway of default route. Gateway port {}", gwPort); NetworkDomain subnetDomain = createSubnetWithVirtualRouterIp(gatewayIp, new NetworkDomainId(ipWithSubnetFromGwPort.getSubnetId() .getValue())); rwTx.merge(LogicalDatastoreType.CONFIGURATION, L2L3IidFactory.subnetIid(tenantId, subnetDomain.getNetworkDomainId()),
public static <T extends ContextType> Parent createParent(NetworkDomainId id, Class<T> domainType) { return new ParentBuilder().setContextId(new ContextId(id.getValue())).setContextType(domainType).build(); }
NetworkDomainId networkContainment = new NetworkDomainId(ipWithSubnetFromGwPort.getSubnetId().getValue()); boolean registeredExternalGateway = epRegistrator.registerL3EpAsExternalGateway(tenantId, gatewayIp, l3ContextId, networkContainment);
private Uuid getFaasSubnetId(Endpoint endpoint) { if (endpoint.getEndpointGroup() == null) { LOG.error("Failed Endpoint registration -- No Endpoint-Group Id in endpoint {}", endpoint); return null; } SubnetId subnetId = null; if (endpoint.getNetworkContainment() != null) { LOG.trace("Subnet is defined based on endpoint containment value {}", endpoint.getNetworkContainment() .getValue()); subnetId = new SubnetId(endpoint.getNetworkContainment()); } if (subnetId == null) { LOG.error("Failed Endpoint registration -- Couldn't find a subnet for endpoint {}", endpoint.getKey()); return null; } LOG.debug("Using subnetId {} for endpoint {}", subnetId, endpoint.getKey()); policyManager.registerSubnetWithEpg(endpoint.getEndpointGroup(), endpoint.getTenant(), subnetId); Optional<MappedSubnet> subnetOp = DataStoreHelper.readFromDs(LogicalDatastoreType.OPERATIONAL, FaasIidFactory.mappedSubnetIid(endpoint.getTenant(), subnetId), dataProvider.newReadWriteTransaction()); if (subnetOp.isPresent()) { return subnetOp.get().getFaasSubnetId(); } LOG.error("Failed Endpoint registration -- Couldn't find Mapped Subnet Id based on GBP Subnet Id {}", subnetId); return null; }
@Deprecated private void modifyL3ContextForEndpoints(Port port, FixedIps resolvedPortFixedIp, ContextId newContextId) { org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterEndpointInputBuilder epInBuilder = createBasicEndpointInputBuilder(port); epInBuilder.setNetworkContainment(new NetworkDomainId(resolvedPortFixedIp.getSubnetId().getValue())); L3Address l3Address = new L3AddressBuilder().setL3Context(new L3ContextId(newContextId)) .setIpAddress(resolvedPortFixedIp.getIpAddress()) .build(); epInBuilder.setL3Address(ImmutableList.of(l3Address)); List<EndpointGroupId> epgsFromSecGroups = resolveEpgIdsFromSecGroups(port.getSecurityGroups()); epgsFromSecGroups.add(NetworkClient.EPG_ID); epInBuilder.setEndpointGroups(epgsFromSecGroups); epRegistrator.registerEndpoint(epInBuilder.build()); // unregister L3EP L3ContextId oldL3Context = new L3ContextId(port.getNetworkId().getValue()); L3 l3 = new L3Builder().setL3Context(oldL3Context).setIpAddress(resolvedPortFixedIp.getIpAddress()).build(); org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.UnregisterEndpointInput epUnreg = new org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.UnregisterEndpointInputBuilder().setL3( ImmutableList.of(l3)) .build(); epRegistrator.unregisterEndpoint(epUnreg); }
private Subnet createSubnet(List<L3Address> endPoints, NetworkDomainId networkDomainId , L2FloodDomainId floodDomainId) { L3Address endPoint = endPoints.get(0); String ip = endPoint.getIpAddress().getIpv4Address().getValue(); ip = ip.substring(0, ip.lastIndexOf('.')) + ".1"; return new SubnetBuilder() .setId(new SubnetId(networkDomainId.getValue())) .setParent(new ContextId(floodDomainId.getValue())) .setVirtualRouterIp( GBPRendererHelper.createIpAddress(ip)) .setIpPrefix(GBPRendererHelper.createIpPrefix(ip + "/24")) .build(); }
endpointGroupIds.add(NetworkClient.EPG_ID); NetworkDomainId networkContainment = new NetworkDomainId(ipWithSubnet.getSubnetId().getValue()); AddressEndpointRegBuilder l2BaseEp = createBasicMacAddrEpInputBuilder(portInSameSubnet, networkContainment, endpointGroupIds);
NetworkDomainId networkContainment = new NetworkDomainId(ipWithSubnet.getSubnetId().getValue()); List<EndpointGroupId> epgsFromSecGroups = resolveEpgIdsFromSecGroups(port.getSecurityGroups()); epgsFromSecGroups.add(NetworkService.EPG_ID); NetworkDomainId networkContainment = new NetworkDomainId(ipWithSubnet.getSubnetId().getValue()); List<EndpointGroupId> epgsFromSecGroups = resolveEpgIdsFromSecGroups(port.getSecurityGroups()); epgsFromSecGroups.add(NetworkService.EPG_ID); NetworkDomainId containment = new NetworkDomainId(ipWithSubnet.getSubnetId().getValue()); epInBuilder = createEndpointRegFromPort(port, ipWithSubnet, containment, epgsFromSecGroups, neutron); l2BaseEp = createBasicMacAddrEpInputBuilder(port, setParentChildRelationshipForEndpoints(l3BaseEp, l2BaseEp); } else { NetworkDomainId containment = new NetworkDomainId(port.getNetworkId().getValue()); epInBuilder = createEndpointRegFromPort(port, null, containment, epgsFromSecGroups, neutron); l2BaseEp = createBasicMacAddrEpInputBuilder(port, containment, epgsFromSecGroups);