1 // vi: set smarttab et sw=4 tabstop=4:
2 module distributed-datastore-provider {
5 namespace "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider";
6 prefix "distributed-datastore-provider";
8 import config { prefix config; revision-date 2013-04-05; }
9 import rpc-context { prefix rpcx; revision-date 2013-06-17; }
10 import opendaylight-config-dom-datastore {prefix config-dom-store-spi;}
11 import opendaylight-operational-dom-datastore {prefix operational-dom-store-spi;}
12 import opendaylight-md-sal-dom {prefix sal;}
15 "This module contains the base YANG definitions for
16 the distributed datastore provider implementation";
18 revision "2014-06-12" {
23 // This is the definition of the service implementation as a module identity.
24 identity distributed-config-datastore-provider {
25 base config:module-type;
26 config:provided-service config-dom-store-spi:config-dom-datastore;
27 // Specifies the prefix for generated java classes.
28 config:java-name-prefix DistributedConfigDataStoreProvider;
31 // This is the definition of the service implementation as a module identity.
32 identity distributed-operational-datastore-provider {
33 base config:module-type;
34 config:provided-service operational-dom-store-spi:operational-dom-datastore;
35 // Specifies the prefix for generated java classes.
36 config:java-name-prefix DistributedOperationalDataStoreProvider;
39 typedef non-zero-uint32-type {
45 typedef operation-timeout-type {
51 typedef heartbeat-interval-type {
63 grouping data-store-properties {
64 leaf max-shard-data-change-executor-queue-size {
66 type non-zero-uint32-type;
67 description "The maximum queue size for each shard's data store data change notification executor.";
70 leaf max-shard-data-change-executor-pool-size {
72 type non-zero-uint32-type;
73 description "The maximum thread pool size for each shard's data store data change notification executor.";
76 leaf max-shard-data-change-listener-queue-size {
78 type non-zero-uint32-type;
79 description "The maximum queue size for each shard's data store data change listener.";
82 leaf max-shard-data-store-executor-queue-size {
84 type non-zero-uint32-type;
85 description "The maximum queue size for each shard's data store executor.";
88 leaf shard-transaction-idle-timeout-in-minutes {
90 type non-zero-uint32-type;
91 description "The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.";
94 leaf shard-snapshot-batch-count {
96 type non-zero-uint32-type;
97 description "The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.";
100 leaf shard-snapshot-data-threshold-percentage {
103 description "The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken";
107 leaf shard-hearbeat-interval-in-millis {
109 type heartbeat-interval-type;
110 description "The interval at which a shard will send a heart beat message to its remote shard.";
113 leaf operation-timeout-in-seconds {
115 type operation-timeout-type;
116 description "The maximum amount of time for akka operations (remote or local) to complete before failing.";
119 leaf shard-journal-recovery-log-batch-size {
121 type non-zero-uint32-type;
122 description "The maximum number of journal log entries to batch on recovery for a shard before committing to the data store.";
125 leaf shard-transaction-commit-timeout-in-seconds {
127 type non-zero-uint32-type;
128 description "The maximum amount of time a shard transaction three-phase commit can be idle without receiving the next messages before it aborts the transaction";
131 leaf shard-transaction-commit-queue-capacity {
133 type non-zero-uint32-type;
134 description "The maximum allowed capacity for each shard's transaction commit queue.";
137 leaf shard-initialization-timeout-in-seconds {
138 default 300; // 5 minutes
139 type non-zero-uint32-type;
140 description "The maximum amount of time to wait for a shard to initialize from persistence
141 on startup before failing an operation (eg transaction create and change
142 listener registration).";
145 leaf shard-leader-election-timeout-in-seconds {
147 type non-zero-uint32-type;
148 description "The maximum amount of time to wait for a shard to elect a leader before failing
149 an operation (eg transaction create).";
152 leaf enable-metric-capture {
155 description "Enable or disable metric capture.";
158 leaf bounded-mailbox-capacity {
160 type non-zero-uint32-type;
161 description "Max queue size that an actor's mailbox can reach";
167 description "Enable or disable data persistence";
170 leaf shard-isolated-leader-check-interval-in-millis {
172 type heartbeat-interval-type;
173 description "The interval at which the leader of the shard will check if its majority
174 followers are active and term itself as isolated";
178 // Augments the 'configuration' choice node under modules/module.
179 augment "/config:modules/config:module/config:configuration" {
180 case distributed-config-datastore-provider {
181 when "/config:modules/config:module/config:type = 'distributed-config-datastore-provider'";
182 container config-schema-service {
183 uses config:service-ref {
186 config:required-identity sal:schema-service;
191 container config-properties {
192 uses data-store-properties;
197 // Augments the 'configuration' choice node under modules/module.
198 augment "/config:modules/config:module/config:configuration" {
199 case distributed-operational-datastore-provider {
200 when "/config:modules/config:module/config:type = 'distributed-operational-datastore-provider'";
201 container operational-schema-service {
202 uses config:service-ref {
205 config:required-identity sal:schema-service;
210 container operational-properties {
211 uses data-store-properties;