-<?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.2.0">
-
- <cm:property-placeholder persistent-id="org.opendaylight.controller.cluster.datastore.broker" update-strategy="none">
- <cm:default-properties>
- <cm:property name="max-data-broker-future-callback-queue-size" value="1000"/>
- <cm:property name="max-data-broker-future-callback-pool-size" value="20"/>
- </cm:default-properties>
- </cm:property-placeholder>
-
- <odl:static-reference id="schemaService" interface="org.opendaylight.mdsal.dom.api.DOMSchemaService" />
-
- <!-- Datastore properties -->
- <reference id="actorSystemProvider" interface="org.opendaylight.controller.cluster.ActorSystemProvider"/>
- <reference id="introspectorFactory" interface="org.opendaylight.controller.cluster.datastore.DatastoreContextIntrospectorFactory"/>
- <reference id="datastoreSnapshotRestore" interface="org.opendaylight.controller.cluster.datastore.DatastoreSnapshotRestore"/>
- <reference id="fileModuleShardConfigProvider" interface="org.opendaylight.controller.cluster.datastore.config.ModuleShardConfigProvider"/>
-
- <cm:cm-properties id="datastoreProps" persistent-id="org.opendaylight.controller.cluster.datastore"/>
-
- <!-- Distributed Config Datastore -->
- <bean id="introspectorConfig" factory-ref="introspectorFactory" factory-method="newInstance">
- <argument type="org.opendaylight.mdsal.common.api.LogicalDatastoreType" value="CONFIGURATION"/>
- </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>
- <bean factory-ref="introspectorConfig" factory-method="getContext" />
- </argument>
- <argument ref="datastoreSnapshotRestore"/>
- <argument ref="actorSystemProvider"/>
- <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="configurationImpl" class="org.opendaylight.controller.cluster.datastore.config.ConfigurationImpl">
- <argument ref="fileModuleShardConfigProvider"/>
- </bean>
-
- <bean id="introspectorOper" factory-ref="introspectorFactory" factory-method="newInstance">
- <argument type="org.opendaylight.mdsal.common.api.LogicalDatastoreType" value="OPERATIONAL"/>
- </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>
- <bean factory-ref="introspectorOper" factory-method="getContext" />
- </argument>
- <argument ref="datastoreSnapshotRestore"/>
- <argument ref="actorSystemProvider"/>
- <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"
- factory-method="newBlockingBoundedCachedThreadPool">
- <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.databroker.ConcurrentDOMDataBroker"
- destroy-method="close">
- <argument>
- <map>
- <entry key="CONFIGURATION" value-ref="configDatastore"/>
- <entry key="OPERATIONAL" value-ref="operDatastore"/>
- </map>
- </argument>
- <argument ref="listenableFutureExecutor"/>
- <argument ref="commitStatsTracker"/>
- </bean>
-
- <service ref="clusteredDOMDataBroker" interface="org.opendaylight.mdsal.dom.api.DOMDataBroker"
- odl:type="default"/>
-
- <!-- JMX beans for the data broker -->
-
- <bean id="commitStatsMXBean" class="org.opendaylight.controller.cluster.datastore.jmx.mbeans.CommitStatsMXBeanImpl"
- init-method="register" destroy-method="unregister">
- <argument ref="commitStatsTracker"/>
- <argument value="DOMDataBroker"/>
- </bean>
-
- <bean id="threadStatsMXBean" class="org.opendaylight.controller.md.sal.common.util.jmx.ThreadExecutorStatsMXBeanImpl"
- factory-method="create" destroy-method="unregister">
- <argument ref="listenableFutureExecutor"/>
- <argument value="CommitFutureExecutorStats"/>
- <argument value="DOMDataBroker"/>
- </bean>
-
- <!-- 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>