import javax.annotation.Nullable;
-import com.sun.jndi.cosnaming.IiopUrl;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
}
private void changeL3ContextForEpsInSubnet(Uuid subnetUuid, Neutron neutron) {
+ if (neutron == null) {
+ LOG.debug("No new data are written, there is no L3 context in subnet {} to update", subnetUuid);
+ return;
+ }
Set<Port> portsInSameSubnet = PortUtils.findPortsBySubnet(subnetUuid, neutron.getPorts());
for (Port portInSameSubnet : portsInSameSubnet) {
if (PortUtils.isNormalPort(portInSameSubnet) || PortUtils.isDhcpPort(portInSameSubnet)
}
FixedIps portIpWithSubnet = potentialPortIpWithSubnet.get();
L3ContextId l3Context = new L3ContextId(port.getNetworkId().getValue());
- // change L3Context for all EPs with same subnet as router port
+ // change L3Context for all new EPs with same subnet as router port
changeL3ContextForEpsInSubnet(portIpWithSubnet.getSubnetId(), newNeutron);
// set L3Context as parent for bridge domain which is parent of subnet
TenantId tenantId = new TenantId(port.getTenantId().getValue());
import org.opendaylight.groupbasedpolicy.renderer.vpp.api.BridgeDomainManager;
import org.opendaylight.groupbasedpolicy.renderer.vpp.iface.InterfaceManager;
import org.opendaylight.groupbasedpolicy.renderer.vpp.util.KeyFactory;
-import org.opendaylight.groupbasedpolicy.renderer.vpp.util.VppRendererProcessingException;
import org.opendaylight.groupbasedpolicy.util.DataStoreHelper;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.common.endpoint.fields.NetworkContainment;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.common.endpoint.fields.network.containment.Containment;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.absolute.location.LocationType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.absolute.location.location.type.ExternalLocationCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContextId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.NetworkDomainId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L2FloodDomain;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.NetworkDomain;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.fields.Parent;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.RendererEndpointKey;
}
}
if (containment instanceof NetworkDomainContainment) {
- NetworkDomainContainment netDomainCont = (NetworkDomainContainment) containment;
- RendererNetworkDomain rendererNetworkDomain =
- policyCtx.getNetworkDomainTable().get(ep.getTenant(), new RendererNetworkDomainKey(
- netDomainCont.getNetworkDomainId(), netDomainCont.getNetworkDomainType()));
+ final NetworkDomainContainment netDomainCont = (NetworkDomainContainment) containment;
+ final TenantId tenantId = ep.getTenant();
+ final NetworkDomainId domainId = netDomainCont.getNetworkDomainId();
+ final Class<? extends NetworkDomain> domainKey = netDomainCont.getNetworkDomainType();
+ final RendererNetworkDomainKey rendererNetworkDomainKey = new RendererNetworkDomainKey(domainId, domainKey);
+ final RendererNetworkDomain rendererNetworkDomain =
+ policyCtx.getNetworkDomainTable().get(tenantId, rendererNetworkDomainKey);
+ if (rendererNetworkDomain == null) {
+ LOG.debug("Network domain not found. Containment: {}", containment);
+ return java.util.Optional.empty();
+ }
java.util.Optional<String> optL2Fd = getForwardingCtxForParent(ep.getTenant(),
rendererNetworkDomain.getParent(), policyCtx.getForwardingCtxTable())
.filter(fwdCtx -> L2FloodDomain.class.equals(fwdCtx.getContextType()))