X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=models%2Faugments%2Fcommon-augments.yang;h=cf883b9edcf0c50bb843c027e3d7a74c094fcc70;hb=7afc83f83fd875fb7f5cd39fdc0c3b81fc55038e;hp=7beec8905ffba0a60109e6c56527b8dead902efc;hpb=76f6a62b4cc15bc77cf1270d2b1630524fb2879f;p=osm%2FIM.git diff --git a/models/augments/common-augments.yang b/models/augments/common-augments.yang index 7beec89..cf883b9 100644 --- a/models/augments/common-augments.yang +++ b/models/augments/common-augments.yang @@ -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,97 @@ 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: + - / + - + - + - + "; + 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 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 +426,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 +475,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 +509,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 +563,7 @@ module common-augments { enum GT; // greater than enum LT; // less than enum EQ; // equal + enum NE; // not equal } } @@ -513,6 +726,27 @@ 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 + following setting holds the persistent volume upon VM deletion: + key: keep-volume + value: true"; + + key "key"; + + leaf key { + type string; + } + + leaf value { + type string; + } + } + } + typedef scaling-trigger { type enumeration { enum pre-scale-in { @@ -551,4 +785,4 @@ module common-augments { } } } -} \ No newline at end of file +}