ac0f02ffcc235454da5c5e06ea9789977ae9e2be
[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   <reference id="schemaService" interface="org.opendaylight.controller.sal.core.api.model.SchemaService" />
14
15   <!-- ActorSystemProvider -->
16
17   <bean id="actorSystemProvider" class="org.opendaylight.controller.config.yang.config.actor_system_provider.impl.ActorSystemProviderImpl"
18           destroy-method="close">
19     <argument ref="blueprintBundleContext"/>
20   </bean>
21
22   <service ref="actorSystemProvider" interface="org.opendaylight.controller.cluster.ActorSystemProvider"/>
23
24   <!-- Distributed Config Datastore -->
25
26   <bean id="datastoreSnapshotRestore" class="org.opendaylight.controller.cluster.datastore.DatastoreSnapshotRestore"
27           factory-method="instance" />
28
29   <bean id="configDatastoreContext" class="org.opendaylight.controller.config.yang.config.distributed_datastore_provider.DistributedConfigDataStoreProviderModule"
30           factory-method="newDatastoreContext" />
31
32   <bean id="configDatastore" class="org.opendaylight.controller.cluster.datastore.DistributedDataStoreFactory"
33           factory-method="createInstance" destroy-method="close">
34     <argument ref="schemaService"/>
35     <argument ref="configDatastoreContext"/>
36     <argument ref="datastoreSnapshotRestore"/>
37     <argument ref="actorSystemProvider"/>
38     <argument ref="blueprintBundleContext"/>
39   </bean>
40
41   <!-- Distributed Operational Datastore -->
42
43   <bean id="operDatastoreContext" class="org.opendaylight.controller.config.yang.config.distributed_datastore_provider.DistributedOperationalDataStoreProviderModule"
44           factory-method="newDatastoreContext" />
45
46   <bean id="operDatastore" class="org.opendaylight.controller.cluster.datastore.DistributedDataStoreFactory"
47           factory-method="createInstance" destroy-method="close">
48     <argument ref="schemaService"/>
49     <argument ref="operDatastoreContext"/>
50     <argument ref="datastoreSnapshotRestore"/>
51     <argument ref="actorSystemProvider"/>
52     <argument ref="blueprintBundleContext"/>
53   </bean>
54
55   <!-- Concurrent DOMDataBroker -->
56
57   <bean id="listenableFutureExecutor" class="org.opendaylight.yangtools.util.concurrent.SpecialExecutors"
58           factory-method="newBlockingBoundedCachedThreadPool">
59     <argument value="${max-data-broker-future-callback-pool-size}"/>
60     <argument value="${max-data-broker-future-callback-queue-size}"/>
61     <argument value="CommitFutures"/>
62   </bean>
63
64   <bean id="commitStatsTracker" class="org.opendaylight.yangtools.util.DurationStatisticsTracker"
65           factory-method="createConcurrent"/>
66
67   <bean id="clusteredDOMDataBroker" class="org.opendaylight.controller.cluster.datastore.ConcurrentDOMDataBroker"
68           destroy-method="close">
69     <argument>
70       <map>
71         <entry key="CONFIGURATION" value-ref="configDatastore"/>
72         <entry key="OPERATIONAL" value-ref="operDatastore"/>
73       </map>
74     </argument>
75     <argument ref="listenableFutureExecutor"/>
76     <argument ref="commitStatsTracker"/>
77   </bean>
78
79   <service ref="clusteredDOMDataBroker" interface="org.opendaylight.controller.md.sal.dom.api.DOMDataBroker"
80           odl:type="default"/>
81
82   <!-- JMX beans for the data broker -->
83
84   <bean id="commitStatsMXBean" class="org.opendaylight.controller.md.sal.dom.broker.impl.jmx.CommitStatsMXBeanImpl"
85           init-method="register" destroy-method="unregister">
86     <argument ref="commitStatsTracker"/>
87     <argument value="DOMDataBroker"/>
88   </bean>
89
90   <bean id="threadStatsMXBean" class="org.opendaylight.controller.md.sal.common.util.jmx.ThreadExecutorStatsMXBeanImpl"
91           factory-method="create" destroy-method="unregister">
92     <argument ref="listenableFutureExecutor"/>
93     <argument value="CommitFutureExecutorStats"/>
94     <argument value="DOMDataBroker"/>
95     <argument><null/></argument>
96   </bean>
97
98   <!-- Distributed EntityOwnershipService -->
99
100   <bean id="selectionStrategyConfig" class="org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy.EntityOwnerSelectionStrategyConfigReader"
101           factory-method="loadStrategyWithConfig">
102     <argument ref="blueprintBundleContext"/>
103   </bean>
104
105   <bean id="distributedEntityOwnershipService" class="org.opendaylight.controller.cluster.datastore.entityownership.DistributedEntityOwnershipService"
106           factory-method="start" destroy-method="close">
107     <argument>
108       <bean factory-ref="operDatastore" factory-method="getActorContext"/>
109     </argument>
110     <argument ref="selectionStrategyConfig"/>
111   </bean>
112
113   <service ref="distributedEntityOwnershipService" interface="org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService"
114         odl:type="default"/>
115
116 </blueprint>