Update vnfc-relations 12/11212/7
authorDavid Garcia <david.garcia@canonical.com>
Tue, 28 Sep 2021 08:28:03 +0000 (10:28 +0200)
committerDavid Garcia <david.garcia@canonical.com>
Wed, 3 Nov 2021 10:42:53 +0000 (11:42 +0100)
Renamed `vnfc-relations` to `relations`

Change entities content:
- Replace ambiguous `id` with `vnf-profile-id`, `kdu-resource-profile-id` and
`vdu-profile-id`
- Add `execution-environment-ref` to select the ee from the potential
list
- Change `entities` from a two-element list to a `provider` and
`requirer` containers. This makes the IM more robust and avoids
unexpected list of endpoints with more than two elements.

Related feature: 10887 (https://osm.etsi.org/gitlab/osm/features/-/issues/10887)

Change-Id: I327764adc5366427d6366e1609f7aebad878c4a6
Signed-off-by: David Garcia <david.garcia@canonical.com>
models/augments/common-augments.yang
models/augments/day1-2.yang
models/augments/ns-configuration.yang

index 912199c..c365424 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,27 +190,15 @@ module common-augments {
 
                 type string;
             }
-
-            list entities {
+            container provider {
                 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
-                      "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 endpoint {
-                    description
-                      "Endpoint name defining the relation.";
-                    type string;
-                }
+                  "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;
             }
         }
     }
index cf3b841..a29a3bc 100644 (file)
@@ -37,7 +37,7 @@ module day1-2 {
                 type string;
             }
             uses common:vnfc-configuration;
-            uses common:vnfc-relations;
+            uses common:relations;
             uses common:vdu-config-access;
 
             leaf-list blacklist-config-primitive {
index a4effd2..89df261 100644 (file)
@@ -34,7 +34,7 @@ module ns-configuration {
               "Information about NS configuration.";
 
             uses common:vnfc-configuration;
-            uses common:vnfc-relations;
+            uses common:relations;
         }
     }