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.";
272 } // END - grouping vca-metrics
274 grouping configuration-method {
275 choice config-method {
277 "Defines the configuration method for the VNF or VDU.";
280 "Use custom script for configuring the VNF or VDU.
281 This script is executed in the context of
282 Orchestrator (The same system and environment
287 "Script type - currently supported - Scripts confirming to Rift CA plugin";
297 "Configure the VNF or VDU through Juju.";
300 description "Juju charm to use with the VNF or VDU.";
304 description "Is this a proxy charm?";
313 grouping vca-config-access {
315 container config-access {
318 "Indicates the way to access to the xNF or xDU for VCA configuration.
319 For the moment there is a single way (ssh-access).";
321 container ssh-access {
324 "If the xNF requires ssh and this parameter is set, SSH keys
325 will be injected so that VCA can configure the xNF or xDU via ssh.";
328 description "whether ssh access is needed or not";
334 description "Default user for ssh";
339 } // END - grouping vca-config-access
341 grouping vca-configuration {
343 "Common information in the descriptors for NS, VNF or VDU configuration.
344 Note: If the NS contains multiple instances of the
345 same VNF or VDU, each instance could have a different
348 uses manotypes:configuration-method;
350 list config-primitive {
352 "List of config primitives supported by the
353 configuration agent for this VNF or VDU.";
358 "Name of the config primitive.";
364 "List of parameters to the config primitive.";
366 uses primitive-parameter;
369 leaf user-defined-script {
371 "A user defined script. If user defined script is defined,
372 the script will be executed using bash";
377 list initial-config-primitive {
379 "Initial set of configuration primitives.";
383 "Sequence number for the configuration primitive.";
387 choice primitive-type {
388 case primitive-definition {
391 "Name of the configuration primitive.";
395 uses primitive-parameter-value;
397 leaf user-defined-script {
399 "A user defined script.";
406 list terminate-config-primitive {
408 "Terminate set of configuration primitives.";
412 "Sequence number for the configuration primitive.";
417 "Name of the configuration primitive.";
421 uses primitive-parameter-value;
423 leaf user-defined-script {
425 "A user defined script.";
429 uses manotypes:vca-metrics;
431 } // END - grouping vca-configuration
433 typedef virtual-link-type {
435 "Type of virtual link
436 ELAN: A multipoint service connecting a set of elements
437 ELINE: A point-to-point service connecting two elements
438 L3: A service providing either Layer-3 visibility (IP) between
439 VDUs/VNFs or explicit interconnection between two ELAN VLDs.";
440 // ETREE: A multipoint service connecting one or
441 // more roots and a set of leaves, but
442 // preventing inter-leaf communication.";
451 grouping named-value {
461 typedef http-method {
463 "Type of HTTP operation";
477 "Type of API to fetch monitoring parameters";
486 typedef json-query-method {
488 "The method to extract a value from a JSON response
490 NAMEKEY - Use the name as the key for a non-nested value.
491 JSONPATH - Use jsonpath-rw implementation to extract a value.
492 OBJECTPATH - Use objectpath implementation to extract a value.";
500 typedef param-value-type {
502 "The type of the parameter value";
510 typedef connection-point-type {
512 "Type of connection point
514 // VNIC_ADDR: Virtual NIC Address
515 // PNIC_ADDR: Physical NIC Address
516 // PPORT: Physical Port.";
523 typedef widget-type {
525 "Type of the widget, typically used by the UI.";
536 typedef cpu-feature-type {
538 "Enumeration for CPU features.
540 AES: CPU supports advanced instruction set for
541 AES (Advanced Encryption Standard).
543 CAT: Cache Allocation Technology (CAT) allows
544 an Operating System, Hypervisor, or similar
545 system management agent to specify the amount
546 of L3 cache (currently the last-level cache
547 in most server and client platforms) space an
548 application can fill (as a hint to hardware
549 functionality, certain features such as power
550 management may override CAT settings).
552 CMT: Cache Monitoring Technology (CMT) allows
553 an Operating System, Hypervisor, or similar
554 system management agent to determine the
555 usage of cache based on applications running
556 on the platform. The implementation is
557 directed at L3 cache monitoring (currently
558 the last-level cache in most server and
561 DDIO: Intel Data Direct I/O (DDIO) enables
562 Ethernet server NICs and controllers talk
563 directly to the processor cache without a
564 detour via system memory. This enumeration
565 specifies if the VM requires a DDIO
609 enum REQUIRE_CLFLUSH;
637 enum REQUIRE_PCLMULQDQ;
638 enum PREFER_PCLMULQDQ;
641 enum REQUIRE_MONITOR;
679 enum REQUIRE_TSC_DEADLINE_TIMER;
680 enum PREFER_TSC_DEADLINE_TIMER;
689 enum REQUIRE_FSGSBASE;
690 enum PREFER_FSGSBASE;
703 enum REQUIRE_INVPCID;
718 typedef nfvi-metric-type {
719 description "Type of NFVI metric to be monitored";
721 enum cpu_utilization;
722 enum average_memory_utilization;
725 enum disk_read_bytes;
726 enum disk_write_bytes;
728 enum packets_received;
729 enum packets_in_dropped;
730 enum packets_out_dropped;
734 typedef scaling-trigger {
745 enum post-scale-out {
751 typedef scaling-policy-type {
762 typedef scaling-criteria-operation {
774 container vm-flavor {
777 "Number of VCPUs for the VM.";
783 "Amount of memory in MB.";
789 "Amount of disk space in GB.";
793 } //grouping vm-flavor
795 grouping vm-flavor-name {
796 leaf vm-flavor-name {
797 description "flavor name to be used while creating vm using cloud account";
802 grouping vswitch-epa {
803 container vswitch-epa {
804 leaf ovs-acceleration {
806 "Specifies Open vSwitch acceleration mode.
807 MANDATORY: OVS acceleration is required
808 PREFERRED: OVS acceleration is preferred";
818 "Specifies Open vSwitch hardware offload mode.
819 MANDATORY: OVS offload is required
820 PREFERRED: OVS offload is preferred";
830 grouping hypervisor-epa {
831 container hypervisor-epa {
834 "Specifies the type of hypervisor.
850 description "Specifies the host level EPA attributes.";
853 "Host CPU model. Examples include: SandyBridge,
856 enum PREFER_WESTMERE;
857 enum REQUIRE_WESTMERE;
858 enum PREFER_SANDYBRIDGE;
859 enum REQUIRE_SANDYBRIDGE;
860 enum PREFER_IVYBRIDGE;
861 enum REQUIRE_IVYBRIDGE;
863 enum REQUIRE_HASWELL;
864 enum PREFER_BROADWELL;
865 enum REQUIRE_BROADWELL;
867 enum REQUIRE_NEHALEM;
872 enum PREFER_CORE2DUO;
873 enum REQUIRE_CORE2DUO;
878 description "Host CPU architecture.";
896 description "Host CPU Vendor.";
905 leaf cpu-socket-count {
906 description "Number of sockets on the host.";
910 leaf cpu-core-count {
911 description "Number of cores on the host.";
915 leaf cpu-core-thread-count {
916 description "Number of threads per cores on the host.";
922 description "List of CPU features.";
924 description "CPU feature.";
925 type cpu-feature-type;
929 leaf om-cpu-model-string {
930 description "OpenMANO CPU model string";
934 list om-cpu-feature {
936 description "List of OpenMANO CPU features";
938 description "CPU feature";
947 description "EPA attributes for the guest";
948 container guest-epa {
949 leaf trusted-execution {
950 description "This VM should be allocated from trusted pool";
956 "Memory page allocation size. If a VM requires
957 hugepages, it should choose LARGE or SIZE_2MB
958 or SIZE_1GB. If the VM prefers hugepages it
959 should choose PREFER_LARGE.
960 LARGE : Require hugepages (either 2MB or 1GB)
961 SMALL : Doesn't require hugepages
962 SIZE_2MB : Requires 2MB hugepages
963 SIZE_1GB : Requires 1GB hugepages
964 PREFER_LARGE : Application prefers hugepages";
976 leaf cpu-pinning-policy {
978 "CPU pinning policy describes association
979 between virtual CPUs in guest and the
980 physical CPUs in the host.
981 DEDICATED : Virtual CPUs are pinned to
983 SHARED : Multiple VMs may share the
985 ANY : Any policy is acceptable for the VM";
993 leaf cpu-thread-pinning-policy {
995 "CPU thread pinning policy describes how to
996 place the guest CPUs when the host supports
998 AVOID : Avoids placing a guest on a host
1000 SEPARATE: Places vCPUs on separate cores,
1001 and avoids placing two vCPUs on
1002 two threads of same core.
1003 ISOLATE : Places each vCPU on a different core,
1004 and places no vCPUs from a different
1005 guest on the same core.
1006 PREFER : Attempts to place vCPUs on threads
1018 container cpu-quota {
1019 description "CPU quota describes the CPU resource allocation policy.
1020 Limit and Reserve values are defined in MHz";
1021 uses allocation-properties;
1026 container mem-quota {
1027 description "Memory quota describes the memory resource allocation policy.
1028 Limit and Reserve values are defined in MB";
1029 uses allocation-properties;
1032 container disk-io-quota {
1033 description "Disk IO quota describes the disk IO operations resource allocation policy.
1034 Limit and Reserve values are defined in IOPS";
1035 uses allocation-properties;
1038 container vif-quota {
1039 description "Virtual interfaces quota describes the virtual interface bandwidth resource allocation policy.
1040 Limit and Reserve values are defined in Mbps";
1041 uses allocation-properties;
1046 "List of pcie passthrough devices.";
1050 "Device identifier.";
1055 "Number of devices to attach to the VM.";
1060 choice numa-policy {
1068 container numa-node-policy {
1070 "This policy defines NUMA topology of the
1071 guest. Specifically identifies if the guest
1072 should be run on a host with one NUMA
1073 node or multiple NUMA nodes. As an example
1074 a guest might need 8 VCPUs and 4 GB of
1075 memory. However, it might need the VCPUs
1076 and memory distributed across multiple
1077 NUMA nodes. In this scenario, NUMA node
1078 1 could run with 6 VCPUs and 3GB, and
1079 NUMA node 2 could run with 2 VCPUs and
1084 "The number of NUMA nodes to expose to the VM.";
1090 "This policy specifies how the memory should
1091 be allocated in a multi-node scenario.
1092 STRICT : The memory must be allocated
1093 strictly from the memory attached
1095 PREFERRED : The memory should be allocated
1096 preferentially from the memory
1097 attached to the NUMA node";
1108 "NUMA node identification. Typically
1116 "List of VCPUs to allocate on
1120 description "List of VCPUs ids to allocate on
1127 "Memory size expressed in MB
1128 for this NUMA node.";
1132 choice om-numa-type {
1134 "OpenMANO Numa type selection";
1142 case paired-threads {
1143 container paired-threads {
1144 leaf num-paired-threads {
1148 list paired-thread-ids {
1150 "List of thread pairs to use in case of paired-thread NUMA";
1178 grouping allocation-properties {
1180 description "Defines the maximum allocation. The value 0 indicates that usage is not limited.
1181 This parameter ensures that the instance never uses more than the defined amount of resource.";
1186 description "Defines the guaranteed minimum reservation.
1187 If needed, the machine will definitely get allocated the reserved amount of resources.";
1192 description "Number of shares allocated.
1193 Specifies the proportional weighted share for the domain.
1194 If this element is omitted, the service defaults to the OS provided defaults";
1199 grouping provider-network {
1200 container provider-network {
1201 description "Container for the provider network.";
1202 leaf physical-network {
1204 "Name of the physical network on which the provider
1209 leaf segmentation_id {
1211 "ID of segregated virtual networks";
1217 grouping http-endpoints {
1218 list http-endpoint {
1220 "List of http endpoints to be used by monitoring params";
1224 description "The HTTP path on the management server";
1229 description "Pick HTTPS instead of HTTP , Default is false";
1235 description "The HTTP port to connect to";
1236 type inet:port-number;
1240 description "The HTTP basic auth username";
1245 description "The HTTP basic auth password";
1249 leaf polling-interval-secs {
1250 description "The HTTP polling interval in seconds";
1257 "Method that the URI should perform.
1258 Deafult action is GET.";
1260 type manotypes:http-method;
1265 description "Custom HTTP headers to put on HTTP request";
1268 description "HTTP header key";
1273 description "HTTP header value";
1280 grouping monitoring-param-aggregation {
1281 typedef aggregation-type {
1283 "aggregation-type, indicates the way to aggregate monitoring-params
1284 (e.g. how to aggregate CPU utilisation of all VNFs belonging to the
1285 same VNF group identified by member-vnf-index; or how to aggregate
1286 memory utilisation of all VDUs belonging to the same VDU group
1287 identified by vdu id)";
1297 leaf aggregation-type {
1298 type aggregation-type;
1302 grouping monitoring-param-ui-data {
1308 description "A tag to group monitoring parameters";
1314 description "Defines the UI Display variant of measured counters.";
1315 type manotypes:widget-type;
1320 description "Measured Counter Units (e.g., Packets, Kbps, Mbps, etc.)";
1325 grouping monitoring-param-value {
1327 type param-value-type;
1331 container numeric-constraints {
1334 "Minimum value for the parameter";
1339 "Maximum value for the parameter";
1344 container text-constraints {
1347 "Minimum string length for the parameter";
1352 "Maximum string length for the parameter";
1357 leaf value-integer {
1359 "Current value for an integer parameter";
1363 leaf value-decimal {
1365 "Current value for a decimal parameter";
1373 "Current value for a string parameter";
1378 grouping control-param {
1379 list control-param {
1381 "List of control parameters to manage and
1382 update the running configuration of the VNF";
1386 description "Identifier for control parameter";
1391 description "Name of a control parameter";
1396 description "A description of the control parameter";
1401 description "A tag to group control parameters";
1407 "Minimum value for the parameter";
1413 "Maximum value for the parameter";
1417 leaf current-value {
1419 "Current value for the parameter";
1425 "Step value for the parameter";
1434 type manotypes:widget-type;
1439 "This is the URL where the operation should be performed.";
1446 "Method that the URI should perform.
1447 Default Action is POST";
1449 type manotypes:http-method;
1455 "This is the operation payload or payload template as stringified
1456 JSON. This field provides the data to be sent for this operation
1464 grouping action-param {
1467 "List of action parameters to
1483 description "A tag to group monitoring parameter";
1489 "This is the URL where to perform the operation";
1495 "This is the method to be performed at the uri.
1496 POST by default for action";
1498 type manotypes:http-method;
1504 "This is the operation payload or payload template to be sent in
1505 the data for this operation call";
1512 grouping input-parameter {
1513 description "List of input parameters that can be specified when instantiating a network service.";
1515 list input-parameter {
1517 "List of input parameters";
1524 "An xpath that specfies which element in a descriptor is to be
1531 "The value that the element specified by the xpath should take when a
1532 record is created.";
1538 grouping input-parameter-xpath {
1539 list input-parameter-xpath {
1541 "List of xpaths to parameters inside the NSD
1542 the can be customized during the instantiation.";
1547 "An xpath that specifies the element in a descriptor.";
1552 description "A descriptive string";
1556 leaf default-value {
1557 description "Default Value for the Input Parameter";
1563 grouping nfvi-metrics {
1567 "Label to show in UI";
1574 "The total number of VCPUs available.";
1580 "The VCPU utilization (percentage).";
1591 "Label to show in UI";
1598 "The amount of memory (bytes) currently in use.";
1604 "The amount of memory (bytes) available.";
1610 "The memory utilization (percentage).";
1621 "Label to show in UI";
1628 "The amount of storage (bytes) currently in use.";
1634 "The amount of storage (bytes) available.";
1640 "The storage utilization (percentage).";
1648 container external-ports {
1651 "Label to show in UI";
1653 default "EXTERNAL PORTS";
1658 "The total number of external ports.";
1663 container internal-ports {
1666 "Label to show in UI";
1668 default "INTERNAL PORTS";
1673 "The total number of internal ports.";
1681 "Label to show in UI";
1683 default "NETWORK TRAFFIC";
1686 container incoming {
1689 "Label to show in UI";
1691 default "INCOMING NETWORK TRAFFIC";
1696 "The cumulative number of incoming bytes.";
1702 "The cumulative number of incoming packets.";
1708 "The current incoming byte-rate (bytes per second).";
1716 "The current incoming packet (packets per second).";
1723 container outgoing {
1726 "Label to show in UI";
1728 default "OUTGOING NETWORK TRAFFIC";
1733 "The cumulative number of outgoing bytes.";
1739 "The cumulative number of outgoing packets.";
1745 "The current outgoing byte-rate (bytes per second).";
1753 "The current outgoing packet (packets per second).";
1762 typedef alarm-severity-type {
1763 description "An indication of the importance or urgency of the alarm";
1771 typedef alarm-metric-type {
1772 description "The type of metrics to register the alarm for";
1774 enum CPU_UTILIZATION;
1775 enum MEMORY_UTILIZATION;
1776 enum STORAGE_UTILIZATION;
1780 typedef alarm-statistic-type {
1782 "Statistic type to use to determine threshold crossing
1793 typedef relational-operation-type {
1795 "The relational operator used to define whether an alarm,
1796 scaling event, etc. should be triggered in certain scenarios,
1797 such as if the metric statistic goes above or below a specified
1800 enum GE; // greater than or equal
1801 enum LE; // less than or equal
1802 enum GT; // greater than
1803 enum LT; // less than
1808 grouping alarm-properties {
1810 description "A human readable string to identify the alarm";
1815 description "A description of this alarm";
1821 "The identifier of the VDUR that the alarm is associated with";
1833 list insufficient-data {
1850 "This flag indicates whether the alarm should be repeatedly emitted
1851 while the associated threshold has been crossed.";
1859 "This flag indicates whether the alarm has been enabled or
1867 description "A measure of the importance or urgency of the alarm";
1868 type alarm-severity-type;
1872 description "The type of metric statistic that is tracked by this alarm";
1873 type alarm-statistic-type;
1878 "The relational operator used to define whether an alarm should be
1879 triggered in certain scenarios, such as if the metric statistic
1880 goes above or below a specified value.";
1881 type relational-operation-type;
1886 "This value defines the threshold that, if crossed, will trigger
1895 "The period defines the length of time (seconds) that the metric
1896 data are collected over in oreder to evaluate the chosen
1903 "Defines the length of time (seconds) in which metric data are
1904 collected in order to evaluate the chosen statistic.";
1909 typedef cloud-account-type {
1910 description "VIM account type";
1914 enum cloudsim_proxy;
1923 grouping host-aggregate {
1924 list host-aggregate {
1925 description "Name of the Host Aggregate";
1930 "Name of the additional information attached to the host-aggregate";
1933 leaf metadata-value {
1935 "Value of the corresponding metadata-key";
1941 grouping placement-group-input {
1943 type manotypes:cloud-account-type;
1945 choice cloud-provider {
1947 container availability-zone {
1948 description "Name of the Availability Zone";
1953 container server-group {
1954 description "Name of the Affinity/Anti-Affinity Server Group";
1959 uses host-aggregate;
1962 leaf aws-construct {
1967 leaf openmano-construct {
1972 leaf vsphere-construct {
1977 leaf mock-construct {
1982 leaf cloudsim-construct {
1989 grouping cloud-config {
1992 description "Used to configure the list of public keys to be injected as part
1993 of ns instantiation";
1996 description "Name of this key pair";
2001 description "Key associated with this key pair";
2008 description "List of users to be added through cloud-config";
2011 description "Name of the user ";
2016 description "The user name's real name";
2022 description "Used to configure the list of public keys to be injected as part
2023 of ns instantiation";
2026 description "Name of this key pair";
2031 description "Key associated with this key pair";
2038 grouping placement-group-info {
2043 "Place group construct to define the compute resource placement strategy
2044 in cloud environment";
2049 description "This is free text space used to describe the intent/rationale
2050 behind this placement group. This is for human consumption only";
2056 "Strategy associated with this placement group
2057 Following values are possible
2058 - COLOCATION: Colocation strategy imply intent to share the physical
2059 infrastructure (hypervisor/network) among all members
2061 - ISOLATION: Isolation strategy imply intent to not share the physical
2062 infrastructure (hypervisor/network) among the members
2069 default "COLOCATION";
2073 grouping ip-profile-info {
2074 description "Grouping for IP-Profile";
2075 container ip-profile-params {
2078 type inet:ip-version;
2082 leaf subnet-address {
2083 description "Subnet IP prefix associated with IP Profile";
2084 type inet:ip-prefix;
2087 leaf gateway-address {
2088 description "IP Address of the default gateway associated with IP Profile";
2089 type inet:ip-address;
2092 leaf security-group {
2093 description "Name of the security group";
2100 description "List of DNS Servers associated with IP Profile";
2101 type inet:ip-address;
2105 container dhcp-params {
2107 description "This flag indicates if DHCP is enabled or not";
2112 leaf start-address {
2113 description "Start IP address of the IP-Address range associated with DHCP domain";
2114 type inet:ip-address;
2118 description "Size of the DHCP pool associated with DHCP domain";
2123 leaf subnet-prefix-pool {
2124 description "VIM Specific reference to pre-created subnet prefix";
2130 grouping ip-profile-list {
2133 "List of IP Profiles.
2134 IP Profile describes the IP characteristics for the Virtual-Link";
2139 description "Name of the IP-Profile";
2144 description "Description for IP profile";
2148 uses ip-profile-info;
2152 grouping config-file {
2153 description "Grouping for files needed to be mounted into an additional drive";
2156 "List of configuration files to be written on an additional drive";
2159 description "Name of the configuration file";
2163 description "Full path of the destination in the guest";
2169 grouping supplemental-boot-data {
2170 description "Grouping for custom vim data";
2171 container supplemental-boot-data {
2172 // uses manotypes:config-file;
2173 leaf boot-data-drive {
2174 description "Some VIMs implement additional drives to host config-files or meta-data";
2181 grouping volume-info {
2182 description "Grouping for Volume-info";
2185 description "Description for Volume";
2190 description "Size of disk in GB";
2194 choice volume-source {
2196 "Defines the source of the volume. Possible options are
2197 1. Ephemeral -- Empty disk
2198 2. Image -- Refer to image to be used for volume
2199 3. Volume -- Reference of pre-existing volume to be used
2209 uses image-properties;
2214 description "Type of disk-bus on which this disk is exposed to guest";
2224 description "The type of device as exposed to guest";
2234 grouping rpc-project-name {
2238 "Project to which this belongs";
2240 path "/osm-project:project/osm-project:name";