From eb095e9201b6279355aac5a1ba3252dbd8564358 Mon Sep 17 00:00:00 2001 From: Basheeruddin Ahmed Date: Tue, 24 Jun 2014 19:05:54 -0700 Subject: [PATCH] Distributed Datastore integration with config subsystem Updated with the usage of sal-dom-spi exposed Config Datastore and Operation Datastore services Change-Id: Ic8ebaf5a90239122f8112712101e3c3ecb09f2fc Signed-off-by: Basheeruddin Ahmed --- .../md-sal/sal-distributed-datastore/pom.xml | 17 +++++--- ...tributedConfigDataStoreProviderModule.java | 40 +++++++++++++++++++ ...ConfigDataStoreProviderModuleFactory.java} | 6 +-- .../DistributedDataStoreProviderModule.java | 36 ----------------- ...tedOperationalDataStoreProviderModule.java | 38 ++++++++++++++++++ ...ationalDataStoreProviderModuleFactory.java | 13 ++++++ .../src/main/resources/application.conf | 3 ++ .../yang/distributed-datastore-provider.yang | 28 ++++++++++--- 8 files changed, 131 insertions(+), 50 deletions(-) create mode 100644 opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedConfigDataStoreProviderModule.java rename opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/{DistributedDataStoreProviderModuleFactory.java => DistributedConfigDataStoreProviderModuleFactory.java} (52%) delete mode 100644 opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedDataStoreProviderModule.java create mode 100644 opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedOperationalDataStoreProviderModule.java create mode 100644 opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedOperationalDataStoreProviderModuleFactory.java create mode 100644 opendaylight/md-sal/sal-distributed-datastore/src/main/resources/application.conf diff --git a/opendaylight/md-sal/sal-distributed-datastore/pom.xml b/opendaylight/md-sal/sal-distributed-datastore/pom.xml index ea686d966f..5aea3fb959 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/pom.xml +++ b/opendaylight/md-sal/sal-distributed-datastore/pom.xml @@ -57,15 +57,20 @@ sal-binding-config - org.opendaylight.controller - sal-broker-impl + sal-inmemory-datastore + 1.1-SNAPSHOT diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedConfigDataStoreProviderModule.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedConfigDataStoreProviderModule.java new file mode 100644 index 0000000000..ad2fb02a30 --- /dev/null +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedConfigDataStoreProviderModule.java @@ -0,0 +1,40 @@ +package org.opendaylight.controller.config.yang.config.distributed_datastore_provider; + +import akka.actor.ActorSystem; +import com.typesafe.config.ConfigFactory; +import org.opendaylight.controller.cluster.datastore.DistributedDataStore; + +public class DistributedConfigDataStoreProviderModule extends org.opendaylight.controller.config.yang.config.distributed_datastore_provider.AbstractDistributedConfigDataStoreProviderModule { + public DistributedConfigDataStoreProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { + super(identifier, dependencyResolver); + } + + public DistributedConfigDataStoreProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.distributed_datastore_provider.DistributedConfigDataStoreProviderModule 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 ActorSystem actorSystem = ActorSystem.create("opendaylight-cluster-system", ConfigFactory + .load().getConfig("ODLCluster")); + + + final DistributedDataStore configDatastore = new DistributedDataStore(actorSystem, "config"); + + final class AutoCloseableDistributedDataStore implements AutoCloseable { + + @Override + public void close() throws Exception { + actorSystem.shutdown(); + } + } + + return new AutoCloseableDistributedDataStore(); + } + +} diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedDataStoreProviderModuleFactory.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedConfigDataStoreProviderModuleFactory.java similarity index 52% rename from opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedDataStoreProviderModuleFactory.java rename to opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedConfigDataStoreProviderModuleFactory.java index 53ef84ebf9..67bf599454 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedDataStoreProviderModuleFactory.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedConfigDataStoreProviderModuleFactory.java @@ -1,13 +1,13 @@ /* * Generated file * -* Generated from: yang module name: distributed-datastore-provider yang module local name: distributed-datastore-provider +* Generated from: yang module name: distributed-datastore-provider yang module local name: distributed-config-datastore-provider * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator -* Generated at: Thu Jun 12 15:23:43 PDT 2014 +* Generated at: Tue Jun 24 17:14:50 PDT 2014 * * Do not modify this file unless it is present under src/main directory */ package org.opendaylight.controller.config.yang.config.distributed_datastore_provider; -public class DistributedDataStoreProviderModuleFactory extends org.opendaylight.controller.config.yang.config.distributed_datastore_provider.AbstractDistributedDataStoreProviderModuleFactory { +public class DistributedConfigDataStoreProviderModuleFactory extends org.opendaylight.controller.config.yang.config.distributed_datastore_provider.AbstractDistributedConfigDataStoreProviderModuleFactory { } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedDataStoreProviderModule.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedDataStoreProviderModule.java deleted file mode 100644 index 3a78f93d8d..0000000000 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedDataStoreProviderModule.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.opendaylight.controller.config.yang.config.distributed_datastore_provider; - -import akka.actor.ActorSystem; -import org.opendaylight.controller.cluster.datastore.DistributedDataStore; - -public class DistributedDataStoreProviderModule extends org.opendaylight.controller.config.yang.config.distributed_datastore_provider.AbstractDistributedDataStoreProviderModule { - public DistributedDataStoreProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { - super(identifier, dependencyResolver); - } - - public DistributedDataStoreProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.distributed_datastore_provider.DistributedDataStoreProviderModule 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() { - ActorSystem actorSystem = ActorSystem.create("opendaylight-cluster"); - final DistributedDataStore configurationStore = new DistributedDataStore(actorSystem, "config"); - final DistributedDataStore operationalStore = new DistributedDataStore(actorSystem, "operational"); - - final class AutoCloseableDistributedDataStore implements AutoCloseable { - - @Override - public void close() throws Exception { - } - } - - return new AutoCloseableDistributedDataStore(); - } - -} diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedOperationalDataStoreProviderModule.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedOperationalDataStoreProviderModule.java new file mode 100644 index 0000000000..9e215a436d --- /dev/null +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedOperationalDataStoreProviderModule.java @@ -0,0 +1,38 @@ +package org.opendaylight.controller.config.yang.config.distributed_datastore_provider; + +import akka.actor.ActorSystem; +import com.typesafe.config.ConfigFactory; +import org.opendaylight.controller.cluster.datastore.DistributedDataStore; + +public class DistributedOperationalDataStoreProviderModule extends org.opendaylight.controller.config.yang.config.distributed_datastore_provider.AbstractDistributedOperationalDataStoreProviderModule { + public DistributedOperationalDataStoreProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { + super(identifier, dependencyResolver); + } + + public DistributedOperationalDataStoreProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.distributed_datastore_provider.DistributedOperationalDataStoreProviderModule 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 ActorSystem actorSystem = ActorSystem.create("opendaylight-cluster", ConfigFactory + .load().getConfig("ODLCluster")); + final DistributedDataStore operationalStore = new DistributedDataStore(actorSystem, "operational"); + + final class AutoCloseableDistributedDataStore implements AutoCloseable { + + @Override + public void close() throws Exception { + actorSystem.shutdown(); + } + } + + return new AutoCloseableDistributedDataStore(); + } + +} diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedOperationalDataStoreProviderModuleFactory.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedOperationalDataStoreProviderModuleFactory.java new file mode 100644 index 0000000000..c9965fee09 --- /dev/null +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedOperationalDataStoreProviderModuleFactory.java @@ -0,0 +1,13 @@ +/* +* Generated file +* +* Generated from: yang module name: distributed-datastore-provider yang module local name: distributed-operational-datastore-provider +* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator +* Generated at: Tue Jun 24 17:14:50 PDT 2014 +* +* Do not modify this file unless it is present under src/main directory +*/ +package org.opendaylight.controller.config.yang.config.distributed_datastore_provider; +public class DistributedOperationalDataStoreProviderModuleFactory extends org.opendaylight.controller.config.yang.config.distributed_datastore_provider.AbstractDistributedOperationalDataStoreProviderModuleFactory { + +} diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/resources/application.conf b/opendaylight/md-sal/sal-distributed-datastore/src/main/resources/application.conf new file mode 100644 index 0000000000..b56c26b578 --- /dev/null +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/resources/application.conf @@ -0,0 +1,3 @@ +ODLCluster{ + +} \ No newline at end of file diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/yang/distributed-datastore-provider.yang b/opendaylight/md-sal/sal-distributed-datastore/src/main/yang/distributed-datastore-provider.yang index 0471bc806e..ab824c4479 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/yang/distributed-datastore-provider.yang +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/yang/distributed-datastore-provider.yang @@ -7,6 +7,9 @@ module distributed-datastore-provider { import config { prefix config; revision-date 2013-04-05; } import rpc-context { prefix rpcx; revision-date 2013-06-17; } + import opendaylight-config-dom-datastore {prefix config-dom-store-spi;} + import opendaylight-operational-dom-datastore {prefix operational-dom-store-spi;} + import opendaylight-md-sal-dom {prefix sal;} description "This module contains the base YANG definitions for @@ -18,17 +21,32 @@ module distributed-datastore-provider { } // This is the definition of the service implementation as a module identity. - identity distributed-datastore-provider { + identity distributed-config-datastore-provider { base config:module-type; - + config:provided-service config-dom-store-spi:config-dom-datastore; // Specifies the prefix for generated java classes. - config:java-name-prefix DistributedDataStoreProvider; + config:java-name-prefix DistributedConfigDataStoreProvider; } + // This is the definition of the service implementation as a module identity. + identity distributed-operational-datastore-provider { + base config:module-type; + config:provided-service operational-dom-store-spi:operational-dom-datastore; + // Specifies the prefix for generated java classes. + config:java-name-prefix DistributedOperationalDataStoreProvider; + } + // Augments the 'configuration' choice node under modules/module. augment "/config:modules/config:module/config:configuration" { - case distributed-datastore-provider { - when "/config:modules/config:module/config:type = 'distributed-datastore-provider'"; + case distributed-config-datastore-provider { + when "/config:modules/config:module/config:type = 'distributed-config-datastore-provider'"; } } + + // Augments the 'configuration' choice node under modules/module. + augment "/config:modules/config:module/config:configuration" { + case distributed-operational-datastore-provider { + when "/config:modules/config:module/config:type = 'distributed-operational-datastore-provider'"; + } + } } -- 2.36.6