Merge "Remove unnecessary declaration of <prerequisites> in features"
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / yang / distributed-datastore-provider.yang
1 // vi: set smarttab et sw=4 tabstop=4:
2 module distributed-datastore-provider {
3
4     yang-version 1;
5     namespace "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider";
6     prefix "distributed-datastore-provider";
7
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;}
13
14     description
15         "This module contains the base YANG definitions for
16         the distributed datastore provider implementation";
17
18     revision "2014-06-12" {
19         description
20             "Initial revision.";
21     }
22
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;
29     }
30
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;
37      }
38
39     typedef non-zero-uint32-type {
40         type uint32 {
41             range "1..max";
42         }
43     }
44
45     typedef operation-timeout-type {
46         type uint16 {
47             range "5..max";
48         }
49     }
50
51     typedef heartbeat-interval-type {
52         type uint16 {
53             range "100..max";
54         }
55     }
56
57     typedef percentage {
58         type uint8 {
59             range "0..100";
60         }
61     }
62
63     grouping data-store-properties {
64         leaf max-shard-data-change-executor-queue-size {
65             default 1000;
66             type non-zero-uint32-type;
67             description "The maximum queue size for each shard's data store data change notification executor.";
68          }
69
70          leaf max-shard-data-change-executor-pool-size {
71             default 20;
72             type non-zero-uint32-type;
73             description "The maximum thread pool size for each shard's data store data change notification executor.";
74          }
75
76          leaf max-shard-data-change-listener-queue-size {
77             default 1000;
78             type non-zero-uint32-type;
79             description "The maximum queue size for each shard's data store data change listener.";
80          }
81
82          leaf max-shard-data-store-executor-queue-size {
83             default 5000;
84             type non-zero-uint32-type;
85             description "The maximum queue size for each shard's data store executor.";
86          }
87
88          leaf shard-transaction-idle-timeout-in-minutes {
89             default 10;
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.";
92          }
93
94          leaf shard-snapshot-batch-count {
95             default 20000;
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.";
98          }
99
100          leaf shard-snapshot-data-threshold-percentage {
101             default 12;
102             type percentage;
103             description "The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken";
104          }
105
106
107          leaf shard-hearbeat-interval-in-millis {
108             default 500;
109             type heartbeat-interval-type;
110             description "The interval at which a shard will send a heart beat message to its remote shard.";
111          }
112
113          leaf shard-election-timeout-factor {
114             default 2;
115             type non-zero-uint32-type;
116             description "The multiplication factor to be used to determine shard election timeout. The shard election timeout
117                          is determined by multiplying shard-heartbeat-interval-in-millis with the shard-election-timeout-factor";
118          }
119
120          leaf operation-timeout-in-seconds {
121             default 5;
122             type operation-timeout-type;
123             description "The maximum amount of time for akka operations (remote or local) to complete before failing.";
124          }
125
126          leaf shard-journal-recovery-log-batch-size {
127             default 5000;
128             type non-zero-uint32-type;
129             description "The maximum number of journal log entries to batch on recovery for a shard before committing to the data store.";
130          }
131
132          leaf shard-transaction-commit-timeout-in-seconds {
133             default 30;
134             type non-zero-uint32-type;
135             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";
136          }
137
138          leaf shard-transaction-commit-queue-capacity {
139             default 20000;
140             type non-zero-uint32-type;
141             description "The maximum allowed capacity for each shard's transaction commit queue.";
142          }
143
144          leaf shard-initialization-timeout-in-seconds {
145             default 300; // 5 minutes
146             type non-zero-uint32-type;
147             description "The maximum amount of time to wait for a shard to initialize from persistence
148                          on startup before failing an operation (eg transaction create and change
149                          listener registration).";
150          }
151
152          leaf shard-leader-election-timeout-in-seconds {
153             default 30;
154             type non-zero-uint32-type;
155             description "The maximum amount of time to wait for a shard to elect a leader before failing
156                           an operation (eg transaction create).";
157          }
158
159          leaf enable-metric-capture {
160             default false;
161             type boolean;
162             description "Enable or disable metric capture.";
163          }
164
165          leaf bounded-mailbox-capacity {
166              default 1000;
167              type non-zero-uint32-type;
168              description "Max queue size that an actor's mailbox can reach";
169          }
170
171          leaf persistent {
172             default true;
173             type boolean;
174             description "Enable or disable data persistence";
175          }
176
177         leaf shard-isolated-leader-check-interval-in-millis {
178             default 5000;
179             type heartbeat-interval-type;
180             description "The interval at which the leader of the shard will check if its majority
181                         followers are active and term itself as isolated";
182         }
183     }
184
185     // Augments the 'configuration' choice node under modules/module.
186     augment "/config:modules/config:module/config:configuration" {
187         case distributed-config-datastore-provider {
188             when "/config:modules/config:module/config:type = 'distributed-config-datastore-provider'";
189                 container config-schema-service {
190                     uses config:service-ref {
191                         refine type {
192                             mandatory false;
193                             config:required-identity sal:schema-service;
194                         }
195                     }
196                 }
197
198                 container config-properties {
199                     uses data-store-properties;
200                 }
201         }
202     }
203
204     // Augments the 'configuration' choice node under modules/module.
205     augment "/config:modules/config:module/config:configuration" {
206         case distributed-operational-datastore-provider {
207             when "/config:modules/config:module/config:type = 'distributed-operational-datastore-provider'";
208                 container operational-schema-service {
209                     uses config:service-ref {
210                         refine type {
211                             mandatory false;
212                             config:required-identity sal:schema-service;
213                         }
214                     }
215                 }
216
217                 container operational-properties {
218                     uses data-store-properties;
219                 }
220         }
221     }
222 }

©2013 OpenDaylight, A Linux Foundation Collaborative Project. All Rights Reserved.
OpenDaylight is a registered trademark of The OpenDaylight Project, Inc.
Linux Foundation and OpenDaylight are registered trademarks of the Linux Foundation.
Linux is a registered trademark of Linus Torvalds.