BUG 363 -- use yang files from IM repo
[osm/SO.git] / models / plugins / yang / mano-types.yang
diff --git a/models/plugins/yang/mano-types.yang b/models/plugins/yang/mano-types.yang
deleted file mode 100644 (file)
index 8950c7a..0000000
+++ /dev/null
@@ -1,2190 +0,0 @@
-
-/*
- *
- *   Copyright 2016-2017 RIFT.IO Inc
- *
- *   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 mano-types
-{
-  namespace "urn:ietf:params:xml:ns:yang:nfvo:mano-types";
-  prefix "manotypes";
-
-  import ietf-inet-types {
-    prefix "inet";
-  }
-
-  import rw-project {
-    prefix "rw-project";
-  }
-
-  revision 2017-02-08 {
-    description
-      "Update model to support projects.";
-  }
-
-  revision 2015-04-23 {
-    description
-      "Initial revision. This YANG file defines
-       the reusable base types for VNF Management
-       and Orchestration (MANO).";
-    reference
-      "Derived from earlier versions of base YANG files";
-  }
-
-  typedef meta-data-type {
-    type enumeration {
-      enum STRING;
-    }
-  }
-
-  typedef package-type {
-      description "Type of descriptor being on-boarded";
-      type enumeration {
-        enum NSD;
-        enum VNFD;
-      }
-    }
-
-  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 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 manotypes: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 ui-primitive-group {
-    list parameter-group {
-      description
-            "Grouping of parameters which are logically grouped in UI";
-      key "name";
-
-      leaf name {
-        description
-            "Name of the parameter group";
-        type string;
-      }
-
-      list parameter {
-        description
-            "List of parameters for the service primitive.";
-        key "name";
-        uses manotypes:primitive-parameter;
-      }
-
-      leaf mandatory {
-        description "Is this parameter group mandatory";
-        type boolean;
-        default true;
-      }
-    }
-  }
-
-  grouping event-config {
-    leaf seq {
-      description
-          "Sequence number for the configuration primitive.";
-      type uint64;
-    }
-
-    leaf name {
-      description
-          "Name of the configuration primitive.";
-      type string;
-      mandatory "true";
-    }
-
-    leaf user-defined-script {
-      description
-          "A user defined script.";
-      type string;
-    }
-
-    list parameter {
-      key "name";
-      leaf name {
-        type string;
-      }
-
-      leaf value {
-        description "Value of the configuration primitive.";
-        type string;
-      }
-    }
-  }
-  
- grouping image-properties {
-    leaf image {
-      description
-            "Image name for the software image.
-             If the image name is found within the VNF package it will
-             be uploaded to all VIM accounts during onboarding process.
-             Otherwise, the image must be added to the VIM account with
-             the same name as entered here.
-            ";
-      type string;
-    }
-
-    leaf image-checksum {
-      description
-            "Image md5sum for the software image.
-            The md5sum, if provided, along with the image name uniquely
-            identifies an image uploaded to the CAL.
-            ";
-      type string;
-    }
-  }
-
-
-  grouping vca-relationships {
-    container vca-relationships {
-      list relation {
-        description "List of relations between VCA componets.";
-
-        key "requires provides";
-
-        leaf requires {
-          description
-            "Name of the required relation.";
-          type string;
-        }
-
-        leaf provides {
-          description
-            "Name of the provided relation.";
-          type string;
-        }
-      }
-    }
-  }
-
-  grouping vca-configuration {
-    description
-        "Information about the VNF or VDU configuration. Note:
-         If the NS contains multiple instances of the
-         same VNF or VDU, each instance could have a different
-         configuration.";
-
-    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;
-          }
-          uses manotypes:vca-relationships;
-        }
-      }
-    }
-
-    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;
-          }
-        }
-      }
-    }
-  } // END - grouping vca-configuration
-
-  typedef virtual-link-type {
-    description
-        "Type of virtual link
-         ELAN: A multipoint service connecting a set of VNFs
-         ELINE: For a simple point to point connection
-         //        between a VNF and the existing network.
-         // ETREE: A multipoint service connecting one or
-         //        more roots and a set of leaves, but
-         //        preventing inter-leaf communication.";
-    type enumeration {
-      enum ELAN;
-      enum ELINE;
-      // enum ETREE;
-    }
-  }
-
-  grouping named-value {
-    leaf name {
-      type string;
-    }
-
-    leaf value {
-      type string;
-    }
-  }
-
-  typedef http-method {
-    description
-      "Type of HTTP operation";
-
-    type enumeration {
-      enum POST;
-      enum PUT;
-      enum GET;
-      enum DELETE;
-      enum OPTIONS;
-      enum PATCH;
-    }
-  }
-
-  typedef api-type {
-    description
-      "Type of API to fetch monitoring parameters";
-
-    type enumeration {
-      enum HTTP;
-      enum NETCONF;
-      enum SOAP;
-    }
-  }
-
-  typedef json-query-method {
-    description
-      "The method to extract a value from a JSON response
-
-       NAMEKEY - Use the name as the key for a non-nested value.
-       JSONPATH - Use jsonpath-rw implementation to extract a value.
-       OBJECTPATH - Use objectpath implementation to extract a value.";
-      type enumeration {
-        enum NAMEKEY;
-        enum JSONPATH;
-        enum OBJECTPATH;
-      }
-  }
-
-  typedef param-value-type {
-    description
-      "The type of the parameter value";
-    type enumeration {
-       enum INT;
-       enum DECIMAL;
-       enum STRING;
-    }
-  }
-
-  typedef connection-point-type {
-    description
-        "Type of connection point
-        VPORT: Virtual Port
-        // VNIC_ADDR: Virtual NIC Address
-        // PNIC_ADDR: Physical NIC Address
-        // PPORT: Physical Port.";
-
-    type enumeration {
-      enum VPORT;
-    }
-  }
-
-  typedef widget-type {
-    description
-        "Type of the widget, typically used by the UI.";
-    type enumeration {
-      enum COUNTER;
-      enum GAUGE;
-      enum TEXTBOX;
-      enum SLIDER;
-      enum HISTOGRAM;
-      enum BAR;
-    }
-  }
-
-  typedef cpu-feature-type {
-    description
-        "Enumeration for CPU features.
-
-         AES: CPU supports advanced instruction set for
-         AES (Advanced Encryption Standard).
-
-         CAT: Cache Allocation Technology (CAT) allows
-         an Operating System, Hypervisor, or similar
-         system management agent to specify the amount
-         of L3 cache (currently the last-level cache
-         in most server and client platforms) space an
-         application can fill (as a hint to hardware
-         functionality, certain features such as power
-         management may override CAT settings).
-
-         CMT: Cache Monitoring Technology (CMT) allows
-         an Operating System, Hypervisor, or similar
-         system management agent to determine the
-         usage of cache based on applications running
-         on the platform. The implementation is
-         directed at L3 cache monitoring (currently
-         the last-level cache in most server and
-         client platforms).
-
-         DDIO: Intel Data Direct I/O (DDIO) enables
-         Ethernet server NICs and controllers talk
-         directly to the processor cache without a
-         detour via system memory. This enumeration
-         specifies if the VM requires a DDIO
-         capable host.";
-
-    type enumeration {
-      enum PREFER_AES;
-      enum REQUIRE_AES;
-      enum PREFER_CAT;
-      enum REQUIRE_CAT;
-      enum PREFER_CMT;
-      enum REQUIRE_CMT;
-      enum PREFER_DDIO;
-      enum REQUIRE_DDIO;
-      enum REQUIRE_VME;
-      enum PREFER_VME;
-      enum REQUIRE_DE;
-      enum PREFER_DE;
-      enum REQUIRE_PSE;
-      enum PREFER_PSE;
-      enum REQUIRE_TSC;
-      enum PREFER_TSC;
-      enum REQUIRE_MSR;
-      enum PREFER_MSR;
-      enum REQUIRE_PAE;
-      enum PREFER_PAE;
-      enum REQUIRE_MCE;
-      enum PREFER_MCE;
-      enum REQUIRE_CX8;
-      enum PREFER_CX8;
-      enum REQUIRE_APIC;
-      enum PREFER_APIC;
-      enum REQUIRE_SEP;
-      enum PREFER_SEP;
-      enum REQUIRE_MTRR;
-      enum PREFER_MTRR;
-      enum REQUIRE_PGE;
-      enum PREFER_PGE;
-      enum REQUIRE_MCA;
-      enum PREFER_MCA;
-      enum REQUIRE_CMOV;
-      enum PREFER_CMOV;
-      enum REQUIRE_PAT;
-      enum PREFER_PAT;
-      enum REQUIRE_PSE36;
-      enum PREFER_PSE36;
-      enum REQUIRE_CLFLUSH;
-      enum PREFER_CLFLUSH;
-      enum REQUIRE_DTS;
-      enum PREFER_DTS;
-      enum REQUIRE_ACPI;
-      enum PREFER_ACPI;
-      enum REQUIRE_MMX;
-      enum PREFER_MMX;
-      enum REQUIRE_FXSR;
-      enum PREFER_FXSR;
-      enum REQUIRE_SSE;
-      enum PREFER_SSE;
-      enum REQUIRE_SSE2;
-      enum PREFER_SSE2;
-      enum REQUIRE_SS;
-      enum PREFER_SS;
-      enum REQUIRE_HT;
-      enum PREFER_HT;
-      enum REQUIRE_TM;
-      enum PREFER_TM;
-      enum REQUIRE_IA64;
-      enum PREFER_IA64;
-      enum REQUIRE_PBE;
-      enum PREFER_PBE;
-      enum REQUIRE_RDTSCP;
-      enum PREFER_RDTSCP;
-      enum REQUIRE_PNI;
-      enum PREFER_PNI;
-      enum REQUIRE_PCLMULQDQ;
-      enum PREFER_PCLMULQDQ;
-      enum REQUIRE_DTES64;
-      enum PREFER_DTES64;
-      enum REQUIRE_MONITOR;
-      enum PREFER_MONITOR;
-      enum REQUIRE_DS_CPL;
-      enum PREFER_DS_CPL;
-      enum REQUIRE_VMX;
-      enum PREFER_VMX;
-      enum REQUIRE_SMX;
-      enum PREFER_SMX;
-      enum REQUIRE_EST;
-      enum PREFER_EST;
-      enum REQUIRE_TM2;
-      enum PREFER_TM2;
-      enum REQUIRE_SSSE3;
-      enum PREFER_SSSE3;
-      enum REQUIRE_CID;
-      enum PREFER_CID;
-      enum REQUIRE_FMA;
-      enum PREFER_FMA;
-      enum REQUIRE_CX16;
-      enum PREFER_CX16;
-      enum REQUIRE_XTPR;
-      enum PREFER_XTPR;
-      enum REQUIRE_PDCM;
-      enum PREFER_PDCM;
-      enum REQUIRE_PCID;
-      enum PREFER_PCID;
-      enum REQUIRE_DCA;
-      enum PREFER_DCA;
-      enum REQUIRE_SSE4_1;
-      enum PREFER_SSE4_1;
-      enum REQUIRE_SSE4_2;
-      enum PREFER_SSE4_2;
-      enum REQUIRE_X2APIC;
-      enum PREFER_X2APIC;
-      enum REQUIRE_MOVBE;
-      enum PREFER_MOVBE;
-      enum REQUIRE_POPCNT;
-      enum PREFER_POPCNT;
-      enum REQUIRE_TSC_DEADLINE_TIMER;
-      enum PREFER_TSC_DEADLINE_TIMER;
-      enum REQUIRE_XSAVE;
-      enum PREFER_XSAVE;
-      enum REQUIRE_AVX;
-      enum PREFER_AVX;
-      enum REQUIRE_F16C;
-      enum PREFER_F16C;
-      enum REQUIRE_RDRAND;
-      enum PREFER_RDRAND;
-      enum REQUIRE_FSGSBASE;
-      enum PREFER_FSGSBASE;
-      enum REQUIRE_BMI1;
-      enum PREFER_BMI1;
-      enum REQUIRE_HLE;
-      enum PREFER_HLE;
-      enum REQUIRE_AVX2;
-      enum PREFER_AVX2;
-      enum REQUIRE_SMEP;
-      enum PREFER_SMEP;
-      enum REQUIRE_BMI2;
-      enum PREFER_BMI2;
-      enum REQUIRE_ERMS;
-      enum PREFER_ERMS;
-      enum REQUIRE_INVPCID;
-      enum PREFER_INVPCID;
-      enum REQUIRE_RTM;
-      enum PREFER_RTM;
-      enum REQUIRE_MPX;
-      enum PREFER_MPX;
-      enum REQUIRE_RDSEED;
-      enum PREFER_RDSEED;
-      enum REQUIRE_ADX;
-      enum PREFER_ADX;
-      enum REQUIRE_SMAP;
-      enum PREFER_SMAP;
-    }
-  }
-
-  grouping vm-flavor {
-    container vm-flavor {
-      leaf vcpu-count {
-        description
-            "Number of VCPUs for the VM.";
-        type uint16;
-      }
-
-      leaf memory-mb {
-        description
-            "Amount of memory in MB.";
-        type uint64;
-      }
-
-      leaf storage-gb {
-        description
-            "Amount of disk space in GB.";
-        type uint64;
-      }
-    }
-  } //grouping vm-flavor
-
-       grouping vm-flavor-name {
-       leaf vm-flavor-name {
-               description "flavor name to be used while creating vm using cloud account";
-               type string;
-       }
-       }
-
-  grouping vswitch-epa {
-    container vswitch-epa {
-      leaf ovs-acceleration {
-        description
-            "Specifies Open vSwitch acceleration mode.
-             MANDATORY: OVS acceleration is required
-             PREFERRED: OVS acceleration is preferred";
-        type enumeration {
-          enum MANDATORY;
-          enum PREFERRED;
-          enum DISABLED;
-        }
-      }
-
-      leaf ovs-offload {
-        description
-            "Specifies Open vSwitch hardware offload mode.
-             MANDATORY: OVS offload is required
-             PREFERRED: OVS offload is preferred";
-        type enumeration {
-          enum MANDATORY;
-          enum PREFERRED;
-          enum DISABLED;
-        }
-      }
-    }
-  }
-
-  grouping hypervisor-epa {
-    container hypervisor-epa {
-      leaf type {
-        description
-            "Specifies the type of hypervisor.
-             KVM: KVM
-             XEN: XEN";
-        type enumeration {
-          enum PREFER_KVM;
-          enum REQUIRE_KVM;
-        }
-      }
-      leaf version {
-        type string;
-      }
-    }
-  }
-
-  grouping host-epa {
-    container host-epa {
-      description "Specifies the host level EPA attributes.";
-      leaf cpu-model {
-        description
-            "Host CPU model. Examples include: SandyBridge,
-             IvyBridge";
-        type enumeration {
-          enum PREFER_WESTMERE;
-          enum REQUIRE_WESTMERE;
-          enum PREFER_SANDYBRIDGE;
-          enum REQUIRE_SANDYBRIDGE;
-          enum PREFER_IVYBRIDGE;
-          enum REQUIRE_IVYBRIDGE;
-          enum PREFER_HASWELL;
-          enum REQUIRE_HASWELL;
-          enum PREFER_BROADWELL;
-          enum REQUIRE_BROADWELL;
-          enum PREFER_NEHALEM;
-          enum REQUIRE_NEHALEM;
-          enum PREFER_PENRYN;
-          enum REQUIRE_PENRYN;
-          enum PREFER_CONROE;
-          enum REQUIRE_CONROE;
-          enum PREFER_CORE2DUO;
-          enum REQUIRE_CORE2DUO;
-        }
-      }
-
-      leaf cpu-arch {
-        description "Host CPU architecture.";
-        type enumeration {
-          enum PREFER_X86;
-          enum REQUIRE_X86;
-          enum PREFER_X86_64;
-          enum REQUIRE_X86_64;
-          enum PREFER_I686;
-          enum REQUIRE_I686;
-          enum PREFER_IA64;
-          enum REQUIRE_IA64;
-          enum PREFER_ARMV7;
-          enum REQUIRE_ARMV7;
-          enum PREFER_ARMV8;
-          enum REQUIRE_ARMV8;
-        }
-      }
-
-      leaf cpu-vendor {
-        description "Host CPU Vendor.";
-        type enumeration {
-          enum PREFER_INTEL;
-          enum REQUIRE_INTEL;
-          enum PREFER_AMD;
-          enum REQUIRE_AMD;
-        }
-      }
-
-      leaf cpu-socket-count {
-        description "Number of sockets on the host.";
-        type uint64;
-      }
-
-      leaf cpu-core-count {
-        description "Number of cores on the host.";
-        type uint64;
-      }
-
-      leaf cpu-core-thread-count {
-        description "Number of threads per cores on the host.";
-        type uint64;
-      }
-
-      list cpu-feature {
-        key "feature";
-        description "List of CPU features.";
-        leaf feature {
-          description "CPU feature.";
-          type cpu-feature-type;
-        }
-      }
-
-
-      leaf om-cpu-model-string {
-        description "OpenMANO CPU model string";
-        type string;
-      }
-
-      list om-cpu-feature {
-        key "feature";
-        description "List of OpenMANO CPU features";
-        leaf feature {
-          description "CPU feature";
-          type string;
-        }
-      }
-    }
-  }
-
-  grouping guest-epa {
-    description "EPA attributes for the guest";
-    container guest-epa {
-      leaf trusted-execution {
-        description "This VM should be allocated from trusted pool";
-        type boolean;
-      }
-
-      leaf mempage-size {
-        description
-            "Memory page allocation size. If a VM requires
-             hugepages, it should choose LARGE or SIZE_2MB
-             or SIZE_1GB. If the VM prefers hugepages it
-             should choose PREFER_LARGE.
-             LARGE        : Require hugepages (either 2MB or 1GB)
-             SMALL        : Doesn't require hugepages
-             SIZE_2MB     : Requires 2MB hugepages
-             SIZE_1GB     : Requires 1GB hugepages
-             PREFER_LARGE : Application prefers hugepages";
-        type enumeration {
-          enum LARGE;
-          enum SMALL;
-          enum SIZE_2MB;
-          enum SIZE_1GB;
-          enum PREFER_LARGE;
-        }
-      }
-
-      leaf cpu-pinning-policy {
-        description
-            "CPU pinning policy describes association
-             between virtual CPUs in guest and the
-             physical CPUs in the host.
-             DEDICATED : Virtual CPUs are pinned to
-                         physical CPUs
-             SHARED    : Multiple VMs may share the
-                         same physical CPUs.
-             ANY       : Any policy is acceptable for the VM";
-        type enumeration {
-          enum DEDICATED;
-          enum SHARED;
-          enum ANY;
-        }
-        default "ANY";
-      }
-
-      leaf cpu-thread-pinning-policy {
-          description
-            "CPU thread pinning policy describes how to
-             place the guest CPUs when the host supports
-             hyper threads:
-             AVOID   : Avoids placing a guest on a host
-                       with threads.
-             SEPARATE: Places vCPUs on separate cores,
-                       and avoids placing two vCPUs on
-                       two threads of same core.
-             ISOLATE : Places each vCPU on a different core,
-                       and places no vCPUs from a different
-                       guest on the same core.
-             PREFER  : Attempts to place vCPUs on threads
-                       of the same core.";
-        type enumeration {
-          enum AVOID;
-          enum SEPARATE;
-          enum ISOLATE;
-          enum PREFER;
-        }
-      }
-
-      list pcie-device {
-        description
-            "List of pcie passthrough devices.";
-        key device-id;
-        leaf device-id {
-          description
-              "Device identifier.";
-          type string;
-        }
-        leaf count {
-          description
-              "Number of devices to attach to the VM.";
-          type uint64;
-        }
-      }
-
-      choice numa-policy {
-        case numa-unaware {
-          leaf numa-unaware {
-            type empty;
-          }
-        }
-
-        case numa-aware {
-          container numa-node-policy {
-            description
-                "This policy defines NUMA topology of the
-                 guest. Specifically identifies if the guest
-                 should be run on a host with one NUMA
-                 node or multiple NUMA nodes. As an example
-                 a guest might need 8 VCPUs and 4 GB of
-                 memory. However, it might need the VCPUs
-                 and memory distributed across multiple
-                 NUMA nodes. In this scenario, NUMA node
-                 1 could run with 6 VCPUs and 3GB, and
-                 NUMA node 2 could run with 2 VCPUs and
-                 1GB.";
-
-            leaf node-cnt {
-              description
-                  "The number of NUMA nodes to expose to the VM.";
-              type uint16;
-            }
-
-            leaf mem-policy {
-              description
-                  "This policy specifies how the memory should
-                   be allocated in a multi-node scenario.
-                   STRICT    : The memory must be allocated
-                               strictly from the memory attached
-                               to the NUMA node.
-                   PREFERRED : The memory should be allocated
-                               preferentially from the memory
-                               attached to the NUMA node";
-              type enumeration {
-                enum STRICT;
-                enum PREFERRED;
-              }
-            }
-
-           list node {
-              key id;
-              leaf id {
-                description
-                    "NUMA node identification. Typically
-                     it's 0 or 1";
-                type uint64;
-              }
-
-              list vcpu {
-                key "id";
-                description
-                    "List of VCPUs to allocate on
-                     this NUMA node.";
-                leaf id {
-                  type uint64;
-                  description "List of VCPUs ids to allocate on
-                               this NUMA node";
-                }
-              }
-
-              leaf memory-mb {
-                description
-                    "Memory size expressed in MB
-                     for this NUMA node.";
-                type uint64;
-              }
-
-              choice om-numa-type {
-                description
-                    "OpenMANO Numa type selection";
-
-                case cores {
-                  leaf num-cores {
-                    type uint8;
-                  }
-                }
-
-                case paired-threads {
-                  container paired-threads {
-                    leaf num-paired-threads {
-                      type uint8;
-                    }
-
-                    list paired-thread-ids {
-                      description
-                          "List of thread pairs to use in case of paired-thread NUMA";
-                      max-elements 16;
-                      key thread-a;
-
-                      leaf thread-a {
-                          type uint8;
-                      }
-
-                      leaf thread-b {
-                          type uint8;
-                      }
-                    }
-                  }
-                }
-                case threads {
-                  leaf num-threads {
-                    type uint8;
-                  }
-                }
-              }
-            }
-
-          }
-        }
-      }
-    }
-  }
-
-  grouping provider-network {
-    container provider-network {
-      description "Container for the provider network.";
-      leaf physical-network {
-        description
-            "Name of the physical network on which the provider
-             network is built.";
-        type string;
-      }
-
-      leaf segmentation_id {
-        description
-            "ID of segregated virtual networks";
-            type uint32;
-      }
-    }
-  }
-
-  grouping ns-service-primitive {
-    list service-primitive {
-      description
-          "Network service level service primitives.";
-
-      key "name";
-
-      leaf name {
-        description
-            "Name of the service primitive.";
-        type string;
-      }
-
-      list parameter {
-        description
-            "List of parameters for the service primitive.";
-
-        key "name";
-        uses manotypes:primitive-parameter;
-      }
-
-      list parameter-group {
-        description
-            "Grouping of parameters which are logically grouped in UI";
-        key "name";
-
-        leaf name {
-          description
-              "Name of the parameter group";
-          type string;
-        }
-
-        list parameter {
-          description
-              "List of parameters for the service primitive.";
-          key "name";
-          uses manotypes:primitive-parameter;
-        }
-
-        leaf mandatory {
-          description "Is this parameter group mandatory";
-          type boolean;
-          default true;
-        }
-      }
-
-      list vnf-primitive-group {
-        description
-            "List of service primitives grouped by VNF.";
-
-        key "member-vnf-index-ref";
-        leaf member-vnf-index-ref {
-          description
-              "Reference to member-vnf within constituent-vnfds";
-          type uint64;
-        }
-
-        leaf vnfd-id-ref {
-          description
-              "A reference to a vnfd. This is a
-               leafref to path:
-                   ../../../../nsd:constituent-vnfd
-                   + [nsd:id = current()/../nsd:id-ref]
-                   + /nsd:vnfd-id-ref
-               NOTE: An issue with confd is preventing the
-               use of xpath. Seems to be an issue with leafref
-               to leafref, whose target is in a different module.
-               Once that is resolved this will switched to use
-               leafref";
-
-          type string;
-        }
-
-        leaf vnfd-name {
-          description
-              "Name of the VNFD";
-          type string;
-        }
-
-        list primitive {
-          key "index";
-
-          leaf index {
-            description "Index of this primitive";
-            type uint32;
-          }
-
-          leaf name {
-            description "Name of the primitive in the VNF primitive ";
-            type string;
-          }
-        }
-      }
-
-      leaf user-defined-script {
-        description
-            "A user defined script.";
-        type string;
-      }
-    }
-  }
-
-  grouping monitoring-param {
-    list http-endpoint {
-      description
-          "List of http endpoints to be used by monitoring params";
-      key path;
-
-      leaf path {
-        description "The HTTP path on the management server";
-        type string;
-      }
-
-      leaf https {
-        description "Pick HTTPS instead of HTTP , Default is false";
-        type boolean;
-        default "false";
-      }
-
-      leaf port {
-        description "The HTTP port to connect to";
-        type inet:port-number;
-      }
-
-      leaf username {
-        description "The HTTP basic auth username";
-        type string;
-      }
-
-      leaf password {
-        description "The HTTP basic auth password";
-        type string;
-      }
-
-      leaf polling-interval-secs {
-        description "The HTTP polling interval in seconds";
-        type uint8;
-        default 2;
-      }
-
-      leaf method {
-        description
-          "Method that the URI should perform.
-           Deafult action is GET.";
-
-        type manotypes:http-method;
-        default "GET";
-      }
-
-      list headers {
-        description "Custom HTTP headers to put on HTTP request";
-        key key;
-        leaf key{
-          description "HTTP header key";
-          type string;
-        }
-
-        leaf value{
-          description "HTTP header value";
-          type string;
-        }
-      }
-    }
-
-    list monitoring-param {
-      description
-          "List of monitoring parameters at the network service level";
-      key id;
-      leaf id {
-        type string;
-      }
-
-      leaf name {
-        type string;
-      }
-
-      leaf http-endpoint-ref {
-        type leafref {
-          path "../../http-endpoint/path";
-        }
-      }
-
-      leaf json-query-method {
-        type json-query-method;
-        default "NAMEKEY";
-      }
-
-      container json-query-params {
-        leaf json-path {
-          description
-            "The jsonpath to use to extract value from JSON structure";
-          type string;
-        }
-        leaf object-path {
-          description
-            "The objectpath to use to extract value from JSON structure";
-          type string;
-        }
-      }
-
-      uses monitoring-param-ui-data;
-      uses monitoring-param-value;
-
-    }
-  }
-
-  grouping monitoring-param-aggregation {
-    typedef aggregation-type {
-      description "aggregation-type";
-      type enumeration {
-        enum AVERAGE;
-        enum MINIMUM;
-        enum MAXIMUM;
-        enum COUNT;
-        enum SUM;
-      }
-    }
-
-    leaf aggregation-type {
-      type aggregation-type;
-    }
-  }
-
-  grouping monitoring-param-ui-data {
-      leaf description {
-        type string;
-      }
-
-      leaf group-tag {
-        description "A tag to group monitoring parameters";
-        type string;
-      }
-
-
-      leaf widget-type {
-        description "Defines the UI Display variant of measured counters.";
-        type manotypes:widget-type;
-        default "COUNTER";
-      }
-
-      leaf units {
-        description "Measured Counter Units (e.g., Packets, Kbps, Mbps, etc.)";
-        type string;
-      }
-  }
-
-  grouping monitoring-param-value {
-      leaf value-type {
-        type param-value-type;
-        default "INT";
-      }
-
-      container numeric-constraints {
-        leaf min-value {
-          description
-              "Minimum value for the parameter";
-          type uint64;
-        }
-        leaf max-value {
-          description
-              "Maximum value for the parameter";
-          type uint64;
-        }
-      }
-
-      container text-constraints {
-        leaf min-length {
-          description
-              "Minimum string length for the parameter";
-          type uint8;
-        }
-        leaf max-length {
-          description
-              "Maximum string length for the parameter";
-          type uint8;
-        }
-      }
-
-      leaf value-integer {
-        description
-            "Current value for an integer parameter";
-        type int64;
-      }
-
-      leaf value-decimal {
-        description
-            "Current value for a decimal parameter";
-        type decimal64 {
-          fraction-digits 4;
-        }
-      }
-
-      leaf value-string {
-        description
-            "Current value for a string parameter";
-        type string;
-      }
-  }
-
-  grouping control-param {
-    list control-param {
-      description
-          "List of control parameters to manage and
-           update the running configuration of the VNF";
-      key id;
-
-      leaf id {
-        description "Identifier for control parameter";
-        type string;
-      }
-
-      leaf name {
-        description "Name of a control parameter";
-        type string;
-      }
-
-      leaf description {
-        description "A description of the control parameter";
-        type string;
-      }
-
-      leaf group-tag {
-        description "A tag to group control parameters";
-        type string;
-      }
-
-      leaf min-value {
-        description
-            "Minimum value for the parameter";
-        type uint64;
-      }
-
-      leaf max-value {
-        description
-            "Maximum value for the parameter";
-        type uint64;
-      }
-
-      leaf current-value {
-        description
-            "Current value for the parameter";
-        type uint64;
-      }
-
-      leaf step-value {
-        description
-            "Step value for the parameter";
-        type uint64;
-      }
-
-      leaf units {
-        type string;
-      }
-
-      leaf widget-type {
-        type manotypes:widget-type;
-      }
-
-      leaf url {
-        description
-          "This is the URL where the operation should be performed.";
-
-        type inet:uri;
-      }
-
-      leaf method {
-        description
-          "Method that the URI should perform.
-           Default Action is POST";
-
-        type manotypes:http-method;
-        default "POST";
-      }
-
-      leaf payload {
-        description
-          "This is the operation payload or payload template as stringified
-           JSON. This field provides the data  to be sent for this operation
-           call";
-
-        type string;
-      }
-    }
-  }
-
-  grouping action-param {
-    list action-param {
-      description
-          "List of action parameters to
-           control VNF";
-      key id;
-      leaf id {
-        type string;
-      }
-
-      leaf name {
-        type string;
-      }
-
-      leaf description {
-        type string;
-      }
-
-      leaf group-tag {
-        description "A tag to group monitoring parameter";
-        type string;
-      }
-
-      leaf url {
-        description
-          "This is the URL where to perform the operation";
-        type inet:uri;
-      }
-
-      leaf method {
-        description
-          "This is the method to be performed at the uri.
-           POST by default for action";
-
-        type manotypes:http-method;
-        default "POST";
-      }
-
-      leaf payload {
-        description
-          "This is the operation payload or payload template to be sent in
-           the data for this operation call";
-
-        type string;
-      }
-    }
-  }
-
-  grouping input-parameter {
-    description "List of input parameters that can be specified when instantiating a network service.";
-
-    list input-parameter {
-      description
-          "List of input parameters";
-
-      key xpath;
-
-
-      leaf xpath {
-        description
-          "An xpath that specfies which element in a descriptor is to be
-          modified.";
-        type string;
-      }
-
-      leaf value {
-        description
-          "The value that the element specified by the xpath should take when a
-          record is created.";
-        type string;
-      }
-    }
-  }
-
-  grouping input-parameter-xpath {
-    list input-parameter-xpath {
-      description
-          "List of xpaths to parameters inside the NSD
-           the can be customized during the instantiation.";
-
-      key "xpath";
-      leaf xpath {
-        description
-            "An xpath that specifies the element in a descriptor.";
-        type string;
-      }
-
-      leaf label {
-        description "A descriptive string";
-        type string;
-      }
-
-      leaf default-value {
-        description "Default Value for the Input Parameter";
-        type string;
-      }
-    }
-  }
-
-  grouping nfvi-metrics {
-    container vcpu {
-      leaf label {
-        description
-          "Label to show in UI";
-        type string;
-        default "VCPU";
-      }
-
-      leaf total {
-        description
-          "The total number of VCPUs available.";
-        type uint64;
-      }
-
-      leaf utilization {
-        description
-          "The VCPU utilization (percentage).";
-        type decimal64 {
-          fraction-digits 2;
-          range "0 .. 100";
-        }
-      }
-    }
-
-    container memory {
-      leaf label {
-        description
-          "Label to show in UI";
-        type string;
-        default "MEMORY";
-      }
-
-      leaf used {
-        description
-          "The amount of memory (bytes) currently in use.";
-        type uint64;
-      }
-
-      leaf total {
-        description
-          "The amount of memory (bytes) available.";
-        type uint64;
-      }
-
-      leaf utilization {
-        description
-          "The memory utilization (percentage).";
-        type decimal64 {
-          fraction-digits 2;
-          range "0 .. 100";
-        }
-      }
-    }
-
-    container storage {
-      leaf label {
-        description
-          "Label to show in UI";
-        type string;
-        default "STORAGE";
-      }
-
-      leaf used {
-        description
-          "The amount of storage (bytes) currently in use.";
-        type uint64;
-      }
-
-      leaf total {
-        description
-          "The amount of storage (bytes) available.";
-        type uint64;
-      }
-
-      leaf utilization {
-        description
-          "The storage utilization (percentage).";
-        type decimal64 {
-          fraction-digits 2;
-          range "0 .. 100";
-        }
-      }
-    }
-
-    container external-ports {
-      leaf label {
-        description
-          "Label to show in UI";
-        type string;
-        default "EXTERNAL PORTS";
-      }
-
-      leaf total {
-        description
-          "The total number of external ports.";
-        type uint64;
-      }
-    }
-
-    container internal-ports {
-      leaf label {
-        description
-          "Label to show in UI";
-        type string;
-        default "INTERNAL PORTS";
-      }
-
-      leaf total {
-        description
-          "The total number of internal ports.";
-        type uint64;
-      }
-    }
-
-    container network {
-      leaf label {
-        description
-          "Label to show in UI";
-        type string;
-        default "NETWORK TRAFFIC";
-      }
-
-      container incoming {
-        leaf label {
-          description
-            "Label to show in UI";
-          type string;
-          default "INCOMING NETWORK TRAFFIC";
-        }
-
-        leaf bytes {
-          description
-            "The cumulative number of incoming bytes.";
-          type uint64;
-        }
-
-        leaf packets {
-          description
-            "The cumulative number of incoming packets.";
-          type uint64;
-        }
-
-        leaf byte-rate {
-          description
-            "The current incoming byte-rate (bytes per second).";
-          type decimal64 {
-            fraction-digits 2;
-          }
-        }
-
-        leaf packet-rate {
-          description
-            "The current incoming packet (packets per second).";
-          type decimal64 {
-            fraction-digits 2;
-          }
-        }
-      }
-
-      container outgoing {
-        leaf label {
-          description
-            "Label to show in UI";
-          type string;
-          default "OUTGOING NETWORK TRAFFIC";
-        }
-
-        leaf bytes {
-          description
-            "The cumulative number of outgoing bytes.";
-          type uint64;
-        }
-
-        leaf packets {
-          description
-            "The cumulative number of outgoing packets.";
-          type uint64;
-        }
-
-        leaf byte-rate {
-          description
-            "The current outgoing byte-rate (bytes per second).";
-          type decimal64 {
-            fraction-digits 2;
-          }
-        }
-
-        leaf packet-rate {
-          description
-            "The current outgoing packet (packets per second).";
-          type decimal64 {
-            fraction-digits 2;
-          }
-        }
-      }
-    }
-  }
-
-  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-metric-type {
-    description "The type of metrics to register the alarm for";
-    type enumeration {
-      enum CPU_UTILIZATION;
-      enum MEMORY_UTILIZATION;
-      enum STORAGE_UTILIZATION;
-    }
-  }
-
-  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 alarm-operation-type {
-    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 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 {
-    leaf alarm-id {
-      description
-          "This field is reserved for the identifier assigned by the VIM provider";
-
-      type string;
-    }
-
-    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 metric {
-      description "The metric to be tracked by this alarm.";
-      type alarm-metric-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 alarm-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;
-    }
-  }
-
-  typedef cloud-account-type {
-    description "VIM account type";
-    type enumeration {
-      enum aws;
-      enum cloudsim;
-      enum cloudsim_proxy;
-      enum mock;
-      enum openmano;
-      enum openstack;
-      enum vsphere;
-      enum openvim;
-    }
-  }
-
-  grouping host-aggregate {
-    list host-aggregate {
-      description "Name of the Host Aggregate";
-      key "metadata-key";
-
-      leaf metadata-key {
-        description
-            "Name of the additional information attached to the host-aggregate";
-        type string;
-      }
-      leaf metadata-value {
-        description
-            "Value of the corresponding metadata-key";
-        type string;
-      }
-    }
-  }
-
-  grouping placement-group-input {
-    leaf cloud-type {
-      type manotypes:cloud-account-type;
-    }
-    choice cloud-provider {
-      case openstack {
-        container availability-zone {
-          description "Name of the Availability Zone";
-          leaf name {
-            type string;
-          }
-        }
-        container server-group {
-          description "Name of the Affinity/Anti-Affinity Server Group";
-          leaf name {
-            type string;
-          }
-        }
-        uses host-aggregate;
-      }
-      case aws {
-        leaf aws-construct {
-          type empty;
-        }
-      }
-      case openmano {
-        leaf openmano-construct {
-          type empty;
-        }
-      }
-      case vsphere {
-        leaf vsphere-construct {
-          type empty;
-        }
-      }
-      case mock {
-        leaf mock-construct {
-          type empty;
-        }
-      }
-      case cloudsim {
-        leaf cloudsim-construct {
-          type empty;
-        }
-      }
-    }
-  }
-
-  grouping cloud-config {
-    list key-pair {
-      key "name";
-      description "Used to configure the list of public keys to be injected as part
-          of ns instantiation";
-
-      leaf name {
-        description "Name of this key pair";
-        type string;
-      }
-
-      leaf key {
-        description "Key associated with this key pair";
-        type string;
-      }
-    }
-
-    list user {
-      key "name";
-      description "List of users to be added through cloud-config";
-
-      leaf name {
-        description "Name of the user ";
-        type string;
-      }
-
-      leaf user-info {
-        description "The user name's real name";
-        type string;
-      }
-
-      list key-pair {
-        key "name";
-        description "Used to configure the list of public keys to be injected as part
-            of ns instantiation";
-
-        leaf name {
-          description "Name of this key pair";
-          type string;
-        }
-
-        leaf key {
-          description "Key associated with this key pair";
-          type string;
-        }
-      }
-    }
-  }
-
-  grouping placement-group-info {
-    description "";
-
-    leaf name {
-      description
-          "Place group construct to define the compute resource placement strategy
-           in cloud environment";
-      type string;
-    }
-
-    leaf requirement {
-      description "This is free text space used to describe the intent/rationale
-                   behind this placement group. This is for human consumption only";
-      type string;
-    }
-
-    leaf strategy {
-      description
-          "Strategy associated with this placement group
-             Following values are possible
-               - COLOCATION: Colocation strategy imply intent to share the physical
-                             infrastructure (hypervisor/network) among all members
-                             of this group.
-               - ISOLATION: Isolation strategy imply intent to not share the physical
-                            infrastructure (hypervisor/network) among the members
-                            of this group.
-             ";
-      type enumeration {
-        enum COLOCATION;
-        enum ISOLATION;
-      }
-      default "COLOCATION";
-    }
-  }
-
-  grouping ip-profile-info {
-    description "Grouping for IP-Profile";
-    container ip-profile-params {
-
-      leaf ip-version {
-        type inet:ip-version;
-        default ipv4;
-      }
-
-      leaf subnet-address {
-        description "Subnet IP prefix associated with IP Profile";
-        type inet:ip-prefix;
-      }
-
-      leaf gateway-address {
-        description "IP Address of the default gateway associated with IP Profile";
-        type inet:ip-address;
-      }
-
-      leaf security-group {
-        description "Name of the security group";
-        type string;
-      }
-
-      list dns-server {
-        key "address";
-        leaf address {
-          description "List of DNS Servers associated with IP Profile";
-          type inet:ip-address;
-        }
-      }
-
-      container dhcp-params {
-        leaf enabled {
-          description "This flag indicates if DHCP is enabled or not";
-          type boolean;
-          default true;
-        }
-
-        leaf start-address {
-          description "Start IP address of the IP-Address range associated with DHCP domain";
-          type inet:ip-address;
-        }
-
-        leaf count {
-          description "Size of the DHCP pool associated with DHCP domain";
-          type uint32;
-        }
-      }
-
-      leaf subnet-prefix-pool {
-        description "VIM Specific reference to pre-created subnet prefix";
-        type string;
-      }
-    }
-  }
-
-  grouping ip-profile-list {
-    list ip-profiles {
-      description
-          "List of IP Profiles.
-             IP Profile describes the IP characteristics for the Virtual-Link";
-
-      key "name";
-
-      leaf name {
-        description "Name of the IP-Profile";
-        type string;
-      }
-
-      leaf description {
-        description "Description for IP profile";
-        type string;
-      }
-
-      uses ip-profile-info;
-    }
-  }
-
-  grouping config-file {
-    description "Grouping for files needed to be mounted into an additional drive";
-    list config-file {
-      description
-          "List of configuration files to be written on an additional drive";
-      key "source";
-      leaf source {
-        description "Name of the configuration file";
-        type string;
-      }
-      leaf dest {
-        description "Full path of the destination in the guest";
-        type string;
-      }
-    }
-  }
-
-  grouping supplemental-boot-data {
-    description "Grouping for custom vim data";
-    container supplemental-boot-data {
-      uses manotypes:config-file;
-      leaf boot-data-drive {
-        description "Some VIMs implement additional drives to host config-files or meta-data";
-        type boolean;
-        default false;
-      }
-    }
-  }
-
-  grouping volume-info {
-    description "Grouping for Volume-info";
-
-    leaf description {
-      description "Description for Volume";
-      type string;
-    }
-
-    leaf size {
-      description "Size of disk in GB";
-      type uint64;
-    }
-
-    choice volume-source {
-      description
-            "Defines the source of the volume. Possible options are
-             1. Ephemeral -- Empty disk
-             2. Image     -- Refer to image to be used for volume
-             3. Volume    -- Reference of pre-existing volume to be used
-            ";
-
-      case ephemeral {
-        leaf ephemeral {
-          type empty;
-        }
-      }
-
-      case image {
-        uses image-properties;
-      }
-    }
-
-    leaf device-bus {
-      description "Type of disk-bus on which this disk is exposed to guest";
-      type enumeration {
-        enum ide;
-        enum usb;
-        enum virtio;
-        enum scsi;
-      }
-    }
-
-    leaf device-type {
-      description "The type of device as exposed to guest";
-      type enumeration {
-          enum disk;
-          enum cdrom;
-          enum floppy;
-          enum lun;
-      }
-    }
-  }
-
-  grouping rpc-project-name {
-    leaf project-name {
-      default "default";
-      description
-        "Project to which this belongs";
-      type leafref {
-        path "/rw-project:project/rw-project:name";
-      }
-    }
-  }
-}