<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
- xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0">
+ xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.2.0">
<cm:property-placeholder persistent-id="org.opendaylight.controller.cluster.datastore.broker" update-strategy="none">
<cm:default-properties>
</cm:default-properties>
</cm:property-placeholder>
- <reference id="schemaService" interface="org.opendaylight.controller.sal.core.api.model.SchemaService" />
+ <odl:static-reference id="schemaService" interface="org.opendaylight.mdsal.dom.api.DOMSchemaService" />
<!-- ActorSystemProvider -->
+ <bean id="bundleClassLoader" class="org.opendaylight.controller.config.yang.config.actor_system_provider.impl.factory.osgi.BundleClassLoaderFactory"
+ factory-method="createClassLoader">
+ <argument ref="blueprintBundleContext" />
+ </bean>
+
+ <bean id="actorSystemProps" class="org.opendaylight.controller.config.yang.config.actor_system_provider.impl.factory.osgi.QuarantinedMonitorActorPropsFactory"
+ factory-method="createProps">
+ <argument ref="blueprintBundleContext" />
+ </bean>
+
+ <bean id="akkaReader" class="org.opendaylight.controller.cluster.common.actor.FileAkkaConfigurationReader"/>
+ <bean id="akkaConfig" class="org.opendaylight.controller.config.yang.config.actor_system_provider.impl.factory.AkkaConfigFactory"
+ factory-method="createAkkaConfig">
+ <argument ref="akkaReader" />
+ </bean>
+
<bean id="actorSystemProvider" class="org.opendaylight.controller.config.yang.config.actor_system_provider.impl.ActorSystemProviderImpl"
destroy-method="close">
- <argument ref="blueprintBundleContext"/>
+ <argument ref="bundleClassLoader" />
+ <argument ref="actorSystemProps"/>
+ <argument ref="akkaConfig"/>
</bean>
<service ref="actorSystemProvider" interface="org.opendaylight.controller.cluster.ActorSystemProvider"/>
- <!-- Distributed Config Datastore -->
+ <!-- Datastore properties -->
+ <cm:cm-properties id="datastoreProps" persistent-id="org.opendaylight.controller.cluster.datastore"/>
+ <!-- Distributed Config Datastore -->
<bean id="datastoreSnapshotRestore" class="org.opendaylight.controller.cluster.datastore.DatastoreSnapshotRestore"
- factory-method="instance" />
+ factory-method="instance">
+ <argument value="./clustered-datastore-restore"/>
+ </bean>
<bean id="configDatastoreContext" class="org.opendaylight.controller.config.yang.config.distributed_datastore_provider.DistributedConfigDataStoreProviderModule"
factory-method="newDatastoreContext" />
+ <bean id="introspectorConfig" class="org.opendaylight.controller.cluster.datastore.DatastoreContextIntrospector">
+ <argument ref="configDatastoreContext"/>
+ </bean>
+
+ <bean id="updaterConfig" class="org.opendaylight.controller.cluster.datastore.DatastoreContextPropertiesUpdater">
+ <cm:managed-properties persistent-id="org.opendaylight.controller.cluster.datastore" update-strategy="component-managed" update-method="update"/>
+ <argument ref="introspectorConfig"/>
+ <argument ref="datastoreProps"/>
+ </bean>
+
<bean id="configDatastore" class="org.opendaylight.controller.cluster.datastore.DistributedDataStoreFactory"
factory-method="createInstance" destroy-method="close">
<argument ref="schemaService"/>
<argument ref="configDatastoreContext"/>
<argument ref="datastoreSnapshotRestore"/>
<argument ref="actorSystemProvider"/>
- <argument ref="blueprintBundleContext"/>
+ <argument ref="introspectorConfig"/>
+ <argument ref="updaterConfig"/>
</bean>
+ <service ref="configDatastore" odl:type="distributed-config">
+ <interfaces>
+ <value>org.opendaylight.controller.cluster.datastore.DistributedDataStoreInterface</value>
+ </interfaces>
+ </service>
+
<!-- Distributed Operational Datastore -->
+ <bean id="fileModuleShardConfigProvider" class="org.opendaylight.controller.cluster.datastore.config.FileModuleShardConfigProvider">
+ <argument value="./configuration/initial/module-shards.conf"/>
+ <argument value="./configuration/initial/modules.conf"/>
+ </bean>
+
+ <bean id="configurationImpl" class="org.opendaylight.controller.cluster.datastore.config.ConfigurationImpl">
+ <argument ref="fileModuleShardConfigProvider"/>
+ </bean>
<bean id="operDatastoreContext" class="org.opendaylight.controller.config.yang.config.distributed_datastore_provider.DistributedOperationalDataStoreProviderModule"
factory-method="newDatastoreContext" />
+ <bean id="introspectorOper" class="org.opendaylight.controller.cluster.datastore.DatastoreContextIntrospector">
+ <argument ref="operDatastoreContext"/>
+ </bean>
+
+ <bean id="updaterOper" class="org.opendaylight.controller.cluster.datastore.DatastoreContextPropertiesUpdater">
+ <cm:managed-properties persistent-id="org.opendaylight.controller.cluster.datastore" update-strategy="component-managed" update-method="update"/>
+ <argument ref="introspectorOper"/>
+ <argument ref="datastoreProps"/>
+ </bean>
+
<bean id="operDatastore" class="org.opendaylight.controller.cluster.datastore.DistributedDataStoreFactory"
factory-method="createInstance" destroy-method="close">
<argument ref="schemaService"/>
<argument ref="operDatastoreContext"/>
<argument ref="datastoreSnapshotRestore"/>
<argument ref="actorSystemProvider"/>
- <argument ref="blueprintBundleContext"/>
+ <argument ref="introspectorOper"/>
+ <argument ref="updaterOper"/>
+ <argument ref="configurationImpl" />
</bean>
+ <service ref="operDatastore" odl:type="distributed-operational">
+ <interfaces>
+ <value>org.opendaylight.controller.cluster.datastore.DistributedDataStoreInterface</value>
+ </interfaces>
+ </service>
+
<!-- Concurrent DOMDataBroker -->
<bean id="listenableFutureExecutor" class="org.opendaylight.yangtools.util.concurrent.SpecialExecutors"
<argument value="${max-data-broker-future-callback-pool-size}"/>
<argument value="${max-data-broker-future-callback-queue-size}"/>
<argument value="CommitFutures"/>
+ <argument>
+ <!-- We should use a more specific class -->
+ <bean factory-ref="operDatastore" factory-method="getClass"/>
+ </argument>
</bean>
<bean id="commitStatsTracker" class="org.opendaylight.yangtools.util.DurationStatisticsTracker"
factory-method="createConcurrent"/>
- <bean id="clusteredDOMDataBroker" class="org.opendaylight.controller.cluster.datastore.ConcurrentDOMDataBroker"
+ <bean id="clusteredDOMDataBroker" class="org.opendaylight.controller.cluster.databroker.ConcurrentDOMDataBroker"
destroy-method="close">
<argument>
<map>
</bean>
<!-- Distributed EntityOwnershipService -->
+ <cm:cm-properties id="strategiesProps" persistent-id="org.opendaylight.controller.cluster.entity.owner.selection.strategies" />
<bean id="selectionStrategyConfig" class="org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy.EntityOwnerSelectionStrategyConfigReader"
factory-method="loadStrategyWithConfig">
- <argument ref="blueprintBundleContext"/>
+ <argument ref="strategiesProps"/>
</bean>
<bean id="distributedEntityOwnershipService" class="org.opendaylight.controller.cluster.datastore.entityownership.DistributedEntityOwnershipService"
<argument ref="selectionStrategyConfig"/>
</bean>
- <service ref="distributedEntityOwnershipService" interface="org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService"
+ <service ref="distributedEntityOwnershipService" interface="org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipService"
odl:type="default"/>
-</blueprint>
\ No newline at end of file
+ <!-- CDS shard manager -->
+ <bean id="cdsNodeManager" class="org.opendaylight.controller.cluster.sharding.DistributedShardedDOMDataTree"
+ init-method="init">
+ <argument ref="actorSystemProvider"/>
+ <argument ref="operDatastore"/>
+ <argument ref="configDatastore"/>
+ </bean>
+
+ <service ref="cdsNodeManager" odl:type="default">
+ <interfaces>
+ <value>org.opendaylight.mdsal.dom.api.DOMDataTreeShardingService</value>
+ <value>org.opendaylight.mdsal.dom.api.DOMDataTreeService</value>
+ <value>org.opendaylight.controller.cluster.sharding.DistributedShardFactory</value>
+ </interfaces>
+ </service>
+
+</blueprint>