--- /dev/null
+/*
+ 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