From effc5ed8ec695f0e5cf9d8e653c9efc60a7de7b6 Mon Sep 17 00:00:00 2001 From: Michal Cmarada Date: Tue, 8 Dec 2015 15:18:31 +0100 Subject: [PATCH] making service for PolicyResolver and EndpointRpcRegistry Change-Id: Ieb489292492a87be72800dde7841330eb1b3db9b Signed-off-by: Michal Cmarada Signed-off-by: Vladimir Lavor --- groupbasedpolicy/pom.xml | 4 +- .../src/main/config/default-config.xml | 56 +++++++- ...endererAugmentationRegistryImplModule.java | 30 +++++ ...AugmentationRegistryImplModuleFactory.java | 13 ++ .../{impl => }/GroupbasedpolicyModule.java | 42 +----- .../GroupbasedpolicyModuleFactory.java | 8 +- .../PolicyValidatorRegistryModule.java | 28 ++++ .../PolicyValidatorRegistryModuleFactory.java | 13 ++ ...va => EpRendererAugmentationRegistry.java} | 2 +- ...trar.java => PolicyValidatorRegistry.java} | 2 +- .../endpoint/EndpointRpcRegistry.java | 10 +- .../resolver/PolicyResolver.java | 23 ++-- .../src/main/yang/groupbasedpolicy-cfg.yang | 122 ++++++++++++++++++ .../src/main/yang/groupbasedpolicy-impl.yang | 57 -------- .../main/yang/model/endpoint-provider.yang | 29 ----- .../src/main/yang/model/policy-provider.yang | 29 ----- .../endpoint/EndPointRpcRegistryTest.java | 8 +- .../resolver/PolicyResolverTest.java | 2 - .../src/main/config/default-config.xml | 10 +- .../impl/IovisorProviderModule.java | 3 +- .../renderer/iovisor/IovisorRenderer.java | 7 +- .../iovisor/endpoint/EndpointManager.java | 18 +-- .../src/main/yang/iovisor-provider-impl.yang | 9 +- .../src/main/config/default-config.xml | 6 + .../impl/OFOverlayProviderModule.java | 1 + .../renderer/ofoverlay/OFOverlayRenderer.java | 50 +++---- .../ofoverlay/endpoint/OfOverlayAug.java | 22 ++-- .../ofoverlay/endpoint/OfOverlayL3NatAug.java | 11 +- .../main/yang/ofoverlay-provider-impl.yang | 12 +- .../ofoverlay/OFOverlayRendererTest.java | 5 +- 30 files changed, 388 insertions(+), 244 deletions(-) create mode 100644 groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplModule.java create mode 100644 groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplModuleFactory.java rename groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/{impl => }/GroupbasedpolicyModule.java (55%) mode change 100755 => 100644 rename groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/{impl => }/GroupbasedpolicyModuleFactory.java (55%) mode change 100755 => 100644 create mode 100644 groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryModule.java create mode 100644 groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryModuleFactory.java rename groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/{EpRendererAugmentationRegistrar.java => EpRendererAugmentationRegistry.java} (94%) rename groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/{PolicyValidatorRegistrar.java => PolicyValidatorRegistry.java} (98%) create mode 100644 groupbasedpolicy/src/main/yang/groupbasedpolicy-cfg.yang delete mode 100755 groupbasedpolicy/src/main/yang/groupbasedpolicy-impl.yang delete mode 100644 groupbasedpolicy/src/main/yang/model/endpoint-provider.yang delete mode 100644 groupbasedpolicy/src/main/yang/model/policy-provider.yang diff --git a/groupbasedpolicy/pom.xml b/groupbasedpolicy/pom.xml index c80c973a5..c0804bb2c 100755 --- a/groupbasedpolicy/pom.xml +++ b/groupbasedpolicy/pom.xml @@ -60,10 +60,10 @@ 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, diff --git a/groupbasedpolicy/src/main/config/default-config.xml b/groupbasedpolicy/src/main/config/default-config.xml index aae50e175..09dc05dfc 100755 --- a/groupbasedpolicy/src/main/config/default-config.xml +++ b/groupbasedpolicy/src/main/config/default-config.xml @@ -12,7 +12,7 @@ - + groupbasedpolicy:groupbasedpolicy-impl groupbasedpolicy-impl @@ -28,13 +28,65 @@ + + + groupbasedpolicy:policy-validator-registry-impl + + policy-validator-registry + + + binding:binding-async-data-broker + binding-data-broker + + + + + + groupbasedpolicy:ep-renderer-augmentation-registry-impl + + ep-renderer-augmentation-registry + + + binding:binding-async-data-broker + binding-data-broker + + + + binding:binding-rpc-registry + binding-rpc-broker + + + + + + + + groupbasedpolicy:policy-validator-registry + + + + policy-validator-registry + /modules/module[type='policy-validator-registry-impl'][name='policy-validator-registry'] + + + + + epr:ep-renderer-augmentation-registry + + + + ep-renderer-augmentation-registry + /modules/module[type='ep-renderer-augmentation-registry-impl'][name='ep-renderer-augmentation-registry'] + + + - urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy:impl?module=groupbasedpolicy-impl&revision=2015-11-06 + urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy?module=groupbasedpolicy-cfg&revision=2015-11-06 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 index 000000000..3d99ec403 --- /dev/null +++ b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplModule.java @@ -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 index 000000000..a6545ead4 --- /dev/null +++ b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplModuleFactory.java @@ -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 { + +} diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/impl/GroupbasedpolicyModule.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyModule.java old mode 100755 new mode 100644 similarity index 55% rename from groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/impl/GroupbasedpolicyModule.java rename to groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyModule.java index 9c99e1a38..2086f4c18 --- a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/impl/GroupbasedpolicyModule.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyModule.java @@ -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); } } + } diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/impl/GroupbasedpolicyModuleFactory.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyModuleFactory.java old mode 100755 new mode 100644 similarity index 55% rename from groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/impl/GroupbasedpolicyModuleFactory.java rename to groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyModuleFactory.java index 5357dc74c..ce60f22b0 --- a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/impl/GroupbasedpolicyModuleFactory.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyModuleFactory.java @@ -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 index 000000000..fc8b92d85 --- /dev/null +++ b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryModule.java @@ -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 index 000000000..3b11bd15c --- /dev/null +++ b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryModuleFactory.java @@ -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 { + +} diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/EpRendererAugmentationRegistrar.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/EpRendererAugmentationRegistry.java 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 c3530ce42..be838a3f6 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/EpRendererAugmentationRegistrar.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/EpRendererAugmentationRegistry.java @@ -8,7 +8,7 @@ package org.opendaylight.groupbasedpolicy.api; -public interface EpRendererAugmentationRegistrar { +public interface EpRendererAugmentationRegistry { /** * Registers renderer's endpoint augmentation. diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/PolicyValidatorRegistrar.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/PolicyValidatorRegistry.java 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 dfffe21b3..2fb2d4aab 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/PolicyValidatorRegistrar.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/PolicyValidatorRegistry.java @@ -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}. diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/endpoint/EndpointRpcRegistry.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/endpoint/EndpointRpcRegistry.java index 2b76df033..b27e9b80d 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/endpoint/EndpointRpcRegistry.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/endpoint/EndpointRpcRegistry.java @@ -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; } diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolver.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolver.java index 573bf024c..c003649d1 100755 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolver.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolver.java @@ -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 resolvedTenants; + private final FollowedTenantListener followedTenantListener; + + + protected final ConcurrentMap resolvedTenants; /* * Store validators for ActionDefinitions from Renderers * */ - protected SetMultimap> actionInstanceValidatorsByDefinition = Multimaps.synchronizedSetMultimap(HashMultimap.>create()); - protected SetMultimap> classifierInstanceValidatorsByDefinition = Multimaps.synchronizedSetMultimap(HashMultimap.>create()); + private SetMultimap> actionInstanceValidatorsByDefinition = Multimaps.synchronizedSetMultimap(HashMultimap.>create()); + private SetMultimap> classifierInstanceValidatorsByDefinition = Multimaps.synchronizedSetMultimap(HashMultimap.>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 indexedTenants = getIndexedTenants(resolvedTenants.values()); Table policyMap = PolicyResolverUtils.resolvePolicy(indexedTenants); @@ -353,9 +360,9 @@ public class PolicyResolver implements PolicyValidatorRegistrar, AutoCloseable { return true; } - protected static class TenantContext { + static class TenantContext { - ListenerRegistration registration; + final ListenerRegistration registration; AtomicReference 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 index 000000000..59131ae86 --- /dev/null +++ b/groupbasedpolicy/src/main/yang/groupbasedpolicy-cfg.yang @@ -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 index 807b677c1..000000000 --- a/groupbasedpolicy/src/main/yang/groupbasedpolicy-impl.yang +++ /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 index 42ff57d5c..000000000 --- a/groupbasedpolicy/src/main/yang/model/endpoint-provider.yang +++ /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 index ea65b1934..000000000 --- a/groupbasedpolicy/src/main/yang/model/policy-provider.yang +++ /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"; - } - } diff --git a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/endpoint/EndPointRpcRegistryTest.java b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/endpoint/EndPointRpcRegistryTest.java index a80182980..fd4760a5d 100644 --- a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/endpoint/EndPointRpcRegistryTest.java +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/endpoint/EndPointRpcRegistryTest.java @@ -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()); } diff --git a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolverTest.java b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolverTest.java index a9e4f6e28..3bbb7cd1e 100644 --- a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolverTest.java +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolverTest.java @@ -49,8 +49,6 @@ public class PolicyResolverTest { unresolved); policyResolver = spy(new PolicyResolver(dataProvider)); - resolver = new PolicyResolver(null); - } @Test diff --git a/renderers/iovisor/src/main/config/default-config.xml b/renderers/iovisor/src/main/config/default-config.xml index 16a4a75f7..6d42b28d6 100644 --- a/renderers/iovisor/src/main/config/default-config.xml +++ b/renderers/iovisor/src/main/config/default-config.xml @@ -17,16 +17,16 @@ iovisor-provider-impl - - binding:binding-rpc-registry - binding-rpc-broker - - binding:binding-async-data-broker binding-data-broker + + epr:ep-renderer-augmentation-registry + ep-renderer-augmentation-registry + + diff --git a/renderers/iovisor/src/main/java/org/opendaylight/controller/config/yang/config/iovisor_provider/impl/IovisorProviderModule.java b/renderers/iovisor/src/main/java/org/opendaylight/controller/config/yang/config/iovisor_provider/impl/IovisorProviderModule.java index 22dd64b26..c06a951e9 100644 --- a/renderers/iovisor/src/main/java/org/opendaylight/controller/config/yang/config/iovisor_provider/impl/IovisorProviderModule.java +++ b/renderers/iovisor/src/main/java/org/opendaylight/controller/config/yang/config/iovisor_provider/impl/IovisorProviderModule.java @@ -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()); } } diff --git a/renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorRenderer.java b/renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorRenderer.java index abc933d01..d67b13d84 100644 --- a/renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorRenderer.java +++ b/renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorRenderer.java @@ -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); } diff --git a/renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/endpoint/EndpointManager.java b/renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/endpoint/EndpointManager.java index 311ecff1e..d0f19636d 100644 --- a/renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/endpoint/EndpointManager.java +++ b/renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/endpoint/EndpointManager.java @@ -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 diff --git a/renderers/iovisor/src/main/yang/iovisor-provider-impl.yang b/renderers/iovisor/src/main/yang/iovisor-provider-impl.yang index 3df9a8d32..4c217fa8b 100644 --- a/renderers/iovisor/src/main/yang/iovisor-provider-impl.yang +++ b/renderers/iovisor/src/main/yang/iovisor-provider-impl.yang @@ -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; } } } diff --git a/renderers/ofoverlay/src/main/config/default-config.xml b/renderers/ofoverlay/src/main/config/default-config.xml index 71c99019a..d44dafaad 100644 --- a/renderers/ofoverlay/src/main/config/default-config.xml +++ b/renderers/ofoverlay/src/main/config/default-config.xml @@ -31,6 +31,12 @@ binding:binding-new-notification-service binding-notification-adapter + + + epr:ep-renderer-augmentation-registry + ep-renderer-augmentation-registry + + 0 diff --git a/renderers/ofoverlay/src/main/java/org/opendaylight/controller/config/yang/config/ofoverlay_provider/impl/OFOverlayProviderModule.java b/renderers/ofoverlay/src/main/java/org/opendaylight/controller/config/yang/config/ofoverlay_provider/impl/OFOverlayProviderModule.java index 571b1a1d6..21d26dca2 100644 --- a/renderers/ofoverlay/src/main/java/org/opendaylight/controller/config/yang/config/ofoverlay_provider/impl/OFOverlayProviderModule.java +++ b/renderers/ofoverlay/src/main/java/org/opendaylight/controller/config/yang/config/ofoverlay_provider/impl/OFOverlayProviderModule.java @@ -28,6 +28,7 @@ public class OFOverlayProviderModule extends org.opendaylight.controller.config. return new OFOverlayRenderer(getDataBrokerDependency(), getRpcRegistryDependency(), getNotificationAdapterDependency(), + getEpRendererAugmentationRegistryDependency(), getGbpOfoverlayTableOffset().shortValue()); } diff --git a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/OFOverlayRenderer.java b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/OFOverlayRenderer.java index 9c41ce921..7816d146c 100644 --- a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/OFOverlayRenderer.java +++ b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/OFOverlayRenderer.java @@ -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 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 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 readConfig() { final ReadOnlyTransaction rTx = dataBroker.newReadOnlyTransaction(); Optional config = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION, - configIid, - rTx); + configIid, + rTx); rTx.close(); return config; } diff --git a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/OfOverlayAug.java b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/OfOverlayAug.java index 4839b4a44..ac3d237ab 100644 --- a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/OfOverlayAug.java +++ b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/OfOverlayAug.java @@ -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); } /** diff --git a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/OfOverlayL3NatAug.java b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/OfOverlayL3NatAug.java index f8fa3292b..4fc95da3e 100644 --- a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/OfOverlayL3NatAug.java +++ b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/OfOverlayL3NatAug.java @@ -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); } } diff --git a/renderers/ofoverlay/src/main/yang/ofoverlay-provider-impl.yang b/renderers/ofoverlay/src/main/yang/ofoverlay-provider-impl.yang index 6d6baccf2..48ad7a3c2 100644 --- a/renderers/ofoverlay/src/main/yang/ofoverlay-provider-impl.yang +++ b/renderers/ofoverlay/src/main/yang/ofoverlay-provider-impl.yang @@ -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; } diff --git a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/OFOverlayRendererTest.java b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/OFOverlayRendererTest.java index d22c727b0..ada4fe6dd 100644 --- a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/OFOverlayRendererTest.java +++ b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/OFOverlayRendererTest.java @@ -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, 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. 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 -- 2.36.6