VNFD and NSD updated to support VDU and NS scaling from NFVI and VNF metrics
[osm/IM.git] / models / yang / mano-types.yang
index 81022ad..7f50c1a 100644 (file)
@@ -27,10 +27,6 @@ module mano-types
     prefix "inet";
   }
 
-  import rw-pb-ext {
-    prefix "rwpb";
-  }
-
   import rw-project {
     prefix "rw-project";
   }
@@ -195,7 +191,7 @@ module mano-types
       }
     }
   }
-  
+
  grouping image-properties {
     leaf image {
       description
@@ -241,6 +237,19 @@ module mano-types
     }
   }
 
+  grouping vca-metrics {
+    description
+        "Information about the VNF or VDU metrics";
+    list metrics {
+      description "List of VCA related metrics";
+      key "name";
+      leaf name {
+        description
+          "Name of the metric, as defined in the Juju charm.";
+        type string;
+      }
+    }
+  } // END - grouping vca-metrics
 
   grouping vca-configuration {
     description
@@ -277,70 +286,74 @@ module mano-types
             description "Juju charm to use with the VNF or VDU.";
             type string;
           }
+          leaf proxy {
+            description "Is this a proxy charm?";
+            type boolean;
+            default true;
+          }
           uses manotypes:vca-relationships;
-
         }
       }
+    }
 
+    list config-primitive {
+      description
+        "List of config primitives supported by the
+        configuration agent for this VNF or VDU.";
+      key "name";
 
-      list service-primitive {
-        rwpb:msg-new ServicePrimitive;
+      leaf name {
         description
-          "List of config primitives supported by the
-          configuration agent for this VNF or VDU.";
-        key "name";
-
-        leaf name {
-          description
-            "Name of the config primitive.";
-          type string;
-        }
+          "Name of the config primitive.";
+        type string;
+      }
 
-        list parameter {
-          description
-            "List of parameters to the config primitive.";
-          key "name";
-          uses primitive-parameter;
-        }
+      list parameter {
+        description
+          "List of parameters to the config primitive.";
+        key "name";
+        uses primitive-parameter;
+      }
 
-        leaf user-defined-script {
-          description
-            "A user defined script. If user defined script is defined,
-             the script will be executed using bash";
-          type string;
-        }
+      leaf user-defined-script {
+        description
+          "A user defined script. If user defined script is defined,
+           the script will be executed using bash";
+        type string;
       }
+    }
 
-      list initial-config-primitive {
-        rwpb:msg-new InitialConfigPrimitive;
+    list initial-config-primitive {
+      description
+        "Initial set of configuration primitives.";
+      key "seq";
+      leaf seq {
         description
-          "Initial set of configuration primitives.";
-        key "seq";
-        leaf seq {
-          description
-              "Sequence number for the configuration primitive.";
-          type uint64;
-        }
+          "Sequence number for the configuration primitive.";
+        type uint64;
+      }
 
-        choice primitive-type {
-          case primitive-definition {
-            leaf name {
-              description
-                "Name of the configuration primitive.";
-              type string;
-            }
+      choice primitive-type {
+        case primitive-definition {
+          leaf name {
+            description
+              "Name of the configuration primitive.";
+            type string;
+          }
 
-            uses primitive-parameter-value;
+          uses primitive-parameter-value;
 
-            leaf user-defined-script {
-              description
-                "A user defined script.";
-              type string;
-            }
+          leaf user-defined-script {
+            description
+              "A user defined script.";
+            type string;
           }
         }
       }
     }
+
+    uses manotypes:vca-metrics;
+
   } // END - grouping vca-configuration
 
   typedef virtual-link-type {
@@ -626,6 +639,60 @@ module mano-types
     }
   }
 
+  typedef nfvi-metric-type {
+    description "Type of NFVI metric to be monitored";
+    type enumeration {
+      enum cpu_utilization;
+      enum average_memory_utilization;
+      enum disk_read_ops;
+      enum disk_write_ops;
+      enum disk_read_bytes;
+      enum disk_write_bytes;
+      enum packets_sent;
+      enum packets_received;
+      enum packets_dropped;
+    }
+  }
+
+  typedef scaling-trigger {
+    type enumeration {
+      enum pre-scale-in {
+        value 1;
+      }
+      enum post-scale-in {
+        value 2;
+      }
+      enum pre-scale-out {
+        value 3;
+      }
+      enum post-scale-out {
+        value 4;
+      }
+    }
+  }
+
+  typedef scaling-policy-type {
+    type enumeration {
+      enum manual {
+        value 1;
+      }
+      enum automatic {
+        value 2;
+      }
+    }
+  }
+
+  typedef scaling-criteria-operation {
+    type enumeration {
+      enum AND {
+        value 1;
+      }
+      enum OR {
+        value 2;
+      }
+    }
+  }
+
   grouping vm-flavor {
     container vm-flavor {
       leaf vcpu-count {
@@ -648,12 +715,12 @@ module mano-types
     }
   } //grouping vm-flavor
 
-       grouping vm-flavor-name {
-       leaf vm-flavor-name {
-               description "flavor name to be used while creating vm using cloud account";
-               type string;
-       }
-       }
+  grouping vm-flavor-name {
+    leaf vm-flavor-name {
+      description "flavor name to be used while creating vm using cloud account";
+      type string;
+    }
+  }
 
   grouping vswitch-epa {
     container vswitch-epa {
@@ -1122,7 +1189,7 @@ module mano-types
     }
   }
 
-  grouping monitoring-param {
+  grouping http-endpoints {
     list http-endpoint {
       description
           "List of http endpoints to be used by monitoring params";
@@ -1183,52 +1250,16 @@ module mano-types
         }
       }
     }
-
-    list monitoring-param {
-      description
-          "List of monitoring parameters at the network service level";
-      key id;
-      leaf id {
-        type string;
-      }
-
-      leaf name {
-        type string;
-      }
-
-      leaf http-endpoint-ref {
-        type leafref {
-          path "../../http-endpoint/path";
-        }
-      }
-
-      leaf json-query-method {
-        type json-query-method;
-        default "NAMEKEY";
-      }
-
-      container json-query-params {
-        leaf json-path {
-          description
-            "The jsonpath to use to extract value from JSON structure";
-          type string;
-        }
-        leaf object-path {
-          description
-            "The objectpath to use to extract value from JSON structure";
-          type string;
-        }
-      }
-
-      uses monitoring-param-ui-data;
-      uses monitoring-param-value;
-
-    }
   }
 
   grouping monitoring-param-aggregation {
     typedef aggregation-type {
-      description "aggregation-type";
+      description
+          "aggregation-type, indicates the way to aggregate monitoring-params
+          (e.g. how to aggregate CPU utilisation of all VNFs belonging to the
+          same VNF group identified by member-vnf-index; or how to aggregate
+          memory utilisation of all VDUs belonging to the same VDU group
+          identified by vdu id)";
       type enumeration {
         enum AVERAGE;
         enum MINIMUM;
@@ -1734,11 +1765,12 @@ module mano-types
     }
   }
 
-  typedef alarm-operation-type {
+  typedef relational-operation-type {
     description
-        "The relational operator used to define whether an alarm
-        should be triggered in certain scenarios, such as if the
-        metric statistic goes above or below a specified value.";
+        "The relational operator used to define whether an alarm,
+        scaling event, etc. should be triggered in certain scenarios,
+        such as if the metric statistic goes above or below a specified
+        value.";
     type enumeration {
       enum GE; // greater than or equal
       enum LE; // less than or equal
@@ -1833,7 +1865,7 @@ module mano-types
           "The relational operator used to define whether an alarm should be
            triggered in certain scenarios, such as if the metric statistic
            goes above or below a specified value.";
-      type alarm-operation-type;
+      type relational-operation-type;
     }
 
     leaf value {
@@ -1959,7 +1991,6 @@ module mano-types
     }
 
     list user {
-      rwpb:msg-new CloudConfigUser;
       key "name";
       description "List of users to be added through cloud-config";