making service for PolicyResolver and EndpointRpcRegistry 13/30913/8
authorMichal Cmarada <michal.cmarada@pantheon.sk>
Tue, 8 Dec 2015 14:18:31 +0000 (15:18 +0100)
committerMartin Sunal <msunal@cisco.com>
Fri, 11 Dec 2015 08:10:06 +0000 (08:10 +0000)
Change-Id: Ieb489292492a87be72800dde7841330eb1b3db9b
Signed-off-by: Michal Cmarada <michal.cmarada@pantheon.sk>
Signed-off-by: Vladimir Lavor <vladimir.lavor@pantheon.sk>
30 files changed:
groupbasedpolicy/pom.xml
groupbasedpolicy/src/main/config/default-config.xml
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplModule.java [new file with mode: 0644]
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplModuleFactory.java [new file with mode: 0644]
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyModule.java [moved from groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/impl/GroupbasedpolicyModule.java with 55% similarity, mode: 0644]
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyModuleFactory.java [moved from groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/impl/GroupbasedpolicyModuleFactory.java with 55% similarity, mode: 0644]
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryModule.java [new file with mode: 0644]
groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryModuleFactory.java [new file with mode: 0644]
groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/EpRendererAugmentationRegistry.java [moved from groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/EpRendererAugmentationRegistrar.java with 94% similarity]
groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/PolicyValidatorRegistry.java [moved from groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/PolicyValidatorRegistrar.java with 98% similarity]
groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/endpoint/EndpointRpcRegistry.java
groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolver.java
groupbasedpolicy/src/main/yang/groupbasedpolicy-cfg.yang [new file with mode: 0644]
groupbasedpolicy/src/main/yang/groupbasedpolicy-impl.yang [deleted file]
groupbasedpolicy/src/main/yang/model/endpoint-provider.yang [deleted file]
groupbasedpolicy/src/main/yang/model/policy-provider.yang [deleted file]
groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/endpoint/EndPointRpcRegistryTest.java
groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolverTest.java
renderers/iovisor/src/main/config/default-config.xml
renderers/iovisor/src/main/java/org/opendaylight/controller/config/yang/config/iovisor_provider/impl/IovisorProviderModule.java
renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorRenderer.java
renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/endpoint/EndpointManager.java
renderers/iovisor/src/main/yang/iovisor-provider-impl.yang
renderers/ofoverlay/src/main/config/default-config.xml
renderers/ofoverlay/src/main/java/org/opendaylight/controller/config/yang/config/ofoverlay_provider/impl/OFOverlayProviderModule.java
renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/OFOverlayRenderer.java
renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/OfOverlayAug.java
renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/OfOverlayL3NatAug.java
renderers/ofoverlay/src/main/yang/ofoverlay-provider-impl.yang
renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/OFOverlayRendererTest.java

index c80c973a545f53b8cabbba5188a78ce38b3c0dfb..c0804bb2c329a8e61e0f058461f9cc096d5fcfe3 100755 (executable)
           <instructions>
             <Export-Package>
               org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.*,
-              org.opendaylight.controller.config.yang.config.endpoint_provider,
+              org.opendaylight.controller.config.yang.config.groupbasedpolicy.*,
+              org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.groupbasedpolicy.*,
               org.opendaylight.groupbasedpolicy.api.*,
               org.opendaylight.groupbasedpolicy.dto,
-              org.opendaylight.groupbasedpolicy.endpoint,
               org.opendaylight.groupbasedpolicy.util,
             </Export-Package>
           </instructions>
index aae50e1758e53e1694f1b60eddb2be51505e4760..09dc05dfc31b69ad4c8452934af346acbf5c6c43 100755 (executable)
@@ -12,7 +12,7 @@
         <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
             <modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
                 <module>
-                    <type xmlns:groupbasedpolicy="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy:impl">
+                    <type xmlns:groupbasedpolicy="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">
                         groupbasedpolicy:groupbasedpolicy-impl
                     </type>
                     <name>groupbasedpolicy-impl</name>
                     </rpc-registry>
 
                 </module>
+                <module>
+                    <type xmlns:groupbasedpolicy="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">
+                        groupbasedpolicy:policy-validator-registry-impl
+                    </type>
+                    <name>policy-validator-registry</name>
+
+                    <data-broker>
+                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-async-data-broker</type>
+                        <name>binding-data-broker</name>
+                    </data-broker>
+
+                </module>
+                <module>
+                    <type xmlns:groupbasedpolicy="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">
+                        groupbasedpolicy:ep-renderer-augmentation-registry-impl
+                    </type>
+                    <name>ep-renderer-augmentation-registry</name>
+
+                    <data-broker>
+                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-async-data-broker</type>
+                        <name>binding-data-broker</name>
+                    </data-broker>
+
+                    <rpc-registry>
+                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-rpc-registry</type>
+                        <name>binding-rpc-broker</name>
+                    </rpc-registry>
+
+                </module>
             </modules>
+
+            <services xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
+                <service>
+                    <type xmlns:groupbasedpolicy="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">
+                        groupbasedpolicy:policy-validator-registry
+                    </type>
+
+                    <instance>
+                        <name>policy-validator-registry</name>
+                        <provider>/modules/module[type='policy-validator-registry-impl'][name='policy-validator-registry']</provider>
+                    </instance>
+                </service>
+                <service>
+                    <type xmlns:epr="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">
+                        epr:ep-renderer-augmentation-registry
+                    </type>
+
+                    <instance>
+                        <name>ep-renderer-augmentation-registry</name>
+                        <provider>/modules/module[type='ep-renderer-augmentation-registry-impl'][name='ep-renderer-augmentation-registry']</provider>
+                    </instance>
+                </service>
+            </services>
         </data>
 
     </configuration>
 
     <required-capabilities>
-        <capability>urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy:impl?module=groupbasedpolicy-impl&amp;revision=2015-11-06</capability>
+        <capability>urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy?module=groupbasedpolicy-cfg&amp;revision=2015-11-06</capability>
     </required-capabilities>
 
 </snapshot>
diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplModule.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplModule.java
new file mode 100644 (file)
index 0000000..3d99ec4
--- /dev/null
@@ -0,0 +1,30 @@
+package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
+
+import com.google.common.base.Preconditions;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.opendaylight.groupbasedpolicy.endpoint.EndpointRpcRegistry;
+
+public class EpRendererAugmentationRegistryImplModule extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractEpRendererAugmentationRegistryImplModule {
+    public EpRendererAugmentationRegistryImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+        super(identifier, dependencyResolver);
+    }
+
+    public EpRendererAugmentationRegistryImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.groupbasedpolicy.EpRendererAugmentationRegistryImplModule 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() {
+        final DataBroker dataProvider = Preconditions.checkNotNull(getDataBrokerDependency());
+        final RpcProviderRegistry rpcRegistry = Preconditions.checkNotNull(getRpcRegistryDependency());
+
+        return new EndpointRpcRegistry(dataProvider, rpcRegistry);
+    }
+
+}
diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplModuleFactory.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplModuleFactory.java
new file mode 100644 (file)
index 0000000..a6545ea
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+* Generated file
+*
+* Generated from: yang module name: groupbasedpolicy-cfg yang module local name: ep-renderer-augmentation-registry-impl
+* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
+* Generated at: Thu Dec 10 17:52:04 CET 2015
+*
+* Do not modify this file unless it is present under src/main directory
+*/
+package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
+public class EpRendererAugmentationRegistryImplModuleFactory extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractEpRendererAugmentationRegistryImplModuleFactory {
+
+}
@@ -1,45 +1,23 @@
-/*
- * 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.controller.config.yang.config.groupbasedpolicy.impl;
+package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
 
+import com.google.common.base.Preconditions;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
-import org.opendaylight.groupbasedpolicy.endpoint.EndpointRpcRegistry;
-import org.opendaylight.groupbasedpolicy.resolver.FollowedTenantListener;
-import org.opendaylight.groupbasedpolicy.resolver.PolicyResolver;
 import org.opendaylight.groupbasedpolicy.sf.SubjectFeatureDefinitionProvider;
 import org.opendaylight.groupbasedpolicy.sf.SupportedActionDefinitionListener;
 import org.opendaylight.groupbasedpolicy.sf.SupportedClassifierDefinitionListener;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Preconditions;
-
-
-
-public class GroupbasedpolicyModule extends
-        org.opendaylight.controller.config.yang.config.groupbasedpolicy.impl.AbstractGroupbasedpolicyModule {
+public class GroupbasedpolicyModule extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractGroupbasedpolicyModule {
 
     private static final Logger LOG = LoggerFactory.getLogger(GroupbasedpolicyModule.class);
 
-    public GroupbasedpolicyModule(
-            org.opendaylight.controller.config.api.ModuleIdentifier identifier,
-            org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+    public GroupbasedpolicyModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
         super(identifier, dependencyResolver);
     }
 
-    public GroupbasedpolicyModule(
-            org.opendaylight.controller.config.api.ModuleIdentifier identifier,
-            org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
-            org.opendaylight.controller.config.yang.config.groupbasedpolicy.impl.GroupbasedpolicyModule oldModule,
-            java.lang.AutoCloseable oldInstance) {
+    public GroupbasedpolicyModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.groupbasedpolicy.GroupbasedpolicyModule oldModule, java.lang.AutoCloseable oldInstance) {
         super(identifier, dependencyResolver, oldModule, oldInstance);
     }
 
@@ -56,28 +34,19 @@ public class GroupbasedpolicyModule extends
     @Override
     public java.lang.AutoCloseable createInstance() {
         final DataBroker dataProvider = Preconditions.checkNotNull(getDataBrokerDependency());
-        final RpcProviderRegistry rpcRegistry = Preconditions.checkNotNull(getRpcRegistryDependency());
-
         try {
             return new AutoCloseable() {
 
                 SubjectFeatureDefinitionProvider sfdp = new SubjectFeatureDefinitionProvider(dataProvider);
-                EndpointRpcRegistry epRpcRegistry = new EndpointRpcRegistry(dataProvider, rpcRegistry);
                 SupportedClassifierDefinitionListener supportedClassifierDefinitionListener =
                         new SupportedClassifierDefinitionListener(dataProvider);
                 SupportedActionDefinitionListener supportedActionDefinitionListener =
                         new SupportedActionDefinitionListener(dataProvider);
-                PolicyResolver policyResolver = new PolicyResolver(dataProvider);
-                FollowedTenantListener followedTenantListener = new FollowedTenantListener(dataProvider, policyResolver);
-
                 @Override
                 public void close() throws Exception {
                     sfdp.close();
-                    epRpcRegistry.close();
                     supportedClassifierDefinitionListener.close();
                     supportedActionDefinitionListener.close();
-                    policyResolver.close();
-                    followedTenantListener.close();
                 }
             };
         } catch (TransactionCommitFailedException e) {
@@ -86,4 +55,5 @@ public class GroupbasedpolicyModule extends
             throw new RuntimeException(e);
         }
     }
+
 }
@@ -1,13 +1,13 @@
 /*
 * Generated file
 *
-* Generated from: yang module name: groupbasedpolicy-impl yang module local name: groupbasedpolicy-impl
+* Generated from: yang module name: groupbasedpolicy-cfg yang module local name: groupbasedpolicy-impl
 * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
-* Generated at: Fri Nov 06 13:54:27 CET 2015
+* Generated at: Thu Dec 10 17:52:04 CET 2015
 *
 * Do not modify this file unless it is present under src/main directory
 */
-package org.opendaylight.controller.config.yang.config.groupbasedpolicy.impl;
-public class GroupbasedpolicyModuleFactory extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.impl.AbstractGroupbasedpolicyModuleFactory {
+package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
+public class GroupbasedpolicyModuleFactory extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractGroupbasedpolicyModuleFactory {
 
 }
diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryModule.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryModule.java
new file mode 100644 (file)
index 0000000..fc8b92d
--- /dev/null
@@ -0,0 +1,28 @@
+package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
+
+import com.google.common.base.Preconditions;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.groupbasedpolicy.resolver.PolicyResolver;
+
+public class PolicyValidatorRegistryModule extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractPolicyValidatorRegistryModule {
+    public PolicyValidatorRegistryModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+        super(identifier, dependencyResolver);
+    }
+
+    public PolicyValidatorRegistryModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.groupbasedpolicy.PolicyValidatorRegistryModule 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() {
+        final DataBroker dataProvider = Preconditions.checkNotNull(getDataBrokerDependency());
+
+        return new PolicyResolver(dataProvider);
+    }
+
+}
diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryModuleFactory.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryModuleFactory.java
new file mode 100644 (file)
index 0000000..3b11bd1
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+* Generated file
+*
+* Generated from: yang module name: groupbasedpolicy-cfg yang module local name: policy-validator-registry-impl
+* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
+* Generated at: Thu Dec 10 17:52:04 CET 2015
+*
+* Do not modify this file unless it is present under src/main directory
+*/
+package org.opendaylight.controller.config.yang.config.groupbasedpolicy;
+public class PolicyValidatorRegistryModuleFactory extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractPolicyValidatorRegistryModuleFactory {
+
+}
similarity index 94%
rename from groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/EpRendererAugmentationRegistrar.java
rename to groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/EpRendererAugmentationRegistry.java
index c3530ce428e90b456595a684eed3690339d266d9..be838a3f6b4a7d8bb3f4b7db73b47ee94fb9e3df 100644 (file)
@@ -8,7 +8,7 @@
 
 package org.opendaylight.groupbasedpolicy.api;
 
-public interface EpRendererAugmentationRegistrar {
+public interface EpRendererAugmentationRegistry {
 
     /**
      * Registers renderer's endpoint augmentation.
similarity index 98%
rename from groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/PolicyValidatorRegistrar.java
rename to groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/PolicyValidatorRegistry.java
index dfffe21b3a0f52f89d3f350eae8bcd069a8622fb..2fb2d4aab85c5ac50c5e2088117141009afc975c 100644 (file)
@@ -13,7 +13,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance;
 
-public interface PolicyValidatorRegistrar {
+public interface PolicyValidatorRegistry {
 
     /**
      * Registers validator of {@link ActionInstance} for {@link ActionDefinitionId}.
index 2b76df033f676a2bc69ea4d368e55a4e01ca1567..b27e9b80df53638983e5a43f346415a2459ea0b3 100644 (file)
@@ -21,6 +21,7 @@ import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFaile
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
 import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentation;
+import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.EndpointService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.Endpoints;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.EndpointsBuilder;
@@ -63,7 +64,7 @@ import com.google.common.util.concurrent.ListenableFuture;
  * Endpoint registry provides a scalable store for accessing and updating
  * information about endpoints.
  */
-public class EndpointRpcRegistry implements EndpointService, AutoCloseable {
+public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentationRegistry, AutoCloseable {
     private static final Logger LOG =
             LoggerFactory.getLogger(EndpointRpcRegistry.class);
 
@@ -83,7 +84,8 @@ public class EndpointRpcRegistry implements EndpointService, AutoCloseable {
      *            - specific implementation RPC augmentation, if any. Otherwise
      *            NULL
      */
-    public static void register(EpRendererAugmentation epRendererAugmentation) {
+    @Override
+    public void register(EpRendererAugmentation epRendererAugmentation) {
         if (epRendererAugmentation != null) {
             registeredRenderers.putIfAbsent(epRendererAugmentation.getClass().getName(), epRendererAugmentation);
             LOG.info("Registered {}", epRendererAugmentation.getClass().getName());
@@ -93,9 +95,9 @@ public class EndpointRpcRegistry implements EndpointService, AutoCloseable {
     /**
      *
      * @param regImp the endpoint augmentation
-     * @throws Exception
      */
-    public static void unregister(EpRendererAugmentation regImp) throws Exception {
+    @Override
+    public void unregister(EpRendererAugmentation regImp) {
         if (regImp == null || !registeredRenderers.containsKey(regImp.getClass().getName())) {
             return;
         }
index 573bf024c09e7cac0c1c74d5360dc8be4aac1bef..c003649d1141f6e66f349d4b752600c09318c3ec 100755 (executable)
@@ -25,7 +25,7 @@ import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistrar;
+import org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry;
 import org.opendaylight.groupbasedpolicy.api.ValidationResult;
 import org.opendaylight.groupbasedpolicy.api.Validator;
 import org.opendaylight.groupbasedpolicy.dto.EgKey;
@@ -78,23 +78,27 @@ import com.google.common.util.concurrent.ListenableFuture;
  * been registered.
  *
  */
-public class PolicyResolver implements PolicyValidatorRegistrar, AutoCloseable {
+public class PolicyResolver implements PolicyValidatorRegistry, AutoCloseable {
 
     private static final Logger LOG = LoggerFactory.getLogger(PolicyResolver.class);
 
     private final DataBroker dataProvider;
 
-    protected ConcurrentMap<TenantId, TenantContext> resolvedTenants;
+    private final FollowedTenantListener followedTenantListener;
+
+
+    protected final ConcurrentMap<TenantId, TenantContext> resolvedTenants;
 
     /*
      * Store validators for ActionDefinitions from Renderers
      *
      */
-    protected SetMultimap<ActionDefinitionId, Validator<ActionInstance>> actionInstanceValidatorsByDefinition = Multimaps.synchronizedSetMultimap(HashMultimap.<ActionDefinitionId, Validator<ActionInstance>>create());
-    protected SetMultimap<ClassifierDefinitionId, Validator<ClassifierInstance>> classifierInstanceValidatorsByDefinition = Multimaps.synchronizedSetMultimap(HashMultimap.<ClassifierDefinitionId, Validator<ClassifierInstance>>create());
+    private SetMultimap<ActionDefinitionId, Validator<ActionInstance>> actionInstanceValidatorsByDefinition = Multimaps.synchronizedSetMultimap(HashMultimap.<ActionDefinitionId, Validator<ActionInstance>>create());
+    private SetMultimap<ClassifierDefinitionId, Validator<ClassifierInstance>> classifierInstanceValidatorsByDefinition = Multimaps.synchronizedSetMultimap(HashMultimap.<ClassifierDefinitionId, Validator<ClassifierInstance>>create());
 
     public PolicyResolver(DataBroker dataProvider) {
         this.dataProvider = dataProvider;
+        followedTenantListener = new FollowedTenantListener(dataProvider, this);
         resolvedTenants = new ConcurrentHashMap<>();
         LOG.debug("Initialized renderer common policy resolver");
     }
@@ -109,6 +113,9 @@ public class PolicyResolver implements PolicyValidatorRegistrar, AutoCloseable {
                 ctx.registration.close();
             }
         }
+        if (followedTenantListener != null) {
+            followedTenantListener.close();
+        }
     }
 
     // *************************
@@ -264,7 +271,7 @@ public class PolicyResolver implements PolicyValidatorRegistrar, AutoCloseable {
         });
     }
 
-    protected void updatePolicy() {
+    private void updatePolicy() {
         try {
             Set<IndexedTenant> indexedTenants = getIndexedTenants(resolvedTenants.values());
             Table<EgKey, EgKey, Policy> policyMap = PolicyResolverUtils.resolvePolicy(indexedTenants);
@@ -353,9 +360,9 @@ public class PolicyResolver implements PolicyValidatorRegistrar, AutoCloseable {
         return true;
     }
 
-    protected static class TenantContext {
+    static class TenantContext {
 
-        ListenerRegistration<DataChangeListener> registration;
+        final ListenerRegistration<DataChangeListener> registration;
 
         AtomicReference<IndexedTenant> tenant = new AtomicReference<>();
 
diff --git a/groupbasedpolicy/src/main/yang/groupbasedpolicy-cfg.yang b/groupbasedpolicy/src/main/yang/groupbasedpolicy-cfg.yang
new file mode 100644 (file)
index 0000000..59131ae
--- /dev/null
@@ -0,0 +1,122 @@
+/*
+ * 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
+ */
+
+module groupbasedpolicy-cfg {
+    yang-version 1;
+    namespace "urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy";
+    prefix "groupbasedpolicy-cfg";
+
+    import config { prefix config; revision-date 2013-04-05; }
+    import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28; }
+
+    description
+        "This module contains the base YANG definitions for
+          groupbasedpolicy impl implementation.";
+
+    revision "2015-11-06" {
+        description
+            "Initial revision.";
+    }
+
+    identity ep-renderer-augmentation-registry {
+        description
+            "ep-renderer-augmentation-registry service definition";
+
+        base "config:service-type";
+        config:java-class "org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry";
+    }
+
+    identity policy-validator-registry {
+        description
+            "policy-validator-registry service definition";
+
+        base "config:service-type";
+        config:java-class "org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry";
+    }
+
+    identity policy-validator-registry-impl {
+        base "config:module-type";
+
+        config:provided-service policy-validator-registry;
+        config:java-name-prefix PolicyValidatorRegistry;
+    }
+
+    identity ep-renderer-augmentation-registry-impl {
+        base "config:module-type";
+
+        config:provided-service ep-renderer-augmentation-registry;
+        config:java-name-prefix EpRendererAugmentationRegistryImpl;
+    }
+
+    identity groupbasedpolicy-impl {
+        base "config:module-type";
+
+        config:java-name-prefix Groupbasedpolicy;
+    }
+
+    // Augments the 'configuration' choice node under modules/module.
+    augment "/config:modules/config:module/config:configuration" {
+        case groupbasedpolicy-impl {
+            when "/config:modules/config:module/config:type = 'groupbasedpolicy-impl'";
+
+            //wires in the data-broker service
+            container data-broker {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity mdsal:binding-async-data-broker;
+                    }
+                }
+            }
+            //RPC Registry
+            container rpc-registry {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity mdsal:binding-rpc-registry;
+                    }
+                }
+            }
+        }
+        case policy-validator-registry-impl {
+            when "/config:modules/config:module/config:type = 'policy-validator-registry-impl'";
+
+            //wires in the data-broker service
+            container data-broker {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity mdsal:binding-async-data-broker;
+                    }
+                }
+            }
+        }
+        case ep-renderer-augmentation-registry-impl {
+            when "/config:modules/config:module/config:type = 'ep-renderer-augmentation-registry-impl'";
+
+            //wires in the data-broker service
+            container data-broker {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity mdsal:binding-async-data-broker;
+                    }
+                }
+            }
+            //RPC Registry
+            container rpc-registry {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity mdsal:binding-rpc-registry;
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/groupbasedpolicy/src/main/yang/groupbasedpolicy-impl.yang b/groupbasedpolicy/src/main/yang/groupbasedpolicy-impl.yang
deleted file mode 100755 (executable)
index 807b677..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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
- */
-
-module groupbasedpolicy-impl {
-    yang-version 1;
-    namespace "urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy:impl";
-    prefix "groupbasedpolicy-impl";
-
-    import config { prefix config; revision-date 2013-04-05; }
-    import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28; }
-
-    description
-        "This module contains the base YANG definitions for
-          groupbasedpolicy impl implementation.";
-
-    revision "2015-11-06" {
-        description
-            "Initial revision.";
-    }
-
-    identity groupbasedpolicy-impl {
-        base "config:module-type";
-
-        config:java-name-prefix Groupbasedpolicy;
-    }
-
-    // Augments the 'configuration' choice node under modules/module.
-    augment "/config:modules/config:module/config:configuration" {
-        case groupbasedpolicy-impl {
-            when "/config:modules/config:module/config:type = 'groupbasedpolicy-impl'";
-
-            //wires in the data-broker service
-            container data-broker {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity mdsal:binding-async-data-broker;
-                    }
-                }
-            }
-            //RPC Registry
-            container rpc-registry {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity mdsal:binding-rpc-registry;
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/groupbasedpolicy/src/main/yang/model/endpoint-provider.yang b/groupbasedpolicy/src/main/yang/model/endpoint-provider.yang
deleted file mode 100644 (file)
index 42ff57d..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2014 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 endpoint-provider {
-     yang-version 1;
-     namespace "urn:opendaylight:params:xml:ns:yang:controller:config:endpoint-provider";
-     prefix "endpoint-provider";
-
-     import config { prefix config; revision-date 2013-04-05; }
-
-     description
-         "This module contains the base YANG definitions for
-          endpoint-provider services.";
-
-     revision "2014-04-21" {
-         description
-             "Initial revision.";
-     }
-
-     identity endpoint-provider {
-        base "config:service-type";
-        config:java-class "org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.EndpointData";
-    }
- }
diff --git a/groupbasedpolicy/src/main/yang/model/policy-provider.yang b/groupbasedpolicy/src/main/yang/model/policy-provider.yang
deleted file mode 100644 (file)
index ea65b19..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2014 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 policy-provider {
-     yang-version 1;
-     namespace "urn:opendaylight:params:xml:ns:yang:controller:config:policy-provider";
-     prefix "policy-provider";
-
-     import config { prefix config; revision-date 2013-04-05; }
-
-     description
-         "This module contains the base YANG definitions for
-          policy-provider services.";
-
-     revision "2014-04-21" {
-         description
-             "Initial revision.";
-     }
-
-     identity policy-provider {
-        base "config:service-type";
-        config:java-class "org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.PolicyData";
-    }
- }
index a80182980360a27466e6613f824b0bbaa109f28a..fd4760a5dd755f66b3590a77b4241324f607be82 100644 (file)
@@ -84,17 +84,17 @@ public class EndPointRpcRegistryTest {
     public void registerTest() throws Exception {
         verify(rpcRegistry).addRpcImplementation(any(Class.class), any(RpcService.class));
         verify(t).put(any(LogicalDatastoreType.class), any(InstanceIdentifier.class), any(Endpoints.class));
-        EndpointRpcRegistry.register(epRendererAugmentation);
+        endpointRpcRegistry.register(epRendererAugmentation);
         Assert.assertEquals(1, EndpointRpcRegistry.registeredRenderers.size());
 
-        EndpointRpcRegistry.unregister(epRendererAugmentation);
+        endpointRpcRegistry.unregister(epRendererAugmentation);
         Assert.assertEquals(0, EndpointRpcRegistry.registeredRenderers.size());
     }
 
     @Test
     public void registerTestSafelyFail() {
-        EndpointRpcRegistry.register(epRendererAugmentation);
-        EndpointRpcRegistry.register(null);
+        endpointRpcRegistry.register(epRendererAugmentation);
+        endpointRpcRegistry.register(null);
         Assert.assertEquals(1, EndpointRpcRegistry.registeredRenderers.size());
     }
 
index a9e4f6e28b5c3c001c16c646a633007df3947c36..3bbb7cd1edf4f3b9dad70845e6a09e51d1d0f789 100644 (file)
@@ -49,8 +49,6 @@ public class PolicyResolverTest {
                 unresolved);
 
         policyResolver = spy(new PolicyResolver(dataProvider));
-        resolver = new PolicyResolver(null);
-
     }
 
     @Test
index 16a4a75f7c3cf08d51b052cb93c6c8d8875f96bd..6d42b28d6e37bc302b41c10add76a16ee1a99afe 100644 (file)
                     </type>
                     <name>iovisor-provider-impl</name>
 
-                    <rpc-registry>
-                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-rpc-registry</type>
-                        <name>binding-rpc-broker</name>
-                    </rpc-registry>
-
                     <data-broker>
                       <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-async-data-broker</type>
                       <name>binding-data-broker</name>
                     </data-broker>
 
+                    <ep-renderer-augmentation-registry>
+                        <type xmlns:epr="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">epr:ep-renderer-augmentation-registry</type>
+                        <name>ep-renderer-augmentation-registry</name>
+                    </ep-renderer-augmentation-registry>
+
                 </module>
             </modules>
         </data>
index 22dd64b2669df9a725ce6e1c3ce2a49dc4e59c09..c06a951e9a3c97824e30e1154e73d52698458de1 100644 (file)
@@ -18,6 +18,7 @@ public class IovisorProviderModule extends org.opendaylight.controller.config.ya
 
     @Override
     public java.lang.AutoCloseable createInstance() {
-        return  new IovisorRenderer(getDataBrokerDependency(), getRpcRegistryDependency());
+        return  new IovisorRenderer(getDataBrokerDependency(),
+                                    getEpRendererAugmentationRegistryDependency());
     }
 }
index abc933d018e33d4e20a8a634fa9f04b6785ecc68..d67b13d842cc6cf5b6cfd23b4816e68ef7d79512 100644 (file)
@@ -9,7 +9,7 @@
 package org.opendaylight.groupbasedpolicy.renderer.iovisor;
 
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry;
 import org.opendaylight.groupbasedpolicy.renderer.iovisor.endpoint.EndpointManager;
 import org.opendaylight.groupbasedpolicy.renderer.iovisor.module.IovisorModuleManager;
 import org.slf4j.Logger;
@@ -25,9 +25,10 @@ public class IovisorRenderer implements AutoCloseable {
     private EndpointManager endPointManager;
     private IovisorModuleManager iovisorModuleManager;
 
-    public IovisorRenderer(DataBroker dataBroker, RpcProviderRegistry rpcProviderRegistry) {
+    public IovisorRenderer(DataBroker dataBroker,
+                           EpRendererAugmentationRegistry epRendererAugmentationRegistry) {
         LOG.info("IOVisor Renderer has Started");
-        this.endPointManager = new EndpointManager(dataBroker, rpcProviderRegistry);
+        this.endPointManager = new EndpointManager(dataBroker, epRendererAugmentationRegistry);
         this.iovisorModuleManager = new IovisorModuleManager(dataBroker);
     }
 
index 311ecff1e1b9f41e5b5b2fddb68125489a5eaaf7..d0f19636db08cca73fe8c8df18a14daca5fa7580 100644 (file)
@@ -11,9 +11,8 @@ package org.opendaylight.groupbasedpolicy.renderer.iovisor.endpoint;
 import java.util.Map.Entry;
 
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
 import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentation;
-import org.opendaylight.groupbasedpolicy.endpoint.EndpointRpcRegistry;
+import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterEndpointInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterL3PrefixEndpointInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint;
@@ -29,18 +28,18 @@ public class EndpointManager implements EpRendererAugmentation, AutoCloseable {
 
     private static final Logger LOG = LoggerFactory.getLogger(EndpointManager.class);
 
-    private EndpointRpcRegistry endpointRpcRegistry;
     private EndpointListener endpointListener;
+    private EpRendererAugmentationRegistry epRendererAugmentationRegistry;
 
-    public EndpointManager(DataBroker dataBroker, RpcProviderRegistry rpcProviderRegistry) {
+    public EndpointManager(DataBroker dataBroker,
+                           EpRendererAugmentationRegistry epRendererAugmentationRegistry) {
         LOG.info("Initialized IOVisor EndpointManager");
         Preconditions.checkNotNull(dataBroker, "DataBroker instance must not be null");
-        Preconditions.checkNotNull(rpcProviderRegistry, "RpcProviderRegistry instance must not be null");
 
-        this.endpointRpcRegistry = new EndpointRpcRegistry(dataBroker, rpcProviderRegistry);
+        this.epRendererAugmentationRegistry = epRendererAugmentationRegistry;
         this.endpointListener = new EndpointListener(dataBroker);
 
-        EndpointRpcRegistry.register(this);
+        epRendererAugmentationRegistry.register(this);
     }
 
     @Override
@@ -48,10 +47,7 @@ public class EndpointManager implements EpRendererAugmentation, AutoCloseable {
         if (endpointListener != null) {
             endpointListener.close();
         }
-        if (endpointRpcRegistry != null) {
-            endpointRpcRegistry.close();
-        }
-        EndpointRpcRegistry.unregister(this);
+        epRendererAugmentationRegistry.unregister(this);
     }
 
     @Override
index 3df9a8d32f88fb1b6651d23471986cc5161e048a..4c217fa8b9436219d417578e58a6d865e5e1a3ce 100644 (file)
@@ -14,6 +14,7 @@ module iovisor-provider-impl {
     import config { prefix config; revision-date 2013-04-05; }
     import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28; }
     import opendaylight-sal-binding-broker-impl { prefix sal-broker; revision-date 2013-10-28; }
+    import groupbasedpolicy-cfg { prefix gbpcfg; revision-date 2015-11-06; }
 
     description
         "This module contains the base YANG definitions for iovisor-provider
@@ -35,7 +36,7 @@ module iovisor-provider-impl {
         case iovisor-provider-impl {
             when "/config:modules/config:module/config:type = 'iovisor-provider-impl'";
 
-            //wires in the data-broker service 
+            // Wires in the data-broker service
             container data-broker {
                 uses config:service-ref {
                     refine type {
@@ -44,12 +45,12 @@ module iovisor-provider-impl {
                     }
                 }
             }
-            // RPC Registry
-            container rpc-registry {
+            // EpRendererAugmentationRegistrar service
+            container ep-renderer-augmentation-registry {
                 uses config:service-ref {
                     refine type {
                         mandatory true;
-                        config:required-identity mdsal:binding-rpc-registry;
+                        config:required-identity gbpcfg:ep-renderer-augmentation-registry;
                     }
                 }
             }
index 71c99019adc60cc45525d89385826ac1f2596d73..d44dafaadd7d14e1346e5acfa0a80327f0fe481a 100644 (file)
                         <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:impl">binding:binding-new-notification-service</type>
                         <name>binding-notification-adapter</name>
                     </notification-adapter>
+
+                    <ep-renderer-augmentation-registry>
+                        <type xmlns:epr="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">epr:ep-renderer-augmentation-registry</type>
+                        <name>ep-renderer-augmentation-registry</name>
+                    </ep-renderer-augmentation-registry>
+
                     <gbp-ofoverlay-table-offset>0</gbp-ofoverlay-table-offset>
                 </module>
             </modules>
index 571b1a1d6494ac8b63de81e56a85fef0c904dfe7..21d26dca2776f8a89857f0136d6eda8db63e6c6e 100644 (file)
@@ -28,6 +28,7 @@ public class OFOverlayProviderModule extends org.opendaylight.controller.config.
         return new OFOverlayRenderer(getDataBrokerDependency(),
                                      getRpcRegistryDependency(),
                                      getNotificationAdapterDependency(),
+                                     getEpRendererAugmentationRegistryDependency(),
                                      getGbpOfoverlayTableOffset().shortValue());
     }
 
index 9c41ce9210bf34c4467f13184f4e9740182a1af4..7816d146c1348406e19e19d5b3b6e63b0fe52fd1 100644 (file)
@@ -26,6 +26,7 @@ import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataCh
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry;
 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint.EndpointManager;
 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint.OfOverlayAug;
 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint.OfOverlayL3NatAug;
@@ -49,7 +50,6 @@ import com.google.common.util.concurrent.ListenableFuture;
 /**
  * Renderer that uses OpenFlow and OVSDB to implement an overlay network
  * using Open vSwitch.
-
  */
 public class OFOverlayRenderer implements AutoCloseable, DataChangeListener {
     private static final Logger LOG =
@@ -75,17 +75,17 @@ public class OFOverlayRenderer implements AutoCloseable, DataChangeListener {
     public OFOverlayRenderer(final DataBroker dataProvider,
                              RpcProviderRegistry rpcRegistry,
                              NotificationService notificationService,
+                             EpRendererAugmentationRegistry epRendererAugmentationRegistry,
                              final short tableOffset) {
         super();
         this.dataBroker = dataProvider;
-
         int numCPU = Runtime.getRuntime().availableProcessors();
         //TODO: Consider moving to groupbasedpolicy-ofoverlay-config so as to be user configurable in distribution.
         executor = Executors.newScheduledThreadPool(numCPU * 2);
 
         switchManager = new SwitchManager(dataProvider);
         endpointManager = new EndpointManager(dataProvider, rpcRegistry, notificationService,
-                                              executor, switchManager);
+                executor, switchManager);
 
         classifierDefinitionListener = new ClassifierDefinitionListener(dataBroker);
         actionDefinitionListener = new ActionDefinitionListener(dataProvider);
@@ -93,23 +93,23 @@ public class OFOverlayRenderer implements AutoCloseable, DataChangeListener {
         // TODO we need register action/classifier validators to gpb-base
 
         policyManager = new PolicyManager(dataProvider,
-                                          switchManager,
-                                          endpointManager,
-                                          rpcRegistry,
-                                          executor,
-                                          tableOffset);
-        ofOverlayAug = new OfOverlayAug(dataProvider);
-        ofOverlayL3NatAug = new OfOverlayL3NatAug();
-            Optional<OfOverlayConfig> config = readConfig();
-            OfOverlayConfigBuilder configBuilder = new OfOverlayConfigBuilder();
-            if (config.isPresent()) {
-                configBuilder = new OfOverlayConfigBuilder(config.get());
-            }
-            registerConfigListener(dataProvider);
-            if (configBuilder.getGbpOfoverlayTableOffset() == null) {
-                configBuilder.setGbpOfoverlayTableOffset(tableOffset).build();
-                writeTableOffset(configBuilder.build());
-            }
+                switchManager,
+                endpointManager,
+                rpcRegistry,
+                executor,
+                tableOffset);
+        ofOverlayAug = new OfOverlayAug(dataProvider, epRendererAugmentationRegistry);
+        ofOverlayL3NatAug = new OfOverlayL3NatAug(epRendererAugmentationRegistry);
+        Optional<OfOverlayConfig> config = readConfig();
+        OfOverlayConfigBuilder configBuilder = new OfOverlayConfigBuilder();
+        if (config.isPresent()) {
+            configBuilder = new OfOverlayConfigBuilder(config.get());
+        }
+        registerConfigListener(dataProvider);
+        if (configBuilder.getGbpOfoverlayTableOffset() == null) {
+            configBuilder.setGbpOfoverlayTableOffset(tableOffset).build();
+            writeTableOffset(configBuilder.build());
+        }
     }
 
     // *************
@@ -163,17 +163,17 @@ public class OFOverlayRenderer implements AutoCloseable, DataChangeListener {
     private void registerConfigListener(DataBroker dataProvider) {
         configReg =
                 dataProvider.registerDataChangeListener(LogicalDatastoreType.CONFIGURATION,
-                                                        configIid,
-                                                        this,
-                                                        DataChangeScope.SUBTREE);
+                        configIid,
+                        this,
+                        DataChangeScope.SUBTREE);
     }
 
     private Optional<OfOverlayConfig> readConfig() {
         final ReadOnlyTransaction rTx = dataBroker.newReadOnlyTransaction();
         Optional<OfOverlayConfig> config =
                 DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
-                                           configIid,
-                                           rTx);
+                        configIid,
+                        rTx);
         rTx.close();
         return config;
     }
index 4839b4a4405bdc75709acae7c10e8e1b1537cfc2..ac3d237ab00d0a0a220f8b0210c7df9b37220f7b 100644 (file)
@@ -8,14 +8,12 @@
 
 package org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint;
 
-import java.util.AbstractMap.SimpleImmutableEntry;
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-
+import com.google.common.base.Optional;
+import com.google.common.base.Preconditions;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentation;
-import org.opendaylight.groupbasedpolicy.endpoint.EndpointRpcRegistry;
+import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterEndpointInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterL3PrefixEndpointInput;
@@ -35,8 +33,9 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
+import java.util.AbstractMap.SimpleImmutableEntry;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
 
 public class OfOverlayAug implements EpRendererAugmentation, AutoCloseable {
 
@@ -44,11 +43,14 @@ public class OfOverlayAug implements EpRendererAugmentation, AutoCloseable {
 
     private static final Logger LOG = LoggerFactory.getLogger(OfOverlayAug.class);
     private final DataBroker dataProvider;
+    private EpRendererAugmentationRegistry epRendererAugmentationRegistry;
+
 
-    public OfOverlayAug(DataBroker dataProvider) {
+    public OfOverlayAug(DataBroker dataProvider, EpRendererAugmentationRegistry epRendererAugmentationRegistry) {
         this.dataProvider = dataProvider;
 
-        EndpointRpcRegistry.register(this);
+        this.epRendererAugmentationRegistry = epRendererAugmentationRegistry;
+        epRendererAugmentationRegistry.register(this);
     }
 
     @Override
@@ -142,7 +144,7 @@ public class OfOverlayAug implements EpRendererAugmentation, AutoCloseable {
 
     @Override
     public void close() throws Exception {
-        EndpointRpcRegistry.unregister(this);
+        epRendererAugmentationRegistry.unregister(this);
     }
 
     /**
index f8fa3292b68d3ccb1a5026c39f2fc7e6c1912198..4fc95da3e0102daa12a2aeb48f248bfce22e8df7 100644 (file)
@@ -12,7 +12,7 @@ import java.util.AbstractMap.SimpleImmutableEntry;
 import java.util.Map;
 
 import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentation;
-import org.opendaylight.groupbasedpolicy.endpoint.EndpointRpcRegistry;
+import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterEndpointInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterL3PrefixEndpointInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint;
@@ -25,8 +25,11 @@ import org.opendaylight.yangtools.yang.binding.Augmentation;
 
 public class OfOverlayL3NatAug implements EpRendererAugmentation, AutoCloseable {
 
-    public OfOverlayL3NatAug() {
-        EndpointRpcRegistry.register(this);
+    private EpRendererAugmentationRegistry epRendererAugmentationRegistry;
+
+    public OfOverlayL3NatAug(EpRendererAugmentationRegistry epRendererAugmentationRegistry) {
+        this.epRendererAugmentationRegistry = epRendererAugmentationRegistry;
+        this.epRendererAugmentationRegistry.register(this);
     }
 
     @Override
@@ -55,6 +58,6 @@ public class OfOverlayL3NatAug implements EpRendererAugmentation, AutoCloseable
 
     @Override
     public void close() throws Exception {
-        EndpointRpcRegistry.unregister(this);
+        this.epRendererAugmentationRegistry.unregister(this);
     }
 }
index 6d6baccf2e5d90d4fe30a8191267febb09c6f3f7..48ad7a3c22816356014079e5285aff00400f1ccd 100644 (file)
@@ -16,6 +16,7 @@ module ofoverlay-provider-impl {
     import ietf-yang-types { prefix "yang"; revision-date 2010-09-24; }
     import opendaylight-sal-binding-broker-impl { prefix sal-broker; revision-date 2013-10-28;}
     import ofoverlay { prefix ofoverlay; revision-date 2014-05-28; }
+    import groupbasedpolicy-cfg { prefix gbpcfg; revision-date 2015-11-06; }
 
     description
         "This module contains the base YANG definitions for
@@ -37,7 +38,7 @@ module ofoverlay-provider-impl {
         case ofoverlay-provider-impl {
             when "/config:modules/config:module/config:type = 'ofoverlay-provider-impl'";
 
-            //wires in the data-broker service 
+            // Wires in the data-broker service
             container data-broker {
                 uses config:service-ref {
                     refine type {
@@ -64,6 +65,15 @@ module ofoverlay-provider-impl {
                     }
                 }
             }
+            // EpRendererAugmentationRegistry service
+            container ep-renderer-augmentation-registry {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity gbpcfg:ep-renderer-augmentation-registry;
+                    }
+                }
+            }
 
             uses ofoverlay:initial-values;
         }
index d22c727b004cca4c947d432966292184c266708f..ada4fe6ddc059ab30ce00cddd740c62cd42fcae3 100644 (file)
@@ -28,6 +28,7 @@ import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.opendaylight.groupbasedpolicy.endpoint.EndpointRpcRegistry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayConfig;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -42,6 +43,7 @@ public class OFOverlayRendererTest {
 
     private DataBroker dataProvider;
     private RpcProviderRegistry rpcRegistry;
+    private EndpointRpcRegistry endpointRpcRegistry;
     private NotificationService notificationService;
     private short tableOffset;
     private CheckedFuture<Optional<OfOverlayConfig>, ReadFailedException> future;
@@ -54,6 +56,7 @@ public class OFOverlayRendererTest {
         dataProvider = mock(DataBroker.class);
         rpcRegistry = mock(RpcProviderRegistry.class);
         notificationService = mock(NotificationService.class);
+        endpointRpcRegistry = mock(EndpointRpcRegistry.class);
         tableOffset = 5;
         configReg = mock(ListenerRegistration.class);
         when(
@@ -69,7 +72,7 @@ public class OFOverlayRendererTest {
         when(dataProvider.newReadOnlyTransaction()).thenReturn(readTransaction);
         future = Futures.immediateCheckedFuture(Optional.<OfOverlayConfig> absent());
         when(readTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(future);
-        renderer = new OFOverlayRenderer(dataProvider, rpcRegistry, notificationService, tableOffset);
+        renderer = new OFOverlayRenderer(dataProvider, rpcRegistry, notificationService, endpointRpcRegistry, tableOffset);
     }
 
     @Test