Moved l2-l3 forwarding to domain-extensions 13/39413/8
authorMartin Sunal <msunal@cisco.com>
Wed, 25 May 2016 13:45:44 +0000 (15:45 +0200)
committerMartin Sunal <msunal@cisco.com>
Sat, 28 May 2016 10:49:28 +0000 (10:49 +0000)
domain-extensions is location for all domain specific
extensions of forwarding and endpoints.
Purpose of puting a domain specific extension
to domain-extensions is that multiple renderers
can depends on it.

The first domain specific extension is l2-l3 (layer 2 and layer 3).
The l2-l3 extension extends forwarding with
L2 and L3 specific contexts and network domains.
It is expected to have L2, L3 augmentations of an endpoint here.

Change-Id: I85e8bc1040acc7ce95a3b5bb9f65ad0e183e12fb
Signed-off-by: Martin Sunal <msunal@cisco.com>
30 files changed:
artifacts/pom.xml
domain-extensions/l2-l3/pom.xml [new file with mode: 0644]
domain-extensions/l2-l3/src/main/config/default-config.xml [new file with mode: 0644]
domain-extensions/l2-l3/src/main/java/org/opendaylight/controller/config/yang/config/domain_extension/l2_l3/impl/L2L3DomainExtensionModule.java [new file with mode: 0644]
domain-extensions/l2-l3/src/main/java/org/opendaylight/controller/config/yang/config/domain_extension/l2_l3/impl/L2L3DomainExtensionModuleFactory.java [new file with mode: 0644]
domain-extensions/l2-l3/src/main/java/org/opendaylight/groupbasedpolicy/domain_extension/l2_l3/L2L3NetworkDomainAugmentor.java [new file with mode: 0644]
domain-extensions/l2-l3/src/main/java/org/opendaylight/groupbasedpolicy/domain_extension/l2_l3/util/L2L3IidFactory.java [new file with mode: 0644]
domain-extensions/l2-l3/src/main/yang/l2-l3-domain-extension-cfg.yang [new file with mode: 0644]
domain-extensions/l2-l3/src/main/yang/l2-l3-forwarding.yang [moved from groupbasedpolicy/src/main/yang/model/l2-l3-forwarding.yang with 100% similarity]
domain-extensions/l2-l3/src/test/java/org/opendaylight/groupbasedpolicy/domain_extension/l2_l3/L2L3NetworkDomainAugmentorTest.java [new file with mode: 0644]
domain-extensions/l2-l3/src/test/java/org/opendaylight/groupbasedpolicy/domain_extension/l2_l3/util/L2L3IidFactoryTest.java [new file with mode: 0644]
domain-extensions/pom.xml [new file with mode: 0644]
features/pom.xml
features/src/main/features/features.xml
groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/EndpointAugmentor.java
groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/NetworkDomainAugmentor.java
groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/IidFactory.java
groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/base_endpoint/BaseEndpointServiceImplTest.java
groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/location/resolver/LocationResolverTest.java
groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/renderer/RendererManagerDataBrokerTest.java
groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/renderer/TestDataFactory.java
groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/util/IidFactoryTest.java
location-providers/ne-location-provider/pom.xml
neutron-mapper/pom.xml
neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronNetworkAware.java
neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronPortAware.java
neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronRouterAware.java
neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronSubnetAware.java
pom.xml
sxp-mapper/pom.xml

index c8d26b90bcb2eead9c5918921da08a507c87a542..e6d732605682328b74caf012dd78a94f58a3e422 100755 (executable)
         <artifactId>groupbasedpolicy</artifactId>
         <version>${project.version}</version>
       </dependency>
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>l2-l3-domain-extension</artifactId>
+        <version>${project.version}</version>
+      </dependency>
       <dependency>
         <groupId>${project.groupId}</groupId>
         <artifactId>ofoverlay-renderer</artifactId>
         <type>xml</type>
         <classifier>config</classifier>
       </dependency>
+      <dependency>
+        <groupId>org.opendaylight.groupbasedpolicy</groupId>
+        <artifactId>l2-l3-domain-extension</artifactId>
+        <version>${project.version}</version>
+        <type>xml</type>
+        <classifier>config</classifier>
+      </dependency>
       <dependency>
         <groupId>${project.groupId}</groupId>
         <artifactId>ofoverlay-renderer</artifactId>
diff --git a/domain-extensions/l2-l3/pom.xml b/domain-extensions/l2-l3/pom.xml
new file mode 100644 (file)
index 0000000..61da72d
--- /dev/null
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+  This program and the accompanying materials are made available under the
+  terms of the Eclipse Public License v1.0 which accompanies this distribution,
+  and is available at http://www.eclipse.org/legal/epl-v10.html -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.opendaylight.groupbasedpolicy</groupId>
+    <artifactId>groupbasedpolicy-domain-extensions</artifactId>
+    <version>0.4.0-SNAPSHOT</version>
+    <relativePath>../</relativePath>
+  </parent>
+
+  <artifactId>l2-l3-domain-extension</artifactId>
+  <packaging>bundle</packaging>
+
+  <dependencies>
+    <!-- testing dependencies -->
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-all</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.controller</groupId>
+      <artifactId>sal-binding-broker-impl</artifactId>
+      <type>test-jar</type>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.groupbasedpolicy</groupId>
+      <artifactId>groupbasedpolicy</artifactId>
+      <version>${project.version}</version>
+      <type>test-jar</type>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.powermock</groupId>
+      <artifactId>powermock-module-junit4</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.powermock</groupId>
+      <artifactId>powermock-api-mockito</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <!-- project build -->
+  <build>
+    <!-- We use the maven-resources-plugin to copy a class from the groupbasepolicy
+      bundle that we need in order to run some unit tests in the renderer (classes
+      in the test directory aren't packaged in bundles, and instead of keeping
+      separate copies, we just copy the file(s) needed in order to run the test). -->
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <extensions>true</extensions>
+        <configuration>
+          <instructions>
+            <Export-Package>
+              org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.*,
+              org.opendaylight.groupbasedpolicy.domain_extension.l2_l3.util
+            </Export-Package>
+          </instructions>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/domain-extensions/l2-l3/src/main/config/default-config.xml b/domain-extensions/l2-l3/src/main/config/default-config.xml
new file mode 100644 (file)
index 0000000..ffeaa62
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<!--
+ Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
+
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+<snapshot>
+    <configuration>
+        <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+            <modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
+                <module>
+                    <type xmlns:l2l3="urn:opendaylight:params:xml:ns:yang:controller:config:domain_extension:l2_l3:impl">
+                        l2l3:l2-l3-domain-extension-impl
+                    </type>
+                    <name>l2-l3-domain-extension-impl</name>
+
+                    <domain-specific-registry>
+                        <type xmlns:gbp="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">gbp:domain-specific-registry</type>
+                        <name>domain-specific-registry</name>
+                    </domain-specific-registry>
+                </module>
+            </modules>
+        </data>
+
+    </configuration>
+
+    <required-capabilities>
+        <capability>urn:opendaylight:params:xml:ns:yang:controller:config:domain_extension:l2_l3:impl?module=l2-l3-domain-extension-cfg&amp;revision=2016-05-25</capability>
+    </required-capabilities>
+
+</snapshot>
diff --git a/domain-extensions/l2-l3/src/main/java/org/opendaylight/controller/config/yang/config/domain_extension/l2_l3/impl/L2L3DomainExtensionModule.java b/domain-extensions/l2-l3/src/main/java/org/opendaylight/controller/config/yang/config/domain_extension/l2_l3/impl/L2L3DomainExtensionModule.java
new file mode 100644 (file)
index 0000000..80534ec
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.controller.config.yang.config.domain_extension.l2_l3.impl;
+
+import org.opendaylight.groupbasedpolicy.api.DomainSpecificRegistry;
+import org.opendaylight.groupbasedpolicy.domain_extension.l2_l3.L2L3NetworkDomainAugmentor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Preconditions;
+
+public class L2L3DomainExtensionModule extends org.opendaylight.controller.config.yang.config.domain_extension.l2_l3.impl.AbstractL2L3DomainExtensionModule {
+
+    private static final Logger LOG = LoggerFactory.getLogger(L2L3DomainExtensionModule.class);
+
+    public L2L3DomainExtensionModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+        super(identifier, dependencyResolver);
+    }
+
+    public L2L3DomainExtensionModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.domain_extension.l2_l3.impl.L2L3DomainExtensionModule oldModule, java.lang.AutoCloseable oldInstance) {
+        super(identifier, dependencyResolver, oldModule, oldInstance);
+    }
+
+    @Override
+    public void customValidation() {
+        // add custom validation form module attributes here.
+    }
+
+    @Override
+    public java.lang.AutoCloseable createInstance() {
+        DomainSpecificRegistry domainSpecificRegistry = getDomainSpecificRegistryDependency();
+        Preconditions.checkNotNull(domainSpecificRegistry);
+        L2L3NetworkDomainAugmentor l2l3NetworkDomainAugmentor =
+                new L2L3NetworkDomainAugmentor(domainSpecificRegistry.getNetworkDomainAugmentorRegistry());
+        LOG.info("{} successfully started.", L2L3DomainExtensionModule.class.getCanonicalName());
+        return l2l3NetworkDomainAugmentor;
+    }
+
+}
diff --git a/domain-extensions/l2-l3/src/main/java/org/opendaylight/controller/config/yang/config/domain_extension/l2_l3/impl/L2L3DomainExtensionModuleFactory.java b/domain-extensions/l2-l3/src/main/java/org/opendaylight/controller/config/yang/config/domain_extension/l2_l3/impl/L2L3DomainExtensionModuleFactory.java
new file mode 100644 (file)
index 0000000..61bfa02
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.controller.config.yang.config.domain_extension.l2_l3.impl;
+public class L2L3DomainExtensionModuleFactory extends org.opendaylight.controller.config.yang.config.domain_extension.l2_l3.impl.AbstractL2L3DomainExtensionModuleFactory {
+
+}
diff --git a/domain-extensions/l2-l3/src/main/java/org/opendaylight/groupbasedpolicy/domain_extension/l2_l3/L2L3NetworkDomainAugmentor.java b/domain-extensions/l2-l3/src/main/java/org/opendaylight/groupbasedpolicy/domain_extension/l2_l3/L2L3NetworkDomainAugmentor.java
new file mode 100644 (file)
index 0000000..9b8fe27
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.domain_extension.l2_l3;
+
+import java.util.AbstractMap.SimpleImmutableEntry;
+import java.util.Map.Entry;
+
+import org.opendaylight.groupbasedpolicy.api.NetworkDomainAugmentor;
+import org.opendaylight.groupbasedpolicy.api.NetworkDomainAugmentorRegistry;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.SubnetAugmentForwarding;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.SubnetAugmentRenderer;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.SubnetAugmentRendererBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.NetworkDomain;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.forwarding.renderer.forwarding.by.tenant.RendererNetworkDomain;
+import org.opendaylight.yangtools.yang.binding.Augmentation;
+
+import com.google.common.base.Preconditions;
+
+public class L2L3NetworkDomainAugmentor implements NetworkDomainAugmentor, AutoCloseable {
+
+    private final NetworkDomainAugmentorRegistry networkDomainAugmentorRegistry;
+
+    public L2L3NetworkDomainAugmentor(NetworkDomainAugmentorRegistry networkDomainAugmentorRegistry) {
+        this.networkDomainAugmentorRegistry = Preconditions.checkNotNull(networkDomainAugmentorRegistry);
+        this.networkDomainAugmentorRegistry.register(this);
+    }
+
+    @Override
+    public Entry<Class<? extends Augmentation<RendererNetworkDomain>>, Augmentation<RendererNetworkDomain>> buildRendererNetworkDomainAugmentation(
+            NetworkDomain input) {
+        SubnetAugmentForwarding subnetForwarding = input.getAugmentation(SubnetAugmentForwarding.class);
+        if (subnetForwarding == null) {
+            return null;
+        }
+        return new SimpleImmutableEntry<>(SubnetAugmentRenderer.class,
+                new SubnetAugmentRendererBuilder(subnetForwarding).build());
+    }
+
+    @Override
+    public void close() throws Exception {
+        networkDomainAugmentorRegistry.unregister(this);
+    }
+
+}
diff --git a/domain-extensions/l2-l3/src/main/java/org/opendaylight/groupbasedpolicy/domain_extension/l2_l3/util/L2L3IidFactory.java b/domain-extensions/l2-l3/src/main/java/org/opendaylight/groupbasedpolicy/domain_extension/l2_l3/util/L2L3IidFactory.java
new file mode 100644 (file)
index 0000000..99f7a59
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.domain_extension.l2_l3.util;
+
+import org.opendaylight.groupbasedpolicy.util.IidFactory;
+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.L2BridgeDomain;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L2FloodDomain;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.Subnet;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.ForwardingContext;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.ForwardingContextKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.NetworkDomain;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.NetworkDomainKey;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+public class L2L3IidFactory {
+
+    public static InstanceIdentifier<NetworkDomain> subnetIid(TenantId tenantId, NetworkDomainId id) {
+        NetworkDomainKey domainKey = new NetworkDomainKey(id, Subnet.class);
+        return IidFactory.forwardingByTenantIid(tenantId).child(NetworkDomain.class, domainKey);
+    }
+
+    public static InstanceIdentifier<ForwardingContext> l2FloodDomainIid(TenantId tenantId, ContextId id) {
+        ForwardingContextKey domainKey = new ForwardingContextKey(id, L2FloodDomain.class);
+        return IidFactory.forwardingByTenantIid(tenantId).child(ForwardingContext.class, domainKey);
+    }
+
+    public static InstanceIdentifier<ForwardingContext> l2BridgeDomainIid(TenantId tenantId, ContextId id) {
+        ForwardingContextKey domainKey = new ForwardingContextKey(id, L2BridgeDomain.class);
+        return IidFactory.forwardingByTenantIid(tenantId).child(ForwardingContext.class, domainKey);
+    }
+
+    public static InstanceIdentifier<ForwardingContext> l3ContextIid(TenantId tenantId, ContextId id) {
+        ForwardingContextKey domainKey = new ForwardingContextKey(id, L3Context.class);
+        return IidFactory.forwardingByTenantIid(tenantId).child(ForwardingContext.class, domainKey);
+    }
+
+}
diff --git a/domain-extensions/l2-l3/src/main/yang/l2-l3-domain-extension-cfg.yang b/domain-extensions/l2-l3/src/main/yang/l2-l3-domain-extension-cfg.yang
new file mode 100644 (file)
index 0000000..548197b
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+module l2-l3-domain-extension-cfg {
+    yang-version 1;
+    namespace "urn:opendaylight:params:xml:ns:yang:controller:config:domain_extension:l2_l3:impl";
+    prefix "gbpcfg";
+
+    import config { prefix config; revision-date 2013-04-05; }
+    import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28; }
+    import groupbasedpolicy-cfg { prefix gbpcfg; revision-date 2015-11-06; }
+
+    description
+        "This module contains the base YANG definitions for
+          l2-l3 domain exstension implementation.";
+
+    revision "2016-05-25" {
+        description
+            "Initial revision.";
+    }
+
+    identity l2-l3-domain-extension-impl {
+        base "config:module-type";
+
+        config:java-name-prefix L2L3DomainExtension;
+    }
+
+    // Augments the 'configuration' choice node under modules/module.
+    augment "/config:modules/config:module/config:configuration" {
+        case l2-l3-domain-extension-impl {
+            when "/config:modules/config:module/config:type = 'l2-l3-domain-extension-impl'";
+
+            // DomainSpecificRegistry service
+            container domain-specific-registry {
+                uses config:service-ref {
+                    refine type {
+                        config:required-identity gbpcfg:domain-specific-registry;
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/domain-extensions/l2-l3/src/test/java/org/opendaylight/groupbasedpolicy/domain_extension/l2_l3/L2L3NetworkDomainAugmentorTest.java b/domain-extensions/l2-l3/src/test/java/org/opendaylight/groupbasedpolicy/domain_extension/l2_l3/L2L3NetworkDomainAugmentorTest.java
new file mode 100644 (file)
index 0000000..ba08683
--- /dev/null
@@ -0,0 +1,115 @@
+package org.opendaylight.groupbasedpolicy.domain_extension.l2_l3;
+
+import java.util.Arrays;
+import java.util.Map.Entry;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.opendaylight.groupbasedpolicy.api.NetworkDomainAugmentorRegistry;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.NetworkDomainId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.SubnetAugmentForwarding;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.SubnetAugmentForwardingBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.SubnetAugmentRenderer;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.has.subnet.SubnetBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.has.subnet.subnet.Gateways;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.has.subnet.subnet.GatewaysBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.has.subnet.subnet.gateways.PrefixesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.NetworkDomain;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.NetworkDomainBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.forwarding.renderer.forwarding.by.tenant.RendererNetworkDomain;
+import org.opendaylight.yangtools.yang.binding.Augmentation;
+
+@RunWith(MockitoJUnitRunner.class)
+public class L2L3NetworkDomainAugmentorTest {
+
+    private static final IpPrefix IP_PREFIX = new IpPrefix(new Ipv4Prefix("1.1.1.1/24"));
+    private static final IpPrefix IP_PREFIX_2 = new IpPrefix(new Ipv4Prefix("2.2.2.2/24"));
+    private static final IpAddress IP_ADDRESS = new IpAddress(new Ipv4Address("1.1.1.1"));
+    private static final IpAddress IP_ADDRESS_2 = new IpAddress(new Ipv4Address("2.2.2.2"));
+    private static final NetworkDomainId NET_DOMAIN = new NetworkDomainId("netDomain1");
+
+    @Rule
+    public ExpectedException exception = ExpectedException.none();
+    @Mock
+    private NetworkDomainAugmentorRegistry networkDomainAugmentorRegistry;
+
+    private L2L3NetworkDomainAugmentor l2l3Augmentor;
+
+    @Before
+    public void init() {
+        l2l3Augmentor = new L2L3NetworkDomainAugmentor(networkDomainAugmentorRegistry);
+    }
+
+    @Test
+    public void testConstructor() {
+        L2L3NetworkDomainAugmentor l2l3NetworkDomainAugmentor =
+                new L2L3NetworkDomainAugmentor(networkDomainAugmentorRegistry);
+        Mockito.verify(networkDomainAugmentorRegistry).register(Mockito.eq(l2l3NetworkDomainAugmentor));
+    }
+
+    @Test
+    public void testConstructor_npe_exception() {
+        exception.expect(NullPointerException.class);
+        new L2L3NetworkDomainAugmentor(null);
+    }
+
+    @Test
+    public void testClose() throws Exception {
+        l2l3Augmentor.close();
+        Mockito.verify(networkDomainAugmentorRegistry).register(Mockito.eq(l2l3Augmentor));
+    }
+
+    @Test
+    public void testBuildRendererNetworkDomainAugmentation() {
+        Gateways gateways = new GatewaysBuilder().setGateway(IP_ADDRESS)
+            .setPrefixes(Arrays.asList(new PrefixesBuilder().setPrefix(IP_PREFIX_2).build()))
+            .build();
+        SubnetAugmentForwarding subnetAugmentForwarding =
+                new SubnetAugmentForwardingBuilder().setSubnet(new SubnetBuilder().setIpPrefix(IP_PREFIX)
+                    .setGateways(Arrays.asList(gateways))
+                    .setVirtualRouterIp(IP_ADDRESS_2)
+                    .build()).build();
+        NetworkDomain networkDomain = new NetworkDomainBuilder()
+            .setNetworkDomainType(
+                    org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.NetworkDomain.class)
+            .setNetworkDomainId(NET_DOMAIN)
+            .addAugmentation(SubnetAugmentForwarding.class, subnetAugmentForwarding)
+            .build();
+
+        Entry<Class<? extends Augmentation<RendererNetworkDomain>>, Augmentation<RendererNetworkDomain>> rendererNetworkDomainAugmentation =
+                l2l3Augmentor.buildRendererNetworkDomainAugmentation(networkDomain);
+
+        Assert.assertNotNull(rendererNetworkDomainAugmentation);
+        Assert.assertEquals(SubnetAugmentRenderer.class, rendererNetworkDomainAugmentation.getKey());
+        Augmentation<RendererNetworkDomain> rendererNetDomainAug = rendererNetworkDomainAugmentation.getValue();
+        Assert.assertTrue(rendererNetDomainAug instanceof SubnetAugmentRenderer);
+        SubnetAugmentRenderer subnetAugmentRenderer = (SubnetAugmentRenderer) rendererNetDomainAug;
+        Assert.assertEquals(subnetAugmentForwarding.getSubnet(), subnetAugmentRenderer.getSubnet());
+    }
+
+    @Test
+    public void testBuildRendererNetworkDomainAugmentation_nullAugmentation() {
+        NetworkDomain networkDomain = new NetworkDomainBuilder()
+            .setNetworkDomainType(
+                    org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.NetworkDomain.class)
+            .setNetworkDomainId(NET_DOMAIN)
+            .build();
+
+        Entry<Class<? extends Augmentation<RendererNetworkDomain>>, Augmentation<RendererNetworkDomain>> rendererNetworkDomainAugmentation =
+                l2l3Augmentor.buildRendererNetworkDomainAugmentation(networkDomain);
+
+        Assert.assertNull(rendererNetworkDomainAugmentation);
+    }
+
+}
diff --git a/domain-extensions/l2-l3/src/test/java/org/opendaylight/groupbasedpolicy/domain_extension/l2_l3/util/L2L3IidFactoryTest.java b/domain-extensions/l2-l3/src/test/java/org/opendaylight/groupbasedpolicy/domain_extension/l2_l3/util/L2L3IidFactoryTest.java
new file mode 100644 (file)
index 0000000..4edb0f8
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.domain_extension.l2_l3.util;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContextId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.ForwardingByTenant;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.ForwardingContext;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.NetworkDomain;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+public class L2L3IidFactoryTest {
+
+    private static final TenantId TENANT_ID = new TenantId("t1");
+    private static final ContextId CONTEXT_ID = new ContextId("ctx1");
+
+    @Test
+    public void testL2FloodDomainIid() {
+        InstanceIdentifier<ForwardingContext> identifier = L2L3IidFactory.l2FloodDomainIid(TENANT_ID, CONTEXT_ID);
+        Assert.assertEquals(CONTEXT_ID, InstanceIdentifier.keyOf(identifier).getContextId());
+        Assert.assertEquals(TENANT_ID, identifier.firstKeyOf(ForwardingByTenant.class).getTenantId());
+    }
+
+    @Test
+    public void testL2BridgeDomainIid() {
+        InstanceIdentifier<ForwardingContext> identifier = L2L3IidFactory.l2BridgeDomainIid(TENANT_ID, CONTEXT_ID);
+        Assert.assertEquals(CONTEXT_ID, InstanceIdentifier.keyOf(identifier).getContextId());
+        Assert.assertEquals(TENANT_ID, identifier.firstKeyOf(ForwardingByTenant.class).getTenantId());
+    }
+
+    @Test
+    public void testL3ContextIid() {
+        InstanceIdentifier<ForwardingContext> identifier = L2L3IidFactory.l3ContextIid(TENANT_ID, CONTEXT_ID);
+        Assert.assertEquals(CONTEXT_ID, InstanceIdentifier.keyOf(identifier).getContextId());
+        Assert.assertEquals(TENANT_ID, identifier.firstKeyOf(ForwardingByTenant.class).getTenantId());
+    }
+
+    @Test
+    public void testSubnetIid() {
+        InstanceIdentifier<NetworkDomain> identifier = L2L3IidFactory.subnetIid(TENANT_ID, CONTEXT_ID);
+        Assert.assertEquals(TENANT_ID, identifier.firstKeyOf(ForwardingByTenant.class).getTenantId());
+        Assert.assertEquals(CONTEXT_ID, identifier.firstKeyOf(NetworkDomain.class).getNetworkDomainId());
+    }
+}
diff --git a/domain-extensions/pom.xml b/domain-extensions/pom.xml
new file mode 100644 (file)
index 0000000..24650ba
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. 
+  This program and the accompanying materials are made available under the 
+  terms of the Eclipse Public License v1.0 which accompanies this distribution, 
+  and is available at http://www.eclipse.org/legal/epl-v10.html -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+    <groupId>org.opendaylight.controller</groupId>
+    <artifactId>config-parent</artifactId>
+    <version>0.5.0-SNAPSHOT</version>
+    <relativePath/>
+  </parent>
+
+  <groupId>org.opendaylight.groupbasedpolicy</groupId>
+  <artifactId>groupbasedpolicy-domain-extensions</artifactId>
+  <version>0.4.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
+
+  <modules>
+    <module>l2-l3</module>
+  </modules>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.opendaylight.groupbasedpolicy</groupId>
+      <artifactId>groupbasedpolicy</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+  </dependencies>
+</project>
index 72cc9ac6362faa2b299602a608c835c152eaafb7..69aefacff315b54213ffa71086105c57ba0678b6 100755 (executable)
       <groupId>org.opendaylight.groupbasedpolicy</groupId>
       <artifactId>groupbasedpolicy</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.opendaylight.groupbasedpolicy</groupId>
+      <artifactId>l2-l3-domain-extension</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.opendaylight.groupbasedpolicy</groupId>
       <artifactId>ofoverlay-renderer</artifactId>
       <type>xml</type>
       <classifier>config</classifier>
     </dependency>
+    <dependency>
+      <groupId>org.opendaylight.groupbasedpolicy</groupId>
+      <artifactId>l2-l3-domain-extension</artifactId>
+      <type>xml</type>
+      <classifier>config</classifier>
+    </dependency>
     <dependency>
       <groupId>org.opendaylight.groupbasedpolicy</groupId>
       <artifactId>ofoverlay-renderer</artifactId>
index 379b1c9198662cc9848b133645006bd2aa28256d..591ed7fc0df403096139c1955058755327f8a166 100755 (executable)
     <feature name='odl-groupbasedpolicy-neutronmapper' version='${project.version}' description='OpenDaylight :: groupbasedpolicy :: Neutron Mapper mapps neutron APIs to GBP APIs '>
         <feature version="${neutron.version}">odl-neutron-service</feature>
         <feature version="${project.version}">odl-groupbasedpolicy-base</feature>
+        <bundle>mvn:org.opendaylight.groupbasedpolicy/l2-l3-domain-extension/{{VERSION}}</bundle>
         <bundle>mvn:org.opendaylight.neutron/dummyprovider/{{VERSION}}</bundle>
         <bundle>mvn:org.opendaylight.groupbasedpolicy/neutron-mapper/{{VERSION}}</bundle>
+        <configfile finalname="${config.configfile.directory}/15-l2-l3-domain-extension.xml">mvn:org.opendaylight.groupbasedpolicy/l2-l3-domain-extension/{{VERSION}}/xml/config</configfile>
         <configfile finalname="${config.configfile.directory}/15-neutron-mapper.xml">mvn:org.opendaylight.groupbasedpolicy/neutron-mapper/{{VERSION}}/xml/config</configfile>
     </feature>
 
     -->
     <feature name='odl-groupbasedpolicy-vpp' version='${project.version}' description='OpenDaylight :: groupbasedpolicy :: VPP renderer '>
         <feature version="${project.version}">odl-groupbasedpolicy-base</feature>
+        <bundle>mvn:org.opendaylight.groupbasedpolicy/l2-l3-domain-extension/{{VERSION}}</bundle>
         <bundle>mvn:org.opendaylight.groupbasedpolicy/vpp-renderer/{{VERSION}}</bundle>
+        <configfile finalname="${config.configfile.directory}/15-l2-l3-domain-extension.xml">mvn:org.opendaylight.groupbasedpolicy/l2-l3-domain-extension/{{VERSION}}/xml/config</configfile>
         <configfile finalname="${config.configfile.directory}/15-vpp-renderer.xml">mvn:org.opendaylight.groupbasedpolicy/vpp-renderer/{{VERSION}}/xml/config</configfile>
     </feature>
 
     <feature name='odl-groupbasedpolicy-sxp-mapper' version='${project.version}' description='OpenDaylight :: groupbasedpolicy :: sxp-mapper'>
         <feature version="${project.version}">odl-groupbasedpolicy-base</feature>
         <feature version="${sxp.version}">odl-sxp-core</feature>
+        <bundle>mvn:org.opendaylight.groupbasedpolicy/l2-l3-domain-extension/{{VERSION}}</bundle>
         <bundle>mvn:commons-net/commons-net/{{VERSION}}</bundle>
         <bundle>mvn:org.opendaylight.groupbasedpolicy/sxp-mapper/{{VERSION}}</bundle>
+        <configfile finalname="${config.configfile.directory}/15-l2-l3-domain-extension.xml">mvn:org.opendaylight.groupbasedpolicy/l2-l3-domain-extension/{{VERSION}}/xml/config</configfile>
         <configfile finalname="${config.configfile.directory}/15-groupbasedpolicy-sxp-mapper.xml">mvn:org.opendaylight.groupbasedpolicy/sxp-mapper/{{VERSION}}/xml/config</configfile>
     </feature>
 
     -->
     <feature name='odl-groupbasedpolicy-ne-location-provider' version='${project.version}' description='OpenDaylight :: groupbasedpolicy :: NE location provider'>
         <feature version="${project.version}">odl-groupbasedpolicy-base</feature>
+        <bundle>mvn:org.opendaylight.groupbasedpolicy/l2-l3-domain-extension/{{VERSION}}</bundle>
         <bundle>mvn:org.opendaylight.groupbasedpolicy/ne-location-provider/{{VERSION}}</bundle>
+        <configfile finalname="${config.configfile.directory}/15-l2-l3-domain-extension.xml">mvn:org.opendaylight.groupbasedpolicy/l2-l3-domain-extension/{{VERSION}}/xml/config</configfile>
         <configfile finalname="${config.configfile.directory}/15-ne-location-provider.xml">mvn:org.opendaylight.groupbasedpolicy/ne-location-provider/{{VERSION}}/xml/config</configfile>
     </feature>
 
     <!--
        IOS-XE renderer
-   -->
+    -->
     <feature name='odl-groupbasedpolicy-ios-xe' version='${project.version}' description='OpenDaylight :: groupbasedpolicy :: ios-xe renderer'>
         <feature version="${project.version}">odl-groupbasedpolicy-base</feature>
         <feature version="${sfc.version}">odl-sfc-provider</feature>
         <feature version="${sxp.version}">odl-sxp-core</feature>
         <feature version="${netconf.version}">odl-netconf-topology</feature>
+        <bundle>mvn:org.opendaylight.groupbasedpolicy/l2-l3-domain-extension/{{VERSION}}</bundle>
         <bundle>mvn:org.opendaylight.groupbasedpolicy/sxp-mapper/{{VERSION}}</bundle>
         <bundle>mvn:org.opendaylight.groupbasedpolicy/ios-xe-renderer/{{VERSION}}</bundle>
+        <configfile finalname="${config.configfile.directory}/15-l2-l3-domain-extension.xml">mvn:org.opendaylight.groupbasedpolicy/l2-l3-domain-extension/{{VERSION}}/xml/config</configfile>
         <configfile finalname="${config.configfile.directory}/15-groupbasedpolicy-ios-xe-renderer.xml">mvn:org.opendaylight.groupbasedpolicy/ios-xe-renderer/{{VERSION}}/xml/config</configfile>
     </feature>
 </features>
index 3a901cc82e9b8f0e371a5572b8477e8978880162..cc8167fba533c5a02bfe803811c3f7ecbd5793a4 100644 (file)
@@ -17,6 +17,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.ContainmentEndpointWithLocation;
 import org.opendaylight.yangtools.yang.binding.Augmentation;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import java.util.Map;
 
@@ -35,7 +36,7 @@ public interface EndpointAugmentor {
      */
     @Nullable
     Map.Entry<Class<? extends Augmentation<AddressEndpoint>>, Augmentation<AddressEndpoint>> buildAddressEndpointAugmentation(
-            AddressEndpointReg input);
+            @Nonnull AddressEndpointReg input);
 
     /**
      * Creates pair of {@link ContainmentEndpoint} augmentation. Augmentation is domain specific.
@@ -48,7 +49,7 @@ public interface EndpointAugmentor {
      */
     @Nullable
     Map.Entry<Class<? extends Augmentation<ContainmentEndpoint>>, Augmentation<ContainmentEndpoint>> buildContainmentEndpointAugmentation(
-            ContainmentEndpointReg input);
+            @Nonnull ContainmentEndpointReg input);
 
     /**
      * Creates pair of {@link AddressEndpointWithLocation} augmentation. Augmentation is domain
@@ -60,7 +61,7 @@ public interface EndpointAugmentor {
      */
     @Nullable
     Map.Entry<Class<? extends Augmentation<AddressEndpointWithLocation>>, Augmentation<AddressEndpointWithLocation>> buildAddressEndpointWithLocationAugmentation(
-            AddressEndpoint input);
+            @Nonnull AddressEndpoint input);
 
     /**
      * Creates pair of {@link ContainmentEndpointWithLocation} augmentation. Augmentation is domain
@@ -72,5 +73,5 @@ public interface EndpointAugmentor {
      */
     @Nullable
     Map.Entry<Class<? extends Augmentation<ContainmentEndpointWithLocation>>, Augmentation<ContainmentEndpointWithLocation>> buildContainmentEndpointWithLocationAugmentation(
-            ContainmentEndpoint input);
+            @Nonnull ContainmentEndpoint input);
 }
index 0c7931616596e06fa9e0a9230af1aaf21cbcd147..86febdad1c0782b0cee8d7a71a105647fd362c27 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.groupbasedpolicy.api;
 
 import java.util.Map;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.NetworkDomain;
@@ -31,6 +32,6 @@ public interface NetworkDomainAugmentor {
      */
     @Nullable
     Map.Entry<Class<? extends Augmentation<RendererNetworkDomain>>, Augmentation<RendererNetworkDomain>> buildRendererNetworkDomainAugmentation(
-            NetworkDomain input);
+            @Nonnull NetworkDomain input);
 
 }
index 9faabd823a0f2539e103561468ee57c9b0985686..f04cf411878b634ad68ad2be511f28ed1b5bcba1 100644 (file)
@@ -39,7 +39,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2BridgeDomainId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2FloodDomainId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L3ContextId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.NetworkDomainId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.RuleName;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SelectorName;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;
@@ -58,19 +57,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_l
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_location_provider.rev160419.location.providers.LocationProviderKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_location_provider.rev160419.location.providers.location.provider.ProviderAddressEndpointLocation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_location_provider.rev160419.location.providers.location.provider.ProviderAddressEndpointLocationKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L2BridgeDomain;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L2FloodDomain;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.Subnet;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.AddressType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.ContextType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.Forwarding;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.ForwardingByTenant;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.ForwardingByTenantKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.ForwardingContext;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.ForwardingContextKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.NetworkDomain;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.NetworkDomainKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.SubjectFeatureDefinitions;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.Tenants;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.classifier.refs.ClassifierRef;
@@ -258,31 +249,6 @@ public class IidFactory {
             .build();
     }
 
-    public static InstanceIdentifier<NetworkDomain> subnetIid(TenantId tenantId, NetworkDomainId id) {
-        NetworkDomainKey domainKey = new NetworkDomainKey(id, Subnet.class);
-        return createForwardingByTenantIidBuilder(tenantId).child(NetworkDomain.class, domainKey).build();
-    }
-
-    public static InstanceIdentifier<ForwardingContext> l2FloodDomainIid(TenantId tenantId, ContextId id) {
-        ForwardingContextKey domainKey = new ForwardingContextKey(id, L2FloodDomain.class);
-        return createForwardingByTenantIidBuilder(tenantId).child(ForwardingContext.class, domainKey).build();
-    }
-
-    public static InstanceIdentifier<ForwardingContext> l2BridgeDomainIid(TenantId tenantId, ContextId id) {
-        ForwardingContextKey domainKey = new ForwardingContextKey(id, L2BridgeDomain.class);
-        return createForwardingByTenantIidBuilder(tenantId).child(ForwardingContext.class, domainKey).build();
-    }
-
-    public static InstanceIdentifier<ForwardingContext> l3ContextIid(TenantId tenantId, ContextId id) {
-        ForwardingContextKey domainKey = new ForwardingContextKey(id, L3Context.class);
-        return createForwardingByTenantIidBuilder(tenantId).child(ForwardingContext.class, domainKey).build();
-    }
-
-    private static InstanceIdentifierBuilder<ForwardingByTenant> createForwardingByTenantIidBuilder(TenantId tenantId) {
-        return InstanceIdentifier.builder(Forwarding.class).child(ForwardingByTenant.class,
-                new ForwardingByTenantKey(tenantId));
-    }
-
     @Deprecated
     public static InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomain> l2FloodDomainIid(TenantId tenantId,
             L2FloodDomainId l2FloodDomainId) {
index 9e0abe80e6e21eb7246079f1363cfff28564590a..522d149aa8480f5186e8532c7959348480582af5 100644 (file)
@@ -58,11 +58,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpo
 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.IpPrefixType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L2FloodDomain;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.MacAddressType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.Subnet;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.AddressType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.ContextType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.NetworkDomain;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 
 import com.google.common.base.Optional;
@@ -77,27 +75,26 @@ public class BaseEndpointServiceImplTest extends CustomDataBrokerTest {
     private static final String CONTEXT_ID = "testContext";
     private static final long timestamp = 1234567890L;
     private static final NetworkDomainContainment networkDomainContainment = new NetworkDomainContainmentBuilder()
-        .setNetworkDomainId(new NetworkDomainId(DOMAIN)).setNetworkDomainType(Subnet.class).build();
+        .setNetworkDomainId(new NetworkDomainId(DOMAIN)).setNetworkDomainType(NetworkDomain.class).build();
     private static final ParentEndpoint BASE_L3_PARENT = new ParentEndpointBuilder().setAddress(IP_ADDRESS)
-        .setAddressType(IpPrefixType.class)
+        .setAddressType(AddressType.class)
         .setContextId(new ContextId(CONTEXT_ID))
-        .setContextType(L3Context.class)
+        .setContextType(ContextType.class)
         .build();
     private static final ChildEndpoint BASE_L2_CHILD = new ChildEndpointBuilder().setAddress(MAC_ADDRESS)
-        .setAddressType(MacAddressType.class)
+        .setAddressType(AddressType.class)
         .setContextId(new ContextId(CONTEXT_ID))
-        .setContextType(L2FloodDomain.class)
+        .setContextType(ContextType.class)
         .build();
     private static final ParentContainmentEndpoint BASE_CONT_PARENT = new ParentContainmentEndpointBuilder()
-        .setContextId(new ContextId(CONTEXT_ID)).setContextType(L2FloodDomain.class).build();
+        .setContextId(new ContextId(CONTEXT_ID)).setContextType(ContextType.class).build();
 
     private DataBroker dataProvider;
     private BaseEndpointServiceImpl baseEndpointRpcRegistry;
 
     @Override
     public Collection<Class<?>> getClassesFromModules() {
-        return ImmutableList.of(Endpoints.class, AddressEndpoints.class, ContainmentEndpoints.class,
-                MacAddressType.class, IpPrefixType.class);
+        return ImmutableList.of(Endpoints.class, AddressEndpoints.class, ContainmentEndpoints.class);
     }
 
     @Before
@@ -410,10 +407,10 @@ public class BaseEndpointServiceImplTest extends CustomDataBrokerTest {
     private AddressEndpointBuilder createBaseL2EpBuilder() {
         return new AddressEndpointBuilder().setTimestamp(timestamp)
             .setContextId(new ContextId(CONTEXT_ID))
-            .setContextType(L2FloodDomain.class)
+            .setContextType(ContextType.class)
             .setTenant(new TenantId(TENANT))
             .setAddress(MAC_ADDRESS)
-            .setAddressType(MacAddressType.class)
+            .setAddressType(AddressType.class)
             .setNetworkContainment(new NetworkContainmentBuilder().setContainment(networkDomainContainment).build())
             .setTimestamp(timestamp);
     }
@@ -421,10 +418,10 @@ public class BaseEndpointServiceImplTest extends CustomDataBrokerTest {
     private AddressEndpointBuilder createBaseL3EpBuilder() {
         return new AddressEndpointBuilder().setTimestamp(timestamp)
             .setContextId(new ContextId(CONTEXT_ID))
-            .setContextType(L3Context.class)
+            .setContextType(ContextType.class)
             .setTenant(new TenantId(TENANT))
             .setAddress(IP_ADDRESS)
-            .setAddressType(IpPrefixType.class)
+            .setAddressType(AddressType.class)
             .setNetworkContainment(new NetworkContainmentBuilder().setContainment(networkDomainContainment).build())
             .setTimestamp(timestamp);
     }
@@ -432,7 +429,7 @@ public class BaseEndpointServiceImplTest extends CustomDataBrokerTest {
     private ContainmentEndpointBuilder createBaseContEpBuilder() {
         return new ContainmentEndpointBuilder().setTimestamp(timestamp)
             .setContextId(new ContextId(CONTEXT_ID))
-            .setContextType(L2FloodDomain.class)
+            .setContextType(ContextType.class)
             .setTenant(new TenantId(TENANT))
             .setNetworkContainment(new NetworkContainmentBuilder().setContainment(networkDomainContainment).build());
     }
index 7e8c5ef351cd38021cb178c855e5c1722ede732f..1e068f558bf49e7cdd85f9144cd34a731b766617 100644 (file)
@@ -42,8 +42,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_l
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_location_provider.rev160419.location.providers.location.provider.ProviderAddressEndpointLocationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_location_provider.rev160419.location.providers.location.provider.ProviderAddressEndpointLocationKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_location_provider.rev160419.location.providers.location.provider.ProviderContainmentEndpointLocationBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.IpPrefixType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.AddressType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.ContextType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
@@ -84,12 +84,11 @@ public class LocationResolverTest extends CustomDataBrokerTest {
 
     @Override
     public Collection<Class<?>> getClassesFromModules() {
-        return ImmutableList.<Class<?>>of(LocationProvider.class, Nodes.class, L3Context.class,
-                EndpointLocations.class);
+        return ImmutableList.<Class<?>>of(LocationProvider.class, Nodes.class, EndpointLocations.class);
     }
 
     @Test
-    public void test_LocationProviderWrite() throws Exception {
+    public void testOnDataTreeChanged_write() throws Exception {
         AbsoluteLocation absoluteLocation =
                 new AbsoluteLocationBuilder().setLocationType(new InternalLocationCaseBuilder()
                     .setInternalNode(nodeIid1).setInternalNodeConnector(connectorIid).build()).build();
@@ -101,14 +100,14 @@ public class LocationResolverTest extends CustomDataBrokerTest {
         LocationProvider provider = new LocationProviderBuilder().setProvider(new ProviderName(PROVIDER_NAME))
             .setProviderAddressEndpointLocation(
                     Collections.singletonList(new ProviderAddressEndpointLocationBuilder()
-                        .setKey(new ProviderAddressEndpointLocationKey(ADDRESS, IpPrefixType.class, contextId,
-                                L3Context.class))
+                        .setKey(new ProviderAddressEndpointLocationKey(ADDRESS, AddressType.class, contextId,
+                                ContextType.class))
                         .setAbsoluteLocation(absoluteLocation)
                         .setRelativeLocations(relativeLocations)
                         .build()))
             .setProviderContainmentEndpointLocation(
                     Collections.singletonList(new ProviderContainmentEndpointLocationBuilder().setContextId(contextId)
-                        .setContextType(L3Context.class)
+                        .setContextType(ContextType.class)
                         .setRelativeLocations(relativeLocations)
                         .build()))
             .build();
@@ -126,19 +125,19 @@ public class LocationResolverTest extends CustomDataBrokerTest {
         EndpointLocations readLocations = read.get();
         assertNotNull(readLocations.getAddressEndpointLocation());
         assertEquals(1, readLocations.getAddressEndpointLocation().size());
-        assertEquals(new AddressEndpointLocationKey(ADDRESS, IpPrefixType.class, contextId, L3Context.class),
+        assertEquals(new AddressEndpointLocationKey(ADDRESS, AddressType.class, contextId, ContextType.class),
                 readLocations.getAddressEndpointLocation().get(0).getKey());
         assertEquals(absoluteLocation, readLocations.getAddressEndpointLocation().get(0).getAbsoluteLocation());
         assertNotNull(readLocations.getContainmentEndpointLocation());
         assertEquals(1, readLocations.getContainmentEndpointLocation().size());
-        assertEquals(new ContainmentEndpointLocationKey(contextId, L3Context.class),
+        assertEquals(new ContainmentEndpointLocationKey(contextId, ContextType.class),
                 readLocations.getContainmentEndpointLocation().get(0).getKey());
         assertEquals(relativeLocations, readLocations.getContainmentEndpointLocation().get(0).getRelativeLocations());
     }
 
     @Test
-    public void test_LocationProviderOverWrite() throws Exception {
-        test_LocationProviderWrite();
+    public void testOnDataTreeChanged_overWrite() throws Exception {
+        testOnDataTreeChanged_write();
         AbsoluteLocation absoluteLocation =
                 new AbsoluteLocationBuilder().setLocationType(new InternalLocationCaseBuilder()
                     .setInternalNode(nodeIid2).setInternalNodeConnector(connectorIid).build()).build();
@@ -150,14 +149,14 @@ public class LocationResolverTest extends CustomDataBrokerTest {
         LocationProvider provider = new LocationProviderBuilder().setProvider(new ProviderName(PROVIDER_NAME))
             .setProviderAddressEndpointLocation(
                     Collections.singletonList(new ProviderAddressEndpointLocationBuilder()
-                        .setKey(new ProviderAddressEndpointLocationKey(ADDRESS, IpPrefixType.class, contextId,
-                                L3Context.class))
+                        .setKey(new ProviderAddressEndpointLocationKey(ADDRESS, AddressType.class, contextId,
+                                ContextType.class))
                         .setAbsoluteLocation(absoluteLocation)
                         .setRelativeLocations(relativeLocations)
                         .build()))
             .setProviderContainmentEndpointLocation(
                     Collections.singletonList(new ProviderContainmentEndpointLocationBuilder().setContextId(contextId)
-                        .setContextType(L3Context.class)
+                        .setContextType(ContextType.class)
                         .setRelativeLocations(relativeLocations)
                         .build()))
             .build();
@@ -175,19 +174,19 @@ public class LocationResolverTest extends CustomDataBrokerTest {
         EndpointLocations readLocations = read.get();
         assertNotNull(readLocations.getAddressEndpointLocation());
         assertEquals(1, readLocations.getAddressEndpointLocation().size());
-        assertEquals(new AddressEndpointLocationKey(ADDRESS, IpPrefixType.class, contextId, L3Context.class),
+        assertEquals(new AddressEndpointLocationKey(ADDRESS, AddressType.class, contextId, ContextType.class),
                 readLocations.getAddressEndpointLocation().get(0).getKey());
         assertEquals(absoluteLocation, readLocations.getAddressEndpointLocation().get(0).getAbsoluteLocation());
         assertNotNull(readLocations.getContainmentEndpointLocation());
         assertEquals(1, readLocations.getContainmentEndpointLocation().size());
-        assertEquals(new ContainmentEndpointLocationKey(contextId, L3Context.class),
+        assertEquals(new ContainmentEndpointLocationKey(contextId, ContextType.class),
                 readLocations.getContainmentEndpointLocation().get(0).getKey());
         assertEquals(relativeLocations, readLocations.getContainmentEndpointLocation().get(0).getRelativeLocations());
     }
 
     @Test
-    public void test_LocationProviderDelete() throws Exception {
-        test_LocationProviderWrite();
+    public void testOnDataTreeChanged_delete() throws Exception {
+        testOnDataTreeChanged_write();
         InstanceIdentifier<LocationProvider> iid = InstanceIdentifier.builder(LocationProviders.class)
             .child(LocationProvider.class, new LocationProviderKey(new ProviderName(PROVIDER_NAME)))
             .build();
@@ -218,15 +217,15 @@ public class LocationResolverTest extends CustomDataBrokerTest {
     }
 
     @Test
-    public void test_LocationProviderModify() throws Exception {
-        test_LocationProviderWrite();
+    public void testOnDataTreeChanged_modify() throws Exception {
+        testOnDataTreeChanged_write();
         AbsoluteLocation absoluteLocation =
                 new AbsoluteLocationBuilder().setLocationType(new InternalLocationCaseBuilder()
                     .setInternalNode(nodeIid2).setInternalNodeConnector(connectorIid).build()).build();
         InstanceIdentifier<AbsoluteLocation> iid = InstanceIdentifier.builder(LocationProviders.class)
             .child(LocationProvider.class, new LocationProviderKey(new ProviderName(PROVIDER_NAME)))
             .child(ProviderAddressEndpointLocation.class,
-                    new ProviderAddressEndpointLocationKey(ADDRESS, IpPrefixType.class, contextId, L3Context.class))
+                    new ProviderAddressEndpointLocationKey(ADDRESS, AddressType.class, contextId, ContextType.class))
             .child(AbsoluteLocation.class)
             .build();
         WriteTransaction wtx = dataBroker.newWriteOnlyTransaction();
@@ -240,7 +239,7 @@ public class LocationResolverTest extends CustomDataBrokerTest {
         EndpointLocations readLocations = read.get();
         assertNotNull(readLocations.getAddressEndpointLocation());
         assertEquals(1, readLocations.getAddressEndpointLocation().size());
-        assertEquals(new AddressEndpointLocationKey(ADDRESS, IpPrefixType.class, contextId, L3Context.class),
+        assertEquals(new AddressEndpointLocationKey(ADDRESS, AddressType.class, contextId, ContextType.class),
                 readLocations.getAddressEndpointLocation().get(0).getKey());
         assertEquals(absoluteLocation, readLocations.getAddressEndpointLocation().get(0).getAbsoluteLocation());
     }
index 1c6c9b14ec51bacf2187b99334f840732919df5c..5834cf52217b93cb650ee5d3b73f0b8ac54f340b 100644 (file)
@@ -43,6 +43,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.EndpointGroupId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.RuleName;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.ContextType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.ForwardingBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.ForwardingByTenantBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.ForwardingContextBuilder;
@@ -143,7 +144,7 @@ public class RendererManagerDataBrokerTest {
                 .setForwardingByTenant(
                         Arrays.asList(new ForwardingByTenantBuilder().setTenantId(TestDataFactory.TENANT_ID)
                             .setForwardingContext(Arrays.asList(new ForwardingContextBuilder()
-                                .setContextType(TestDataFactory.DummyContextType.class)
+                                .setContextType(ContextType.class)
                                 .setContextId(TestDataFactory.CTX_1)
                                 .build()))
                             .build()))
@@ -244,7 +245,7 @@ public class RendererManagerDataBrokerTest {
                 .setForwardingByTenant(
                         Arrays.asList(new ForwardingByTenantBuilder().setTenantId(TestDataFactory.TENANT_ID)
                             .setForwardingContext(Arrays.asList(new ForwardingContextBuilder()
-                                .setContextType(TestDataFactory.DummyContextType.class)
+                                .setContextType(ContextType.class)
                                 .setContextId(TestDataFactory.CTX_1)
                                 .build()))
                             .build()))
@@ -327,7 +328,7 @@ public class RendererManagerDataBrokerTest {
                 .setForwardingByTenant(
                         Arrays.asList(new ForwardingByTenantBuilder().setTenantId(TestDataFactory.TENANT_ID)
                             .setForwardingContext(Arrays.asList(new ForwardingContextBuilder()
-                                .setContextType(TestDataFactory.DummyContextType.class)
+                                .setContextType(ContextType.class)
                                 .setContextId(TestDataFactory.CTX_1)
                                 .build()))
                             .build()))
index b4e88128cf4da14c09e5af77fb4b4449a8e8cff5..2640ae036f14b8e39663fc3d37d0528ffaa30e6f 100644 (file)
@@ -82,25 +82,25 @@ public class TestDataFactory {
     }
 
     public static AddressEndpointBuilder defaultAdrEp(String address, EndpointGroupId... epgs) {
-        return new AddressEndpointBuilder().setContextType(DummyContextType.class)
+        return new AddressEndpointBuilder().setContextType(ContextType.class)
             .setContextId(CTX_1)
-            .setAddressType(DummyAddressType.class)
+            .setAddressType(AddressType.class)
             .setAddress(address)
             .setTenant(TENANT_ID)
             .setEndpointGroup(Arrays.asList(epgs))
             .setNetworkContainment(
                     new NetworkContainmentBuilder().setContainment(new ForwardingContextContainmentBuilder()
-                        .setContextType(DummyContextType.class).setContextId(CTX_1).build()).build());
+                        .setContextType(ContextType.class).setContextId(CTX_1).build()).build());
     }
 
     public static ContainmentEndpointBuilder defaultContEp(EndpointGroupId... epgs) {
-        return new ContainmentEndpointBuilder().setContextType(DummyContextType.class)
+        return new ContainmentEndpointBuilder().setContextType(ContextType.class)
             .setContextId(CTX_1)
             .setTenant(TENANT_ID)
             .setEndpointGroup(Arrays.asList(epgs))
             .setNetworkContainment(
                     new NetworkContainmentBuilder().setContainment(new ForwardingContextContainmentBuilder()
-                        .setContextType(DummyContextType.class).setContextId(CTX_1).build()).build());
+                        .setContextType(ContextType.class).setContextId(CTX_1).build()).build());
     }
 
     public static ResolvedRuleBuilder defaultResolvedRule(RuleName ruleName) {
@@ -135,8 +135,4 @@ public class TestDataFactory {
             .setPolicyRuleGroupWithEndpointConstraints(ImmutableList.of(blueRuleGrpWithoutCons));
     }
 
-    public static abstract class DummyContextType extends ContextType {
-    };
-    public static abstract class DummyAddressType extends AddressType {
-    };
 }
index 8e3a656bb1ee026ab2dc38991a3ec25cad4a36dc..c369767bbbb15f4eaad648ee8771a55f532e9b8a 100755 (executable)
@@ -13,7 +13,6 @@ import static org.mockito.Mockito.mock;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
-import org.mockito.Mockito;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
@@ -39,13 +38,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2BridgeDomainId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L2FloodDomainId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L3ContextId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.NetworkDomainId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.RuleName;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SelectorName;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;
 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.Endpoints;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointKey;
@@ -53,10 +50,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3Prefix;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_location_provider.rev160419.location.providers.LocationProvider;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_location_provider.rev160419.location.providers.location.provider.ProviderAddressEndpointLocation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.IpPrefixType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.AddressType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.ContextType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.ForwardingByTenant;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.ForwardingContext;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.forwarding.forwarding.by.tenant.NetworkDomain;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.classifier.refs.ClassifierRef;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.definitions.ActionDefinition;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.definitions.ClassifierDefinition;
@@ -95,7 +91,6 @@ public class IidFactoryTest {
 
     private final String LOCATION_PROVIDER_NAME = "location-provider";
     private final String IP_ADDRESS = "192.68.50.71";
-    private final String IP_PREFIX = "192.168.50.0/24";
     private final String L3_CONTEXT_ID = "l3Context";
     private final String CONNECTOR = "connector";
 
@@ -224,14 +219,6 @@ public class IidFactoryTest {
         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
     }
 
-    @Test
-    public void testL2FloodDomainIid() {
-        ContextId id = mock(ContextId.class);
-        InstanceIdentifier<ForwardingContext> identifier = IidFactory.l2FloodDomainIid(tenantId, id);
-        Assert.assertEquals(id, InstanceIdentifier.keyOf(identifier).getContextId());
-        Assert.assertEquals(tenantId, identifier.firstKeyOf(ForwardingByTenant.class).getTenantId());
-    }
-
     @Test
     public void testL2FloodDomainIid_tenantApi() {
         L2FloodDomainId l2FloodDomainId = mock(L2FloodDomainId.class);
@@ -240,14 +227,6 @@ public class IidFactoryTest {
         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
     }
 
-    @Test
-    public void testL2BridgeDomainIid() {
-        ContextId id = mock(ContextId.class);
-        InstanceIdentifier<ForwardingContext> identifier = IidFactory.l2BridgeDomainIid(tenantId, id);
-        Assert.assertEquals(id, InstanceIdentifier.keyOf(identifier).getContextId());
-        Assert.assertEquals(tenantId, identifier.firstKeyOf(ForwardingByTenant.class).getTenantId());
-    }
-
     @Test
     public void testL2BridgeDomainIid_tenantApi() {
         L2BridgeDomainId l2BridgeDomainId = mock(L2BridgeDomainId.class);
@@ -256,14 +235,6 @@ public class IidFactoryTest {
         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
     }
 
-    @Test
-    public void testL3ContextIid() {
-        ContextId id = mock(ContextId.class);
-        InstanceIdentifier<ForwardingContext> identifier = IidFactory.l3ContextIid(tenantId, id);
-        Assert.assertEquals(id, InstanceIdentifier.keyOf(identifier).getContextId());
-        Assert.assertEquals(tenantId, identifier.firstKeyOf(ForwardingByTenant.class).getTenantId());
-    }
-
     @Test
     public void testL3ContextIid_tenantApi() {
         L3ContextId l3ContextId = mock(L3ContextId.class);
@@ -272,6 +243,12 @@ public class IidFactoryTest {
         Assert.assertEquals(tenantId, identifier.firstKeyOf(Tenant.class).getId());
     }
 
+    @Test
+    public void testForwardingByTenantIid() {
+        InstanceIdentifier<ForwardingByTenant> forwardingByTenantIid = IidFactory.forwardingByTenantIid(tenantId);
+        Assert.assertEquals(tenantId, forwardingByTenantIid.firstKeyOf(ForwardingByTenant.class).getTenantId());
+    }
+
     @Test
     public void testEndpointIid() {
         L2BridgeDomainId l2Context = mock(L2BridgeDomainId.class);
@@ -315,14 +292,6 @@ public class IidFactoryTest {
         Assert.assertNotNull(identifier);
     }
 
-    @Test
-    public void testSubnetIid() {
-        NetworkDomainId id = mock(NetworkDomainId.class);
-        InstanceIdentifier<NetworkDomain> identifier = IidFactory.subnetIid(tenantId, id);
-        Assert.assertEquals(tenantId, identifier.firstKeyOf(ForwardingByTenant.class).getTenantId());
-        Assert.assertEquals(id, identifier.firstKeyOf(NetworkDomain.class).getNetworkDomainId());
-    }
-
     @Test
     public void testSubnetIid_tenantApi() {
         SubnetId subnetId = mock(SubnetId.class);
@@ -396,19 +365,16 @@ public class IidFactoryTest {
     }
 
     @Test
-    public void  testeExternalImplicitGroupIid(){
-        InstanceIdentifier<ExternalImplicitGroup>
-                identifier = IidFactory.externalImplicitGroupIid(tenantId, epgId);
+    public void testeExternalImplicitGroupIid() {
+        InstanceIdentifier<ExternalImplicitGroup> identifier = IidFactory.externalImplicitGroupIid(tenantId, epgId);
         Assert.assertEquals(epgId, identifier.firstKeyOf(ExternalImplicitGroup.class).getId());
     }
 
     @Test
     public void testProviderAddressEndpointLocationIid() {
         ContextId l3Context = new ContextId(L3_CONTEXT_ID);
-        InstanceIdentifier<ProviderAddressEndpointLocation> identifier = IidFactory
-            .providerAddressEndpointLocationIid(LOCATION_PROVIDER_NAME, IpPrefixType.class, IP_ADDRESS,
-                    org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class,
-                    l3Context);
+        InstanceIdentifier<ProviderAddressEndpointLocation> identifier = IidFactory.providerAddressEndpointLocationIid(
+                LOCATION_PROVIDER_NAME, AddressType.class, IP_ADDRESS, ContextType.class, l3Context);
         Assert.assertEquals(LOCATION_PROVIDER_NAME,
                 identifier.firstKeyOf(LocationProvider.class).getProvider().getValue());
         Assert.assertEquals(IP_ADDRESS, identifier.firstKeyOf(ProviderAddressEndpointLocation.class).getAddress());
@@ -418,15 +384,11 @@ public class IidFactoryTest {
     @Test
     public void testAddressEndpointIid() {
         ContextId l3Context = new ContextId(L3_CONTEXT_ID);
-        InstanceIdentifier<AddressEndpoint> identifier =
-                IidFactory.addressEndpointIid(new AddressEndpointKey(IP_ADDRESS, IpPrefixType.class, l3Context,
-                        org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class
-                        ));
-        Assert.assertEquals(IpPrefixType.class, identifier.firstKeyOf(AddressEndpoint.class).getAddressType());
+        InstanceIdentifier<AddressEndpoint> identifier = IidFactory.addressEndpointIid(
+                new AddressEndpointKey(IP_ADDRESS, AddressType.class, l3Context, ContextType.class));
+        Assert.assertEquals(AddressType.class, identifier.firstKeyOf(AddressEndpoint.class).getAddressType());
         Assert.assertEquals(IP_ADDRESS, identifier.firstKeyOf(AddressEndpoint.class).getAddress());
-        Assert.assertEquals(
-                org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class,
-                identifier.firstKeyOf(AddressEndpoint.class).getContextType());
+        Assert.assertEquals(ContextType.class, identifier.firstKeyOf(AddressEndpoint.class).getContextType());
         Assert.assertEquals(l3Context, identifier.firstKeyOf(AddressEndpoint.class).getContextId());
     }
 
@@ -434,14 +396,12 @@ public class IidFactoryTest {
     public void testAddressEndpointLocationIid() {
         ContextId l3Context = new ContextId(L3_CONTEXT_ID);
         AddressEndpointLocationKey addrEndpointLocationKey =
-                new AddressEndpointLocationKey(IP_ADDRESS, IpPrefixType.class, l3Context,
-                        org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class);
-        InstanceIdentifier<AddressEndpointLocation> iid = IidFactory.addressEndpointLocationIid(addrEndpointLocationKey);
-        Assert.assertEquals(IpPrefixType.class, iid.firstKeyOf(AddressEndpointLocation.class).getAddressType());
+                new AddressEndpointLocationKey(IP_ADDRESS, AddressType.class, l3Context, ContextType.class);
+        InstanceIdentifier<AddressEndpointLocation> iid =
+                IidFactory.addressEndpointLocationIid(addrEndpointLocationKey);
+        Assert.assertEquals(AddressType.class, iid.firstKeyOf(AddressEndpointLocation.class).getAddressType());
         Assert.assertEquals(IP_ADDRESS, iid.firstKeyOf(AddressEndpointLocation.class).getAddress());
-        Assert.assertEquals(
-                org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class,
-                iid.firstKeyOf(AddressEndpointLocation.class).getContextType());
+        Assert.assertEquals(ContextType.class, iid.firstKeyOf(AddressEndpointLocation.class).getContextType());
         Assert.assertEquals(l3Context, iid.firstKeyOf(AddressEndpointLocation.class).getContextId());
     }
 
@@ -449,12 +409,10 @@ public class IidFactoryTest {
     public void testContainmentEndpointLocationIid() {
         ContextId l3Context = new ContextId(L3_CONTEXT_ID);
         ContainmentEndpointLocationKey contEndpointLocationKey =
-                new ContainmentEndpointLocationKey(l3Context,
-                        org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class);
-        InstanceIdentifier<ContainmentEndpointLocation> iid = IidFactory.containmentEndpointLocationIid(contEndpointLocationKey);
-        Assert.assertEquals(
-                org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class,
-                iid.firstKeyOf(ContainmentEndpointLocation.class).getContextType());
+                new ContainmentEndpointLocationKey(l3Context, ContextType.class);
+        InstanceIdentifier<ContainmentEndpointLocation> iid =
+                IidFactory.containmentEndpointLocationIid(contEndpointLocationKey);
+        Assert.assertEquals(ContextType.class, iid.firstKeyOf(ContainmentEndpointLocation.class).getContextType());
         Assert.assertEquals(l3Context, iid.firstKeyOf(ContainmentEndpointLocation.class).getContextId());
     }
 
@@ -462,15 +420,13 @@ public class IidFactoryTest {
     public void internalLocationIid_AddrEndpoint() {
         ContextId l3Context = new ContextId(L3_CONTEXT_ID);
         AddressEndpointLocationKey addrEndpointLocationKey =
-                new AddressEndpointLocationKey(IP_ADDRESS, IpPrefixType.class, l3Context,
-                        org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class);
+                new AddressEndpointLocationKey(IP_ADDRESS, AddressType.class, l3Context, ContextType.class);
         InternalLocationKey internalLocationKey = new InternalLocationKey(nodeIid, connectorIid);
-        InstanceIdentifier<InternalLocation> iid = IidFactory.internalLocationIid(addrEndpointLocationKey, internalLocationKey);
-        Assert.assertEquals(IpPrefixType.class, iid.firstKeyOf(AddressEndpointLocation.class).getAddressType());
+        InstanceIdentifier<InternalLocation> iid =
+                IidFactory.internalLocationIid(addrEndpointLocationKey, internalLocationKey);
+        Assert.assertEquals(AddressType.class, iid.firstKeyOf(AddressEndpointLocation.class).getAddressType());
         Assert.assertEquals(IP_ADDRESS, iid.firstKeyOf(AddressEndpointLocation.class).getAddress());
-        Assert.assertEquals(
-                org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class,
-                iid.firstKeyOf(AddressEndpointLocation.class).getContextType());
+        Assert.assertEquals(ContextType.class, iid.firstKeyOf(AddressEndpointLocation.class).getContextType());
         Assert.assertEquals(l3Context, iid.firstKeyOf(AddressEndpointLocation.class).getContextId());
         Assert.assertEquals(nodeIid, iid.firstKeyOf(InternalLocation.class).getInternalNode());
         Assert.assertEquals(connectorIid, iid.firstKeyOf(InternalLocation.class).getInternalNodeConnector());
@@ -480,13 +436,11 @@ public class IidFactoryTest {
     public void internalLocationIid_ContEndpoint() {
         ContextId l3Context = new ContextId(L3_CONTEXT_ID);
         ContainmentEndpointLocationKey contEndpointLocationKey =
-                new ContainmentEndpointLocationKey(l3Context,
-                        org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class);
+                new ContainmentEndpointLocationKey(l3Context, ContextType.class);
         InternalLocationKey internalLocationKey = new InternalLocationKey(nodeIid, connectorIid);
-        InstanceIdentifier<InternalLocation> iid = IidFactory.internalLocationIid(contEndpointLocationKey, internalLocationKey);
-        Assert.assertEquals(
-                org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class,
-                iid.firstKeyOf(ContainmentEndpointLocation.class).getContextType());
+        InstanceIdentifier<InternalLocation> iid =
+                IidFactory.internalLocationIid(contEndpointLocationKey, internalLocationKey);
+        Assert.assertEquals(ContextType.class, iid.firstKeyOf(ContainmentEndpointLocation.class).getContextType());
         Assert.assertEquals(l3Context, iid.firstKeyOf(ContainmentEndpointLocation.class).getContextId());
         Assert.assertEquals(nodeIid, iid.firstKeyOf(InternalLocation.class).getInternalNode());
         Assert.assertEquals(connectorIid, iid.firstKeyOf(InternalLocation.class).getInternalNodeConnector());
@@ -496,15 +450,13 @@ public class IidFactoryTest {
     public void externalLocationIid_AddrEndpoint() {
         ContextId l3Context = new ContextId(L3_CONTEXT_ID);
         AddressEndpointLocationKey addrEndpointLocationKey =
-                new AddressEndpointLocationKey(IP_ADDRESS, IpPrefixType.class, l3Context,
-                        org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class);
+                new AddressEndpointLocationKey(IP_ADDRESS, AddressType.class, l3Context, ContextType.class);
         ExternalLocationKey externalLocationKey = new ExternalLocationKey(CONNECTOR, nodeIid);
-        InstanceIdentifier<ExternalLocation> iid = IidFactory.externalLocationIid(addrEndpointLocationKey, externalLocationKey);
-        Assert.assertEquals(IpPrefixType.class, iid.firstKeyOf(AddressEndpointLocation.class).getAddressType());
+        InstanceIdentifier<ExternalLocation> iid =
+                IidFactory.externalLocationIid(addrEndpointLocationKey, externalLocationKey);
+        Assert.assertEquals(AddressType.class, iid.firstKeyOf(AddressEndpointLocation.class).getAddressType());
         Assert.assertEquals(IP_ADDRESS, iid.firstKeyOf(AddressEndpointLocation.class).getAddress());
-        Assert.assertEquals(
-                org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class,
-                iid.firstKeyOf(AddressEndpointLocation.class).getContextType());
+        Assert.assertEquals(ContextType.class, iid.firstKeyOf(AddressEndpointLocation.class).getContextType());
         Assert.assertEquals(l3Context, iid.firstKeyOf(AddressEndpointLocation.class).getContextId());
         Assert.assertEquals(CONNECTOR, iid.firstKeyOf(ExternalLocation.class).getExternalNodeConnector());
         Assert.assertEquals(nodeIid, iid.firstKeyOf(ExternalLocation.class).getExternalNodeMountPoint());
@@ -514,13 +466,11 @@ public class IidFactoryTest {
     public void externalLocationIid_ContEndpoint() {
         ContextId l3Context = new ContextId(L3_CONTEXT_ID);
         ContainmentEndpointLocationKey addrEndpointLocationKey =
-                new ContainmentEndpointLocationKey(l3Context,
-                        org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class);
+                new ContainmentEndpointLocationKey(l3Context, ContextType.class);
         ExternalLocationKey externalLocationKey = new ExternalLocationKey(CONNECTOR, nodeIid);
-        InstanceIdentifier<ExternalLocation> iid = IidFactory.externalLocationIid(addrEndpointLocationKey, externalLocationKey);
-        Assert.assertEquals(
-                org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class,
-                iid.firstKeyOf(ContainmentEndpointLocation.class).getContextType());
+        InstanceIdentifier<ExternalLocation> iid =
+                IidFactory.externalLocationIid(addrEndpointLocationKey, externalLocationKey);
+        Assert.assertEquals(ContextType.class, iid.firstKeyOf(ContainmentEndpointLocation.class).getContextType());
         Assert.assertEquals(l3Context, iid.firstKeyOf(ContainmentEndpointLocation.class).getContextId());
         Assert.assertEquals(CONNECTOR, iid.firstKeyOf(ExternalLocation.class).getExternalNodeConnector());
         Assert.assertEquals(nodeIid, iid.firstKeyOf(ExternalLocation.class).getExternalNodeMountPoint());
@@ -530,14 +480,11 @@ public class IidFactoryTest {
     public void absoluteLocationIid() {
         ContextId l3Context = new ContextId(L3_CONTEXT_ID);
         AddressEndpointLocationKey addrEndpointLocationKey =
-                new AddressEndpointLocationKey(IP_ADDRESS, IpPrefixType.class, l3Context,
-                        org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class);
+                new AddressEndpointLocationKey(IP_ADDRESS, AddressType.class, l3Context, ContextType.class);
         InstanceIdentifier<AbsoluteLocation> iid = IidFactory.absoluteLocationIid(addrEndpointLocationKey);
-        Assert.assertEquals(IpPrefixType.class, iid.firstKeyOf(AddressEndpointLocation.class).getAddressType());
+        Assert.assertEquals(AddressType.class, iid.firstKeyOf(AddressEndpointLocation.class).getAddressType());
         Assert.assertEquals(IP_ADDRESS, iid.firstKeyOf(AddressEndpointLocation.class).getAddress());
-        Assert.assertEquals(
-                org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context.class,
-                iid.firstKeyOf(AddressEndpointLocation.class).getContextType());
+        Assert.assertEquals(ContextType.class, iid.firstKeyOf(AddressEndpointLocation.class).getContextType());
         Assert.assertEquals(l3Context, iid.firstKeyOf(AddressEndpointLocation.class).getContextId());
     }
 }
index befc7a10cb487ab146b757efce741ab8177e4075..7465e0724502f35b9889dfefbc79d37017878f0f 100644 (file)
   <packaging>bundle</packaging>
 
   <dependencies>
+    <dependency>
+      <groupId>org.opendaylight.groupbasedpolicy</groupId>
+      <artifactId>l2-l3-domain-extension</artifactId>
+      <version>${project.version}</version>
+    </dependency>
     <!-- testing dependencies -->
     <dependency>
       <groupId>junit</groupId>
index a0d0e82730a65df208fd22d3db45832c78bc473c..1edec15a499a077297ba1198abf690da4073e119 100644 (file)
@@ -28,8 +28,9 @@
     <!-- project specific dependencies -->
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>groupbasedpolicy</artifactId>
+      <artifactId>l2-l3-domain-extension</artifactId>
       <version>${project.version}</version>
+      <type>bundle</type>
     </dependency>
     <dependency>
       <groupId>org.opendaylight.neutron</groupId>
index 045e9624c648d1982d9cf19eac0468c703482823..8c42a7454f0d4ab0dfadea217bba9589d6cc8897 100644 (file)
@@ -16,6 +16,7 @@ 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;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.groupbasedpolicy.domain_extension.l2_l3.util.L2L3IidFactory;
 import org.opendaylight.groupbasedpolicy.neutron.gbp.util.NeutronGbpIidFactory;
 import org.opendaylight.groupbasedpolicy.neutron.mapper.infrastructure.NetworkClient;
 import org.opendaylight.groupbasedpolicy.neutron.mapper.infrastructure.NetworkService;
@@ -93,9 +94,9 @@ public class NeutronNetworkAware implements NeutronAware<Network> {
                 MappingUtils.createParent(ctxId, MappingUtils.L2_BRDIGE_DOMAIN));
         ForwardingContext l2Fd = fwdCtxBuilder.build();
 
-        rwTx.put(LogicalDatastoreType.CONFIGURATION, IidFactory.l3ContextIid(tenantId, ctxId), l3Context, true);
-        rwTx.put(LogicalDatastoreType.CONFIGURATION, IidFactory.l2BridgeDomainIid(tenantId, ctxId), l2Bd, true);
-        rwTx.put(LogicalDatastoreType.CONFIGURATION, IidFactory.l2FloodDomainIid(tenantId, ctxId), l2Fd, true);
+        rwTx.put(LogicalDatastoreType.CONFIGURATION, L2L3IidFactory.l3ContextIid(tenantId, ctxId), l3Context, true);
+        rwTx.put(LogicalDatastoreType.CONFIGURATION, L2L3IidFactory.l2BridgeDomainIid(tenantId, ctxId), l2Bd, true);
+        rwTx.put(LogicalDatastoreType.CONFIGURATION, L2L3IidFactory.l2FloodDomainIid(tenantId, ctxId), l2Fd, true);
 
         createTenantNetworkDomains(network, tenantId, rwTx);
 
@@ -185,19 +186,19 @@ public class NeutronNetworkAware implements NeutronAware<Network> {
         TenantId tenantId = new TenantId(network.getTenantId().getValue());
         ContextId id = new ContextId(network.getUuid().getValue());
         Optional<ForwardingContext> potentialL2Fd = DataStoreHelper.removeIfExists(LogicalDatastoreType.CONFIGURATION,
-                IidFactory.l2FloodDomainIid(tenantId, id), rwTx);
+                L2L3IidFactory.l2FloodDomainIid(tenantId, id), rwTx);
         if (!potentialL2Fd.isPresent()) {
             LOG.warn("Illegal state - l2-flood-domain {} does not exist.", id.getValue());
             return;
         }
         Optional<ForwardingContext> potentialL2Bd = DataStoreHelper.removeIfExists(LogicalDatastoreType.CONFIGURATION,
-                IidFactory.l2BridgeDomainIid(tenantId, id), rwTx);
+                L2L3IidFactory.l2BridgeDomainIid(tenantId, id), rwTx);
         if (!potentialL2Bd.isPresent()) {
             LOG.warn("Illegal state - l2-bridge-domain {} does not exist.", id.getValue());
             return;
         }
         Optional<ForwardingContext> potentialL3Ctx = DataStoreHelper.removeIfExists(LogicalDatastoreType.CONFIGURATION,
-                IidFactory.l3ContextIid(tenantId, id), rwTx);
+                L2L3IidFactory.l3ContextIid(tenantId, id), rwTx);
         if (!potentialL3Ctx.isPresent()) {
             LOG.warn("Illegal state - l3-context {} does not exist.", id.getValue());
             return;
index f7a891d9320dcf3b193289eba7ebf8d5998a612a..03e06b2b8b4bc37a90d3d4706f36e147737b75a8 100644 (file)
@@ -18,6 +18,7 @@ import javax.annotation.Nullable;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.groupbasedpolicy.domain_extension.l2_l3.util.L2L3IidFactory;
 import org.opendaylight.groupbasedpolicy.neutron.gbp.util.NeutronGbpIidFactory;
 import org.opendaylight.groupbasedpolicy.neutron.mapper.EndpointRegistrator;
 import org.opendaylight.groupbasedpolicy.neutron.mapper.infrastructure.NetworkClient;
@@ -128,11 +129,11 @@ public class NeutronPortAware implements NeutronAware<Port> {
                 .setContextType(MappingUtils.L2_BRDIGE_DOMAIN)
                 .setParent(MappingUtils.createParent(routerL3Context, MappingUtils.L3_CONTEXT))
                 .build();
-            rwTx.merge(LogicalDatastoreType.CONFIGURATION, IidFactory.l2BridgeDomainIid(tenantId, l2BdId), l2Bd);
+            rwTx.merge(LogicalDatastoreType.CONFIGURATION, L2L3IidFactory.l2BridgeDomainIid(tenantId, l2BdId), l2Bd);
             // set virtual router IP for subnet
             NetworkDomain subnetDomain = NeutronSubnetAware.createSubnet(
                     routerPortSubnet, portIpWithSubnet.getIpAddress());
-            rwTx.merge(LogicalDatastoreType.CONFIGURATION, IidFactory.subnetIid(tenantId, subnetDomain.getNetworkDomainId()), subnetDomain);
+            rwTx.merge(LogicalDatastoreType.CONFIGURATION, L2L3IidFactory.subnetIid(tenantId, subnetDomain.getNetworkDomainId()), subnetDomain);
 
             // does the same for tenant forwarding domains
             processTenantForwarding(routerPortSubnet, routerL3Context, portIpWithSubnet, tenantId, rwTx);
@@ -526,9 +527,9 @@ public class NeutronPortAware implements NeutronAware<Port> {
                 .setParent(MappingUtils.createParent(l3Context, MappingUtils.L3_CONTEXT))
                 .build();
             rwTx.merge(LogicalDatastoreType.CONFIGURATION,
-                    IidFactory.l2BridgeDomainIid(tenantId, fwdCtx.getContextId()), fwdCtx);
+                    L2L3IidFactory.l2BridgeDomainIid(tenantId, fwdCtx.getContextId()), fwdCtx);
             NetworkDomain subnet = NeutronSubnetAware.createSubnet(routerPortSubnet, null);
-            rwTx.put(LogicalDatastoreType.CONFIGURATION, IidFactory.subnetIid(tenantId, subnet.getNetworkDomainId()),
+            rwTx.put(LogicalDatastoreType.CONFIGURATION, L2L3IidFactory.subnetIid(tenantId, subnet.getNetworkDomainId()),
                     subnet);
             DataStoreHelper.submitToDs(rwTx);
         } else if (PortUtils.isDhcpPort(port)) {
index 0b0199d9ecd6ea375df98216f309718c020a580f..2227224946b31a4c017a611883b79bb79d3a84a7 100644 (file)
@@ -18,6 +18,7 @@ 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;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.groupbasedpolicy.domain_extension.l2_l3.util.L2L3IidFactory;
 import org.opendaylight.groupbasedpolicy.neutron.gbp.util.NeutronGbpIidFactory;
 import org.opendaylight.groupbasedpolicy.neutron.mapper.EndpointRegistrator;
 import org.opendaylight.groupbasedpolicy.neutron.mapper.util.MappingUtils;
@@ -88,7 +89,7 @@ public class NeutronRouterAware implements NeutronAware<Router> {
 
         ContextId routerl3ContextId = new ContextId(router.getUuid().getValue());
         TenantId tenantId = new TenantId(router.getTenantId().getValue());
-        InstanceIdentifier<ForwardingContext> routerL3CtxIid = IidFactory.l3ContextIid(tenantId, routerl3ContextId);
+        InstanceIdentifier<ForwardingContext> routerL3CtxIid = L2L3IidFactory.l3ContextIid(tenantId, routerl3ContextId);
         ForwardingContextBuilder fwdCtxBuilder = new ForwardingContextBuilder();
         Name routerName = null;
         if (!Strings.isNullOrEmpty(router.getName())) {
@@ -168,11 +169,11 @@ public class NeutronRouterAware implements NeutronAware<Router> {
             addNeutronExtGwGbpMapping(routerL3CtxId, gatewayIp, rwTx);
             NetworkDomain subnetDomain = createSubnetWithVirtualRouterIp(gatewayIp, new NetworkDomainId(ipWithSubnetFromGwPort.getSubnetId()
                 .getValue()));
-            rwTx.merge(LogicalDatastoreType.CONFIGURATION, IidFactory.subnetIid(tenantId, subnetDomain.getNetworkDomainId()),
+            rwTx.merge(LogicalDatastoreType.CONFIGURATION, L2L3IidFactory.subnetIid(tenantId, subnetDomain.getNetworkDomainId()),
                     subnetDomain);
             ContextId l2BdId = new ContextId(potentialSubnet.get().getNetworkId().getValue());
             Optional<ForwardingContext> optBd = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
-                    IidFactory.l2BridgeDomainIid(tenantId, l2BdId), rwTx);
+                    L2L3IidFactory.l2BridgeDomainIid(tenantId, l2BdId), rwTx);
             if (!optBd.isPresent()) {
                 LOG.warn(
                         "Could not read L2-Bridge-Domain {} Modifiaction of it's parent to L3-Context of router {} aborted.",
@@ -183,7 +184,7 @@ public class NeutronRouterAware implements NeutronAware<Router> {
             ForwardingContext l2BdWithGw = new ForwardingContextBuilder(optBd.get())
             .setParent(MappingUtils.createParent(routerL3CtxId, MappingUtils.L3_CONTEXT))
             .build();
-            rwTx.put(LogicalDatastoreType.CONFIGURATION, IidFactory.l2BridgeDomainIid(tenantId, l2BdId),
+            rwTx.put(LogicalDatastoreType.CONFIGURATION, L2L3IidFactory.l2BridgeDomainIid(tenantId, l2BdId),
                     l2BdWithGw);
         }
         updateTenantForwarding(newNeutron, oldRouter, newRouter, new L3ContextId(routerL3CtxId), tenantId, rwTx);
index adf9442f14e3666e28066637c99b4be39ee8b743..2c3037439cd4914dfd243b9e3c86ae57106d1164 100644 (file)
@@ -12,6 +12,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.groupbasedpolicy.domain_extension.l2_l3.util.L2L3IidFactory;
 import org.opendaylight.groupbasedpolicy.neutron.mapper.EndpointRegistrator;
 import org.opendaylight.groupbasedpolicy.neutron.mapper.util.MappingUtils;
 import org.opendaylight.groupbasedpolicy.neutron.mapper.util.NetworkUtils;
@@ -97,7 +98,7 @@ public class NeutronSubnetAware implements
             subnetDomain = createSubnet(neutronSubnet, null);
         }
         processTenantSubnet(neutronSubnet, networkOfSubnet, tenantId, rwTx);
-        rwTx.put(LogicalDatastoreType.CONFIGURATION, IidFactory.subnetIid(tenantId, subnetDomain.getNetworkDomainId()), subnetDomain, true);
+        rwTx.put(LogicalDatastoreType.CONFIGURATION, L2L3IidFactory.subnetIid(tenantId, subnetDomain.getNetworkDomainId()), subnetDomain, true);
         DataStoreHelper.submitToDs(rwTx);
     }
 
@@ -186,7 +187,7 @@ public class NeutronSubnetAware implements
         NetworkDomainId subnetId = new NetworkDomainId(neutronSubnet.getUuid().getValue());
         TenantId tenantId = new TenantId(neutronSubnet.getTenantId().getValue());
         Optional<NetworkDomain> potentialSubnetDomain = DataStoreHelper.removeIfExists(LogicalDatastoreType.CONFIGURATION,
-                IidFactory.subnetIid(tenantId, subnetId), rwTx);
+                L2L3IidFactory.subnetIid(tenantId, subnetId), rwTx);
         if (!potentialSubnetDomain.isPresent()) {
             LOG.warn("Illegal state - subnet network domain {} does not exist.", subnetId.getValue());
             rwTx.cancel();
diff --git a/pom.xml b/pom.xml
index 3a306a984e1f2101193283a13fc047c755ae6388..6b9946ef86ee4c7afe86b4f96fade8fb13d7fb56 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -18,6 +18,7 @@
   <modules>
     <module>artifacts</module>
     <module>groupbasedpolicy</module>
+    <module>domain-extensions</module>
     <module>renderers</module>
     <module>location-providers</module>
     <module>neutron-mapper</module>
index 0eac9d76448de4d9f21786a050c62a045493b817..cc720f7ba690371e38a9f2d8d33ab2d1f4b061e0 100755 (executable)
@@ -57,7 +57,7 @@
         </dependency>
         <dependency>
             <groupId>org.opendaylight.groupbasedpolicy</groupId>
-            <artifactId>groupbasedpolicy</artifactId>
+            <artifactId>l2-l3-domain-extension</artifactId>
         </dependency>
 
         <!-- sxp deps -->