1 <?xml version="1.0" encoding="UTF-8"?>
2 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
3 xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
4 xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.2.0">
6 <cm:property-placeholder persistent-id="org.opendaylight.controller.cluster.datastore.broker" update-strategy="none">
7 <cm:default-properties>
8 <cm:property name="max-data-broker-future-callback-queue-size" value="1000"/>
9 <cm:property name="max-data-broker-future-callback-pool-size" value="20"/>
10 </cm:default-properties>
11 </cm:property-placeholder>
13 <odl:static-reference id="schemaService" interface="org.opendaylight.mdsal.dom.api.DOMSchemaService" />
15 <reference id="classLoadingStrategy" interface="org.opendaylight.mdsal.binding.generator.api.ClassLoadingStrategy" />
17 <!-- ActorSystemProvider -->
19 <bean id="bundleClassLoader" class="org.opendaylight.controller.config.yang.config.actor_system_provider.impl.factory.osgi.BundleClassLoaderFactory"
20 factory-method="createClassLoader">
21 <argument ref="blueprintBundleContext" />
24 <bean id="actorSystemProps" class="org.opendaylight.controller.config.yang.config.actor_system_provider.impl.factory.osgi.QuarantinedMonitorActorPropsFactory"
25 factory-method="createProps">
26 <argument ref="blueprintBundleContext" />
29 <bean id="akkaReader" class="org.opendaylight.controller.cluster.common.actor.FileAkkaConfigurationReader"/>
30 <bean id="akkaConfig" class="org.opendaylight.controller.config.yang.config.actor_system_provider.impl.factory.AkkaConfigFactory"
31 factory-method="createAkkaConfig">
32 <argument ref="akkaReader" />
35 <bean id="actorSystemProvider" class="org.opendaylight.controller.config.yang.config.actor_system_provider.impl.ActorSystemProviderImpl"
36 destroy-method="close">
37 <argument ref="bundleClassLoader" />
38 <argument ref="actorSystemProps"/>
39 <argument ref="akkaConfig"/>
42 <service ref="actorSystemProvider" interface="org.opendaylight.controller.cluster.ActorSystemProvider"/>
44 <!-- Datastore properties -->
45 <cm:cm-properties id="datastoreProps" persistent-id="org.opendaylight.controller.cluster.datastore"/>
47 <!-- Distributed Config Datastore -->
48 <bean id="datastoreSnapshotRestore" class="org.opendaylight.controller.cluster.datastore.DatastoreSnapshotRestore"
49 factory-method="instance">
50 <argument value="./clustered-datastore-restore"/>
53 <bean id="introspectorFactory" class="org.opendaylight.controller.cluster.datastore.DatastoreContextIntrospectorFactory">
54 <argument ref="schemaService"/>
55 <argument ref="classLoadingStrategy"/>
58 <bean id="introspectorConfig" factory-ref="introspectorFactory" factory-method="newInstance">
59 <argument type="org.opendaylight.mdsal.common.api.LogicalDatastoreType" value="CONFIGURATION"/>
62 <bean id="updaterConfig" class="org.opendaylight.controller.cluster.datastore.DatastoreContextPropertiesUpdater">
63 <cm:managed-properties persistent-id="org.opendaylight.controller.cluster.datastore" update-strategy="component-managed" update-method="update"/>
64 <argument ref="introspectorConfig"/>
65 <argument ref="datastoreProps"/>
68 <bean id="configDatastore" class="org.opendaylight.controller.cluster.datastore.DistributedDataStoreFactory"
69 factory-method="createInstance" destroy-method="close">
70 <argument ref="schemaService"/>
72 <bean factory-ref="introspectorConfig" factory-method="getContext" />
74 <argument ref="datastoreSnapshotRestore"/>
75 <argument ref="actorSystemProvider"/>
76 <argument ref="introspectorConfig"/>
77 <argument ref="updaterConfig"/>
80 <service ref="configDatastore" odl:type="distributed-config">
82 <value>org.opendaylight.controller.cluster.datastore.DistributedDataStoreInterface</value>
86 <!-- Distributed Operational Datastore -->
87 <bean id="fileModuleShardConfigProvider" class="org.opendaylight.controller.cluster.datastore.config.FileModuleShardConfigProvider">
88 <argument value="./configuration/initial/module-shards.conf"/>
89 <argument value="./configuration/initial/modules.conf"/>
92 <bean id="configurationImpl" class="org.opendaylight.controller.cluster.datastore.config.ConfigurationImpl">
93 <argument ref="fileModuleShardConfigProvider"/>
96 <bean id="introspectorOper" factory-ref="introspectorFactory" factory-method="newInstance">
97 <argument type="org.opendaylight.mdsal.common.api.LogicalDatastoreType" value="OPERATIONAL"/>
100 <bean id="updaterOper" class="org.opendaylight.controller.cluster.datastore.DatastoreContextPropertiesUpdater">
101 <cm:managed-properties persistent-id="org.opendaylight.controller.cluster.datastore" update-strategy="component-managed" update-method="update"/>
102 <argument ref="introspectorOper"/>
103 <argument ref="datastoreProps"/>
106 <bean id="operDatastore" class="org.opendaylight.controller.cluster.datastore.DistributedDataStoreFactory"
107 factory-method="createInstance" destroy-method="close">
108 <argument ref="schemaService"/>
110 <bean factory-ref="introspectorOper" factory-method="getContext" />
112 <argument ref="datastoreSnapshotRestore"/>
113 <argument ref="actorSystemProvider"/>
114 <argument ref="introspectorOper"/>
115 <argument ref="updaterOper"/>
116 <argument ref="configurationImpl" />
119 <service ref="operDatastore" odl:type="distributed-operational">
121 <value>org.opendaylight.controller.cluster.datastore.DistributedDataStoreInterface</value>
125 <!-- Concurrent DOMDataBroker -->
127 <bean id="listenableFutureExecutor" class="org.opendaylight.yangtools.util.concurrent.SpecialExecutors"
128 factory-method="newBlockingBoundedCachedThreadPool">
129 <argument value="${max-data-broker-future-callback-pool-size}"/>
130 <argument value="${max-data-broker-future-callback-queue-size}"/>
131 <argument value="CommitFutures"/>
133 <!-- We should use a more specific class -->
134 <bean factory-ref="operDatastore" factory-method="getClass"/>
138 <bean id="commitStatsTracker" class="org.opendaylight.yangtools.util.DurationStatisticsTracker"
139 factory-method="createConcurrent"/>
141 <bean id="clusteredDOMDataBroker" class="org.opendaylight.controller.cluster.databroker.ConcurrentDOMDataBroker"
142 destroy-method="close">
145 <entry key="CONFIGURATION" value-ref="configDatastore"/>
146 <entry key="OPERATIONAL" value-ref="operDatastore"/>
149 <argument ref="listenableFutureExecutor"/>
150 <argument ref="commitStatsTracker"/>
153 <service ref="clusteredDOMDataBroker" interface="org.opendaylight.mdsal.dom.api.DOMDataBroker"
156 <bean id="legacyDOMDataBroker" class="org.opendaylight.controller.cluster.databroker.compat.LegacyDOMDataBrokerAdapter">
157 <argument ref="clusteredDOMDataBroker"/>
160 <service ref="legacyDOMDataBroker" interface="org.opendaylight.controller.md.sal.dom.api.DOMDataBroker"
163 <!-- JMX beans for the data broker -->
165 <bean id="commitStatsMXBean" class="org.opendaylight.controller.md.sal.dom.broker.impl.jmx.CommitStatsMXBeanImpl"
166 init-method="register" destroy-method="unregister">
167 <argument ref="commitStatsTracker"/>
168 <argument value="DOMDataBroker"/>
171 <bean id="threadStatsMXBean" class="org.opendaylight.controller.md.sal.common.util.jmx.ThreadExecutorStatsMXBeanImpl"
172 factory-method="create" destroy-method="unregister">
173 <argument ref="listenableFutureExecutor"/>
174 <argument value="CommitFutureExecutorStats"/>
175 <argument value="DOMDataBroker"/>
176 <argument><null/></argument>
179 <!-- Distributed EntityOwnershipService -->
180 <cm:cm-properties id="strategiesProps" persistent-id="org.opendaylight.controller.cluster.entity.owner.selection.strategies" />
182 <bean id="selectionStrategyConfig" class="org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy.EntityOwnerSelectionStrategyConfigReader"
183 factory-method="loadStrategyWithConfig">
184 <argument ref="strategiesProps"/>
187 <bean id="distributedEntityOwnershipService" class="org.opendaylight.controller.cluster.datastore.entityownership.DistributedEntityOwnershipService"
188 factory-method="start" destroy-method="close">
190 <bean factory-ref="operDatastore" factory-method="getActorContext"/>
192 <argument ref="selectionStrategyConfig"/>
195 <service ref="distributedEntityOwnershipService" interface="org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipService"
198 <!-- CDS shard manager -->
199 <bean id="cdsNodeManager" class="org.opendaylight.controller.cluster.sharding.DistributedShardedDOMDataTree"
201 <argument ref="actorSystemProvider"/>
202 <argument ref="operDatastore"/>
203 <argument ref="configDatastore"/>
206 <service ref="cdsNodeManager" odl:type="default">
208 <value>org.opendaylight.mdsal.dom.api.DOMDataTreeShardingService</value>
209 <value>org.opendaylight.mdsal.dom.api.DOMDataTreeService</value>
210 <value>org.opendaylight.controller.cluster.sharding.DistributedShardFactory</value>