Add UnsignedLongBitmap
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / yang / distributed-datastore-provider.yang
index 2ae5f1878512ae0a90137604cd890c032e776530..3ad7d532ad63c8c37e047cbc3b3a73bf16426a91 100644 (file)
@@ -5,13 +5,6 @@ module distributed-datastore-provider {
     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;}
-    import actor-system-provider-service {prefix actor-system;}
-
     description
         "This module contains the base YANG definitions for
         the distributed datastore provider implementation";
@@ -21,22 +14,6 @@ module distributed-datastore-provider {
             "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";
@@ -62,30 +39,6 @@ module distributed-datastore-provider {
     }
 
     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;
@@ -101,7 +54,17 @@ module distributed-datastore-provider {
         leaf shard-snapshot-data-threshold-percentage {
             default 12;
             type percentage;
-            description "The percentage of Runtime.maxMemory() used by the in-memory journal log before a snapshot is to be taken";
+            description "The percentage of Runtime.maxMemory() used by the in-memory journal log before a snapshot is to be taken.
+                         Disabled, if direct threshold is enabled.";
+        }
+
+        leaf shard-snapshot-data-threshold {
+            default 0;
+            type uint32 {
+                range "0..max";
+            }
+            description "The threshold of in-memory journal size before a snapshot is to be taken. If set to 0, direct threshold
+                         is disabled and percentage is used instead.";
         }
 
 
@@ -167,6 +130,19 @@ module distributed-datastore-provider {
                           an operation (eg transaction create).";
         }
 
+        leaf initial-settle-timeout-multiplier {
+            default 3;
+            type uint32;
+            description "Multiplier for the maximum amount of time to wait for a shard to elect a leader.
+                         Zero value means wait indefinitely (as long as it takes).";
+        }
+
+        leaf recovery-snapshot-interval-seconds {
+            default 0;
+            type uint32;
+            description "Interval after which a snapshot should be taken during the recovery process.";
+        }
+
         leaf shard-batched-modification-count {
             default 1000;
             type non-zero-uint32-type;
@@ -194,6 +170,12 @@ module distributed-datastore-provider {
             description "Enable or disable data persistence";
         }
 
+        leaf snapshotOnRootOverwrite {
+            default false;
+            type boolean;
+            description "Enable or disable capturing snapshots on DataTree root overwrites";
+        }
+
         leaf shard-isolated-leader-check-interval-in-millis {
             default 5000;
             type heartbeat-interval-type;
@@ -228,73 +210,95 @@ module distributed-datastore-provider {
         }
 
         leaf shard-snapshot-chunk-size {
+            status deprecated;
             default 2048000;
             type non-zero-uint32-type;
             description "When sending a snapshot to a follower, this is the maximum size in bytes for
                          a chunk of data.";
         }
 
+        leaf maximum-message-slice-size {
+            default 2048000;
+            type non-zero-uint32-type;
+            description "When fragmenting messages thru the akka remoting framework, this is the
+                         maximum size in bytes for a message slice.";
+        }
+
         leaf use-tell-based-protocol {
             default false;
             type boolean;
             description "Use a newer protocol between the frontend and backend. This feature is considered
                          exprerimental at this point.";
         }
-    }
 
-    // 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-actor-system-provider {
-                    uses config:service-ref {
-                        refine type {
-                            mandatory false;
-                            config:required-identity actor-system:actor-system-provider-service;
-                        }
-                    }
-                }
-
-                container config-properties {
-                    uses data-store-properties;
-                }
+        leaf file-backed-streaming-threshold-in-megabytes {
+            default 128;
+            type non-zero-uint32-type;
+            description "When streaming large amounts of data, eg when sending a snapshot to a follower, this
+                is the threshold in terms of number of megabytes before it should switch from storing in memory to
+                buffering to a file.";
+        }
+
+        leaf sync-index-threshold {
+            default 10;
+            type non-zero-uint32-type;
+            description "Permitted synchronization lag, expressed in terms of RAFT entry count. It a follower's
+                         commitIndex trails the leader's journal by more than this amount of entries the follower
+                         is considered to be out-of-sync.";
+        }
+
+        leaf backend-aliveness-timer-interval-in-seconds {
+            default 30;
+            type non-zero-uint32-type;
+            description "The timer interval whereby, on expiration after response inactivity from the back-end,
+                        the connection to the back-end is torn down and reconnection is attempted.";
+        }
+
+        leaf frontend-request-timeout-in-seconds {
+            default 120; // 2 minutes
+            type non-zero-uint32-type;
+            description "The timeout interval whereby client frontend transaction requests are failed.";
+        }
+
+        leaf frontend-no-progress-timeout-in-seconds {
+            default 900; // 15 minutes
+            type non-zero-uint32-type;
+            description "The timeout interval whereby the client front-end hasn't made progress with the
+                         back-end on any request and terminates.";
+        }
+
+        leaf initial-payload-serialized-buffer-capacity {
+            default 512;
+            type non-zero-uint32-type;
+            description "The initial buffer capacity, in bytes, to use when serializing message payloads.";
+        }
+
+        leaf use-lz4-compression {
+            default false;
+            type boolean;
+            description "Use lz4 compression for snapshots, sent from leader to follower, for snapshots stored
+                        by LocalSnapshotStore, use akka.conf configuration.";
+        }
+
+        leaf export-on-recovery {
+            default off;
+            type enumeration {
+                enum off;
+                enum json;
+            }
+            description "Export snapshot and journal during recovery. Possible modes: off(default),
+                        json(export to json files). Note that in case of large snapshot,
+                        export will take a lot of time.";
         }
-    }
 
-    // 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-actor-system-provider {
-                    uses config:service-ref {
-                        refine type {
-                            mandatory false;
-                            config:required-identity actor-system:actor-system-provider-service;
-                        }
-                    }
-                }
-
-                container operational-properties {
-                    uses data-store-properties;
-                }
+        leaf recovery-export-base-dir {
+            default persistence-export;
+            type string;
+            description "Directory name for snapshot and journal dumps.";
         }
     }
+
+    container data-store-properties-container {
+        uses data-store-properties;
+    }
 }