Adds augments to Makefile and tests for descriptors validation
[osm/IM.git] / models / augments / common-augments.yang
diff --git a/models/augments/common-augments.yang b/models/augments/common-augments.yang
new file mode 100644 (file)
index 0000000..7beec89
--- /dev/null
@@ -0,0 +1,554 @@
+/*
+  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;
+    }
+
+    typedef alarm-severity-type {
+        description
+          "An indication of the importance or urgency of the alarm";
+        type enumeration {
+            enum LOW;
+            enum MODERATE;
+            enum CRITICAL;
+        }
+    }
+
+    typedef alarm-statistic-type {
+        description
+          "Statistic type to use to determine threshold crossing
+           for an alarm.";
+        type enumeration {
+            enum AVERAGE;
+            enum MINIMUM;
+            enum MAXIMUM;
+            enum COUNT;
+            enum SUM;
+        }
+    }
+
+    typedef relational-operation-type {
+        description
+          "The relational operator used to define whether an alarm,
+           scaling event, etc. should be triggered in certain scenarios,
+           such as if the metric statistic goes above or below a specified
+           value.";
+        type enumeration {
+            enum GE; // greater than or equal
+            enum LE; // less than or equal
+            enum GT; // greater than
+            enum LT; // less than
+            enum EQ; // equal
+        }
+    }
+
+    grouping alarm-properties {
+        leaf name {
+            description
+              "A human readable string to identify the alarm";
+            type string;
+        }
+
+        leaf description {
+            description
+              "A description of this alarm";
+            type string;
+        }
+
+        leaf vdur-id {
+            description
+              "The identifier of the VDUR that the alarm is associated with";
+            type string;
+        }
+
+        container actions {
+            list ok {
+                key "url";
+                leaf url {
+                    type string;
+                }
+            }
+
+            list insufficient-data {
+                key "url";
+                leaf url {
+                    type string;
+                }
+            }
+
+            list alarm {
+                key "url";
+                leaf url {
+                    type string;
+                }
+            }
+        }
+
+        leaf repeat {
+            description
+              "This flag indicates whether the alarm should be repeatedly emitted
+               while the associated threshold has been crossed.";
+
+            type boolean;
+            default true;
+        }
+
+        leaf enabled {
+            description
+              "This flag indicates whether the alarm has been enabled or
+               disabled.";
+
+            type boolean;
+            default true;
+        }
+
+        leaf severity {
+            description
+              "A measure of the importance or urgency of the alarm";
+            type alarm-severity-type;
+        }
+
+        leaf statistic {
+            description
+              "The type of metric statistic that is tracked by this alarm";
+            type alarm-statistic-type;
+        }
+
+        leaf operation {
+            description
+              "The relational operator used to define whether an alarm should be
+               triggered in certain scenarios, such as if the metric statistic
+               goes above or below a specified value.";
+            type relational-operation-type;
+        }
+
+        leaf value {
+            description
+              "This value defines the threshold that, if crossed, will trigger
+               the alarm.";
+            type decimal64 {
+                fraction-digits 4;
+            }
+        }
+
+        leaf period {
+            description
+              "The period defines the length of time (seconds) that the metric
+               data are collected over in oreder to evaluate the chosen
+               statistic.";
+            type uint32;
+        }
+
+        leaf evaluations {
+            description
+              "Defines the length of time (seconds) in which metric data are
+               collected in order to evaluate the chosen statistic.";
+            type uint32;
+        }
+    }
+
+    grouping virtual-interface {
+        container virtual-interface {
+            description
+              "Container for the virtual interface properties";
+
+            leaf type {
+                description
+                  "Specifies the type of virtual interface
+                   between VM and host.
+                   PARAVIRT        : Use the default paravirtualized interface for the VIM (virtio, vmxnet3, etc.).
+                   VIRTIO          : Deprecated! Use the traditional VIRTIO interface.
+                   PCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.
+                   SR-IOV          : Use SR-IOV interface.
+                   E1000           : Emulate E1000 interface.
+                   RTL8139         : Emulate RTL8139 interface.
+                   PCNET           : Emulate PCNET interface.
+                   OM-MGMT         : Deprecated! Use PARAVIRT instead and set the VNF management interface at vnfd:mgmt-interface:cp";
+
+                type enumeration {
+                    enum PARAVIRT;
+                    enum OM-MGMT;
+                    enum PCI-PASSTHROUGH;
+                    enum SR-IOV;
+                    enum VIRTIO;
+                    enum E1000;
+                    enum RTL8139;
+                    enum PCNET;
+                }
+                default "PARAVIRT";
+            }
+
+            leaf vpci {
+                description
+                  "Specifies the virtual PCI address. Expressed in
+                   the following format dddd:dd:dd.d. For example
+                   0000:00:12.0. This information can be used to
+                   pass as metadata during the VM creation.";
+                type string;
+            }
+
+            leaf bandwidth {
+                description
+                  "Aggregate bandwidth of the NIC.";
+                type uint64;
+            }
+        }
+    }
+
+    grouping description {
+        leaf description {
+            type string;
+        }
+    }
+
+    typedef scaling-trigger {
+        type enumeration {
+            enum pre-scale-in {
+                value 1;
+            }
+            enum post-scale-in {
+                value 2;
+            }
+            enum pre-scale-out {
+                value 3;
+            }
+            enum post-scale-out {
+                value 4;
+            }
+        }
+    }
+
+    typedef scaling-policy-type {
+        type enumeration {
+            enum manual {
+                value 1;
+            }
+            enum automatic {
+                value 2;
+            }
+        }
+    }
+
+    typedef scaling-criteria-operation {
+        type enumeration {
+            enum AND {
+                value 1;
+            }
+            enum OR {
+                value 2;
+            }
+        }
+    }
+}
\ No newline at end of file