Adds augments to Makefile and tests for descriptors validation
[osm/IM.git] / models / augments / scaling.yang
diff --git a/models/augments/scaling.yang b/models/augments/scaling.yang
new file mode 100644 (file)
index 0000000..049ebc7
--- /dev/null
@@ -0,0 +1,169 @@
+/*
+  Copyright 2020 Whitestack LLC
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+  implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+*/
+
+module scaling {
+    yang-version 1.1;
+    namespace "urn:etsi:osm:yang:augments:scaling";
+    prefix "scaling";
+
+    import etsi-nfv-vnfd {
+        prefix vnfd;
+    }
+
+    import common-augments {
+        prefix common;
+    }
+
+    import day1-2 {
+        prefix day1-2;
+    }
+
+    grouping extended-scaling {
+        list scaling-policy {
+
+            key "name";
+
+            leaf name {
+                description
+                  "Name of the scaling policy";
+                type string;
+            }
+
+            leaf scaling-type {
+                description
+                  "Type of scaling";
+                type common:scaling-policy-type;
+            }
+
+            leaf enabled {
+                description
+                  "Specifies if the scaling policy can be applied";
+                type boolean;
+                default true;
+            }
+
+            leaf scale-in-operation-type {
+                description
+                  "Operation to be applied to check between scaling criterias to
+                   check if the scale in threshold condition has been met.
+                   Defaults to AND";
+                type common:scaling-criteria-operation;
+                default AND;
+            }
+
+            leaf scale-out-operation-type {
+                description
+                  "Operation to be applied to check between scaling criterias to
+                   check if the scale out threshold condition has been met.
+                   Defauls to OR";
+                type common:scaling-criteria-operation;
+                default OR;
+            }
+
+            leaf threshold-time {
+                description
+                  "The duration for which the criteria must hold true";
+                type uint32;
+                mandatory true;
+            }
+
+            leaf cooldown-time {
+                description
+                  "The duration after a scaling-in/scaling-out action has been
+                   triggered, for which there will be no further optional";
+                type uint32;
+                mandatory true;
+            }
+
+            list scaling-criteria {
+                description
+                  "list of conditions to be met for generating scaling
+                     requests";
+                key "name";
+
+                leaf name {
+                    type string;
+                }
+
+                leaf scale-in-threshold {
+                    description
+                      "Value below which scale-in requests are generated";
+                    type decimal64{
+                        fraction-digits 10;
+                    }
+                }
+
+                leaf scale-in-relational-operation {
+                    description
+                      "The relational operator used to compare the monitoring param
+                       against the scale-in-threshold.";
+                    type common:relational-operation-type;
+                    default LE;
+                }
+
+                leaf scale-out-threshold {
+                    description
+                      "Value above which scale-out requests are generated";
+                    type decimal64{
+                        fraction-digits 10;
+                    }
+                }
+
+                leaf scale-out-relational-operation {
+                    description
+                      "The relational operator used to compare the monitoring param
+                       against the scale-out-threshold.";
+                    type common:relational-operation-type;
+                    default GE;
+                }
+
+                leaf vnf-monitoring-param-ref {
+                    description
+                      "Reference to the VNF level monitoring parameter
+                       that is aggregated";
+                    type leafref {
+                        path "/vnfd:vnfd/vnfd:df/vnfd:monitoring-parameter/vnfd:id";
+                    }
+                }
+            }
+        }
+
+        list scaling-config-action {
+            description
+              "List of scaling config actions";
+            key "trigger";
+
+            leaf trigger {
+                description
+                  "scaling trigger";
+                type common:scaling-trigger;
+            }
+
+            leaf vnf-config-primitive-name-ref {
+                description
+                  "Reference to the VNF config primitive";
+                type leafref {
+                    path "/vnfd:vnfd/day1-2:vnf-configuration/day1-2:config-primitive/day1-2:name";
+                }
+            }
+        }
+    }
+
+    augment "/vnfd:vnfd/vnfd:df/vnfd:scaling-aspect" {
+        uses extended-scaling;
+    }
+}
\ No newline at end of file