<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
- <Export-Package></Export-Package>
+ <Export-Package>org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.*</Export-Package>
<Import-Package>*</Import-Package>
</instructions>
</configuration>
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.Name;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubnetId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.UniqueId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.EndpointService;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterEndpointInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterEndpointInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.unregister.endpoint.input.L2Builder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.unregister.endpoint.input.L3;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.unregister.endpoint.input.L3Builder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.endpoints.by.ports.EndpointByPort;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.endpoints.by.ports.EndpointByPortBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.ports.by.endpoints.PortByEndpoint;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.ports.by.endpoints.PortByEndpointBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContextInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContextInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup;
if (!isFwCtxValid) {
return false;
}
+ EndpointKey epKey = new EndpointKey(fwCtx.getL2BridgeDomain().getId(), new MacAddress(port.getMacAddress()));
+ UniqueId portId = new UniqueId(port.getID());
+ EndpointByPort endpointByPort = createEndpointByPort(epKey, portId);
+ rwTx.put(LogicalDatastoreType.OPERATIONAL, IidFactory.endpointByPortIid(portId), endpointByPort);
+ PortByEndpoint portByEndpoint = createPortByEndpoint(portId, epKey);
+ rwTx.put(LogicalDatastoreType.OPERATIONAL,
+ IidFactory.portByEndpointIid(epKey.getL2Context(), epKey.getMacAddress()), portByEndpoint);
try {
RegisterEndpointInput registerEpRpcInput = createRegisterEndpointInput(port, fwCtx);
+
RpcResult<Void> rpcResult = epService.registerEndpoint(registerEpRpcInput).get();
if (!rpcResult.isSuccessful()) {
LOG.warn("Illegal state - RPC registerEndpoint failed. Input of RPC: {}", registerEpRpcInput);
return true;
}
+ private static EndpointByPort createEndpointByPort(EndpointKey epKey, UniqueId portId) {
+ return new EndpointByPortBuilder().setPortId(portId)
+ .setL2Context(epKey.getL2Context())
+ .setMacAddress(epKey.getMacAddress())
+ .build();
+ }
+
+ private static PortByEndpoint createPortByEndpoint(UniqueId portId, EndpointKey epKey) {
+ return new PortByEndpointBuilder().setPortId(portId)
+ .setL2Context(epKey.getL2Context())
+ .setMacAddress(epKey.getMacAddress())
+ .build();
+ }
+
private List<NeutronSecurityRule> createDhcpSecRules(NeutronPort port, EndpointGroupId consumerEpgId, ReadTransaction rTx) {
TenantId tenantId = new TenantId(Utils.normalizeUuid(port.getTenantID()));
Neutron_IPs firstIp = MappingUtils.getFirstIp(port.getFixedIPs());
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3Key;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.GbpByNeutronMappings;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.NeutronByGbpMappings;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.EndpointsByPorts;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.endpoints.by.ports.EndpointByPort;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.endpoints.by.ports.EndpointByPortKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.PortsByEndpoints;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.ports.by.endpoints.PortByEndpoint;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.ports.by.endpoints.PortByEndpointKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.mapper.rev150223.Mappings;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.mapper.rev150223.mappings.EndpointGroupPairToContractMappings;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.mapper.rev150223.mappings.NetworkMappings;
.child(Subnet.class, new SubnetKey(subnetId))
.build();
}
+
+ public static InstanceIdentifier<EndpointByPort> endpointByPortIid(UniqueId portId) {
+ return InstanceIdentifier.builder(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.Mappings.class)
+ .child(GbpByNeutronMappings.class)
+ .child(EndpointsByPorts.class)
+ .child(EndpointByPort.class, new EndpointByPortKey(portId))
+ .build();
+ }
+
+ public static InstanceIdentifier<PortByEndpoint> portByEndpointIid(L2BridgeDomainId l2BdId, MacAddress mac) {
+ return InstanceIdentifier.builder(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.Mappings.class)
+ .child(NeutronByGbpMappings.class)
+ .child(PortsByEndpoints.class)
+ .child(PortByEndpoint.class, new PortByEndpointKey(l2BdId, mac))
+ .build();
+ }
}
import ietf-inet-types {prefix inet;}
description
- "This module defines the mapping model between Neutron IDs and GBP IDs.";
+ "This module defines the mapping model between Neutron IDs and GBP IDs.
+ These mappings are used just internaly and are NOT EXPORTED.";
revision "2015-02-23" {
description
--- /dev/null
+module neutron-gbp-mapper {
+ yang-version 1;
+
+ namespace "urn:opendaylight:groupbasedpolicy:neutron-gbp-mapper";
+ prefix "neutron-gbp-mapper";
+
+ import gbp-common {prefix gbp-common;}
+ import endpoint {prefix gbp-endpoint;}
+ import ietf-inet-types {prefix inet;}
+
+ description
+ "This module defines the mapping model between Neutron entities and GBP entities.";
+
+ revision "2015-05-13" {
+ description
+ "Initial revision.";
+ }
+
+ grouping neutron-port-key {
+ leaf port-id {
+ description "A unique ID for the neutron port";
+ type gbp-common:unique-id;
+ }
+ }
+
+ container mappings {
+ description "Mapping of neutron entities by groupbasedpolicy entities and vice versa.";
+ config false;
+ container neutron-by-gbp-mappings {
+ description "Neutron entities by groupbasedpolicy entities";
+ container ports-by-endpoints {
+ description "Neutron ports by groupbasedpolicy endpoint";
+ list port-by-endpoint {
+ description "Neutron port key by groupbasedpolicy endpoint key";
+ key "l2-context mac-address";
+ uses gbp-endpoint:l2-key;
+ uses neutron-port-key;
+ }
+ }
+ }
+
+ container gbp-by-neutron-mappings {
+ description "Groupbasedpolicy entities by neutron entities";
+ container endpoints-by-ports {
+ description "Groupbasedpolicy endpoints by neutron ports";
+ list endpoint-by-port {
+ description "Groupbasedpolicy endpoint key by neutron port key";
+ key port-id;
+ uses neutron-port-key;
+ uses gbp-endpoint:l2-key;
+ }
+ }
+ }
+ }
+
+}
\ No newline at end of file