+ private ChildEndpoint createChildEndpoint(AddressEndpointRegBuilder builder) {
+ return new ChildEndpointBuilder().setAddress(builder.getAddress())
+ .setAddressType(builder.getAddressType())
+ .setContextId(builder.getContextId())
+ .setContextType(builder.getContextType())
+ .build();
+ }
+
+ private ParentEndpoint createParentEndpoint(AddressEndpointRegBuilder builder) {
+ return new ParentEndpointBuilder().setAddress(builder.getAddress())
+ .setAddressType(builder.getAddressType())
+ .setContextId(builder.getContextId())
+ .setContextType(builder.getContextType())
+ .build();
+ }
+
+ @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 AddressEndpointRegBuilder createBasicMacAddrEpInputBuilder(Port port,
+ NetworkDomainId networkContainment, @Nullable List<EndpointGroupId> endpointGroupsToAdd) {
+ AddressEndpointRegBuilder addrEpbuilder = new AddressEndpointRegBuilder().setAddressType(MacAddressType.class)
+ .setAddress(port.getMacAddress().getValue())
+ .setAddressType(MacAddressType.class)
+ .setContextType(MappingUtils.L2_BRDIGE_DOMAIN)
+ .setContextId(new ContextId(port.getNetworkId().getValue()))
+ .setTenant(new TenantId(port.getTenantId().getValue()))
+ .setTimestamp(System.currentTimeMillis());
+ List<EndpointGroupId> epgs = concatEndpointGroups(port.getSecurityGroups(), endpointGroupsToAdd);
+ addrEpbuilder.setEndpointGroup(epgs);
+ if (networkContainment != null) {
+ addrEpbuilder.setNetworkContainment(new NetworkContainmentBuilder().setContainment(
+ new NetworkDomainContainmentBuilder().setNetworkDomainId(networkContainment)
+ .setNetworkDomainType(MappingUtils.SUBNET)
+ .build()).build());
+ }
+ return addrEpbuilder;
+ }
+
+ private AddressEndpointRegBuilder createBasicL3AddrEpInputBuilder(Port port, NetworkDomainId networkContainment,
+ @Nullable List<EndpointGroupId> endpointGroupsToAdd, Neutron neutron) {
+ Optional<FixedIps> firstFixedIps = PortUtils.resolveFirstFixedIps(port);
+ if (!firstFixedIps.isPresent()) {
+ throw new IllegalStateException("Failed to resolve FixedIps for port " + port.getKey()
+ + ". Cannot register L3 Address endpoint.");
+ }
+ ContextId resolveL3ContextForPort = resolveL3ContextForPort(port, port.getFixedIps().get(0), neutron);
+
+ AddressEndpointRegBuilder addrEpbuilder = new AddressEndpointRegBuilder().setAddressType(MacAddressType.class)
+ .setAddress(MappingUtils.ipAddressToStringIpPrefix(firstFixedIps.get().getIpAddress()))
+ .setAddressType(IpPrefixType.class)
+ .setContextType(MappingUtils.L3_CONTEXT)
+ .setContextId(resolveL3ContextForPort)
+ .setTenant(new TenantId(port.getTenantId().getValue()))
+ .setTimestamp(System.currentTimeMillis());
+ List<EndpointGroupId> epgs = concatEndpointGroups(port.getSecurityGroups(), endpointGroupsToAdd);
+ addrEpbuilder.setEndpointGroup(epgs);
+ if (networkContainment != null) {
+ addrEpbuilder.setNetworkContainment(new NetworkContainmentBuilder().setContainment(
+ new NetworkDomainContainmentBuilder().setNetworkDomainId(networkContainment)
+ .setNetworkDomainType(MappingUtils.SUBNET)
+ .build()).build());
+ }
+ return addrEpbuilder;
+ }
+
+ private List<EndpointGroupId> concatEndpointGroups(List<Uuid> securityGroups,
+ @Nullable List<EndpointGroupId> endpointGroupsToAdd) {
+ List<EndpointGroupId> epgs = new ArrayList<>();
+ if (securityGroups != null) {
+ for (Uuid sgId : securityGroups) {
+ epgs.add(new EndpointGroupId(sgId.getValue()));
+ }
+ }
+ if (endpointGroupsToAdd != null) {
+ epgs.addAll(endpointGroupsToAdd);
+ }
+ return epgs;
+ }
+
+ @Deprecated
+ private static org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterEndpointInputBuilder createBasicEndpointInputBuilder(
+ Port port) {
+ return new org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterEndpointInputBuilder().setL2Context(
+ new L2BridgeDomainId(port.getNetworkId().getValue()))
+ .setMacAddress(new MacAddress(port.getMacAddress().getValue()))