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;
}
}
- 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 {
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";
type string;
}
}
+ must 'not(entities) or (not(provider) and not(requirer))' {
+ error-message 'Cannot set both "entities" and "provider/requirer" fields.';
+ }
}
}
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 "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;
+ }
}
}
}
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.";
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 {
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 {
}
}
}
-}
\ No newline at end of file
+}