Feature 5837: OSM Kubernetes Support
[osm/IM.git] / models / yang / vnfd-base.yang
index f98e2d2..38bede6 100644 (file)
@@ -20,7 +20,7 @@
 
 module vnfd-base
 {
 
 module vnfd-base
 {
-  namespace "http://riftio.com/ns/riftware-1.0/vnfd-base";
+  namespace "urn:etsi:osm:yang:vnfd-base";
   prefix "vnfd-base";
 
   import mano-types {
   prefix "vnfd-base";
 
   import mano-types {
@@ -95,15 +95,17 @@ module vnfd-base
         description
             "Specifies the type of virtual interface
              between VM and host.
         description
             "Specifies the type of virtual interface
              between VM and host.
-             VIRTIO          : Use the traditional VIRTIO interface.
+             PARAVIRT        : Use the default paravirtualized interface for the VIM (virtio, vmxnet3, etc.).
+             VIRTIO          : Deprecated! Use the traditional VIRTIO interface.
              PCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.
              SR-IOV          : Use SR-IOV interface.
              E1000           : Emulate E1000 interface.
              RTL8139         : Emulate RTL8139 interface.
              PCNET           : Emulate PCNET interface.
              PCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.
              SR-IOV          : Use SR-IOV interface.
              E1000           : Emulate E1000 interface.
              RTL8139         : Emulate RTL8139 interface.
              PCNET           : Emulate PCNET interface.
-             OM-MGMT         : Deprecated! Use VIRTIO instead and set the VNF management interface at vnfd:mgmt-interface:cp";
+             OM-MGMT         : Deprecated! Use PARAVIRT instead and set the VNF management interface at vnfd:mgmt-interface:cp";
 
         type enumeration {
 
         type enumeration {
+          enum PARAVIRT;
           enum OM-MGMT;
           enum PCI-PASSTHROUGH;
           enum SR-IOV;
           enum OM-MGMT;
           enum PCI-PASSTHROUGH;
           enum SR-IOV;
@@ -112,7 +114,7 @@ module vnfd-base
           enum RTL8139;
           enum PCNET;
         }
           enum RTL8139;
           enum PCNET;
         }
-        default "VIRTIO";
+        default "PARAVIRT";
       }
 
       leaf vpci {
       }
 
       leaf vpci {
@@ -174,6 +176,8 @@ module vnfd-base
 
       container vnf-configuration {
         uses manotypes:vca-configuration;
 
       container vnf-configuration {
         uses manotypes:vca-configuration;
+        uses manotypes:vca-relations;
+        uses manotypes:vca-config-access;
       }
 
       leaf operational-status {
       }
 
       leaf operational-status {
@@ -415,7 +419,24 @@ module vnfd-base
         list alarm {
           key "alarm-id";
 
         list alarm {
           key "alarm-id";
 
-          uses manotypes:alarm;
+          leaf alarm-id {
+            description
+                  "This field is reserved for the identifier assigned by the VIM provider";
+
+            type string;
+          }
+
+
+          leaf vnf-monitoring-param-ref {
+              description
+                 "Reference to the VNF level monitoring parameter
+                  that is aggregated";
+              type leafref {
+                path "../../monitoring-param/id";
+              }
+          }
+
+          uses manotypes:alarm-properties;
         }
 
         uses manotypes:image-properties;
         }
 
         uses manotypes:image-properties;
@@ -441,6 +462,7 @@ module vnfd-base
 
         container vdu-configuration {
           uses manotypes:vca-configuration;
 
         container vdu-configuration {
           uses manotypes:vca-configuration;
+          uses manotypes:vca-config-access;
         }
 
         list monitoring-param {
         }
 
         list monitoring-param {
@@ -546,12 +568,12 @@ module vnfd-base
 
           leaf mac-address {
             description
 
           leaf mac-address {
             description
-                "MAC address of the interface.
-                Some VNFs require a specific MAC address to be configured
-                in the interface. While this is not recommended at all in
-                NFV environments, this parameter exists to allow those
-                scenarios.
-                This parameter will be likely deprecated in the future.";
+              "MAC address of the interface.
+              Some VNFs require a specific MAC address to be configured
+              in the interface. While this is not recommended at all in
+              NFV environments, this parameter exists to allow those
+              scenarios.
+              This parameter will be likely deprecated in the future.";
             type string;
           }
 
             type string;
           }
 
@@ -559,19 +581,19 @@ module vnfd-base
             case internal {
               leaf internal-connection-point-ref {
                 description
             case internal {
               leaf internal-connection-point-ref {
                 description
-                    "Leaf Ref to the particular internal connection point";
+                  "Leaf Ref to the particular internal connection point";
                 type leafref {
                 type leafref {
-                   path "../../internal-connection-point/id";
-                 }
+                  path "../../internal-connection-point/id";
+                }
               }
             }
             case external {
               leaf external-connection-point-ref {
                 description
               }
             }
             case external {
               leaf external-connection-point-ref {
                 description
-                    "Leaf Ref to the particular external connection point";
+                  "Leaf Ref to the particular external connection point";
                 type leafref {
                 type leafref {
-                   path "../../../connection-point/name";
-                 }
+                  path "../../../connection-point/name";
+                }
               }
             }
           }
               }
             }
           }
@@ -592,6 +614,118 @@ module vnfd-base
         }
       }
 
         }
       }
 
+      list kdu {
+        description "List of K8s Deployment Units";
+        key "name";
+
+        leaf name {
+          description "Unique name for the KDU";
+          type string;
+        }
+
+        leaf description {
+            description "Description of the KDU.";
+            type string;
+        }
+
+        container kdu-configuration {
+          uses manotypes:vca-configuration;
+          uses manotypes:vca-config-access;
+
+          leaf-list blacklist-config-primitive {
+            description
+              "List of blacklisted config primitives from the list of
+              default kdu config primitives";
+
+            type enumeration {
+              enum upgrade;
+              enum rollback;
+            }
+
+          }
+
+        }
+
+        choice kdu-model {
+          description
+            "Indicates the KDU model, either as a helm-chart or as a juju-bundle.";
+
+          case helm-chart {
+            leaf helm-chart {
+              description
+                "Helm chart that models the KDU, in any of the following ways:
+                 - <helm-repo>/<helm-chart>
+                 - <helm-chart folder under k8s_models folder in the package>
+                 - <helm-chart tgz file (w/ or w/o extension) under k8s_models folder in the package>
+                 - <URL_where_to_fetch_chart>
+                ";
+              type string;
+            }
+          }
+
+          case juju-bundle {
+            leaf juju-bundle {
+              description
+                "Juju bundle that models the KDU, in any of the following ways:
+                 - <juju-repo>/<juju-bundle>
+                 - <juju-bundle folder under k8s_models folder in the package>
+                 - <juju-bundle tgz file (w/ or w/o extension) under k8s_models folder in the package>
+                 - <URL_where_to_fetch_juju_bundle>
+                ";
+              type string;
+            }
+          }
+        }
+
+      }
+
+      container k8s-cluster {
+        leaf-list version {
+          description
+            "List of supported K8s versions.
+            The cluster where the KDUs will be deployed will have to match
+            one of these versions.";
+
+          type string;
+        }
+
+        leaf-list cni {
+          description
+            "List of supported CNI plugins.
+            The cluster where the KDUs will be deployed will have to use
+            one of these CNI plugins.";
+
+          type enumeration {
+            enum calico;
+            enum flannel;
+            enum multus;
+          }
+        }
+
+        list nets {
+          description
+            "List of required networks in the K8s cluster.
+            The cluster where the KDUs will be deployed will have to use
+            one of these CNI plugins.";
+
+          key "id";
+
+          leaf id {
+            description "Internal identifier for the K8s cluster network in this VNF";
+            type string;
+          }
+
+          leaf external-connection-point-ref {
+            description
+              "Leaf Ref to the particular external connection point";
+            type leafref {
+              path "../../../connection-point/name";
+            }
+          }
+
+        }
+      }
+
       list vdu-dependency {
         description
             "List of VDU dependencies.";
       list vdu-dependency {
         description
             "List of VDU dependencies.";
@@ -719,7 +853,9 @@ module vnfd-base
             leaf scale-in-threshold {
               description
                   "Value below which scale-in requests are generated";
             leaf scale-in-threshold {
               description
                   "Value below which scale-in requests are generated";
-              type uint64;
+              type decimal64{
+                fraction-digits 10;
+             }
             }
 
             leaf scale-in-relational-operation {
             }
 
             leaf scale-in-relational-operation {
@@ -733,7 +869,9 @@ module vnfd-base
             leaf scale-out-threshold {
               description
                   "Value above which scale-out requests are generated";
             leaf scale-out-threshold {
               description
                   "Value above which scale-out requests are generated";
-              type uint64;
+              type decimal64{
+                fraction-digits 10;
+             }
             }
 
             leaf scale-out-relational-operation {
             }
 
             leaf scale-out-relational-operation {
@@ -837,37 +975,43 @@ module vnfd-base
 
           case vdu-monitoring-param {
             description "VDU-related metric from the infrastructure";
 
           case vdu-monitoring-param {
             description "VDU-related metric from the infrastructure";
-            leaf vdu-ref {
-              type leafref {
-                path "../../vdu/id";
+            container vdu-monitoring-param {
+              leaf vdu-ref {
+                type leafref {
+                  path "../../../vdu/id";
+                }
               }
               }
-            }
-            leaf vdu-monitoring-param-ref {
-              type leafref {
-                path "../../vdu[id = current()/../vdu-ref]/monitoring-param/id";
+              leaf vdu-monitoring-param-ref {
+                type leafref {
+                  path "../../../vdu[id = current()/../vdu-ref]/monitoring-param/id";
+                }
               }
             }
           }
 
           case vnf-metric {
             description "VNF-related metric (from VCA)";
               }
             }
           }
 
           case vnf-metric {
             description "VNF-related metric (from VCA)";
-            leaf vnf-metric-name-ref {
-              type leafref {
-                path "../../vnf-configuration/metrics/name";
+            container vnf-metric {
+              leaf vnf-metric-name-ref {
+                type leafref {
+                  path "../../../vnf-configuration/metrics/name";
+                }
               }
             }
           }
 
           case vdu-metric {
             description "VDU-related metric (from VCA)";
               }
             }
           }
 
           case vdu-metric {
             description "VDU-related metric (from VCA)";
-            leaf vdu-id-ref {
-              type leafref {
-                path "../../vdu/id";
+            container vdu-metric {
+              leaf vdu-ref {
+                type leafref {
+                  path "../../../vdu/id";
+                }
               }
               }
-            }
-            leaf vdu-metric-name-ref {
-              type leafref {
-                path "../../vdu[id = current()/../vdu-id-ref]/vdu-configuration/metrics/name";
+              leaf vdu-metric-name-ref {
+                type leafref {
+                  path "../../../vdu[id = current()/../vdu-ref]/vdu-configuration/metrics/name";
+                }
               }
             }
           }
               }
             }
           }