Update openjdk version to 19 and yang2swagger version to 2.1.0
[osm/IM.git] / models / augments / common-augments.yang
index 7beec89..18481a9 100644 (file)
@@ -20,6 +20,13 @@ module common-augments {
     namespace "urn:etsi:osm:yang:augments";
     prefix "common";
 
+    import etsi-nfv-vnfd {
+        prefix vnfd;
+    }
+    import etsi-nfv-nsd {
+        prefix nsd;
+    }
+
     typedef parameter-data-type {
         type enumeration {
             enum STRING;
@@ -102,10 +109,79 @@ module common-augments {
         }
     }
 
-    grouping vnfc-relations {
+    grouping relations-ee {
+        description
+          "Information about the execution environment and endpoint for a relation.
+           The execution environment can be associated to different objects: kdu, vdu, vnf, or ns.
+           To select the object, the profile-id of the object might be needed:
+            Reference to a kdu-level execution enviroment:
+                in the VNFd: the kdu-resource-profile-id is needed.
+                in the NSd: the kdu-resource-profile-id and vnf-profile-id are needed.
+            Reference to a vdu-level execution enviroment:
+                in the VNFd: the vdu-profile-id is needed.
+                in the NSd: the vdu-profile-id and vnf-profile-id are needed.
+            Reference to a vnf-level execution enviroment:
+                in the VNFd: nothing is needed, implicit.
+                in the NSd: the vnf-profile-id is needed.
+            Reference to an ns-level execution enviroment:
+                in the VNFd: cannot be done.
+                in the NSd: nothing is needed, implicit.
+           The reference to the execution environment is only mandatory if there is more than one execution environment
+           in the execution-environment-list of an object.
+           The endpoint is always needed";
+
+        leaf vdu-profile-id {
+            description
+              "If the execution environment is associated to a vdu object,
+              this parameter is the reference to the vdu-profile id.";
+            type leafref {
+                path "/vnfd:vnfd/vnfd:df/vnfd:vdu-profile/vnfd:id";
+            }
+        }
+
+        leaf kdu-resource-profile-id {
+            description
+              "If the execution environment is associated to a kdu resource object,
+              this parameter is the reference to the kdu-resource-profile id.";
+            type string;
+        }
+
+        leaf vnf-profile-id {
+            description
+              "If the execution environment is associated to a vnf object,
+              this parameter is the reference to the vnf-profile id.
+              Only valid in the NSd. The value is implicit in a VNFd.
+              To reference an execution environment associated to a vnf object
+              from the VNFd, none of the profile ids need to be specified.";
+            type leafref {
+                path "/nsd:nsd/nsd:nsd/nsd:df/nsd:vnf-profile/nsd:id";
+            }
+        }
+        leaf execution-environment-ref {
+            description
+              "Optional reference to the execution environment id.
+              Only needed if there is more than one execution environment
+              in the execution-environment-list of an object.";
+            type string;
+            default "";
+        }
+        leaf endpoint {
+            description
+              "Endpoint name of the execution environment.";
+            type string;
+        }
+    }
+
+    grouping relations {
         list relation {
             description
-              "List of relations between elements in this descriptor.";
+              "List of relations between elements in this descriptor.
+               The relations are used to integrate pairs of execution environments,
+               that are in charge of the configuration and lifecycle management
+               of VDUs, VNFs, KDUs, or NSs.
+               Each relation is formed by a provider and a requirer.
+                  The provider is the execution environment that provides a particular service.
+                  The requirer is the execution environment that requires the service provided by the provider";
             key "name";
 
             leaf name {
@@ -114,10 +190,20 @@ module common-augments {
 
                 type string;
             }
-
+            container provider {
+                description
+                  "Execution environment that offers an endpoint for a particular service";
+                uses relations-ee;
+            }
+            container requirer {
+                description
+                  "Execution environment that uses the service provided by the provider";
+                uses relations-ee;
+            }
             list entities {
                 description
-                  "List of two elements to be related.
+                  "DEPRECATION NOTICE: use provider and requirer instead.
+                   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";
@@ -136,6 +222,9 @@ module common-augments {
                     type string;
                 }
             }
+            must 'not(entities) or (not(provider) and not(requirer))' {
+                error-message 'Cannot set both "entities" and "provider/requirer" fields.';
+            }
         }
     }
 
@@ -190,6 +279,96 @@ module common-augments {
                         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 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 "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 external-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;
+                    }
                 }
             }
         }
@@ -246,6 +425,22 @@ module common-augments {
                 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.";
@@ -279,6 +474,14 @@ module common-augments {
                         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 {
@@ -305,6 +508,14 @@ module common-augments {
                 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 {
@@ -351,6 +562,7 @@ module common-augments {
             enum GT; // greater than
             enum LT; // less than
             enum EQ; // equal
+            enum NE; // not equal
         }
     }
 
@@ -513,6 +725,34 @@ module common-augments {
         }
     }
 
+    grouping vdu-storage-requirements {
+        list vdu-storage-requirements {
+            description
+              "Array of key-value pairs that articulate the storage
+               deployment requirements.
+
+               If the storage type is persistent-storage, the following setting
+               holds the persistent volume upon VM deletion:
+                 key: keep-volume
+                 value: true
+
+               If storage volume can be attached to several VMs, the following setting
+               will allow it:
+                 key: multiattach
+                 value: true";
+
+            key "key";
+
+            leaf key {
+                type string;
+            }
+
+            leaf value {
+                type string;
+            }
+        }
+    }
+
     typedef scaling-trigger {
         type enumeration {
             enum pre-scale-in {
@@ -551,4 +791,4 @@ module common-augments {
             }
         }
     }
-}
\ No newline at end of file
+}