// 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"; } } typedef percentage { type uint8 { range "0..100"; } } 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 is to be taken."; } leaf shard-snapshot-data-threshold-percentage { default 12; type percentage; description "The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is 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 shard-election-timeout-factor { default 2; type non-zero-uint32-type; description "The multiplication factor to be used to determine shard election timeout. The shard election timeout is determined by multiplying shard-heartbeat-interval-in-millis with the shard-election-timeout-factor"; } 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"; } leaf tx-creation-initial-rate-limit { default 100; type non-zero-uint32-type; description "The initial number of transactions per second that are allowed before the data store should begin applying back pressure. This number is only used as an initial guidance, subsequently the datastore measures the latency for a commit and auto-adjusts the rate limit"; } } // 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; } } } }