--- /dev/null
+/*
+ Copyright 2020 Whitestack LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+module common-augments {
+ yang-version 1.1;
+ namespace "urn:etsi:osm:yang:augments";
+ prefix "common";
+
+ typedef parameter-data-type {
+ type enumeration {
+ enum STRING;
+ enum INTEGER;
+ enum BOOLEAN;
+ }
+ }
+
+ grouping primitive-parameter-value {
+ list parameter {
+ description
+ "List of parameters to the configuration primitive.";
+ key "name";
+ leaf name {
+ description
+ "Name of the parameter.";
+ type string;
+ }
+
+ leaf data-type {
+ description
+ "Data type associated with the value.";
+ type common:parameter-data-type;
+ }
+
+ leaf value {
+ description
+ "Value associated with the name.";
+ type string;
+ }
+ }
+ }
+
+ grouping primitive-parameter {
+ leaf name {
+ description
+ "Name of the parameter.";
+ type string;
+ }
+
+ leaf data-type {
+ description
+ "Data type associated with the name.";
+ type common:parameter-data-type;
+ }
+
+ leaf mandatory {
+ description
+ "Is this field mandatory";
+ type boolean;
+ default false;
+ }
+
+ leaf default-value {
+ description
+ "The default value for this field";
+ type string;
+ }
+
+ leaf parameter-pool {
+ description
+ "NSD parameter pool name to use for this parameter";
+ type string;
+ }
+
+ leaf read-only {
+ description
+ "The value should be dimmed by the UI.
+ Only applies to parameters with default values.";
+ type boolean;
+ default false;
+ }
+
+ leaf hidden {
+ description
+ "The value should be hidden by the UI.
+ Only applies to parameters with default values.";
+ type boolean;
+ default false;
+ }
+ }
+
+ grouping vnfc-relations {
+ list relation {
+ description
+ "List of relations between elements in this descriptor.";
+ key "name";
+
+ leaf name {
+ description
+ "Name of the relation.";
+
+ type string;
+ }
+
+ list entities {
+ 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;
+ }
+ }
+ }
+ }
+
+ grouping vnfc-metrics {
+ description
+ "Information about the VNF or VDU metrics";
+ list metrics {
+ description
+ "List of VNFC related metrics";
+ key "name";
+ leaf name {
+ description
+ "Name of the metric, as defined in the Juju charm.";
+ type string;
+ }
+ }
+ }
+
+ grouping configuration-method {
+ choice config-method {
+ description
+ "Defines the configuration method for the VNF or VDU.";
+ case script {
+ description
+ "Use custom script for configuring the VNF or VDU.
+ This script is executed in the context of
+ Orchestrator (The same system and environment
+ as the Launchpad).";
+ container script {
+ leaf script-type {
+ description
+ "Script type - currently supported - Scripts confirming to Rift CA plugin";
+ type enumeration {
+ enum rift;
+ }
+ }
+ }
+ }
+
+ case juju {
+ description
+ "Configure the VNF or VDU 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;
+ }
+ }
+ }
+ }
+ }
+
+ grouping vdu-config-access {
+
+ container config-access {
+
+ description
+ "Indicates the way to access to the xNF or xDU for VCA configuration.
+ For the moment there is a single way (ssh-access).";
+
+ container ssh-access {
+
+ description
+ "If the xNF requires ssh and this parameter is set, SSH keys
+ will be injected so that VCA can configure the xNF or xDU via ssh.";
+
+ leaf required {
+ description
+ "whether ssh access is needed or not";
+ type boolean;
+ default false;
+ }
+
+ leaf default-user {
+ description
+ "Default user for ssh";
+ type string;
+ }
+ }
+ }
+ }
+
+ grouping vnfc-configuration {
+ description
+ "Common information in the descriptors for NS, VNF or VDU configuration.
+ Note: If the NS contains multiple instances of the
+ same VNF or VDU, each instance could have a different
+ configuration.";
+
+ uses common:configuration-method;
+
+ list config-primitive {
+ description
+ "List of config primitives supported by the
+ configuration agent for this VNF or VDU.";
+ key "name";
+
+ leaf name {
+ description
+ "Name of the config primitive.";
+ type string;
+ }
+
+ list parameter {
+ description
+ "List of parameters to the config primitive.";
+ key "name";
+ uses primitive-parameter;
+ }
+
+ leaf user-defined-script {
+ description
+ "A user defined script. If user defined script is defined,
+ the script will be executed using bash";
+ type string;
+ }
+ }
+
+ list initial-config-primitive {
+ description
+ "Initial set of configuration primitives.";
+ key "seq";
+ leaf seq {
+ description
+ "Sequence number for the configuration primitive.";
+ type uint64;
+ }
+
+ choice primitive-type {
+ case primitive-definition {
+ leaf name {
+ description
+ "Name of the configuration primitive.";
+ type string;
+ }
+
+ uses primitive-parameter-value;
+
+ leaf user-defined-script {
+ description
+ "A user defined script.";
+ type string;
+ }
+ }
+ }
+ }
+
+ list terminate-config-primitive {
+ description
+ "Terminate set of configuration primitives.";
+ key "seq";
+ leaf seq {
+ description
+ "Sequence number for the configuration primitive.";
+ type uint64;
+ }
+ leaf name {
+ description
+ "Name of the configuration primitive.";
+ type string;
+ }
+
+ uses primitive-parameter-value;
+
+ leaf user-defined-script {
+ description
+ "A user defined script.";
+ type string;
+ }
+ }
+ uses common:vnfc-metrics;
+ }
+}
--- /dev/null
+/*
+ Copyright 2020 Whitestack LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+module day1-2 {
+ yang-version 1.1;
+ namespace "urn:etsi:osm:yang:augments";
+ prefix "day1-2";
+
+ import etsi-nfv-vnfd {
+ prefix vnfd;
+ }
+
+ import common-augments {
+ prefix common;
+ }
+
+ grouping extended-vnf-configuration {
+ container vnf-configuration {
+ uses common:vnfc-configuration;
+ uses common:vnfc-relations;
+ uses common:vdu-config-access;
+ }
+ }
+
+ grouping extended-vdu-configuration {
+ container vdu-configuration {
+ uses common:vnfc-configuration;
+ uses common:vdu-config-access;
+ }
+ }
+
+ augment "/vnfd:vnfd" {
+ uses extended-vnf-configuration;
+ }
+
+ augment "/vnfd:vnfd/vnfd:vdu" {
+ uses extended-vdu-configuration;
+ }
+}
\ No newline at end of file