6f4301f99288153a37678c48f64c782f3b300eb8
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / resources / org / opendaylight / blueprint / clustered-datastore.xml
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.1.0">
5
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>
12
13   <odl:static-reference id="schemaService" interface="org.opendaylight.mdsal.dom.api.DOMSchemaService" />
14
15   <!-- ActorSystemProvider -->
16
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" />
20   </bean>
21
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" />
25   </bean>
26
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" />
31   </bean>
32
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"/>
38   </bean>
39
40   <service ref="actorSystemProvider" interface="org.opendaylight.controller.cluster.ActorSystemProvider"/>
41
42   <!-- Distributed Config Datastore -->
43
44   <bean id="datastoreSnapshotRestore" class="org.opendaylight.controller.cluster.datastore.DatastoreSnapshotRestore"
45           factory-method="instance">
46     <argument value="./clustered-datastore-restore"/>
47   </bean>
48
49   <bean id="configDatastoreContext" class="org.opendaylight.controller.config.yang.config.distributed_datastore_provider.DistributedConfigDataStoreProviderModule"
50           factory-method="newDatastoreContext" />
51
52   <bean id="configDatastore" class="org.opendaylight.controller.cluster.datastore.DistributedDataStoreFactory"
53           factory-method="createInstance" destroy-method="close">
54     <argument ref="schemaService"/>
55     <argument ref="configDatastoreContext"/>
56     <argument ref="datastoreSnapshotRestore"/>
57     <argument ref="actorSystemProvider"/>
58     <argument ref="blueprintBundleContext"/>
59   </bean>
60
61   <service ref="configDatastore" odl:type="distributed-config">
62     <interfaces>
63       <value>org.opendaylight.controller.cluster.datastore.DistributedDataStoreInterface</value>
64     </interfaces>
65   </service>
66
67   <!-- Distributed Operational Datastore -->
68   <bean id="fileModuleShardConfigProvider" class="org.opendaylight.controller.cluster.datastore.config.FileModuleShardConfigProvider">
69     <argument value="./configuration/initial/module-shards.conf"/>
70     <argument value="./configuration/initial/modules.conf"/>
71   </bean>
72
73   <bean id="configurationImpl" class="org.opendaylight.controller.cluster.datastore.config.ConfigurationImpl">
74     <argument ref="fileModuleShardConfigProvider"/>
75   </bean>
76
77   <bean id="operDatastoreContext" class="org.opendaylight.controller.config.yang.config.distributed_datastore_provider.DistributedOperationalDataStoreProviderModule"
78           factory-method="newDatastoreContext" />
79
80   <bean id="operDatastore" class="org.opendaylight.controller.cluster.datastore.DistributedDataStoreFactory"
81           factory-method="createInstance" destroy-method="close">
82     <argument ref="schemaService"/>
83     <argument ref="operDatastoreContext"/>
84     <argument ref="datastoreSnapshotRestore"/>
85     <argument ref="actorSystemProvider"/>
86     <argument ref="blueprintBundleContext"/>
87     <argument ref="configurationImpl" />
88   </bean>
89
90   <service ref="operDatastore" odl:type="distributed-operational">
91     <interfaces>
92       <value>org.opendaylight.controller.cluster.datastore.DistributedDataStoreInterface</value>
93     </interfaces>
94   </service>
95
96   <!-- Concurrent DOMDataBroker -->
97
98   <bean id="listenableFutureExecutor" class="org.opendaylight.yangtools.util.concurrent.SpecialExecutors"
99           factory-method="newBlockingBoundedCachedThreadPool">
100     <argument value="${max-data-broker-future-callback-pool-size}"/>
101     <argument value="${max-data-broker-future-callback-queue-size}"/>
102     <argument value="CommitFutures"/>
103   </bean>
104
105   <bean id="commitStatsTracker" class="org.opendaylight.yangtools.util.DurationStatisticsTracker"
106           factory-method="createConcurrent"/>
107
108   <bean id="clusteredDOMDataBroker" class="org.opendaylight.controller.cluster.databroker.ConcurrentDOMDataBroker"
109           destroy-method="close">
110     <argument>
111       <map>
112         <entry key="CONFIGURATION" value-ref="configDatastore"/>
113         <entry key="OPERATIONAL" value-ref="operDatastore"/>
114       </map>
115     </argument>
116     <argument ref="listenableFutureExecutor"/>
117     <argument ref="commitStatsTracker"/>
118   </bean>
119
120   <service ref="clusteredDOMDataBroker" interface="org.opendaylight.controller.md.sal.dom.api.DOMDataBroker"
121           odl:type="default"/>
122
123   <!-- JMX beans for the data broker -->
124
125   <bean id="commitStatsMXBean" class="org.opendaylight.controller.md.sal.dom.broker.impl.jmx.CommitStatsMXBeanImpl"
126           init-method="register" destroy-method="unregister">
127     <argument ref="commitStatsTracker"/>
128     <argument value="DOMDataBroker"/>
129   </bean>
130
131   <bean id="threadStatsMXBean" class="org.opendaylight.controller.md.sal.common.util.jmx.ThreadExecutorStatsMXBeanImpl"
132           factory-method="create" destroy-method="unregister">
133     <argument ref="listenableFutureExecutor"/>
134     <argument value="CommitFutureExecutorStats"/>
135     <argument value="DOMDataBroker"/>
136     <argument><null/></argument>
137   </bean>
138
139   <!-- Distributed EntityOwnershipService -->
140
141   <bean id="selectionStrategyConfig" class="org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy.EntityOwnerSelectionStrategyConfigReader"
142           factory-method="loadStrategyWithConfig">
143     <argument ref="blueprintBundleContext"/>
144   </bean>
145
146   <bean id="distributedEntityOwnershipService" class="org.opendaylight.controller.cluster.datastore.entityownership.DistributedEntityOwnershipService"
147           factory-method="start" destroy-method="close">
148     <argument>
149       <bean factory-ref="operDatastore" factory-method="getActorContext"/>
150     </argument>
151     <argument ref="selectionStrategyConfig"/>
152   </bean>
153
154   <service ref="distributedEntityOwnershipService" interface="org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipService"
155         odl:type="default"/>
156
157   <!-- CDS shard manager -->
158   <bean id="cdsNodeManager" class="org.opendaylight.controller.cluster.sharding.DistributedShardedDOMDataTree"
159           init-method="init">
160     <argument ref="actorSystemProvider"/>
161     <argument ref="operDatastore"/>
162     <argument ref="configDatastore"/>
163   </bean>
164
165   <service ref="cdsNodeManager" odl:type="default">
166     <interfaces>
167       <value>org.opendaylight.mdsal.dom.api.DOMDataTreeShardingService</value>
168       <value>org.opendaylight.mdsal.dom.api.DOMDataTreeService</value>
169       <value>org.opendaylight.controller.cluster.sharding.DistributedShardFactory</value>
170     </interfaces>
171   </service>
172
173 </blueprint>