From: Tom Pantelis Date: Tue, 19 Jul 2016 01:30:39 +0000 (-0400) Subject: Add odl-mdsal-singleton-dom feature and CSS yang X-Git-Tag: release/boron~58 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=35d339178ea32743fd235e2b8e5f78ea6d3ab398 Add odl-mdsal-singleton-dom feature and CSS yang Added the odl-mdsal-singleton-dom feature to the odl-mdsal-local-broker feature. Also added CSS yang and Module class for the DOMClusterSingletonServiceProvider and added the XML to the existing 06-clustered-entity-ownership.xml file. Change-Id: I69c7224fd7aa12742778670e7aec53118bf98332 Signed-off-by: Tom Pantelis --- diff --git a/features/mdsal/src/main/features/features.xml b/features/mdsal/src/main/features/features.xml index dda7c73d41..4d10e2afdb 100644 --- a/features/mdsal/src/main/features/features.xml +++ b/features/mdsal/src/main/features/features.xml @@ -41,6 +41,7 @@ odl-mdsal-eos-dom + odl-mdsal-singleton-dom mvn:org.opendaylight.controller/sal-core-api/{{VERSION}} mvn:org.opendaylight.controller/sal-core-spi/{{VERSION}} mvn:org.opendaylight.controller/sal-schema-service/{{VERSION}} diff --git a/opendaylight/md-sal/sal-clustering-config/src/main/resources/initial/06-clustered-entity-ownership.xml.conf b/opendaylight/md-sal/sal-clustering-config/src/main/resources/initial/06-clustered-entity-ownership.xml.conf index e7428c84de..f6eabc43d4 100644 --- a/opendaylight/md-sal/sal-clustering-config/src/main/resources/initial/06-clustered-entity-ownership.xml.conf +++ b/opendaylight/md-sal/sal-clustering-config/src/main/resources/initial/06-clustered-entity-ownership.xml.conf @@ -15,6 +15,11 @@ legacy-eos:legacy-entity-ownership-service-provider legacy-entity-ownership-service-provider + + + singleton:dom-cluster-singleton-service-impl + dom-cluster-singleton-service-impl + @@ -25,10 +30,20 @@ /modules/module[type='legacy-entity-ownership-service-provider'][name='legacy-entity-ownership-service-provider'] + + + singleton:dom-cluster-singleton-service + + dom-cluster-singleton-service + /modules/module[type='dom-cluster-singleton-service-impl'][name='dom-cluster-singleton-service-impl'] + + urn:opendaylight:params:xml:ns:yang:controller:config:legacy-entity-ownership-service-provider?module=opendaylight-legacy-entity-ownership-service-provider&revision=2016-02-26 + urn:opendaylight:params:xml:ns:yang:md:sal:config:impl:cluster-singleton-service?module=cluster-singleton-service-impl&revision=2016-07-18 + urn:opendaylight:params:xml:ns:yang:md:sal:config:spi:cluster-singleton-service?module=cluster-singleton-service-spi&revision=2016-07-18 diff --git a/opendaylight/md-sal/sal-dom-config/pom.xml b/opendaylight/md-sal/sal-dom-config/pom.xml index 97117c5aa2..653fc4bc6e 100644 --- a/opendaylight/md-sal/sal-dom-config/pom.xml +++ b/opendaylight/md-sal/sal-dom-config/pom.xml @@ -26,6 +26,10 @@ org.opendaylight.controller sal-core-spi + + org.opendaylight.mdsal + mdsal-singleton-dom-api + @@ -36,7 +40,13 @@ true - *,com.google.common.base + + com.google.common.base, + org.opendaylight.mdsal.eos.common.api, + org.opendaylight.mdsal.eos.dom.api, + org.opendaylight.mdsal.singleton.common.api, + * + diff --git a/opendaylight/md-sal/sal-dom-config/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/md/sal/config/impl/cluster/singleton/service/rev160718/DOMClusterSingletonServiceProviderModule.java b/opendaylight/md-sal/sal-dom-config/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/md/sal/config/impl/cluster/singleton/service/rev160718/DOMClusterSingletonServiceProviderModule.java new file mode 100644 index 0000000000..72094daa29 --- /dev/null +++ b/opendaylight/md-sal/sal-dom-config/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/md/sal/config/impl/cluster/singleton/service/rev160718/DOMClusterSingletonServiceProviderModule.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2016 Brocade Communications 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.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.impl.cluster.singleton.service.rev160718; + +import com.google.common.reflect.AbstractInvocationHandler; +import com.google.common.reflect.Reflection; +import java.lang.reflect.Method; +import org.opendaylight.controller.config.api.DependencyResolver; +import org.opendaylight.controller.config.api.ModuleIdentifier; +import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker; +import org.opendaylight.mdsal.singleton.dom.api.DOMClusterSingletonServiceProvider; +import org.osgi.framework.BundleContext; + +/** + * @deprecated Replaced by blueprint wiring but remains for backwards compatibility until downstream users + * of the provided config system service are converted to blueprint. + */ +@Deprecated +public class DOMClusterSingletonServiceProviderModule extends AbstractDOMClusterSingletonServiceProviderModule { + private BundleContext bundleContext; + + public DOMClusterSingletonServiceProviderModule(ModuleIdentifier identifier, DependencyResolver dependencyResolver) { + super(identifier, dependencyResolver); + } + + public DOMClusterSingletonServiceProviderModule(ModuleIdentifier identifier, DependencyResolver dependencyResolver, + DOMClusterSingletonServiceProviderModule oldModule, java.lang.AutoCloseable oldInstance) { + super(identifier, dependencyResolver, oldModule, oldInstance); + } + + + @Override + public AutoCloseable createInstance() { + final WaitingServiceTracker tracker = + WaitingServiceTracker.create(DOMClusterSingletonServiceProvider.class, bundleContext); + final DOMClusterSingletonServiceProvider service = tracker.waitForService(WaitingServiceTracker.FIVE_MINUTES); + + // Create a proxy to override close to close the ServiceTracker. The actual DOMClusterSingletonServiceProvider + // instance will be closed via blueprint. + return Reflection.newProxy(AutoCloseableDOMClusterSingletonServiceProvider.class, new AbstractInvocationHandler() { + @Override + protected Object handleInvocation(Object proxy, Method method, Object[] args) throws Throwable { + if (method.getName().equals("close")) { + tracker.close(); + return null; + } else { + return method.invoke(service, args); + } + } + }); + + } + + void setBundleContext(BundleContext bundleContext) { + this.bundleContext = bundleContext; + } + + private static interface AutoCloseableDOMClusterSingletonServiceProvider extends DOMClusterSingletonServiceProvider, AutoCloseable { + } +} \ No newline at end of file diff --git a/opendaylight/md-sal/sal-dom-config/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/md/sal/config/impl/cluster/singleton/service/rev160718/DOMClusterSingletonServiceProviderModuleFactory.java b/opendaylight/md-sal/sal-dom-config/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/md/sal/config/impl/cluster/singleton/service/rev160718/DOMClusterSingletonServiceProviderModuleFactory.java new file mode 100644 index 0000000000..3d1f5340e9 --- /dev/null +++ b/opendaylight/md-sal/sal-dom-config/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/md/sal/config/impl/cluster/singleton/service/rev160718/DOMClusterSingletonServiceProviderModuleFactory.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2016 Brocade Communications 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.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.impl.cluster.singleton.service.rev160718; + +import org.opendaylight.controller.config.api.DependencyResolver; +import org.osgi.framework.BundleContext; + +/** + * @deprecated Replaced by blueprint wiring but remains for backwards compatibility until downstream users + * of the provided config system service are converted to blueprint. + */ +@Deprecated +public class DOMClusterSingletonServiceProviderModuleFactory extends AbstractDOMClusterSingletonServiceProviderModuleFactory { + @Override + public DOMClusterSingletonServiceProviderModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, + DOMClusterSingletonServiceProviderModule oldModule, AutoCloseable oldInstance, BundleContext bundleContext) { + DOMClusterSingletonServiceProviderModule module = super.instantiateModule(instanceName, dependencyResolver, oldModule, + oldInstance, bundleContext); + module.setBundleContext(bundleContext); + return module; + } + + @Override + public DOMClusterSingletonServiceProviderModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, + BundleContext bundleContext) { + DOMClusterSingletonServiceProviderModule module = super.instantiateModule(instanceName, dependencyResolver, bundleContext); + module.setBundleContext(bundleContext); + return module; + } +} \ No newline at end of file diff --git a/opendaylight/md-sal/sal-dom-config/src/main/yang/cluster-singleton-service-impl-cfg.yang b/opendaylight/md-sal/sal-dom-config/src/main/yang/cluster-singleton-service-impl-cfg.yang new file mode 100644 index 0000000000..0084a43864 --- /dev/null +++ b/opendaylight/md-sal/sal-dom-config/src/main/yang/cluster-singleton-service-impl-cfg.yang @@ -0,0 +1,26 @@ +module cluster-singleton-service-impl { + yang-version 1; + namespace "urn:opendaylight:params:xml:ns:yang:md:sal:config:impl:cluster-singleton-service"; + prefix "cluster-singleton-service"; + + import config { prefix config; revision-date 2013-04-05; } + import cluster-singleton-service-spi { prefix spi; revision-date 2016-07-18; } + + description "MD-SAL ClusterSingletonServiceProvider service implementation definition"; + + revision 2016-07-18 { + description "Initial revision"; + } + + identity dom-cluster-singleton-service-impl { + base config:module-type; + config:provided-service spi:dom-cluster-singleton-service; + config:java-name-prefix DOMClusterSingletonServiceProvider; + } + + augment "/config:modules/config:module/config:configuration" { + case dom-cluster-singleton-service-impl { + when "/config:modules/config:module/config:type = 'dom-cluster-singleton-service-impl'"; + } + } +} diff --git a/opendaylight/md-sal/sal-dom-config/src/main/yang/cluster-singleton-service-spi-cfg.yang b/opendaylight/md-sal/sal-dom-config/src/main/yang/cluster-singleton-service-spi-cfg.yang new file mode 100644 index 0000000000..bc5f7e5996 --- /dev/null +++ b/opendaylight/md-sal/sal-dom-config/src/main/yang/cluster-singleton-service-spi-cfg.yang @@ -0,0 +1,19 @@ +module cluster-singleton-service-spi { + yang-version 1; + namespace "urn:opendaylight:params:xml:ns:yang:md:sal:config:spi:cluster-singleton-service"; + prefix "cluster-singleton-service"; + + import config { prefix config; revision-date 2013-04-05; } + + description "MD-SAL ClusterSingletonServiceProvider service interface definition"; + + revision 2016-07-18 { + description "Initial revision"; + } + + identity dom-cluster-singleton-service { + base "config:service-type"; + config:java-class "org.opendaylight.mdsal.singleton.dom.api.DOMClusterSingletonServiceProvider"; + config:disable-osgi-service-registration; + } +}