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 <!-- ActorSystemProvider -->
17 <bean id="bundleClassLoader" class="org.opendaylight.controller.config.yang.config.actor_system_provider.impl.factory.osgi.BundleClassLoaderFactory"
18 factory-method="createClassLoader">
19 <argument ref="blueprintBundleContext" />
22 <bean id="actorSystemProps" class="org.opendaylight.controller.config.yang.config.actor_system_provider.impl.factory.osgi.QuarantinedMonitorActorPropsFactory"
23 factory-method="createProps">
24 <argument ref="blueprintBundleContext" />
27 <bean id="akkaReader" class="org.opendaylight.controller.cluster.common.actor.FileAkkaConfigurationReader"/>
28 <bean id="akkaConfig" class="org.opendaylight.controller.config.yang.config.actor_system_provider.impl.factory.AkkaConfigFactory"
29 factory-method="createAkkaConfig">
30 <argument ref="akkaReader" />
33 <bean id="actorSystemProvider" class="org.opendaylight.controller.config.yang.config.actor_system_provider.impl.ActorSystemProviderImpl"
34 destroy-method="close">
35 <argument ref="bundleClassLoader" />
36 <argument ref="actorSystemProps"/>
37 <argument ref="akkaConfig"/>
40 <service ref="actorSystemProvider" interface="org.opendaylight.controller.cluster.ActorSystemProvider"/>
42 <!-- Datastore properties -->
43 <cm:cm-properties id="datastoreProps" persistent-id="org.opendaylight.controller.cluster.datastore"/>
45 <!-- Distributed Config Datastore -->
46 <bean id="datastoreSnapshotRestore" class="org.opendaylight.controller.cluster.datastore.DatastoreSnapshotRestore"
47 factory-method="instance">
48 <argument value="./clustered-datastore-restore"/>
51 <bean id="configDatastoreContext" class="org.opendaylight.controller.config.yang.config.distributed_datastore_provider.DistributedConfigDataStoreProviderModule"
52 factory-method="newDatastoreContext" />
54 <bean id="introspectorConfig" class="org.opendaylight.controller.cluster.datastore.DatastoreContextIntrospector">
55 <argument ref="configDatastoreContext"/>
58 <bean id="updaterConfig" class="org.opendaylight.controller.cluster.datastore.DatastoreContextPropertiesUpdater">
59 <cm:managed-properties persistent-id="org.opendaylight.controller.cluster.datastore" update-strategy="component-managed" update-method="update"/>
60 <argument ref="introspectorConfig"/>
61 <argument ref="datastoreProps"/>
64 <bean id="configDatastore" class="org.opendaylight.controller.cluster.datastore.DistributedDataStoreFactory"
65 factory-method="createInstance" destroy-method="close">
66 <argument ref="schemaService"/>
67 <argument ref="configDatastoreContext"/>
68 <argument ref="datastoreSnapshotRestore"/>
69 <argument ref="actorSystemProvider"/>
70 <argument ref="introspectorConfig"/>
71 <argument ref="updaterConfig"/>
74 <service ref="configDatastore" odl:type="distributed-config">
76 <value>org.opendaylight.controller.cluster.datastore.DistributedDataStoreInterface</value>
80 <!-- Distributed Operational Datastore -->
81 <bean id="fileModuleShardConfigProvider" class="org.opendaylight.controller.cluster.datastore.config.FileModuleShardConfigProvider">
82 <argument value="./configuration/initial/module-shards.conf"/>
83 <argument value="./configuration/initial/modules.conf"/>
86 <bean id="configurationImpl" class="org.opendaylight.controller.cluster.datastore.config.ConfigurationImpl">
87 <argument ref="fileModuleShardConfigProvider"/>
90 <bean id="operDatastoreContext" class="org.opendaylight.controller.config.yang.config.distributed_datastore_provider.DistributedOperationalDataStoreProviderModule"
91 factory-method="newDatastoreContext" />
93 <bean id="introspectorOper" class="org.opendaylight.controller.cluster.datastore.DatastoreContextIntrospector">
94 <argument ref="operDatastoreContext"/>
97 <bean id="updaterOper" class="org.opendaylight.controller.cluster.datastore.DatastoreContextPropertiesUpdater">
98 <cm:managed-properties persistent-id="org.opendaylight.controller.cluster.datastore" update-strategy="component-managed" update-method="update"/>
99 <argument ref="introspectorOper"/>
100 <argument ref="datastoreProps"/>
103 <bean id="operDatastore" class="org.opendaylight.controller.cluster.datastore.DistributedDataStoreFactory"
104 factory-method="createInstance" destroy-method="close">
105 <argument ref="schemaService"/>
106 <argument ref="operDatastoreContext"/>
107 <argument ref="datastoreSnapshotRestore"/>
108 <argument ref="actorSystemProvider"/>
109 <argument ref="introspectorOper"/>
110 <argument ref="updaterOper"/>
111 <argument ref="configurationImpl" />
114 <service ref="operDatastore" odl:type="distributed-operational">
116 <value>org.opendaylight.controller.cluster.datastore.DistributedDataStoreInterface</value>
120 <!-- Concurrent DOMDataBroker -->
122 <bean id="listenableFutureExecutor" class="org.opendaylight.yangtools.util.concurrent.SpecialExecutors"
123 factory-method="newBlockingBoundedCachedThreadPool">
124 <argument value="${max-data-broker-future-callback-pool-size}"/>
125 <argument value="${max-data-broker-future-callback-queue-size}"/>
126 <argument value="CommitFutures"/>
128 <!-- We should use a more specific class -->
129 <bean factory-ref="operDatastore" factory-method="getClass"/>
133 <bean id="commitStatsTracker" class="org.opendaylight.yangtools.util.DurationStatisticsTracker"
134 factory-method="createConcurrent"/>
136 <bean id="clusteredDOMDataBroker" class="org.opendaylight.controller.cluster.databroker.ConcurrentDOMDataBroker"
137 destroy-method="close">
140 <entry key="CONFIGURATION" value-ref="configDatastore"/>
141 <entry key="OPERATIONAL" value-ref="operDatastore"/>
144 <argument ref="listenableFutureExecutor"/>
145 <argument ref="commitStatsTracker"/>
148 <service ref="clusteredDOMDataBroker" interface="org.opendaylight.controller.md.sal.dom.api.DOMDataBroker"
151 <!-- JMX beans for the data broker -->
153 <bean id="commitStatsMXBean" class="org.opendaylight.controller.md.sal.dom.broker.impl.jmx.CommitStatsMXBeanImpl"
154 init-method="register" destroy-method="unregister">
155 <argument ref="commitStatsTracker"/>
156 <argument value="DOMDataBroker"/>
159 <bean id="threadStatsMXBean" class="org.opendaylight.controller.md.sal.common.util.jmx.ThreadExecutorStatsMXBeanImpl"
160 factory-method="create" destroy-method="unregister">
161 <argument ref="listenableFutureExecutor"/>
162 <argument value="CommitFutureExecutorStats"/>
163 <argument value="DOMDataBroker"/>
164 <argument><null/></argument>
167 <!-- Distributed EntityOwnershipService -->
168 <cm:cm-properties id="strategiesProps" persistent-id="org.opendaylight.controller.cluster.entity.owner.selection.strategies" />
170 <bean id="selectionStrategyConfig" class="org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy.EntityOwnerSelectionStrategyConfigReader"
171 factory-method="loadStrategyWithConfig">
172 <argument ref="strategiesProps"/>
175 <bean id="distributedEntityOwnershipService" class="org.opendaylight.controller.cluster.datastore.entityownership.DistributedEntityOwnershipService"
176 factory-method="start" destroy-method="close">
178 <bean factory-ref="operDatastore" factory-method="getActorContext"/>
180 <argument ref="selectionStrategyConfig"/>
183 <service ref="distributedEntityOwnershipService" interface="org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipService"
186 <!-- CDS shard manager -->
187 <bean id="cdsNodeManager" class="org.opendaylight.controller.cluster.sharding.DistributedShardedDOMDataTree"
189 <argument ref="actorSystemProvider"/>
190 <argument ref="operDatastore"/>
191 <argument ref="configDatastore"/>
194 <service ref="cdsNodeManager" odl:type="default">
196 <value>org.opendaylight.mdsal.dom.api.DOMDataTreeShardingService</value>
197 <value>org.opendaylight.mdsal.dom.api.DOMDataTreeService</value>
198 <value>org.opendaylight.controller.cluster.sharding.DistributedShardFactory</value>