From df63350e08bedffb2abae651998b8d54dc3c8c94 Mon Sep 17 00:00:00 2001 From: Matej Perina Date: Wed, 17 Aug 2016 18:15:10 +0200 Subject: [PATCH] BUG 6396 groupbasedpolicy project migration to blueprint Change-Id: I0f5c1f16234826093d26dc5848eabb858dd51107 Signed-off-by: Matej Perina --- .../src/main/config/default-config.xml | 45 --------- .../DomainSpecificRegistryInstance.java | 66 +++++++++++++ .../DomainSpecificRegistryModule.java | 67 ++++++------- .../DomainSpecificRegistryModuleFactory.java | 20 ++++ ...dererAugmentationRegistryImplInstance.java | 69 ++++++++++++++ ...endererAugmentationRegistryImplModule.java | 37 ++++++-- ...AugmentationRegistryImplModuleFactory.java | 20 ++++ .../GroupbasedpolicyInstance.java | 46 +++++++++ .../GroupbasedpolicyModule.java | 49 +--------- .../PolicyValidatorRegistryInstance.java | 52 +++++++++++ .../PolicyValidatorRegistryModule.java | 51 ++++++++-- .../PolicyValidatorRegistryModuleFactory.java | 20 ++++ .../StatisticsManagerImplInstance.java | 39 ++++++++ .../StatisticsManagerImplModule.java | 38 +++++++- .../StatisticsManagerImplModuleFactory.java | 20 ++++ .../BaseEndpointServiceImpl.java | 13 +-- .../endpoint/EndpointRpcRegistry.java | 20 +--- .../blueprint/groupbasedpolicy.xml | 40 ++++++++ .../src/main/yang/groupbasedpolicy-cfg.yang | 93 ++----------------- .../BaseEndpointServiceImplTest.java | 11 +-- .../endpoint/EndpointRpcRegistryTest.java | 10 +- 21 files changed, 546 insertions(+), 280 deletions(-) create mode 100644 groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/DomainSpecificRegistryInstance.java create mode 100644 groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplInstance.java create mode 100644 groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyInstance.java create mode 100644 groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryInstance.java create mode 100644 groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/StatisticsManagerImplInstance.java create mode 100644 groupbasedpolicy/src/main/resources/org/opendaylight/blueprint/groupbasedpolicy.xml diff --git a/groupbasedpolicy/src/main/config/default-config.xml b/groupbasedpolicy/src/main/config/default-config.xml index 0390945d5..53c0184df 100755 --- a/groupbasedpolicy/src/main/config/default-config.xml +++ b/groupbasedpolicy/src/main/config/default-config.xml @@ -16,75 +16,30 @@ groupbasedpolicy:groupbasedpolicy-impl groupbasedpolicy-impl - - - binding:binding-async-data-broker - binding-data-broker - - - - binding:binding-rpc-registry - binding-rpc-broker - - - - groupbasedpolicy:policy-validator-registry - policy-validator-registry - 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:domain-specific-registry-impl domain-specific-registry - - - binding:binding-async-data-broker - binding-data-broker - - - - binding:binding-rpc-registry - binding-rpc-broker - groupbasedpolicy:statistics-manager-impl statistics-manager-impl - - - binding:binding-async-data-broker - binding-data-broker - diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/DomainSpecificRegistryInstance.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/DomainSpecificRegistryInstance.java new file mode 100644 index 000000000..272ce851a --- /dev/null +++ b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/DomainSpecificRegistryInstance.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2016 Cisco Systems, Inc. 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; + +import java.util.concurrent.Future; + +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.groupbasedpolicy.api.DomainSpecificRegistry; +import org.opendaylight.groupbasedpolicy.api.EndpointAugmentorRegistry; +import org.opendaylight.groupbasedpolicy.api.NetworkDomainAugmentorRegistry; +import org.opendaylight.groupbasedpolicy.base_endpoint.BaseEndpointServiceImpl; +import org.opendaylight.groupbasedpolicy.base_endpoint.EndpointAugmentorRegistryImpl; +import org.opendaylight.groupbasedpolicy.forwarding.NetworkDomainAugmentorRegistryImpl; +import org.opendaylight.groupbasedpolicy.renderer.RendererManager; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.BaseEndpointService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.RegisterEndpointInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.UnregisterEndpointInput; +import org.opendaylight.yangtools.yang.common.RpcResult; + +public class DomainSpecificRegistryInstance implements DomainSpecificRegistry, BaseEndpointService, AutoCloseable { + + private final EndpointAugmentorRegistryImpl endpointAugmentorRegistryImpl; + private final NetworkDomainAugmentorRegistryImpl netDomainAugmentorRegistryImpl; + private final BaseEndpointServiceImpl baseEndpointServiceImpl; + private final RendererManager rendererManager; + + public DomainSpecificRegistryInstance(DataBroker dataProvider) { + endpointAugmentorRegistryImpl = new EndpointAugmentorRegistryImpl(); + netDomainAugmentorRegistryImpl = new NetworkDomainAugmentorRegistryImpl(); + baseEndpointServiceImpl = new BaseEndpointServiceImpl(dataProvider, endpointAugmentorRegistryImpl); + rendererManager = new RendererManager(dataProvider, netDomainAugmentorRegistryImpl, endpointAugmentorRegistryImpl); + } + + @Override + public void close() throws Exception { + baseEndpointServiceImpl.close(); + rendererManager.close(); + } + + @Override + public EndpointAugmentorRegistry getEndpointAugmentorRegistry() { + return endpointAugmentorRegistryImpl; + } + + @Override + public NetworkDomainAugmentorRegistry getNetworkDomainAugmentorRegistry() { + return netDomainAugmentorRegistryImpl; + } + + @Override + public Future> unregisterEndpoint(UnregisterEndpointInput input) { + return baseEndpointServiceImpl.unregisterEndpoint(input); + } + + @Override + public Future> registerEndpoint(RegisterEndpointInput input) { + return baseEndpointServiceImpl.registerEndpoint(input); + } + +} diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/DomainSpecificRegistryModule.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/DomainSpecificRegistryModule.java index aed35222d..e2aca3e64 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/DomainSpecificRegistryModule.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/DomainSpecificRegistryModule.java @@ -8,21 +8,18 @@ package org.opendaylight.controller.config.yang.config.groupbasedpolicy; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; +import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker; import org.opendaylight.groupbasedpolicy.api.DomainSpecificRegistry; import org.opendaylight.groupbasedpolicy.api.EndpointAugmentorRegistry; import org.opendaylight.groupbasedpolicy.api.NetworkDomainAugmentorRegistry; -import org.opendaylight.groupbasedpolicy.base_endpoint.BaseEndpointServiceImpl; -import org.opendaylight.groupbasedpolicy.base_endpoint.EndpointAugmentorRegistryImpl; -import org.opendaylight.groupbasedpolicy.forwarding.NetworkDomainAugmentorRegistryImpl; -import org.opendaylight.groupbasedpolicy.renderer.RendererManager; +import org.osgi.framework.BundleContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class DomainSpecificRegistryModule extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractDomainSpecificRegistryModule { private static final Logger LOG = LoggerFactory.getLogger(DomainSpecificRegistryModule.class); + private BundleContext bundleContext; public DomainSpecificRegistryModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { super(identifier, dependencyResolver); @@ -39,43 +36,31 @@ public class DomainSpecificRegistryModule extends org.opendaylight.controller.co @Override public java.lang.AutoCloseable createInstance() { - final DataBroker dataProvider = getDataBrokerDependency(); - final RpcProviderRegistry rpcRegistry = getRpcRegistryDependency(); - Instance instance = new Instance(dataProvider, rpcRegistry); - LOG.info("{} successfully started.", DomainSpecificRegistryModule.class.getCanonicalName()); - return instance; - } - - private static class Instance implements DomainSpecificRegistry, AutoCloseable { - - private final EndpointAugmentorRegistryImpl endpointAugmentorRegistryImpl; - private final NetworkDomainAugmentorRegistryImpl netDomainAugmentorRegistryImpl; - private final BaseEndpointServiceImpl baseEndpointServiceImpl; - private final RendererManager rendererManager; - - Instance(DataBroker dataProvider, RpcProviderRegistry rpcRegistry) { - endpointAugmentorRegistryImpl = new EndpointAugmentorRegistryImpl(); - netDomainAugmentorRegistryImpl = new NetworkDomainAugmentorRegistryImpl(); - baseEndpointServiceImpl = new BaseEndpointServiceImpl(dataProvider, rpcRegistry, endpointAugmentorRegistryImpl); - rendererManager = new RendererManager(dataProvider, netDomainAugmentorRegistryImpl, endpointAugmentorRegistryImpl); - } - - @Override - public void close() throws Exception { - baseEndpointServiceImpl.close(); - rendererManager.close(); - } - - @Override - public EndpointAugmentorRegistry getEndpointAugmentorRegistry() { - return endpointAugmentorRegistryImpl; - } - - @Override - public NetworkDomainAugmentorRegistry getNetworkDomainAugmentorRegistry() { - return netDomainAugmentorRegistryImpl; + final WaitingServiceTracker tracker = WaitingServiceTracker.create( + DomainSpecificRegistry.class, bundleContext); + final DomainSpecificRegistry service = tracker.waitForService(WaitingServiceTracker.FIVE_MINUTES); + + final class Instance implements DomainSpecificRegistry, AutoCloseable { + @Override + public void close() { + tracker.close(); + } + + @Override + public EndpointAugmentorRegistry getEndpointAugmentorRegistry() { + return service.getEndpointAugmentorRegistry(); + } + + @Override + public NetworkDomainAugmentorRegistry getNetworkDomainAugmentorRegistry() { + return service.getNetworkDomainAugmentorRegistry(); + } } + return new Instance(); } + void setBundleContext(BundleContext bundleContext) { + this.bundleContext = bundleContext; + } } diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/DomainSpecificRegistryModuleFactory.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/DomainSpecificRegistryModuleFactory.java index f532db474..c030d7d66 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/DomainSpecificRegistryModuleFactory.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/DomainSpecificRegistryModuleFactory.java @@ -7,6 +7,26 @@ */ package org.opendaylight.controller.config.yang.config.groupbasedpolicy; + +import org.opendaylight.controller.config.api.DependencyResolver; +import org.osgi.framework.BundleContext; + public class DomainSpecificRegistryModuleFactory extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractDomainSpecificRegistryModuleFactory { + @Override + public DomainSpecificRegistryModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, + DomainSpecificRegistryModule oldModule, AutoCloseable oldInstance, BundleContext bundleContext) { + DomainSpecificRegistryModule module = super.instantiateModule(instanceName, dependencyResolver, oldModule, + oldInstance, bundleContext); + module.setBundleContext(bundleContext); + return module; + } + + @Override + public DomainSpecificRegistryModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, + BundleContext bundleContext) { + DomainSpecificRegistryModule module = super.instantiateModule(instanceName, dependencyResolver, bundleContext); + module.setBundleContext(bundleContext); + return module; + } } diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplInstance.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplInstance.java new file mode 100644 index 000000000..8cda5897c --- /dev/null +++ b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/EpRendererAugmentationRegistryImplInstance.java @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2016 Cisco Systems, Inc. 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; + +import java.util.concurrent.Future; + +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentation; +import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry; +import org.opendaylight.groupbasedpolicy.endpoint.EndpointRpcRegistry; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.EndpointService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterEndpointInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterL3PrefixEndpointInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.SetEndpointGroupConditionsInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.UnregisterEndpointInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.UnsetEndpointGroupConditionsInput; +import org.opendaylight.yangtools.yang.common.RpcResult; + +public class EpRendererAugmentationRegistryImplInstance implements EpRendererAugmentationRegistry, EndpointService, AutoCloseable{ + + + private final EndpointRpcRegistry endpointRpcRegistry; + + public EpRendererAugmentationRegistryImplInstance(DataBroker dataProvider) { + endpointRpcRegistry = new EndpointRpcRegistry(dataProvider); + } + @Override + public void close() throws Exception { + endpointRpcRegistry.close(); + } + + @Override + public void register(EpRendererAugmentation epRendererAugmentation) { + endpointRpcRegistry.register(epRendererAugmentation); + } + + @Override + public void unregister(EpRendererAugmentation epRendererAugmentation) { + endpointRpcRegistry.unregister(epRendererAugmentation); + } + @Override + public Future> unsetEndpointGroupConditions(UnsetEndpointGroupConditionsInput input) { + return endpointRpcRegistry.unsetEndpointGroupConditions(input); + } + @Override + public Future> registerEndpoint(RegisterEndpointInput input) { + return endpointRpcRegistry.registerEndpoint(input); + } + @Override + public Future> setEndpointGroupConditions(SetEndpointGroupConditionsInput input) { + return endpointRpcRegistry.setEndpointGroupConditions(input); + } + @Override + public Future> registerL3PrefixEndpoint(RegisterL3PrefixEndpointInput input) { + return endpointRpcRegistry.registerL3PrefixEndpoint(input); + } + @Override + public Future> unregisterEndpoint(UnregisterEndpointInput input) { + return endpointRpcRegistry.unregisterEndpoint(input); + } + + +} 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 index 5e2c93566..4aef5cea2 100644 --- 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 @@ -8,15 +8,17 @@ package org.opendaylight.controller.config.yang.config.groupbasedpolicy; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; -import org.opendaylight.groupbasedpolicy.endpoint.EndpointRpcRegistry; +import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker; +import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentation; +import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry; +import org.osgi.framework.BundleContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class EpRendererAugmentationRegistryImplModule extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractEpRendererAugmentationRegistryImplModule { private static final Logger LOG = LoggerFactory.getLogger(EpRendererAugmentationRegistryImplModule.class); + private BundleContext bundleContext; public EpRendererAugmentationRegistryImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { super(identifier, dependencyResolver); @@ -33,12 +35,31 @@ public class EpRendererAugmentationRegistryImplModule extends org.opendaylight.c @Override public java.lang.AutoCloseable createInstance() { - final DataBroker dataProvider = getDataBrokerDependency(); - final RpcProviderRegistry rpcRegistry = getRpcRegistryDependency(); + final WaitingServiceTracker tracker = WaitingServiceTracker.create( + EpRendererAugmentationRegistry.class, bundleContext); + final EpRendererAugmentationRegistry service = tracker.waitForService(WaitingServiceTracker.FIVE_MINUTES); - EndpointRpcRegistry endpointRpcRegistry = new EndpointRpcRegistry(dataProvider, rpcRegistry); - LOG.info("{} successfully started.", EpRendererAugmentationRegistryImplModule.class.getCanonicalName()); - return endpointRpcRegistry; + final class Instance implements EpRendererAugmentationRegistry, AutoCloseable { + @Override + public void close() { + tracker.close(); + } + + @Override + public void register(EpRendererAugmentation epRendererAugmentation) { + service.register(epRendererAugmentation); + } + + @Override + public void unregister(EpRendererAugmentation epRendererAugmentation) { + service.unregister(epRendererAugmentation); + } + } + + return new Instance(); } + void setBundleContext(BundleContext bundleContext) { + this.bundleContext = bundleContext; + } } 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 index 3e27189ac..f0efe0a00 100644 --- 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 @@ -16,6 +16,26 @@ * Do not modify this file unless it is present under src/main directory */ package org.opendaylight.controller.config.yang.config.groupbasedpolicy; + +import org.opendaylight.controller.config.api.DependencyResolver; +import org.osgi.framework.BundleContext; + public class EpRendererAugmentationRegistryImplModuleFactory extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractEpRendererAugmentationRegistryImplModuleFactory { + @Override + public EpRendererAugmentationRegistryImplModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, + EpRendererAugmentationRegistryImplModule oldModule, AutoCloseable oldInstance, BundleContext bundleContext) { + EpRendererAugmentationRegistryImplModule module = super.instantiateModule(instanceName, dependencyResolver, oldModule, + oldInstance, bundleContext); + module.setBundleContext(bundleContext); + return module; + } + + @Override + public EpRendererAugmentationRegistryImplModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, + BundleContext bundleContext) { + EpRendererAugmentationRegistryImplModule module = super.instantiateModule(instanceName, dependencyResolver, bundleContext); + module.setBundleContext(bundleContext); + return module; + } } diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyInstance.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyInstance.java new file mode 100644 index 000000000..1b2e1ef6a --- /dev/null +++ b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyInstance.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2016 Cisco Systems, Inc. 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; + +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; +import org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry; +import org.opendaylight.groupbasedpolicy.location.resolver.LocationResolver; +import org.opendaylight.groupbasedpolicy.resolver.ForwardingResolver; +import org.opendaylight.groupbasedpolicy.sf.SubjectFeatureDefinitionProvider; +import org.opendaylight.groupbasedpolicy.sf.SupportedActionDefinitionListener; +import org.opendaylight.groupbasedpolicy.sf.SupportedClassifierDefinitionListener; + +public class GroupbasedpolicyInstance implements AutoCloseable { + + private final SubjectFeatureDefinitionProvider sfdp; + private final SupportedClassifierDefinitionListener supportedClassifierDefinitionListener; + private final SupportedActionDefinitionListener supportedActionDefinitionListener; + private final LocationResolver locationResolver; + private final ForwardingResolver forwardingResolver; + + public GroupbasedpolicyInstance(DataBroker dataProvider, PolicyValidatorRegistry validatorRegistry) + throws TransactionCommitFailedException { + sfdp = new SubjectFeatureDefinitionProvider(dataProvider); + supportedClassifierDefinitionListener = + new SupportedClassifierDefinitionListener(dataProvider, validatorRegistry); + supportedActionDefinitionListener = new SupportedActionDefinitionListener(dataProvider); + locationResolver = new LocationResolver(dataProvider); + forwardingResolver = new ForwardingResolver(dataProvider); + } + + @Override + public void close() throws Exception { + sfdp.close(); + supportedClassifierDefinitionListener.close(); + supportedActionDefinitionListener.close(); + locationResolver.close(); + forwardingResolver.close(); + } +} diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyModule.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyModule.java index 5c82b0a0c..77e2522af 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyModule.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/GroupbasedpolicyModule.java @@ -8,14 +8,7 @@ package org.opendaylight.controller.config.yang.config.groupbasedpolicy; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; -import org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry; -import org.opendaylight.groupbasedpolicy.location.resolver.LocationResolver; -import org.opendaylight.groupbasedpolicy.resolver.ForwardingResolver; -import org.opendaylight.groupbasedpolicy.sf.SubjectFeatureDefinitionProvider; -import org.opendaylight.groupbasedpolicy.sf.SupportedActionDefinitionListener; -import org.opendaylight.groupbasedpolicy.sf.SupportedClassifierDefinitionListener; +import org.opendaylight.controller.sal.common.util.NoopAutoCloseable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,44 +36,6 @@ public class GroupbasedpolicyModule extends org.opendaylight.controller.config.y */ @Override public java.lang.AutoCloseable createInstance() { - DataBroker dataProvider = getDataBrokerDependency(); - PolicyValidatorRegistry validatorRegistry = getPolicyValidatorRegistryDependency(); - - try { - Instance instance = new Instance(dataProvider, validatorRegistry); - LOG.info("{} successfully started.", GroupbasedpolicyModule.class.getCanonicalName()); - return instance; - } catch (TransactionCommitFailedException e) { - LOG.error( - "Error creating instance of SubjectFeatureDefinitionProvider; Subject Feature Definitions were not put to Datastore"); - throw new RuntimeException(e); - } + return NoopAutoCloseable.INSTANCE; } - - private static class Instance implements AutoCloseable { - - private final SubjectFeatureDefinitionProvider sfdp; - private final SupportedClassifierDefinitionListener supportedClassifierDefinitionListener; - private final SupportedActionDefinitionListener supportedActionDefinitionListener; - private final LocationResolver locationResolver; - private final ForwardingResolver forwardingResolver; - - Instance(DataBroker dataProvider, PolicyValidatorRegistry validatorRegistry) throws TransactionCommitFailedException { - sfdp = new SubjectFeatureDefinitionProvider(dataProvider); - supportedClassifierDefinitionListener = new SupportedClassifierDefinitionListener(dataProvider, validatorRegistry); - supportedActionDefinitionListener = new SupportedActionDefinitionListener(dataProvider); - locationResolver = new LocationResolver(dataProvider); - forwardingResolver = new ForwardingResolver(dataProvider); - } - - @Override - public void close() throws Exception { - sfdp.close(); - supportedClassifierDefinitionListener.close(); - supportedActionDefinitionListener.close(); - locationResolver.close(); - forwardingResolver.close(); - } - } - } diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryInstance.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryInstance.java new file mode 100644 index 000000000..1a7bc1dc2 --- /dev/null +++ b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/PolicyValidatorRegistryInstance.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2016 Cisco Systems, Inc. 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; + +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry; +import org.opendaylight.groupbasedpolicy.api.Validator; +import org.opendaylight.groupbasedpolicy.resolver.PolicyResolver; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionDefinitionId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierDefinitionId; +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 class PolicyValidatorRegistryInstance implements PolicyValidatorRegistry, AutoCloseable { + + private final PolicyResolver policyResolver; + + public PolicyValidatorRegistryInstance (DataBroker dataBroker) { + this.policyResolver = new PolicyResolver(dataBroker); + } + + @Override + public void close() throws Exception { + policyResolver.close(); + } + + @Override + public void register(ActionDefinitionId actionDefinitionId, Validator validator) { + policyResolver.register(actionDefinitionId, validator); + } + + @Override + public void unregister(ActionDefinitionId actionDefinitionId, Validator validator) { + policyResolver.unregister(actionDefinitionId, validator); + } + + @Override + public void register(ClassifierDefinitionId classifierDefinitionId, Validator validator) { + policyResolver.register(classifierDefinitionId, validator); + } + + @Override + public void unregister(ClassifierDefinitionId classifierDefinitionId, Validator validator) { + policyResolver.unregister(classifierDefinitionId, validator); + } +} 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 index e81f89baa..8f7257928 100644 --- 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 @@ -8,14 +8,21 @@ package org.opendaylight.controller.config.yang.config.groupbasedpolicy; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.groupbasedpolicy.resolver.PolicyResolver; +import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker; +import org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry; +import org.opendaylight.groupbasedpolicy.api.Validator; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionDefinitionId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierDefinitionId; +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; +import org.osgi.framework.BundleContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class PolicyValidatorRegistryModule extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractPolicyValidatorRegistryModule { private static final Logger LOG = LoggerFactory.getLogger(PolicyValidatorRegistryModule.class); + private BundleContext bundleContext; public PolicyValidatorRegistryModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { super(identifier, dependencyResolver); @@ -32,11 +39,43 @@ public class PolicyValidatorRegistryModule extends org.opendaylight.controller.c @Override public java.lang.AutoCloseable createInstance() { - final DataBroker dataProvider = getDataBrokerDependency(); + final WaitingServiceTracker tracker = WaitingServiceTracker.create( + PolicyValidatorRegistry.class, bundleContext); + final PolicyValidatorRegistry service = tracker.waitForService(WaitingServiceTracker.FIVE_MINUTES); - PolicyResolver policyResolver = new PolicyResolver(dataProvider); - LOG.info("{} successfully started.", PolicyValidatorRegistryModule.class.getCanonicalName()); - return policyResolver; + final class Instance implements PolicyValidatorRegistry, AutoCloseable { + @Override + public void close() { + tracker.close(); + } + + @Override + public void register(ActionDefinitionId actionDefinitionId, Validator validator) { + service.register(actionDefinitionId, validator); + } + + @Override + public void unregister(ActionDefinitionId actionDefinitionId, Validator validator) { + service.unregister(actionDefinitionId, validator); + } + + @Override + public void register(ClassifierDefinitionId classifierDefinitionId, + Validator validator) { + service.register(classifierDefinitionId, validator); + } + + @Override + public void unregister(ClassifierDefinitionId classifierDefinitionId, + Validator validator) { + service.unregister(classifierDefinitionId, validator); + } + } + + return new Instance(); } + void setBundleContext(BundleContext bundleContext) { + this.bundleContext = bundleContext; + } } 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 index 65b99e445..5a1e25ec2 100644 --- 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 @@ -16,6 +16,26 @@ * Do not modify this file unless it is present under src/main directory */ package org.opendaylight.controller.config.yang.config.groupbasedpolicy; + +import org.opendaylight.controller.config.api.DependencyResolver; +import org.osgi.framework.BundleContext; + public class PolicyValidatorRegistryModuleFactory extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractPolicyValidatorRegistryModuleFactory { + @Override + public PolicyValidatorRegistryModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, + PolicyValidatorRegistryModule oldModule, AutoCloseable oldInstance, BundleContext bundleContext) { + PolicyValidatorRegistryModule module = super.instantiateModule(instanceName, dependencyResolver, oldModule, + oldInstance, bundleContext); + module.setBundleContext(bundleContext); + return module; + } + + @Override + public PolicyValidatorRegistryModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, + BundleContext bundleContext) { + PolicyValidatorRegistryModule module = super.instantiateModule(instanceName, dependencyResolver, bundleContext); + module.setBundleContext(bundleContext); + return module; + } } diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/StatisticsManagerImplInstance.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/StatisticsManagerImplInstance.java new file mode 100644 index 000000000..bf9ec72b3 --- /dev/null +++ b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/StatisticsManagerImplInstance.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2016 Cisco Systems, Inc. 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; + +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.groupbasedpolicy.api.StatisticsManager; +import org.opendaylight.groupbasedpolicy.statistics.StatisticsManagerImpl; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.statistics.rev151215.statistic.records.StatRecords; + +public class StatisticsManagerImplInstance implements StatisticsManager, AutoCloseable { + + private final StatisticsManagerImpl statsManager; + + public StatisticsManagerImplInstance (DataBroker dataBroker) { + statsManager = new StatisticsManagerImpl(dataBroker); + } + + @Override + public void close() throws Exception { + statsManager.close(); + } + + @Override + public boolean writeStat(StatRecords record) { + return statsManager.writeStat(record); + } + + @Override + public StatRecords readStats() { + return statsManager.readStats(); + } + +} diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/StatisticsManagerImplModule.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/StatisticsManagerImplModule.java index 81f0d6179..fb8bd263b 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/StatisticsManagerImplModule.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/StatisticsManagerImplModule.java @@ -17,10 +17,15 @@ */ package org.opendaylight.controller.config.yang.config.groupbasedpolicy; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.groupbasedpolicy.statistics.StatisticsManagerImpl; +import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker; +import org.opendaylight.groupbasedpolicy.api.StatisticsManager; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.statistics.rev151215.statistic.records.StatRecords; +import org.osgi.framework.BundleContext; public class StatisticsManagerImplModule extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractStatisticsManagerImplModule { + + private BundleContext bundleContext; + public StatisticsManagerImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { super(identifier, dependencyResolver); } @@ -36,9 +41,32 @@ public class StatisticsManagerImplModule extends org.opendaylight.controller.con @Override public java.lang.AutoCloseable createInstance() { - DataBroker broker = getDataBrokerDependency(); - StatisticsManagerImpl manager = new StatisticsManagerImpl(broker); - return manager; + final WaitingServiceTracker tracker = WaitingServiceTracker.create( + StatisticsManager.class, bundleContext); + final StatisticsManager service = tracker.waitForService(WaitingServiceTracker.FIVE_MINUTES); + + final class Instance implements StatisticsManager, AutoCloseable { + @Override + public void close() { + tracker.close(); + } + + @Override + public boolean writeStat(StatRecords record) { + return service.writeStat(record); + } + + @Override + public StatRecords readStats() { + return service.readStats(); + } + } + + return new Instance(); + } + + void setBundleContext(BundleContext bundleContext) { + this.bundleContext = bundleContext; } } diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/StatisticsManagerImplModuleFactory.java b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/StatisticsManagerImplModuleFactory.java index 71e4e02c2..585636f2d 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/StatisticsManagerImplModuleFactory.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/StatisticsManagerImplModuleFactory.java @@ -16,6 +16,26 @@ * Do not modify this file unless it is present under src/main directory */ package org.opendaylight.controller.config.yang.config.groupbasedpolicy; + +import org.opendaylight.controller.config.api.DependencyResolver; +import org.osgi.framework.BundleContext; + public class StatisticsManagerImplModuleFactory extends org.opendaylight.controller.config.yang.config.groupbasedpolicy.AbstractStatisticsManagerImplModuleFactory { + @Override + public StatisticsManagerImplModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, + StatisticsManagerImplModule oldModule, AutoCloseable oldInstance, BundleContext bundleContext) { + StatisticsManagerImplModule module = super.instantiateModule(instanceName, dependencyResolver, oldModule, + oldInstance, bundleContext); + module.setBundleContext(bundleContext); + return module; + } + + @Override + public StatisticsManagerImplModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, + BundleContext bundleContext) { + StatisticsManagerImplModule module = super.instantiateModule(instanceName, dependencyResolver, bundleContext); + module.setBundleContext(bundleContext); + return module; + } } diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/base_endpoint/BaseEndpointServiceImpl.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/base_endpoint/BaseEndpointServiceImpl.java index 9609b6510..00c492073 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/base_endpoint/BaseEndpointServiceImpl.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/base_endpoint/BaseEndpointServiceImpl.java @@ -18,8 +18,6 @@ import javax.annotation.Nullable; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; -import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; import org.opendaylight.groupbasedpolicy.api.EndpointAugmentor; import org.opendaylight.groupbasedpolicy.util.DataStoreHelper; import org.opendaylight.groupbasedpolicy.util.EndpointUtils; @@ -65,7 +63,6 @@ public class BaseEndpointServiceImpl implements BaseEndpointService, AutoCloseab private static final Logger LOG = LoggerFactory.getLogger(BaseEndpointServiceImpl.class); private final DataBroker dataProvider; - private final BindingAwareBroker.RpcRegistration rpcRegistration; private final EndpointAugmentorRegistryImpl epAugRegistry; private static final Function> TO_SUCCESS_RPC_RESULT = new Function>() { @@ -76,12 +73,9 @@ public class BaseEndpointServiceImpl implements BaseEndpointService, AutoCloseab } }; - public BaseEndpointServiceImpl(DataBroker dataProvider, RpcProviderRegistry rpcRegistry, - EndpointAugmentorRegistryImpl epAugRegistry) { + public BaseEndpointServiceImpl(DataBroker dataProvider, EndpointAugmentorRegistryImpl epAugRegistry) { this.epAugRegistry = Preconditions.checkNotNull(epAugRegistry); this.dataProvider = Preconditions.checkNotNull(dataProvider); - Preconditions.checkNotNull(rpcRegistry); - this.rpcRegistration = rpcRegistry.addRpcImplementation(BaseEndpointService.class, this); } /** @@ -315,10 +309,7 @@ public class BaseEndpointServiceImpl implements BaseEndpointService, AutoCloseab } @Override - public void close() throws Exception { - if (rpcRegistration != null) { - rpcRegistration.close(); - } + public void close() { } private List nullToEmpty(@Nullable List list) { 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 d3bcaa9ae..b0e1dafa1 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/endpoint/EndpointRpcRegistry.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/endpoint/EndpointRpcRegistry.java @@ -18,8 +18,6 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; -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.groupbasedpolicy.util.IidFactory; @@ -70,9 +68,6 @@ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentat private static final Logger LOG = LoggerFactory.getLogger(EndpointRpcRegistry.class); private final DataBroker dataProvider; - private final RpcProviderRegistry rpcRegistry; - - private final BindingAwareBroker.RpcRegistration rpcRegistration; final static ConcurrentMap registeredRenderers = new ConcurrentHashMap(); @@ -110,17 +105,9 @@ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentat * Constructor * * @param dataProvider the {@link DataBroker} - * @param rpcRegistry the {@link RpcProviderRegistry} */ - public EndpointRpcRegistry(DataBroker dataProvider, RpcProviderRegistry rpcRegistry) { + public EndpointRpcRegistry(DataBroker dataProvider) { this.dataProvider = dataProvider; - this.rpcRegistry = rpcRegistry; - if (this.rpcRegistry != null) { - rpcRegistration = this.rpcRegistry.addRpcImplementation(EndpointService.class, this); - LOG.debug("Added RPC Implementation Correctly"); - } else { - rpcRegistration = null; - } if (dataProvider != null) { InstanceIdentifier iid = InstanceIdentifier.builder(Endpoints.class).build(); @@ -146,10 +133,7 @@ public class EndpointRpcRegistry implements EndpointService, EpRendererAugmentat } @Override - public void close() throws Exception { - if (rpcRegistration != null) { - rpcRegistration.close(); - } + public void close() { } /** diff --git a/groupbasedpolicy/src/main/resources/org/opendaylight/blueprint/groupbasedpolicy.xml b/groupbasedpolicy/src/main/resources/org/opendaylight/blueprint/groupbasedpolicy.xml new file mode 100644 index 000000000..72a3e526a --- /dev/null +++ b/groupbasedpolicy/src/main/resources/org/opendaylight/blueprint/groupbasedpolicy.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/groupbasedpolicy/src/main/yang/groupbasedpolicy-cfg.yang b/groupbasedpolicy/src/main/yang/groupbasedpolicy-cfg.yang index 7cbce21e5..d00e207da 100644 --- a/groupbasedpolicy/src/main/yang/groupbasedpolicy-cfg.yang +++ b/groupbasedpolicy/src/main/yang/groupbasedpolicy-cfg.yang @@ -24,35 +24,43 @@ module groupbasedpolicy-cfg { } identity ep-renderer-augmentation-registry { + status deprecated; description "ep-renderer-augmentation-registry service definition"; base "config:service-type"; config:java-class "org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry"; + config:disable-osgi-service-registration; } identity domain-specific-registry { + status deprecated; description "domain-specific-registry service definition"; base "config:service-type"; config:java-class "org.opendaylight.groupbasedpolicy.api.DomainSpecificRegistry"; + config:disable-osgi-service-registration; } identity policy-validator-registry { + status deprecated; description "policy-validator-registry service definition"; base "config:service-type"; config:java-class "org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry"; + config:disable-osgi-service-registration; } identity statistics-manager { + status deprecated; description "statistics-manager service definition"; base "config:service-type"; config:java-class "org.opendaylight.groupbasedpolicy.api.StatisticsManager"; + config:disable-osgi-service-registration; } identity policy-validator-registry-impl { @@ -93,103 +101,18 @@ module groupbasedpolicy-cfg { 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; - } - } - } - // EpRendererAugmentationRegistry service - container policy-validator-registry { - uses config:service-ref { - refine type { - config:required-identity policy-validator-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; - } - } - } } case domain-specific-registry-impl { when "/config:modules/config:module/config:type = 'domain-specific-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; - } - } - } } case statistics-manager-impl { when "/config:modules/config:module/config:type = 'statistics-manager-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; - } - } - } } } } diff --git a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/base_endpoint/BaseEndpointServiceImplTest.java b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/base_endpoint/BaseEndpointServiceImplTest.java index 522d149aa..d28e9e625 100644 --- a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/base_endpoint/BaseEndpointServiceImplTest.java +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/base_endpoint/BaseEndpointServiceImplTest.java @@ -8,8 +8,6 @@ package org.opendaylight.groupbasedpolicy.base_endpoint; -import static org.mockito.Mockito.mock; - import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -22,7 +20,6 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; import org.opendaylight.groupbasedpolicy.test.CustomDataBrokerTest; import org.opendaylight.groupbasedpolicy.util.DataStoreHelper; import org.opendaylight.groupbasedpolicy.util.EndpointUtils; @@ -100,17 +97,15 @@ public class BaseEndpointServiceImplTest extends CustomDataBrokerTest { @Before public void init() { dataProvider = getDataBroker(); - RpcProviderRegistry rpcRegistry = mock(RpcProviderRegistry.class); baseEndpointRpcRegistry = - new BaseEndpointServiceImpl(dataProvider, rpcRegistry, new EndpointAugmentorRegistryImpl()); + new BaseEndpointServiceImpl(dataProvider, new EndpointAugmentorRegistryImpl()); } @Test public void testConstructor() throws Exception { - RpcProviderRegistry rpcRegistry = mock(RpcProviderRegistry.class); BaseEndpointServiceImpl registry = - new BaseEndpointServiceImpl(dataProvider, rpcRegistry, new EndpointAugmentorRegistryImpl()); + new BaseEndpointServiceImpl(dataProvider, new EndpointAugmentorRegistryImpl()); registry.close(); } @@ -126,7 +121,7 @@ public class BaseEndpointServiceImplTest extends CustomDataBrokerTest { ContainmentEndpoint contEp = createBaseContEpBuilder().build(); RegisterEndpointInputBuilder inputBuilder = new RegisterEndpointInputBuilder(); setAddrEpsToBuilder(inputBuilder, l2EpWithL3Parent, l3EpWithL2Child); - setContEpsToBuilder(inputBuilder, contEp); + setContEpsToBuilder(inputBuilder, contEp); RpcResult rpcResult = baseEndpointRpcRegistry.registerEndpoint(inputBuilder.build()).get(); Assert.assertTrue(rpcResult.isSuccessful()); 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 fc603d291..4cd122210 100755 --- a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/endpoint/EndpointRpcRegistryTest.java +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/endpoint/EndpointRpcRegistryTest.java @@ -18,7 +18,6 @@ import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.List; -import com.google.common.util.concurrent.CheckedFuture; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -27,7 +26,6 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; -import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentation; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix; @@ -63,6 +61,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.r import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import com.google.common.util.concurrent.CheckedFuture; + public class EndpointRpcRegistryTest { private static final String L2_BD_ID = "l2bdId"; @@ -83,15 +83,13 @@ public class EndpointRpcRegistryTest { dataProvider = mock(DataBroker.class); epRendererAugmentation = mock(EpRendererAugmentation.class); WriteTransaction wt = newWriteTransactionMock(); - RpcProviderRegistry rpcRegistry = mock(RpcProviderRegistry.class); - endpointRpcRegistry = new EndpointRpcRegistry(dataProvider, rpcRegistry); + endpointRpcRegistry = new EndpointRpcRegistry(dataProvider); } @Test public void testConstructor() throws Exception { - RpcProviderRegistry rpcRegistry = mock(RpcProviderRegistry.class); - EndpointRpcRegistry other = new EndpointRpcRegistry(dataProvider, rpcRegistry); + EndpointRpcRegistry other = new EndpointRpcRegistry(dataProvider); other.close(); } -- 2.36.6