2 Copyright 2020 Whitestack LLC
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
8 http://www.apache.org/licenses/LICENSE-2.0
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
14 See the License for the specific language governing permissions and
15 limitations under the License.
18 module common-augments {
20 namespace "urn:etsi:osm:yang:augments";
23 import etsi-nfv-vnfd {
30 typedef parameter-data-type {
38 grouping primitive-parameter-value {
41 "List of parameters to the configuration primitive.";
45 "Name of the parameter.";
51 "Data type associated with the value.";
52 type common:parameter-data-type;
57 "Value associated with the name.";
63 grouping primitive-parameter {
66 "Name of the parameter.";
72 "Data type associated with the name.";
73 type common:parameter-data-type;
78 "Is this field mandatory";
85 "The default value for this field";
91 "NSD parameter pool name to use for this parameter";
97 "The value should be dimmed by the UI.
98 Only applies to parameters with default values.";
105 "The value should be hidden by the UI.
106 Only applies to parameters with default values.";
112 grouping relations-ee {
114 "Information about the execution environment and endpoint for a relation.
115 The execution environment can be associated to different objects: kdu, vdu, vnf, or ns.
116 To select the object, the profile-id of the object might be needed:
117 Reference to a kdu-level execution enviroment:
118 in the VNFd: the kdu-resource-profile-id is needed.
119 in the NSd: the kdu-resource-profile-id and vnf-profile-id are needed.
120 Reference to a vdu-level execution enviroment:
121 in the VNFd: the vdu-profile-id is needed.
122 in the NSd: the vdu-profile-id and vnf-profile-id are needed.
123 Reference to a vnf-level execution enviroment:
124 in the VNFd: nothing is needed, implicit.
125 in the NSd: the vnf-profile-id is needed.
126 Reference to an ns-level execution enviroment:
127 in the VNFd: cannot be done.
128 in the NSd: nothing is needed, implicit.
129 The reference to the execution environment is only mandatory if there is more than one execution environment
130 in the execution-environment-list of an object.
131 The endpoint is always needed";
133 leaf vdu-profile-id {
135 "If the execution environment is associated to a vdu object,
136 this parameter is the reference to the vdu-profile id.";
138 path "/vnfd:vnfd/vnfd:df/vnfd:vdu-profile/vnfd:id";
142 leaf kdu-resource-profile-id {
144 "If the execution environment is associated to a kdu resource object,
145 this parameter is the reference to the kdu-resource-profile id.";
149 leaf vnf-profile-id {
151 "If the execution environment is associated to a vnf object,
152 this parameter is the reference to the vnf-profile id.
153 Only valid in the NSd. The value is implicit in a VNFd.
154 To reference an execution environment associated to a vnf object
155 from the VNFd, none of the profile ids need to be specified.";
157 path "/nsd:nsd/nsd:nsd/nsd:df/nsd:vnf-profile/nsd:id";
160 leaf execution-environment-ref {
162 "Optional reference to the execution environment id.
163 Only needed if there is more than one execution environment
164 in the execution-environment-list of an object.";
170 "Endpoint name of the execution environment.";
178 "List of relations between elements in this descriptor.
179 The relations are used to integrate pairs of execution environments,
180 that are in charge of the configuration and lifecycle management
181 of VDUs, VNFs, KDUs, or NSs.
182 Each relation is formed by a provider and a requirer.
183 The provider is the execution environment that provides a particular service.
184 The requirer is the execution environment that requires the service provided by the provider";
189 "Name of the relation.";
195 "Execution environment that offers an endpoint for a particular service";
200 "Execution environment that uses the service provided by the provider";
206 grouping vnfc-metrics {
208 "Information about the VNF or VDU metrics";
211 "List of VNFC related metrics";
215 "Name of the metric, as defined in the Juju charm.";
221 grouping configuration-method {
222 choice config-method {
224 "Defines the configuration method for the VNF or VDU.";
227 "Use custom script for configuring the VNF or VDU.
228 This script is executed in the context of
229 Orchestrator (The same system and environment
234 "Script type - currently supported - Scripts confirming to Rift CA plugin";
244 "Configure the VNF or VDU through Juju.";
248 "Juju charm to use with the VNF or VDU.";
253 "Is this a proxy charm?";
259 "Type of cloud where the charm will be deployed. It only
260 applies to proxy charms (not native)";
270 case execution-environment-list {
272 "List of Execution Environments to configure or monitor VNF or VDU.";
273 list execution-environment-list {
276 description "Execution environment identifier.";
279 choice execution-environment-model {
281 "Execution environment model (juju, helm-chart)";
284 "Interact with the VNF or xDU through Juju.";
288 "Juju charm to use with the VNF or VDU.";
293 "Is this a proxy charm?";
299 "Type of cloud where the charm will be deployed. It only
300 applies to proxy charms (not native)";
311 "Interact with the VNF or xDU through Helm.";
314 "Helm chart that models the execution environment, in any of the following ways:
315 - <helm-repo>/<helm-chart>
316 - <helm-chart folder name under helm-charts folder in the package>
317 - <helm-chart tgz file (w/ or w/o extension) under helm-charts folder in the package>
318 - <URL_where_to_fetch_chart>
324 "Helm version to use for this helm-chart, v3 by default";
333 leaf metric-service {
335 "Service name in the execution environment. For helm charts, it will be
336 the name of the kubernetes service used by the exporter to expose metrics
337 to the OSM collector.
341 leaf external-connection-point-ref {
343 "String representing a leaf reference to the particular external connection point
344 This field should match /vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id/vnfd:connection-point/vnfd:name
353 grouping vdu-config-access {
355 container config-access {
358 "Indicates the way to access to the xNF or xDU for VCA configuration.
359 For the moment there is a single way (ssh-access).";
361 container ssh-access {
364 "If the xNF requires ssh and this parameter is set, SSH keys
365 will be injected so that VCA can configure the xNF or xDU via ssh.";
369 "whether ssh access is needed or not";
376 "Default user for ssh";
383 grouping vnfc-configuration {
385 "Common information in the descriptors for NS, VNF or VDU configuration.
386 Note: If the NS contains multiple instances of the
387 same VNF or VDU, each instance could have a different
390 uses common:configuration-method;
392 list config-primitive {
394 "List of config primitives supported by the
395 configuration agent for this VNF or VDU.";
400 "Name of the config primitive.";
404 leaf execution-environment-ref {
406 "Leaf reference to the particular execution environment";
408 path "../../execution-environment-list/id";
412 leaf execution-environment-primitive {
414 "Name of the primitive in the execution enviroment. If not explicit,
415 the leaf 'name' will be used as the name of the primitive.";
422 "List of parameters to the config primitive.";
424 uses primitive-parameter;
427 leaf user-defined-script {
429 "A user defined script. If user defined script is defined,
430 the script will be executed using bash";
435 list initial-config-primitive {
437 "Initial set of configuration primitives.";
441 "Sequence number for the configuration primitive.";
445 choice primitive-type {
446 case primitive-definition {
449 "Name of the configuration primitive.";
453 leaf execution-environment-ref {
455 "Leaf reference to the particular execution environment";
457 path "../../execution-environment-list/id";
461 uses primitive-parameter-value;
463 leaf user-defined-script {
465 "A user defined script.";
472 list terminate-config-primitive {
474 "Terminate set of configuration primitives.";
478 "Sequence number for the configuration primitive.";
483 "Name of the configuration primitive.";
487 leaf execution-environment-ref {
489 "Leaf reference to the particular execution environment";
491 path "../../execution-environment-list/id";
495 uses primitive-parameter-value;
497 leaf user-defined-script {
499 "A user defined script.";
503 uses common:vnfc-metrics;
506 typedef alarm-severity-type {
508 "An indication of the importance or urgency of the alarm";
516 typedef alarm-statistic-type {
518 "Statistic type to use to determine threshold crossing
529 typedef relational-operation-type {
531 "The relational operator used to define whether an alarm,
532 scaling event, etc. should be triggered in certain scenarios,
533 such as if the metric statistic goes above or below a specified
536 enum GE; // greater than or equal
537 enum LE; // less than or equal
538 enum GT; // greater than
539 enum LT; // less than
544 grouping alarm-properties {
547 "A human readable string to identify the alarm";
553 "A description of this alarm";
559 "The identifier of the VDUR that the alarm is associated with";
571 list insufficient-data {
588 "This flag indicates whether the alarm should be repeatedly emitted
589 while the associated threshold has been crossed.";
597 "This flag indicates whether the alarm has been enabled or
606 "A measure of the importance or urgency of the alarm";
607 type alarm-severity-type;
612 "The type of metric statistic that is tracked by this alarm";
613 type alarm-statistic-type;
618 "The relational operator used to define whether an alarm should be
619 triggered in certain scenarios, such as if the metric statistic
620 goes above or below a specified value.";
621 type relational-operation-type;
626 "This value defines the threshold that, if crossed, will trigger
635 "The period defines the length of time (seconds) that the metric
636 data are collected over in oreder to evaluate the chosen
643 "Defines the length of time (seconds) in which metric data are
644 collected in order to evaluate the chosen statistic.";
649 grouping virtual-interface {
650 container virtual-interface {
652 "Container for the virtual interface properties";
656 "Specifies the type of virtual interface
658 PARAVIRT : Use the default paravirtualized interface for the VIM (virtio, vmxnet3, etc.).
659 VIRTIO : Deprecated! Use the traditional VIRTIO interface.
660 PCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.
661 SR-IOV : Use SR-IOV interface.
662 E1000 : Emulate E1000 interface.
663 RTL8139 : Emulate RTL8139 interface.
664 PCNET : Emulate PCNET interface.
665 OM-MGMT : Deprecated! Use PARAVIRT instead and set the VNF management interface at vnfd:mgmt-interface:cp";
670 enum PCI-PASSTHROUGH;
682 "Specifies the virtual PCI address. Expressed in
683 the following format dddd:dd:dd.d. For example
684 0000:00:12.0. This information can be used to
685 pass as metadata during the VM creation.";
691 "Aggregate bandwidth of the NIC.";
697 grouping description {
703 typedef scaling-trigger {
714 enum post-scale-out {
720 typedef scaling-policy-type {
731 typedef scaling-criteria-operation {