Fix Dockerfile to add missing apt-update before apt-install
[osm/IM.git] / models / yang / mano-types.yang
index e042c44..eb38ec2 100644 (file)
 
 module mano-types
 {
-  namespace "urn:ietf:params:xml:ns:yang:nfvo:mano-types";
+  namespace "urn:etsi:osm:yang:mano-types";
   prefix "manotypes";
 
   import ietf-inet-types {
     prefix "inet";
   }
 
-  import rw-project {
-    prefix "rw-project";
+  import osm-project {
+    prefix "osm-project";
   }
 
   revision 2017-02-08 {
@@ -176,7 +176,7 @@ module mano-types
       description
           "Name of the configuration primitive.";
       type string;
-      mandatory "true";
+      mandatory true;
     }
 
     leaf user-defined-script {
@@ -221,22 +221,36 @@ module mano-types
   }
 
 
-  grouping vca-relationships {
-    container vca-relationships {
-      list relation {
-        description "List of relations between VCA componets.";
+  grouping vca-relations {
+    list relation {
+      description "List of relations between elements in this descriptor.";
+      key "name";
 
-        key "requires provides";
+      leaf name {
+        description
+          "Name of the relation.";
 
-        leaf requires {
+        type string;
+      }
+
+      list entities {
+        description
+          "List of two elements to be related.
+           Elements to be related are identified by a pair (id, endpoint).
+           The relation will relate (id1, endpoint1) to (id2, endpoint2).";
+        key "id";
+
+        leaf id {
           description
-            "Name of the required relation.";
+            "A string, reference to the element id in the descriptor.
+             It could be a vnfd-id or a vdu-id in a VNFD,
+             or a nsd-id or member-vnf-index in a NSD.";
           type string;
         }
 
-        leaf provides {
+        leaf endpoint {
           description
-            "Name of the provided relation.";
+            "Endpoint name defining the relation.";
           type string;
         }
       }
@@ -254,6 +268,18 @@ module mano-types
           "Name of the metric, as defined in the Juju charm.";
         type string;
       }
+      leaf execution-environment-ref {
+        description
+          "Leaf reference to the particular execution environment getting that metric";
+        type leafref {
+          path "../../execution-environment-list/id";
+        }
+      }
+      leaf execution-environment-metric {
+        description
+          "Metric in the execution environment referenced by execution-environment-ref";
+        type string;
+      }
     }
   } // END - grouping vca-metrics
 
@@ -291,25 +317,135 @@ module mano-types
             type boolean;
             default true;
           }
-          uses manotypes:vca-relationships;
+          leaf cloud {
+            description
+              "Type of cloud where the charm will be deployed. It only
+               applies to proxy charms (not native)";
+            type enumeration {
+              enum lxd;
+              enum k8s;
+            }
+            default lxd;
+          }
         }
       }
+
+      case execution-environment-list {
+        description
+          "List of Execution Environments to configure or monitor VNF or VDU.";
+        list execution-environment-list {
+          key "id";
+          leaf id {
+            description "Execution environment identifier.";
+            type string;
+          }
+          choice execution-environment-model {
+            description "Execution environment model (juju, helm-chart)";
+            case juju {
+              description
+                "Interact with the VNF or xDU through Juju.";
+              container juju {
+                leaf charm {
+                  description "Juju charm to use with the VNF or VDU.";
+                  type string;
+                }
+                leaf proxy {
+                  description "Is this a proxy charm?";
+                  type boolean;
+                  default true;
+                }
+                leaf cloud {
+                  description
+                    "Type of cloud where the charm will be deployed. It only
+                     applies to proxy charms (not native)";
+                  type enumeration {
+                    enum lxd;
+                    enum k8s;
+                  }
+                  default lxd;
+                }
+              }
+            }
+            case helm-chart {
+              description
+                "Interact with the VNF or xDU through Helm.";
+              leaf helm-chart {
+                description
+                  "Helm chart that models the execution environment, in any of the following ways:
+                   - <helm-repo>/<helm-chart>
+                   - <helm-chart folder name under helm-charts folder in the package>
+                   - <helm-chart tgz file (w/ or w/o extension) under helm-charts folder in the package>
+                   - <URL_where_to_fetch_chart>
+                  ";
+                type string;
+              }
+              leaf helm-version {
+                description
+                  "Helm version to use for this helm-chart, v3 by default";
+                type enumeration {
+                  enum v2;
+                  enum v3;
+                }
+                default v3;
+              }
+            }
+          }
+          leaf metric-service {
+            description
+              "Service name in the execution environment. For helm charts, it will be
+               the name of the kubernetes service used by the exporter to expose metrics
+               to the OSM collector.
+              ";
+            type string;
+          }
+          leaf connection-point-ref {
+            description
+              "String representing a leaf reference to the particular external connection point
+               This field should match /vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id/vnfd:connection-point/vnfd:name
+              ";
+            type string;
+            // type leafref {
+            //   path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id/vnfd:connection-point/vnfd:name";
+            // }
+          }
+        }
+      }
+
     }
   }
 
-  grouping ns-configuration {
-    description
-        "Information about NS configuration. Note:
-         In the future this should be equivalent to vca-configuration
-         grouping.";
+  grouping vca-config-access {
 
-    uses manotypes:configuration-method;
-  }
+    container config-access {
+
+      description
+        "Indicates the way to access to the xNF or xDU for VCA configuration.
+         For the moment there is a single way (ssh-access).";
+
+      container ssh-access {
+
+        description
+          "If the xNF requires ssh and this parameter is set, SSH keys
+          will be injected so that VCA can configure the xNF or xDU via ssh.";
+
+        leaf required  {
+          description "whether ssh access is needed or not";
+          type boolean;
+          default false;
+        }
+
+        leaf default-user {
+          description "Default user for ssh";
+          type string;
+        }
+      }
+    }
+  } // END - grouping vca-config-access
 
   grouping vca-configuration {
     description
-        "Information about the VNF or VDU configuration. Note:
-         If the NS contains multiple instances of the
+        "Common information in the descriptors for NS, VNF or VDU configuration.
+         Note: If the NS contains multiple instances of the
          same VNF or VDU, each instance could have a different
          configuration.";
 
@@ -327,6 +463,21 @@ module mano-types
         type string;
       }
 
+      leaf execution-environment-ref {
+        description
+          "Leaf reference to the particular execution environment";
+        type leafref {
+          path "../../execution-environment-list/id";
+        }
+      }
+
+      leaf execution-environment-primitive {
+        description
+          "Name of the primitive in the execution enviroment. If not explicit,
+           the leaf 'name' will be used as the name of the primitive.";
+        type string;
+      }
+
       list parameter {
         description
           "List of parameters to the config primitive.";
@@ -356,10 +507,18 @@ module mano-types
         case primitive-definition {
           leaf name {
             description
-              "Name of the configuration primitive.";
+              "Name of the configuration primitive in the execution environment.";
             type string;
           }
 
+          leaf execution-environment-ref {
+            description
+              "Leaf reference to the particular execution environment";
+            type leafref {
+              path "../../execution-environment-list/id";
+            }
+          }
+
           uses primitive-parameter-value;
 
           leaf user-defined-script {
@@ -371,6 +530,37 @@ module mano-types
       }
     }
 
+    list terminate-config-primitive {
+      description
+        "Terminate set of configuration primitives.";
+      key "seq";
+      leaf seq {
+        description
+          "Sequence number for the configuration primitive.";
+        type uint64;
+      }
+      leaf name {
+        description
+          "Name of the configuration primitive in the execution environment.";
+        type string;
+      }
+
+      leaf execution-environment-ref {
+        description
+          "Leaf reference to the particular execution environment";
+        type leafref {
+          path "../../execution-environment-list/id";
+        }
+      }
+
+      uses primitive-parameter-value;
+
+      leaf user-defined-script {
+        description
+          "A user defined script.";
+        type string;
+      }
+    }
     uses manotypes:vca-metrics;
 
   } // END - grouping vca-configuration
@@ -378,15 +568,17 @@ module mano-types
   typedef virtual-link-type {
     description
         "Type of virtual link
-         ELAN: A multipoint service connecting a set of VNFs
-         ELINE: For a simple point to point connection
-         //        between a VNF and the existing network.
+         ELAN: A multipoint service connecting a set of elements
+         ELINE: A point-to-point service connecting two elements
+         L3: A service providing either Layer-3 visibility (IP) between
+             VDUs/VNFs or explicit interconnection between two ELAN VLDs.";
          // ETREE: A multipoint service connecting one or
          //        more roots and a set of leaves, but
          //        preventing inter-leaf communication.";
     type enumeration {
       enum ELAN;
       enum ELINE;
+      enum L3;
       // enum ETREE;
     }
   }
@@ -669,7 +861,8 @@ module mano-types
       enum disk_write_bytes;
       enum packets_sent;
       enum packets_received;
-      enum packets_dropped;
+      enum packets_in_dropped;
+      enum packets_out_dropped;
     }
   }
 
@@ -868,7 +1061,6 @@ module mano-types
         }
       }
 
-
       leaf om-cpu-model-string {
         description "OpenMANO CPU model string";
         type string;
@@ -882,6 +1074,7 @@ module mano-types
           type string;
         }
       }
+
     }
   }
 
@@ -913,47 +1106,76 @@ module mano-types
         }
       }
 
-      leaf cpu-pinning-policy {
-        description
-            "CPU pinning policy describes association
-             between virtual CPUs in guest and the
-             physical CPUs in the host.
-             DEDICATED : Virtual CPUs are pinned to
-                         physical CPUs
-             SHARED    : Multiple VMs may share the
-                         same physical CPUs.
-             ANY       : Any policy is acceptable for the VM";
-        type enumeration {
-          enum DEDICATED;
-          enum SHARED;
-          enum ANY;
+      choice cpu-policy {
+        case cpu-pinning {
+          leaf cpu-pinning-policy {
+            description
+                "CPU pinning policy describes association
+                 between virtual CPUs in guest and the
+                 physical CPUs in the host.
+                 DEDICATED : Virtual CPUs are pinned to
+                             physical CPUs
+                 SHARED    : Multiple VMs may share the
+                             same physical CPUs.
+                 ANY       : Any policy is acceptable for the VM";
+            type enumeration {
+              enum DEDICATED;
+              enum SHARED;
+              enum ANY;
+            }
+            default "ANY";
+          }
+          leaf cpu-thread-pinning-policy {
+              description
+                "CPU thread pinning policy describes how to
+                 place the guest CPUs when the host supports
+                 hyper threads:
+                 AVOID   : Avoids placing a guest on a host
+                           with threads.
+                 SEPARATE: Places vCPUs on separate cores,
+                           and avoids placing two vCPUs on
+                           two threads of same core.
+                 ISOLATE : Places each vCPU on a different core,
+                           and places no vCPUs from a different
+                           guest on the same core.
+                 PREFER  : Attempts to place vCPUs on threads
+                           of the same core.";
+            type enumeration {
+              enum AVOID;
+              enum SEPARATE;
+              enum ISOLATE;
+              enum PREFER;
+            }
+          }
         }
-        default "ANY";
-      }
 
-      leaf cpu-thread-pinning-policy {
-          description
-            "CPU thread pinning policy describes how to
-             place the guest CPUs when the host supports
-             hyper threads:
-             AVOID   : Avoids placing a guest on a host
-                       with threads.
-             SEPARATE: Places vCPUs on separate cores,
-                       and avoids placing two vCPUs on
-                       two threads of same core.
-             ISOLATE : Places each vCPU on a different core,
-                       and places no vCPUs from a different
-                       guest on the same core.
-             PREFER  : Attempts to place vCPUs on threads
-                       of the same core.";
-        type enumeration {
-          enum AVOID;
-          enum SEPARATE;
-          enum ISOLATE;
-          enum PREFER;
+        case cpu-quota {
+          container cpu-quota {
+              description "CPU quota describes the CPU resource allocation policy.
+                           Limit and Reserve values are defined in MHz";
+              uses allocation-properties;
+          }
         }
       }
 
+      container mem-quota {
+          description "Memory quota describes the memory resource allocation policy.
+                       Limit and Reserve values are defined in MB";
+          uses allocation-properties;
+      }
+
+      container disk-io-quota {
+          description "Disk IO quota describes the disk IO operations resource allocation policy.
+                       Limit and Reserve values are defined in IOPS";
+          uses allocation-properties;
+      }
+
+      container vif-quota {
+          description "Virtual interfaces quota describes the virtual interface bandwidth resource allocation policy.
+                       Limit and Reserve values are defined in Mbps";
+          uses allocation-properties;
+      }
+
       list pcie-device {
         description
             "List of pcie passthrough devices.";
@@ -1088,6 +1310,27 @@ module mano-types
     }
   }
 
+  grouping allocation-properties {
+    leaf limit {
+      description "Defines the maximum allocation. The value 0 indicates that usage is not limited.
+                   This parameter ensures that the instance never uses more than the defined amount of resource.";
+      type uint64;
+    }
+
+    leaf reserve {
+      description "Defines the guaranteed minimum reservation.
+                   If needed, the machine will definitely get allocated the reserved amount of resources.";
+      type uint64;
+    }
+
+    leaf shares {
+      description "Number of shares allocated.
+                   Specifies the proportional weighted share for the domain.
+                   If this element is omitted, the service defaults to the OS provided defaults";
+      type uint64;
+    }
+  }
+
   grouping provider-network {
     container provider-network {
       description "Container for the provider network.";
@@ -1106,108 +1349,6 @@ module mano-types
     }
   }
 
-  grouping ns-service-primitive {
-    list service-primitive {
-      description
-          "Network service level service primitives.";
-
-      key "name";
-
-      leaf name {
-        description
-            "Name of the service primitive.";
-        type string;
-      }
-
-      list parameter {
-        description
-            "List of parameters for the service primitive.";
-
-        key "name";
-        uses manotypes:primitive-parameter;
-      }
-
-      list parameter-group {
-        description
-            "Grouping of parameters which are logically grouped in UI";
-        key "name";
-
-        leaf name {
-          description
-              "Name of the parameter group";
-          type string;
-        }
-
-        list parameter {
-          description
-              "List of parameters for the service primitive.";
-          key "name";
-          uses manotypes:primitive-parameter;
-        }
-
-        leaf mandatory {
-          description "Is this parameter group mandatory";
-          type boolean;
-          default true;
-        }
-      }
-
-      list vnf-primitive-group {
-        description
-            "List of service primitives grouped by VNF.";
-
-        key "member-vnf-index-ref";
-        leaf member-vnf-index-ref {
-          description
-              "Reference to member-vnf within constituent-vnfds";
-          type string;
-        }
-
-        leaf vnfd-id-ref {
-          description
-              "A reference to a vnfd. This is a
-               leafref to path:
-                   ../../../../nsd:constituent-vnfd
-                   + [nsd:id = current()/../nsd:id-ref]
-                   + /nsd:vnfd-id-ref
-               NOTE: An issue with confd is preventing the
-               use of xpath. Seems to be an issue with leafref
-               to leafref, whose target is in a different module.
-               Once that is resolved this will switched to use
-               leafref";
-
-          type string;
-        }
-
-        leaf vnfd-name {
-          description
-              "Name of the VNFD";
-          type string;
-        }
-
-        list primitive {
-          key "index";
-
-          leaf index {
-            description "Index of this primitive";
-            type uint32;
-          }
-
-          leaf name {
-            description "Name of the primitive in the VNF primitive ";
-            type string;
-          }
-        }
-      }
-
-      leaf user-defined-script {
-        description
-            "A user defined script.";
-        type string;
-      }
-    }
-  }
-
   grouping http-endpoints {
     list http-endpoint {
       description
@@ -1799,14 +1940,7 @@ module mano-types
     }
   }
 
-  grouping alarm {
-    leaf alarm-id {
-      description
-          "This field is reserved for the identifier assigned by the VIM provider";
-
-      type string;
-    }
-
+  grouping alarm-properties {
     leaf name {
       description "A human readable string to identify the alarm";
       type string;
@@ -1869,11 +2003,6 @@ module mano-types
       type alarm-severity-type;
     }
 
-    leaf metric {
-      description "The metric to be tracked by this alarm.";
-      type alarm-metric-type;
-    }
-
     leaf statistic {
       description "The type of metric statistic that is tracked by this alarm";
       type alarm-statistic-type;
@@ -2243,7 +2372,7 @@ module mano-types
       description
         "Project to which this belongs";
       type leafref {
-        path "/rw-project:project/rw-project:name";
+        path "/osm-project:project/osm-project:name";
       }
     }
   }