HashSet<Subnet> getSubnets(TenantId tenantId) { IndexedTenant indexedTenant = ctx.getTenant(tenantId); if (indexedTenant != null && indexedTenant.getTenant() != null) { ForwardingContext forwardingContext = indexedTenant.getTenant().getForwardingContext(); if (forwardingContext != null && forwardingContext.getSubnet() != null) { return new HashSet<>(forwardingContext.getSubnet()); } } return new HashSet<>(); }
public void processIntentToGBP() { if (!this.verifyIntent()) { return; } TenantBuilder tenantBuilder = this.getTenant(); if (tenantBuilder == null) { return; } else { Tenant tenant = tenantBuilder.build(); //TODO - Add modules to support tenant update and delete InstanceIdentifier<Tenant> tenantInstanceIdentifier = GBPRendererHelper.createTenantIid(tenant.getId()); mdsalUtils.put(LogicalDatastoreType.CONFIGURATION, tenantInstanceIdentifier, tenant); LOG.info("Policy tenant successfully inserted into the config store"); } }
public static InstanceIdentifier<Tenant> createTenantIid(TenantId tenantId) { return InstanceIdentifier.builder(Tenants.class) .child(Tenant.class, new TenantKey(tenantId)) .build(); }
l3Contexts.add(new L3ContextBuilder() .setId(contextId).build()); l2BridgeDomains.add(new L2BridgeDomainBuilder() .setId(bridgeDomainId) .setParent(l3ContextIds.get(0)) .build()); l2FloodDomains.add(new L2FloodDomainBuilder() .setId(this.consumerFloodDomainId) .setParent(bridgeDomainId) .build()); l2FloodDomains.add(new L2FloodDomainBuilder() .setId(this.providerFloodDomainId) .setParent(bridgeDomainId) .build()); return new TenantBuilder() .setId(this.tenantId) .setEndpointGroup(ImmutableList.copyOf(endpointGroups)) .setL3Context(ImmutableList.copyOf(l3Contexts)) .setL2BridgeDomain(ImmutableList.copyOf(l2BridgeDomains)) .setL2FloodDomain(ImmutableList.copyOf(l2FloodDomains)) .setContract(ImmutableList.of(this.getDefaultContract())) .setSubjectFeatureInstances(new SubjectFeatureInstancesBuilder() .setClassifierInstance(ImmutableList.of(new ClassifierInstanceBuilder() .setName(new ClassifierName(CLASSIFIER_NAME)) .setClassifierDefinitionId(Classifier.ETHER_TYPE_CL.getId())
L3Context l3Context = utils.getL3ContextForSubnet(indexedTenant, subnet); if (l3Context != null) { int contextOrdinal = OrdinalFactory.getContextOrdinal(tenant.getId(), l3Context.getId()); MacAddress routerMac = utils.routerPortMac(l3Context, subnet.getVirtualRouterIp(), indexedTenant.getTenant().getId()); if (routerMac != null) { if (subnet.getVirtualRouterIp().getIpv4Address() == null && subnet.getVirtualRouterIp().getIpv6Address() != null) { LOG.warn("IPv6 virtual router {} for subnet {} not supported", subnet.getVirtualRouterIp(), subnet.getId() .getValue()); return; String ipv4Value = subnet.getVirtualRouterIp().getIpv4Address().getValue(); BigInteger intRouterMac = new BigInteger(1, bytesFromHexString(routerMac.getValue())); MatchBuilder matchBuilder = new MatchBuilder() LOG.error("No L3 Context found associated with subnet {}.", subnet.getId());
public static Subnet resolveSubnetForIpv4Address(IndexedTenant t, Ipv4Address ipv4Addr) { Preconditions.checkNotNull(ipv4Addr); if (t == null || t.getTenant() == null || t.getTenant().getForwardingContext() == null) { return null; } List<Subnet> subnets = t.getTenant().getForwardingContext().getSubnet(); if (subnets != null) { for (Subnet subnet : subnets) { if (belongsToSubnet(ipv4Addr, subnet.getIpPrefix().getIpv4Prefix())) { return subnet; } } } return null; }
List<Subnet> subnets = null; if (tenant != null) { contracts = tenant.getPolicy().getContract(); subnets = tenant.getForwardingContext().getSubnet();
@VisibleForTesting void addTenantAndResolvePolicy(Tenant unresolvedTenant) { Tenant t = InheritanceUtils.resolveTenant(unresolvedTenant); IndexedTenant it = new IndexedTenant(t); resolvedTenants.put(unresolvedTenant.getId(), it); policyInfo = resolvePolicy(resolvedTenants); }
Subnet localSubnet, Set<NodeConnectorId> externalPorts, OfWriter ofWriter) { L3Context l3Context = utils.getL3ContextForSubnet(tenant, localSubnet); if (l3Context != null && localSubnet.getVirtualRouterIp() != null) { MacAddress matcherMacAddress = utils.routerPortMac(l3Context, localSubnet.getVirtualRouterIp(), tenant.getTenant().getId()); OfOverlayContext context = gatewayEp.getAugmentation(OfOverlayContext.class); if (EndpointManager.isInternal(gatewayEp, tenant.getExternalImplicitGroups())) {
private ActionInstance getActionInstance(ActionName name) { ReadOnlyTransaction trans = dataProvider.newReadOnlyTransaction(); InstanceIdentifier<ActionInstance> ciId = InstanceIdentifier.builder(Tenants.class) .child(Tenant.class, new TenantKey(gbpTenantId)) .child(Policy.class) .child(SubjectFeatureInstances.class) .child(ActionInstance.class, new ActionInstanceKey(name)) .build(); try { Optional<ActionInstance> data = trans.read(LogicalDatastoreType.CONFIGURATION, ciId).get(); if (data.isPresent()) { return data.get(); } } catch (Exception e) { LOG.error("Couldn't read Action instance from datastore. Exception: ", e); } return null; }
private ClassifierInstance getClassifierInstance(TenantId tenantId, ClassifierName name, DataBroker dataProvider) { ReadOnlyTransaction trans = dataProvider.newReadOnlyTransaction(); InstanceIdentifier<ClassifierInstance> ciId = InstanceIdentifier.builder(Tenants.class) .child(Tenant.class, new TenantKey(tenantId)) .child(Policy.class) .child(SubjectFeatureInstances.class) .child(ClassifierInstance.class, new ClassifierInstanceKey(name)) .build(); try { Optional<ClassifierInstance> data = trans.read(LogicalDatastoreType.CONFIGURATION, ciId).get(); if (data.isPresent()) { return data.get(); } } catch (Exception e) { LOG.error("Couldn't read Action instance from datastore. Exception: ", e); } return null; } }
if (tenant != null && tenant.getForwardingContext() != null && tenant.getForwardingContext().getL2FloodDomain() != null) { List<L2FloodDomain> floodDomains = tenant.getForwardingContext().getL2FloodDomain(); flows.popVlanTagsOnExternalPortFlows(ingressNatId, connectorId, floodDomains, POP_VLAN_TAG_EXTERNAL, ofWriter);
.getPolicy() .getExternalImplicitGroup(); boolean performNat = false; for (EndpointL3 natEp : ctx.getEndpointManager().getL3EndpointsWithNat()) {
@VisibleForTesting void executeEvent(final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> change) { // Remove for (InstanceIdentifier<?> iid : change.getRemovedPaths()) { DataObject old = change.getOriginalData().get(iid); if (old == null) { continue; } if (old instanceof Tenant) { Tenant tenant = (Tenant) old; if (tenant.getId().equals(gbpTenantId)) { LOG.info("Removed gbp Tenant {} -- faas Tenant {}", gbpTenantId.getValue(), faasTenantId.getValue()); this.policyManager.removeTenantLogicalNetwork(gbpTenantId, faasTenantId); } } } } }
public OfContext(DataBroker dataBroker, PolicyManager policyManager, SwitchManager switchManager, EndpointManager endpointManager, ScheduledExecutorService executor) { this.dataBroker = dataBroker; this.policyManager = policyManager; this.switchManager = switchManager; this.epManager = endpointManager; this.executor = executor; if (dataBroker == null) { LOG.error("DataBroker is null. Cannot read resolved tenants and resolved policy from DS."); } else { ReadOnlyTransaction rTx = dataBroker.newReadOnlyTransaction(); Optional<Tenants> potentialTenants = DataStoreHelper.readFromDs(LogicalDatastoreType.OPERATIONAL, TENANTS_IID, rTx); if (potentialTenants.isPresent() && potentialTenants.get().getTenant() != null) { for (Tenant tenant : potentialTenants.get().getTenant()) { resolvedTenants.put(tenant.getId(), new IndexedTenant(tenant)); } // TODO we should read resolved-policy from DS instead of this policyInfo = resolvePolicy(resolvedTenants); } rTx.close(); } }
TenantId tenantId = rg.getContractTenant().getId(); IndexedTenant tenant = ctx.getTenant(tenantId); for (Direction direction : new Direction[] {Direction.In, Direction.Out}) {