registration of action validators for to gbp-base 00/31200/3
authorMichal Cmarada <mcmarada@cisco.com>
Fri, 11 Dec 2015 15:15:43 +0000 (16:15 +0100)
committerKeith Burns <alagalah@gmail.com>
Wed, 16 Dec 2015 22:47:43 +0000 (22:47 +0000)
Change-Id: I062305d5c22493eb1d0040244f09134129723947
Signed-off-by: Michal Cmarada <mcmarada@cisco.com>
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/yang/ofoverlay-provider-impl.yang
renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/OFOverlayRendererTest.java

index d44dafaadd7d14e1346e5acfa0a80327f0fe481a..a57290896799d179fbc16d0fe855ef6f2b176b59 100644 (file)
                     </notification-adapter>
 
                     <ep-renderer-augmentation-registry>
-                        <type xmlns:epr="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">epr:ep-renderer-augmentation-registry</type>
+                        <type xmlns:gbp="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">gbp:ep-renderer-augmentation-registry</type>
                         <name>ep-renderer-augmentation-registry</name>
                     </ep-renderer-augmentation-registry>
 
+                    <policy-validator-registry>
+                        <type xmlns:gbp="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">gbp:policy-validator-registry</type>
+                        <name>policy-validator-registry</name>
+                    </policy-validator-registry>
+
                     <gbp-ofoverlay-table-offset>0</gbp-ofoverlay-table-offset>
                 </module>
             </modules>
index 21d26dca2776f8a89857f0136d6eda8db63e6c6e..edef3bf9ec6ae52e9a46226e83a7689d9b0c538a 100644 (file)
@@ -29,6 +29,7 @@ public class OFOverlayProviderModule extends org.opendaylight.controller.config.
                                      getRpcRegistryDependency(),
                                      getNotificationAdapterDependency(),
                                      getEpRendererAugmentationRegistryDependency(),
+                                     getPolicyValidatorRegistryDependency(),
                                      getGbpOfoverlayTableOffset().shortValue());
     }
 
index 7816d146c1348406e19e19d5b3b6e63b0fe52fd1..6329432ee10eefd82026cae67fd1d3bc683fc2ab 100644 (file)
@@ -27,13 +27,17 @@ 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.api.PolicyValidatorRegistry;
 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint.EndpointManager;
 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint.OfOverlayAug;
 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint.OfOverlayL3NatAug;
 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.node.SwitchManager;
+import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sf.Action;
 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sf.ActionDefinitionListener;
 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sf.ClassifierDefinitionListener;
+import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sf.SubjectFeatures;
 import org.opendaylight.groupbasedpolicy.util.DataStoreHelper;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionDefinitionId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayConfigBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.RendererName;
@@ -76,6 +80,7 @@ public class OFOverlayRenderer implements AutoCloseable, DataChangeListener {
                              RpcProviderRegistry rpcRegistry,
                              NotificationService notificationService,
                              EpRendererAugmentationRegistry epRendererAugmentationRegistry,
+                             PolicyValidatorRegistry policyValidatorRegistry,
                              final short tableOffset) {
         super();
         this.dataBroker = dataProvider;
@@ -90,7 +95,9 @@ public class OFOverlayRenderer implements AutoCloseable, DataChangeListener {
         classifierDefinitionListener = new ClassifierDefinitionListener(dataBroker);
         actionDefinitionListener = new ActionDefinitionListener(dataProvider);
 
-        // TODO we need register action/classifier validators to gpb-base
+        for (Entry<ActionDefinitionId, Action> entry : SubjectFeatures.getActions().entrySet()) {
+            policyValidatorRegistry.register(entry.getKey(), entry.getValue());
+        }
 
         policyManager = new PolicyManager(dataProvider,
                 switchManager,
index 48ad7a3c22816356014079e5285aff00400f1ccd..2c1835e1e68339a31a1d9395c07b0a5b1676526f 100644 (file)
@@ -74,6 +74,15 @@ module ofoverlay-provider-impl {
                     }
                 }
             }
+            // PolicyProviderRegistry service
+            container policy-validator-registry {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity gbpcfg:policy-validator-registry;
+                    }
+                }
+            }
 
             uses ofoverlay:initial-values;
         }
index ada4fe6ddc059ab30ce00cddd740c62cd42fcae3..7fea1d79ae3b45cee0a6cf43e8ede5ace4a5d9eb 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.api.PolicyValidatorRegistry;
 import org.opendaylight.groupbasedpolicy.endpoint.EndpointRpcRegistry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayConfig;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
@@ -45,6 +46,7 @@ public class OFOverlayRendererTest {
     private RpcProviderRegistry rpcRegistry;
     private EndpointRpcRegistry endpointRpcRegistry;
     private NotificationService notificationService;
+    private PolicyValidatorRegistry policyValidatorRegistry;
     private short tableOffset;
     private CheckedFuture<Optional<OfOverlayConfig>, ReadFailedException> future;
     private ListenerRegistration<DataChangeListener> configReg;
@@ -55,8 +57,9 @@ public class OFOverlayRendererTest {
     public void initialisation() {
         dataProvider = mock(DataBroker.class);
         rpcRegistry = mock(RpcProviderRegistry.class);
-        notificationService = mock(NotificationService.class);
         endpointRpcRegistry = mock(EndpointRpcRegistry.class);
+        notificationService = mock(NotificationService.class);
+        policyValidatorRegistry = mock(PolicyValidatorRegistry.class);
         tableOffset = 5;
         configReg = mock(ListenerRegistration.class);
         when(
@@ -72,7 +75,8 @@ 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, endpointRpcRegistry, tableOffset);
+        renderer = new OFOverlayRenderer(dataProvider, rpcRegistry, notificationService, endpointRpcRegistry,
+                policyValidatorRegistry, tableOffset);
     }
 
     @Test