// vi: set smarttab et sw=4 tabstop=4: module distributed-datastore-provider { yang-version 1; namespace "urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider"; prefix "distributed-datastore-provider"; import config { prefix config; revision-date 2013-04-05; } import rpc-context { prefix rpcx; revision-date 2013-06-17; } import opendaylight-config-dom-datastore {prefix config-dom-store-spi;} import opendaylight-operational-dom-datastore {prefix operational-dom-store-spi;} import opendaylight-md-sal-dom {prefix sal;} description "This module contains the base YANG definitions for the distributed datastore provider implementation"; revision "2014-06-12" { description "Initial revision."; } // This is the definition of the service implementation as a module identity. identity distributed-config-datastore-provider { base config:module-type; config:provided-service config-dom-store-spi:config-dom-datastore; // Specifies the prefix for generated java classes. config:java-name-prefix DistributedConfigDataStoreProvider; } // This is the definition of the service implementation as a module identity. identity distributed-operational-datastore-provider { base config:module-type; config:provided-service operational-dom-store-spi:operational-dom-datastore; // Specifies the prefix for generated java classes. config:java-name-prefix DistributedOperationalDataStoreProvider; } typedef non-zero-uint32-type { type uint32 { range "1..max"; } } typedef operation-timeout-type { type uint16 { range "5..max"; } } typedef heartbeat-interval-type { type uint16 { range "100..max"; } } grouping data-store-properties { leaf max-shard-data-change-executor-queue-size { default 1000; type non-zero-uint32-type; description "The maximum queue size for each shard's data store data change notification executor."; } leaf max-shard-data-change-executor-pool-size { default 20; type non-zero-uint32-type; description "The maximum thread pool size for each shard's data store data change notification executor."; } leaf max-shard-data-change-listener-queue-size { default 1000; type non-zero-uint32-type; description "The maximum queue size for each shard's data store data change listener."; } leaf max-shard-data-store-executor-queue-size { default 5000; type non-zero-uint32-type; description "The maximum queue size for each shard's data store executor."; } leaf shard-transaction-idle-timeout-in-minutes { default 10; type non-zero-uint32-type; description "The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs."; } leaf shard-snapshot-batch-count { default 20000; type non-zero-uint32-type; description "The minimum number of entries to be present in the in-memory journal log before a snapshot to be taken."; } leaf shard-hearbeat-interval-in-millis { default 500; type heartbeat-interval-type; description "The interval at which a shard will send a heart beat message to its remote shard."; } leaf operation-timeout-in-seconds { default 5; type operation-timeout-type; description "The maximum amount of time for akka operations (remote or local) to complete before failing."; } leaf shard-journal-recovery-log-batch-size { default 5000; type non-zero-uint32-type; description "The maximum number of journal log entries to batch on recovery for a shard before committing to the data store."; } leaf shard-transaction-commit-timeout-in-seconds { default 30; type non-zero-uint32-type; 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"; } leaf shard-transaction-commit-queue-capacity { default 20000; type non-zero-uint32-type; description "The maximum allowed capacity for each shard's transaction commit queue."; } leaf shard-initialization-timeout-in-seconds { default 300; // 5 minutes type non-zero-uint32-type; description "The maximum amount of time to wait for a shard to initialize from persistence on startup before failing an operation (eg transaction create and change listener registration)."; } leaf shard-leader-election-timeout-in-seconds { default 30; type non-zero-uint32-type; description "The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create)."; } leaf enable-metric-capture { default false; type boolean; description "Enable or disable metric capture."; } leaf bounded-mailbox-capacity { default 1000; type non-zero-uint32-type; description "Max queue size that an actor's mailbox can reach"; } leaf persistent { default true; type boolean; description "Enable or disable data persistence"; } leaf shard-isolated-leader-check-interval-in-millis { default 5000; type heartbeat-interval-type; description "The interval at which the leader of the shard will check if its majority followers are active and term itself as isolated"; } } // Augments the 'configuration' choice node under modules/module. augment "/config:modules/config:module/config:configuration" { case distributed-config-datastore-provider { when "/config:modules/config:module/config:type = 'distributed-config-datastore-provider'"; container config-schema-service { uses config:service-ref { refine type { mandatory false; config:required-identity sal:schema-service; } } } container config-properties { uses data-store-properties; } } } // Augments the 'configuration' choice node under modules/module. augment "/config:modules/config:module/config:configuration" { case distributed-operational-datastore-provider { when "/config:modules/config:module/config:type = 'distributed-operational-datastore-provider'"; container operational-schema-service { uses config:service-ref { refine type { mandatory false; config:required-identity sal:schema-service; } } } container operational-properties { uses data-store-properties; } } } }