4 * Copyright 2016-2017 RIFT.IO Inc
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
23 namespace "urn:etsi:osm:yang:mano-types";
26 import ietf-inet-types {
36 "Update model to support projects.";
41 "Initial revision. This YANG file defines
42 the reusable base types for VNF Management
43 and Orchestration (MANO).";
45 "Derived from earlier versions of base YANG files";
48 typedef meta-data-type {
54 typedef package-type {
55 description "Type of descriptor being on-boarded";
62 typedef parameter-data-type {
70 grouping primitive-parameter-value {
73 "List of parameters to the configuration primitive.";
77 "Name of the parameter.";
83 "Data type associated with the value.";
84 type manotypes:parameter-data-type;
89 "Value associated with the name.";
95 grouping primitive-parameter {
98 "Name of the parameter.";
104 "Data type associated with the name.";
105 type manotypes:parameter-data-type;
109 description "Is this field mandatory";
115 description "The default value for this field";
119 leaf parameter-pool {
120 description "NSD parameter pool name to use for this parameter";
126 "The value should be dimmed by the UI.
127 Only applies to parameters with default values.";
134 "The value should be hidden by the UI.
135 Only applies to parameters with default values.";
141 grouping ui-primitive-group {
142 list parameter-group {
144 "Grouping of parameters which are logically grouped in UI";
149 "Name of the parameter group";
155 "List of parameters for the service primitive.";
157 uses manotypes:primitive-parameter;
161 description "Is this parameter group mandatory";
168 grouping event-config {
171 "Sequence number for the configuration primitive.";
177 "Name of the configuration primitive.";
182 leaf user-defined-script {
184 "A user defined script.";
195 description "Value of the configuration primitive.";
201 grouping image-properties {
204 "Image name for the software image.
205 If the image name is found within the VNF package it will
206 be uploaded to all VIM accounts during onboarding process.
207 Otherwise, the image must be added to the VIM account with
208 the same name as entered here.
213 leaf image-checksum {
215 "Image md5sum for the software image.
216 The md5sum, if provided, along with the image name uniquely
217 identifies an image uploaded to the CAL.
224 grouping vca-relations {
226 description "List of relations between elements in this descriptor.";
231 "Name of the relation.";
238 "List of two elements to be related.
239 Elements to be related are identified by a pair (id, endpoint).
240 The relation will relate (id1, endpoint1) to (id2, endpoint2).";
245 "A string, reference to the element id in the descriptor.
246 It could be a vnfd-id or a vdu-id in a VNFD,
247 or a nsd-id or member-vnf-index in a NSD.";
253 "Endpoint name defining the relation.";
260 grouping vca-metrics {
262 "Information about the VNF or VDU metrics";
264 description "List of VCA related metrics";
268 "Name of the metric, as defined in the Juju charm.";
271 leaf execution-environment-ref {
273 "Leaf reference to the particular execution environment getting that metric";
275 path "../../execution-environment-list/id";
278 leaf execution-environment-metric {
280 "Metric in the execution environment referenced by execution-environment-ref";
284 } // END - grouping vca-metrics
286 grouping configuration-method {
287 choice config-method {
289 "Defines the configuration method for the VNF or VDU.";
292 "Use custom script for configuring the VNF or VDU.
293 This script is executed in the context of
294 Orchestrator (The same system and environment
299 "Script type - currently supported - Scripts confirming to Rift CA plugin";
309 "Configure the VNF or VDU through Juju.";
312 description "Juju charm to use with the VNF or VDU.";
316 description "Is this a proxy charm?";
323 case execution-environment-list {
325 "List of Execution Environments to configure or monitor VNF or VDU.";
326 list execution-environment-list {
329 description "Execution environment identifier.";
332 choice execution-environment-model {
333 description "Execution environment model (juju, helm-chart)";
336 "Interact with the VNF or xDU through Juju.";
339 description "Juju charm to use with the VNF or VDU.";
343 description "Is this a proxy charm?";
351 "Interact with the VNF or xDU through Helm.";
354 "Helm chart that models the execution environment, in any of the following ways:
355 - <helm-repo>/<helm-chart>
356 - <helm-chart folder name under helm-charts folder in the package>
357 - <helm-chart tgz file (w/ or w/o extension) under helm-charts folder in the package>
358 - <URL_where_to_fetch_chart>
364 leaf metric-service {
366 "Service name in the execution environment. For helm charts, it will be
367 the name of the kubernetes service used by the exporter to expose metrics
368 to the OSM collector.
372 leaf connection-point-ref {
374 "String representing a leaf reference to the particular external connection point
375 This field should match /vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id/vnfd:connection-point/vnfd:name
379 // path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id/vnfd:connection-point/vnfd:name";
388 grouping vca-config-access {
390 container config-access {
393 "Indicates the way to access to the xNF or xDU for VCA configuration.
394 For the moment there is a single way (ssh-access).";
396 container ssh-access {
399 "If the xNF requires ssh and this parameter is set, SSH keys
400 will be injected so that VCA can configure the xNF or xDU via ssh.";
403 description "whether ssh access is needed or not";
409 description "Default user for ssh";
414 } // END - grouping vca-config-access
416 grouping vca-configuration {
418 "Common information in the descriptors for NS, VNF or VDU configuration.
419 Note: If the NS contains multiple instances of the
420 same VNF or VDU, each instance could have a different
423 uses manotypes:configuration-method;
425 list config-primitive {
427 "List of config primitives supported by the
428 configuration agent for this VNF or VDU.";
433 "Name of the config primitive.";
437 leaf execution-environment-ref {
439 "Leaf reference to the particular execution environment";
441 path "../../execution-environment-list/id";
445 leaf execution-environment-primitive {
447 "Name of the primitive in the execution enviroment. If not explicit,
448 the leaf 'name' will be used as the name of the primitive.";
454 "List of parameters to the config primitive.";
456 uses primitive-parameter;
459 leaf user-defined-script {
461 "A user defined script. If user defined script is defined,
462 the script will be executed using bash";
467 list initial-config-primitive {
469 "Initial set of configuration primitives.";
473 "Sequence number for the configuration primitive.";
477 choice primitive-type {
478 case primitive-definition {
481 "Name of the configuration primitive in the execution environment.";
485 leaf execution-environment-ref {
487 "Leaf reference to the particular execution environment";
489 path "../../execution-environment-list/id";
493 uses primitive-parameter-value;
495 leaf user-defined-script {
497 "A user defined script.";
504 list terminate-config-primitive {
506 "Terminate set of configuration primitives.";
510 "Sequence number for the configuration primitive.";
515 "Name of the configuration primitive in the execution environment.";
519 leaf execution-environment-ref {
521 "Leaf reference to the particular execution environment";
523 path "../../execution-environment-list/id";
527 uses primitive-parameter-value;
529 leaf user-defined-script {
531 "A user defined script.";
535 uses manotypes:vca-metrics;
537 } // END - grouping vca-configuration
539 typedef virtual-link-type {
541 "Type of virtual link
542 ELAN: A multipoint service connecting a set of elements
543 ELINE: A point-to-point service connecting two elements
544 L3: A service providing either Layer-3 visibility (IP) between
545 VDUs/VNFs or explicit interconnection between two ELAN VLDs.";
546 // ETREE: A multipoint service connecting one or
547 // more roots and a set of leaves, but
548 // preventing inter-leaf communication.";
557 grouping named-value {
567 typedef http-method {
569 "Type of HTTP operation";
583 "Type of API to fetch monitoring parameters";
592 typedef json-query-method {
594 "The method to extract a value from a JSON response
596 NAMEKEY - Use the name as the key for a non-nested value.
597 JSONPATH - Use jsonpath-rw implementation to extract a value.
598 OBJECTPATH - Use objectpath implementation to extract a value.";
606 typedef param-value-type {
608 "The type of the parameter value";
616 typedef connection-point-type {
618 "Type of connection point
620 // VNIC_ADDR: Virtual NIC Address
621 // PNIC_ADDR: Physical NIC Address
622 // PPORT: Physical Port.";
629 typedef widget-type {
631 "Type of the widget, typically used by the UI.";
642 typedef cpu-feature-type {
644 "Enumeration for CPU features.
646 AES: CPU supports advanced instruction set for
647 AES (Advanced Encryption Standard).
649 CAT: Cache Allocation Technology (CAT) allows
650 an Operating System, Hypervisor, or similar
651 system management agent to specify the amount
652 of L3 cache (currently the last-level cache
653 in most server and client platforms) space an
654 application can fill (as a hint to hardware
655 functionality, certain features such as power
656 management may override CAT settings).
658 CMT: Cache Monitoring Technology (CMT) allows
659 an Operating System, Hypervisor, or similar
660 system management agent to determine the
661 usage of cache based on applications running
662 on the platform. The implementation is
663 directed at L3 cache monitoring (currently
664 the last-level cache in most server and
667 DDIO: Intel Data Direct I/O (DDIO) enables
668 Ethernet server NICs and controllers talk
669 directly to the processor cache without a
670 detour via system memory. This enumeration
671 specifies if the VM requires a DDIO
715 enum REQUIRE_CLFLUSH;
743 enum REQUIRE_PCLMULQDQ;
744 enum PREFER_PCLMULQDQ;
747 enum REQUIRE_MONITOR;
785 enum REQUIRE_TSC_DEADLINE_TIMER;
786 enum PREFER_TSC_DEADLINE_TIMER;
795 enum REQUIRE_FSGSBASE;
796 enum PREFER_FSGSBASE;
809 enum REQUIRE_INVPCID;
824 typedef nfvi-metric-type {
825 description "Type of NFVI metric to be monitored";
827 enum cpu_utilization;
828 enum average_memory_utilization;
831 enum disk_read_bytes;
832 enum disk_write_bytes;
834 enum packets_received;
835 enum packets_in_dropped;
836 enum packets_out_dropped;
840 typedef scaling-trigger {
851 enum post-scale-out {
857 typedef scaling-policy-type {
868 typedef scaling-criteria-operation {
880 container vm-flavor {
883 "Number of VCPUs for the VM.";
889 "Amount of memory in MB.";
895 "Amount of disk space in GB.";
899 } //grouping vm-flavor
901 grouping vm-flavor-name {
902 leaf vm-flavor-name {
903 description "flavor name to be used while creating vm using cloud account";
908 grouping vswitch-epa {
909 container vswitch-epa {
910 leaf ovs-acceleration {
912 "Specifies Open vSwitch acceleration mode.
913 MANDATORY: OVS acceleration is required
914 PREFERRED: OVS acceleration is preferred";
924 "Specifies Open vSwitch hardware offload mode.
925 MANDATORY: OVS offload is required
926 PREFERRED: OVS offload is preferred";
936 grouping hypervisor-epa {
937 container hypervisor-epa {
940 "Specifies the type of hypervisor.
956 description "Specifies the host level EPA attributes.";
959 "Host CPU model. Examples include: SandyBridge,
962 enum PREFER_WESTMERE;
963 enum REQUIRE_WESTMERE;
964 enum PREFER_SANDYBRIDGE;
965 enum REQUIRE_SANDYBRIDGE;
966 enum PREFER_IVYBRIDGE;
967 enum REQUIRE_IVYBRIDGE;
969 enum REQUIRE_HASWELL;
970 enum PREFER_BROADWELL;
971 enum REQUIRE_BROADWELL;
973 enum REQUIRE_NEHALEM;
978 enum PREFER_CORE2DUO;
979 enum REQUIRE_CORE2DUO;
984 description "Host CPU architecture.";
1002 description "Host CPU Vendor.";
1011 leaf cpu-socket-count {
1012 description "Number of sockets on the host.";
1016 leaf cpu-core-count {
1017 description "Number of cores on the host.";
1021 leaf cpu-core-thread-count {
1022 description "Number of threads per cores on the host.";
1028 description "List of CPU features.";
1030 description "CPU feature.";
1031 type cpu-feature-type;
1035 leaf om-cpu-model-string {
1036 description "OpenMANO CPU model string";
1040 list om-cpu-feature {
1042 description "List of OpenMANO CPU features";
1044 description "CPU feature";
1052 grouping guest-epa {
1053 description "EPA attributes for the guest";
1054 container guest-epa {
1055 leaf trusted-execution {
1056 description "This VM should be allocated from trusted pool";
1062 "Memory page allocation size. If a VM requires
1063 hugepages, it should choose LARGE or SIZE_2MB
1064 or SIZE_1GB. If the VM prefers hugepages it
1065 should choose PREFER_LARGE.
1066 LARGE : Require hugepages (either 2MB or 1GB)
1067 SMALL : Doesn't require hugepages
1068 SIZE_2MB : Requires 2MB hugepages
1069 SIZE_1GB : Requires 1GB hugepages
1070 PREFER_LARGE : Application prefers hugepages";
1082 leaf cpu-pinning-policy {
1084 "CPU pinning policy describes association
1085 between virtual CPUs in guest and the
1086 physical CPUs in the host.
1087 DEDICATED : Virtual CPUs are pinned to
1089 SHARED : Multiple VMs may share the
1091 ANY : Any policy is acceptable for the VM";
1099 leaf cpu-thread-pinning-policy {
1101 "CPU thread pinning policy describes how to
1102 place the guest CPUs when the host supports
1104 AVOID : Avoids placing a guest on a host
1106 SEPARATE: Places vCPUs on separate cores,
1107 and avoids placing two vCPUs on
1108 two threads of same core.
1109 ISOLATE : Places each vCPU on a different core,
1110 and places no vCPUs from a different
1111 guest on the same core.
1112 PREFER : Attempts to place vCPUs on threads
1124 container cpu-quota {
1125 description "CPU quota describes the CPU resource allocation policy.
1126 Limit and Reserve values are defined in MHz";
1127 uses allocation-properties;
1132 container mem-quota {
1133 description "Memory quota describes the memory resource allocation policy.
1134 Limit and Reserve values are defined in MB";
1135 uses allocation-properties;
1138 container disk-io-quota {
1139 description "Disk IO quota describes the disk IO operations resource allocation policy.
1140 Limit and Reserve values are defined in IOPS";
1141 uses allocation-properties;
1144 container vif-quota {
1145 description "Virtual interfaces quota describes the virtual interface bandwidth resource allocation policy.
1146 Limit and Reserve values are defined in Mbps";
1147 uses allocation-properties;
1152 "List of pcie passthrough devices.";
1156 "Device identifier.";
1161 "Number of devices to attach to the VM.";
1166 choice numa-policy {
1174 container numa-node-policy {
1176 "This policy defines NUMA topology of the
1177 guest. Specifically identifies if the guest
1178 should be run on a host with one NUMA
1179 node or multiple NUMA nodes. As an example
1180 a guest might need 8 VCPUs and 4 GB of
1181 memory. However, it might need the VCPUs
1182 and memory distributed across multiple
1183 NUMA nodes. In this scenario, NUMA node
1184 1 could run with 6 VCPUs and 3GB, and
1185 NUMA node 2 could run with 2 VCPUs and
1190 "The number of NUMA nodes to expose to the VM.";
1196 "This policy specifies how the memory should
1197 be allocated in a multi-node scenario.
1198 STRICT : The memory must be allocated
1199 strictly from the memory attached
1201 PREFERRED : The memory should be allocated
1202 preferentially from the memory
1203 attached to the NUMA node";
1214 "NUMA node identification. Typically
1222 "List of VCPUs to allocate on
1226 description "List of VCPUs ids to allocate on
1233 "Memory size expressed in MB
1234 for this NUMA node.";
1238 choice om-numa-type {
1240 "OpenMANO Numa type selection";
1248 case paired-threads {
1249 container paired-threads {
1250 leaf num-paired-threads {
1254 list paired-thread-ids {
1256 "List of thread pairs to use in case of paired-thread NUMA";
1284 grouping allocation-properties {
1286 description "Defines the maximum allocation. The value 0 indicates that usage is not limited.
1287 This parameter ensures that the instance never uses more than the defined amount of resource.";
1292 description "Defines the guaranteed minimum reservation.
1293 If needed, the machine will definitely get allocated the reserved amount of resources.";
1298 description "Number of shares allocated.
1299 Specifies the proportional weighted share for the domain.
1300 If this element is omitted, the service defaults to the OS provided defaults";
1305 grouping provider-network {
1306 container provider-network {
1307 description "Container for the provider network.";
1308 leaf physical-network {
1310 "Name of the physical network on which the provider
1315 leaf segmentation_id {
1317 "ID of segregated virtual networks";
1323 grouping http-endpoints {
1324 list http-endpoint {
1326 "List of http endpoints to be used by monitoring params";
1330 description "The HTTP path on the management server";
1335 description "Pick HTTPS instead of HTTP , Default is false";
1341 description "The HTTP port to connect to";
1342 type inet:port-number;
1346 description "The HTTP basic auth username";
1351 description "The HTTP basic auth password";
1355 leaf polling-interval-secs {
1356 description "The HTTP polling interval in seconds";
1363 "Method that the URI should perform.
1364 Deafult action is GET.";
1366 type manotypes:http-method;
1371 description "Custom HTTP headers to put on HTTP request";
1374 description "HTTP header key";
1379 description "HTTP header value";
1386 grouping monitoring-param-aggregation {
1387 typedef aggregation-type {
1389 "aggregation-type, indicates the way to aggregate monitoring-params
1390 (e.g. how to aggregate CPU utilisation of all VNFs belonging to the
1391 same VNF group identified by member-vnf-index; or how to aggregate
1392 memory utilisation of all VDUs belonging to the same VDU group
1393 identified by vdu id)";
1403 leaf aggregation-type {
1404 type aggregation-type;
1408 grouping monitoring-param-ui-data {
1414 description "A tag to group monitoring parameters";
1420 description "Defines the UI Display variant of measured counters.";
1421 type manotypes:widget-type;
1426 description "Measured Counter Units (e.g., Packets, Kbps, Mbps, etc.)";
1431 grouping monitoring-param-value {
1433 type param-value-type;
1437 container numeric-constraints {
1440 "Minimum value for the parameter";
1445 "Maximum value for the parameter";
1450 container text-constraints {
1453 "Minimum string length for the parameter";
1458 "Maximum string length for the parameter";
1463 leaf value-integer {
1465 "Current value for an integer parameter";
1469 leaf value-decimal {
1471 "Current value for a decimal parameter";
1479 "Current value for a string parameter";
1484 grouping control-param {
1485 list control-param {
1487 "List of control parameters to manage and
1488 update the running configuration of the VNF";
1492 description "Identifier for control parameter";
1497 description "Name of a control parameter";
1502 description "A description of the control parameter";
1507 description "A tag to group control parameters";
1513 "Minimum value for the parameter";
1519 "Maximum value for the parameter";
1523 leaf current-value {
1525 "Current value for the parameter";
1531 "Step value for the parameter";
1540 type manotypes:widget-type;
1545 "This is the URL where the operation should be performed.";
1552 "Method that the URI should perform.
1553 Default Action is POST";
1555 type manotypes:http-method;
1561 "This is the operation payload or payload template as stringified
1562 JSON. This field provides the data to be sent for this operation
1570 grouping action-param {
1573 "List of action parameters to
1589 description "A tag to group monitoring parameter";
1595 "This is the URL where to perform the operation";
1601 "This is the method to be performed at the uri.
1602 POST by default for action";
1604 type manotypes:http-method;
1610 "This is the operation payload or payload template to be sent in
1611 the data for this operation call";
1618 grouping input-parameter {
1619 description "List of input parameters that can be specified when instantiating a network service.";
1621 list input-parameter {
1623 "List of input parameters";
1630 "An xpath that specfies which element in a descriptor is to be
1637 "The value that the element specified by the xpath should take when a
1638 record is created.";
1644 grouping input-parameter-xpath {
1645 list input-parameter-xpath {
1647 "List of xpaths to parameters inside the NSD
1648 the can be customized during the instantiation.";
1653 "An xpath that specifies the element in a descriptor.";
1658 description "A descriptive string";
1662 leaf default-value {
1663 description "Default Value for the Input Parameter";
1669 grouping nfvi-metrics {
1673 "Label to show in UI";
1680 "The total number of VCPUs available.";
1686 "The VCPU utilization (percentage).";
1697 "Label to show in UI";
1704 "The amount of memory (bytes) currently in use.";
1710 "The amount of memory (bytes) available.";
1716 "The memory utilization (percentage).";
1727 "Label to show in UI";
1734 "The amount of storage (bytes) currently in use.";
1740 "The amount of storage (bytes) available.";
1746 "The storage utilization (percentage).";
1754 container external-ports {
1757 "Label to show in UI";
1759 default "EXTERNAL PORTS";
1764 "The total number of external ports.";
1769 container internal-ports {
1772 "Label to show in UI";
1774 default "INTERNAL PORTS";
1779 "The total number of internal ports.";
1787 "Label to show in UI";
1789 default "NETWORK TRAFFIC";
1792 container incoming {
1795 "Label to show in UI";
1797 default "INCOMING NETWORK TRAFFIC";
1802 "The cumulative number of incoming bytes.";
1808 "The cumulative number of incoming packets.";
1814 "The current incoming byte-rate (bytes per second).";
1822 "The current incoming packet (packets per second).";
1829 container outgoing {
1832 "Label to show in UI";
1834 default "OUTGOING NETWORK TRAFFIC";
1839 "The cumulative number of outgoing bytes.";
1845 "The cumulative number of outgoing packets.";
1851 "The current outgoing byte-rate (bytes per second).";
1859 "The current outgoing packet (packets per second).";
1868 typedef alarm-severity-type {
1869 description "An indication of the importance or urgency of the alarm";
1877 typedef alarm-metric-type {
1878 description "The type of metrics to register the alarm for";
1880 enum CPU_UTILIZATION;
1881 enum MEMORY_UTILIZATION;
1882 enum STORAGE_UTILIZATION;
1886 typedef alarm-statistic-type {
1888 "Statistic type to use to determine threshold crossing
1899 typedef relational-operation-type {
1901 "The relational operator used to define whether an alarm,
1902 scaling event, etc. should be triggered in certain scenarios,
1903 such as if the metric statistic goes above or below a specified
1906 enum GE; // greater than or equal
1907 enum LE; // less than or equal
1908 enum GT; // greater than
1909 enum LT; // less than
1914 grouping alarm-properties {
1916 description "A human readable string to identify the alarm";
1921 description "A description of this alarm";
1927 "The identifier of the VDUR that the alarm is associated with";
1939 list insufficient-data {
1956 "This flag indicates whether the alarm should be repeatedly emitted
1957 while the associated threshold has been crossed.";
1965 "This flag indicates whether the alarm has been enabled or
1973 description "A measure of the importance or urgency of the alarm";
1974 type alarm-severity-type;
1978 description "The type of metric statistic that is tracked by this alarm";
1979 type alarm-statistic-type;
1984 "The relational operator used to define whether an alarm should be
1985 triggered in certain scenarios, such as if the metric statistic
1986 goes above or below a specified value.";
1987 type relational-operation-type;
1992 "This value defines the threshold that, if crossed, will trigger
2001 "The period defines the length of time (seconds) that the metric
2002 data are collected over in oreder to evaluate the chosen
2009 "Defines the length of time (seconds) in which metric data are
2010 collected in order to evaluate the chosen statistic.";
2015 typedef cloud-account-type {
2016 description "VIM account type";
2020 enum cloudsim_proxy;
2029 grouping host-aggregate {
2030 list host-aggregate {
2031 description "Name of the Host Aggregate";
2036 "Name of the additional information attached to the host-aggregate";
2039 leaf metadata-value {
2041 "Value of the corresponding metadata-key";
2047 grouping placement-group-input {
2049 type manotypes:cloud-account-type;
2051 choice cloud-provider {
2053 container availability-zone {
2054 description "Name of the Availability Zone";
2059 container server-group {
2060 description "Name of the Affinity/Anti-Affinity Server Group";
2065 uses host-aggregate;
2068 leaf aws-construct {
2073 leaf openmano-construct {
2078 leaf vsphere-construct {
2083 leaf mock-construct {
2088 leaf cloudsim-construct {
2095 grouping cloud-config {
2098 description "Used to configure the list of public keys to be injected as part
2099 of ns instantiation";
2102 description "Name of this key pair";
2107 description "Key associated with this key pair";
2114 description "List of users to be added through cloud-config";
2117 description "Name of the user ";
2122 description "The user name's real name";
2128 description "Used to configure the list of public keys to be injected as part
2129 of ns instantiation";
2132 description "Name of this key pair";
2137 description "Key associated with this key pair";
2144 grouping placement-group-info {
2149 "Place group construct to define the compute resource placement strategy
2150 in cloud environment";
2155 description "This is free text space used to describe the intent/rationale
2156 behind this placement group. This is for human consumption only";
2162 "Strategy associated with this placement group
2163 Following values are possible
2164 - COLOCATION: Colocation strategy imply intent to share the physical
2165 infrastructure (hypervisor/network) among all members
2167 - ISOLATION: Isolation strategy imply intent to not share the physical
2168 infrastructure (hypervisor/network) among the members
2175 default "COLOCATION";
2179 grouping ip-profile-info {
2180 description "Grouping for IP-Profile";
2181 container ip-profile-params {
2184 type inet:ip-version;
2188 leaf subnet-address {
2189 description "Subnet IP prefix associated with IP Profile";
2190 type inet:ip-prefix;
2193 leaf gateway-address {
2194 description "IP Address of the default gateway associated with IP Profile";
2195 type inet:ip-address;
2198 leaf security-group {
2199 description "Name of the security group";
2206 description "List of DNS Servers associated with IP Profile";
2207 type inet:ip-address;
2211 container dhcp-params {
2213 description "This flag indicates if DHCP is enabled or not";
2218 leaf start-address {
2219 description "Start IP address of the IP-Address range associated with DHCP domain";
2220 type inet:ip-address;
2224 description "Size of the DHCP pool associated with DHCP domain";
2229 leaf subnet-prefix-pool {
2230 description "VIM Specific reference to pre-created subnet prefix";
2236 grouping ip-profile-list {
2239 "List of IP Profiles.
2240 IP Profile describes the IP characteristics for the Virtual-Link";
2245 description "Name of the IP-Profile";
2250 description "Description for IP profile";
2254 uses ip-profile-info;
2258 grouping config-file {
2259 description "Grouping for files needed to be mounted into an additional drive";
2262 "List of configuration files to be written on an additional drive";
2265 description "Name of the configuration file";
2269 description "Full path of the destination in the guest";
2275 grouping supplemental-boot-data {
2276 description "Grouping for custom vim data";
2277 container supplemental-boot-data {
2278 // uses manotypes:config-file;
2279 leaf boot-data-drive {
2280 description "Some VIMs implement additional drives to host config-files or meta-data";
2287 grouping volume-info {
2288 description "Grouping for Volume-info";
2291 description "Description for Volume";
2296 description "Size of disk in GB";
2300 choice volume-source {
2302 "Defines the source of the volume. Possible options are
2303 1. Ephemeral -- Empty disk
2304 2. Image -- Refer to image to be used for volume
2305 3. Volume -- Reference of pre-existing volume to be used
2315 uses image-properties;
2320 description "Type of disk-bus on which this disk is exposed to guest";
2330 description "The type of device as exposed to guest";
2340 grouping rpc-project-name {
2344 "Project to which this belongs";
2346 path "/osm-project:project/osm-project:name";