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:ietf:params:xml:ns:yang:nfvo: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-relationships {
225 container vca-relationships {
227 description "List of relations between VCA componets.";
229 key "requires provides";
233 "Name of the required relation.";
239 "Name of the provided relation.";
246 grouping vca-metrics {
248 "Information about the VNF or VDU metrics";
250 description "List of VCA related metrics";
254 "Name of the metric, as defined in the Juju charm.";
258 } // END - grouping vca-metrics
260 grouping vca-configuration {
262 "Information about the VNF or VDU configuration. Note:
263 If the NS contains multiple instances of the
264 same VNF or VDU, each instance could have a different
267 choice config-method {
269 "Defines the configuration method for the VNF or VDU.";
272 "Use custom script for configuring the VNF or VDU.
273 This script is executed in the context of
274 Orchestrator (The same system and environment
279 "Script type - currently supported - Scripts confirming to Rift CA plugin";
289 "Configure the VNF or VDU through Juju.";
292 description "Juju charm to use with the VNF or VDU.";
296 description "Is this a proxy charm?";
300 uses manotypes:vca-relationships;
305 list config-primitive {
307 "List of config primitives supported by the
308 configuration agent for this VNF or VDU.";
313 "Name of the config primitive.";
319 "List of parameters to the config primitive.";
321 uses primitive-parameter;
324 leaf user-defined-script {
326 "A user defined script. If user defined script is defined,
327 the script will be executed using bash";
332 list initial-config-primitive {
334 "Initial set of configuration primitives.";
338 "Sequence number for the configuration primitive.";
342 choice primitive-type {
343 case primitive-definition {
346 "Name of the configuration primitive.";
350 uses primitive-parameter-value;
352 leaf user-defined-script {
354 "A user defined script.";
361 uses manotypes:vca-metrics;
363 } // END - grouping vca-configuration
365 typedef virtual-link-type {
367 "Type of virtual link
368 ELAN: A multipoint service connecting a set of VNFs
369 ELINE: For a simple point to point connection
370 // between a VNF and the existing network.
371 // ETREE: A multipoint service connecting one or
372 // more roots and a set of leaves, but
373 // preventing inter-leaf communication.";
381 grouping named-value {
391 typedef http-method {
393 "Type of HTTP operation";
407 "Type of API to fetch monitoring parameters";
416 typedef json-query-method {
418 "The method to extract a value from a JSON response
420 NAMEKEY - Use the name as the key for a non-nested value.
421 JSONPATH - Use jsonpath-rw implementation to extract a value.
422 OBJECTPATH - Use objectpath implementation to extract a value.";
430 typedef param-value-type {
432 "The type of the parameter value";
440 typedef connection-point-type {
442 "Type of connection point
444 // VNIC_ADDR: Virtual NIC Address
445 // PNIC_ADDR: Physical NIC Address
446 // PPORT: Physical Port.";
453 typedef widget-type {
455 "Type of the widget, typically used by the UI.";
466 typedef cpu-feature-type {
468 "Enumeration for CPU features.
470 AES: CPU supports advanced instruction set for
471 AES (Advanced Encryption Standard).
473 CAT: Cache Allocation Technology (CAT) allows
474 an Operating System, Hypervisor, or similar
475 system management agent to specify the amount
476 of L3 cache (currently the last-level cache
477 in most server and client platforms) space an
478 application can fill (as a hint to hardware
479 functionality, certain features such as power
480 management may override CAT settings).
482 CMT: Cache Monitoring Technology (CMT) allows
483 an Operating System, Hypervisor, or similar
484 system management agent to determine the
485 usage of cache based on applications running
486 on the platform. The implementation is
487 directed at L3 cache monitoring (currently
488 the last-level cache in most server and
491 DDIO: Intel Data Direct I/O (DDIO) enables
492 Ethernet server NICs and controllers talk
493 directly to the processor cache without a
494 detour via system memory. This enumeration
495 specifies if the VM requires a DDIO
539 enum REQUIRE_CLFLUSH;
567 enum REQUIRE_PCLMULQDQ;
568 enum PREFER_PCLMULQDQ;
571 enum REQUIRE_MONITOR;
609 enum REQUIRE_TSC_DEADLINE_TIMER;
610 enum PREFER_TSC_DEADLINE_TIMER;
619 enum REQUIRE_FSGSBASE;
620 enum PREFER_FSGSBASE;
633 enum REQUIRE_INVPCID;
648 typedef nfvi-metric-type {
649 description "Type of NFVI metric to be monitored";
651 enum cpu_utilization;
652 enum average_memory_utilization;
655 enum disk_read_bytes;
656 enum disk_write_bytes;
658 enum packets_received;
659 enum packets_dropped;
663 typedef scaling-trigger {
674 enum post-scale-out {
680 typedef scaling-policy-type {
691 typedef scaling-criteria-operation {
703 container vm-flavor {
706 "Number of VCPUs for the VM.";
712 "Amount of memory in MB.";
718 "Amount of disk space in GB.";
722 } //grouping vm-flavor
724 grouping vm-flavor-name {
725 leaf vm-flavor-name {
726 description "flavor name to be used while creating vm using cloud account";
731 grouping vswitch-epa {
732 container vswitch-epa {
733 leaf ovs-acceleration {
735 "Specifies Open vSwitch acceleration mode.
736 MANDATORY: OVS acceleration is required
737 PREFERRED: OVS acceleration is preferred";
747 "Specifies Open vSwitch hardware offload mode.
748 MANDATORY: OVS offload is required
749 PREFERRED: OVS offload is preferred";
759 grouping hypervisor-epa {
760 container hypervisor-epa {
763 "Specifies the type of hypervisor.
779 description "Specifies the host level EPA attributes.";
782 "Host CPU model. Examples include: SandyBridge,
785 enum PREFER_WESTMERE;
786 enum REQUIRE_WESTMERE;
787 enum PREFER_SANDYBRIDGE;
788 enum REQUIRE_SANDYBRIDGE;
789 enum PREFER_IVYBRIDGE;
790 enum REQUIRE_IVYBRIDGE;
792 enum REQUIRE_HASWELL;
793 enum PREFER_BROADWELL;
794 enum REQUIRE_BROADWELL;
796 enum REQUIRE_NEHALEM;
801 enum PREFER_CORE2DUO;
802 enum REQUIRE_CORE2DUO;
807 description "Host CPU architecture.";
825 description "Host CPU Vendor.";
834 leaf cpu-socket-count {
835 description "Number of sockets on the host.";
839 leaf cpu-core-count {
840 description "Number of cores on the host.";
844 leaf cpu-core-thread-count {
845 description "Number of threads per cores on the host.";
851 description "List of CPU features.";
853 description "CPU feature.";
854 type cpu-feature-type;
858 leaf om-cpu-model-string {
859 description "OpenMANO CPU model string";
863 list om-cpu-feature {
865 description "List of OpenMANO CPU features";
867 description "CPU feature";
876 description "EPA attributes for the guest";
877 container guest-epa {
878 leaf trusted-execution {
879 description "This VM should be allocated from trusted pool";
885 "Memory page allocation size. If a VM requires
886 hugepages, it should choose LARGE or SIZE_2MB
887 or SIZE_1GB. If the VM prefers hugepages it
888 should choose PREFER_LARGE.
889 LARGE : Require hugepages (either 2MB or 1GB)
890 SMALL : Doesn't require hugepages
891 SIZE_2MB : Requires 2MB hugepages
892 SIZE_1GB : Requires 1GB hugepages
893 PREFER_LARGE : Application prefers hugepages";
905 leaf cpu-pinning-policy {
907 "CPU pinning policy describes association
908 between virtual CPUs in guest and the
909 physical CPUs in the host.
910 DEDICATED : Virtual CPUs are pinned to
912 SHARED : Multiple VMs may share the
914 ANY : Any policy is acceptable for the VM";
922 leaf cpu-thread-pinning-policy {
924 "CPU thread pinning policy describes how to
925 place the guest CPUs when the host supports
927 AVOID : Avoids placing a guest on a host
929 SEPARATE: Places vCPUs on separate cores,
930 and avoids placing two vCPUs on
931 two threads of same core.
932 ISOLATE : Places each vCPU on a different core,
933 and places no vCPUs from a different
934 guest on the same core.
935 PREFER : Attempts to place vCPUs on threads
947 container cpu-quota {
948 description "CPU quota describes the CPU resource allocation policy.
949 Limit and Reserve values are defined in MHz";
950 uses allocation-properties;
955 container mem-quota {
956 description "Memory quota describes the memory resource allocation policy.
957 Limit and Reserve values are defined in MB";
958 uses allocation-properties;
961 container disk-io-quota {
962 description "Disk IO quota describes the disk IO operations resource allocation policy.
963 Limit and Reserve values are defined in IOPS";
964 uses allocation-properties;
967 container vif-quota {
968 description "Virtual interfaces quota describes the virtual interface bandwidth resource allocation policy.
969 Limit and Reserve values are defined in Mbps";
970 uses allocation-properties;
975 "List of pcie passthrough devices.";
979 "Device identifier.";
984 "Number of devices to attach to the VM.";
997 container numa-node-policy {
999 "This policy defines NUMA topology of the
1000 guest. Specifically identifies if the guest
1001 should be run on a host with one NUMA
1002 node or multiple NUMA nodes. As an example
1003 a guest might need 8 VCPUs and 4 GB of
1004 memory. However, it might need the VCPUs
1005 and memory distributed across multiple
1006 NUMA nodes. In this scenario, NUMA node
1007 1 could run with 6 VCPUs and 3GB, and
1008 NUMA node 2 could run with 2 VCPUs and
1013 "The number of NUMA nodes to expose to the VM.";
1019 "This policy specifies how the memory should
1020 be allocated in a multi-node scenario.
1021 STRICT : The memory must be allocated
1022 strictly from the memory attached
1024 PREFERRED : The memory should be allocated
1025 preferentially from the memory
1026 attached to the NUMA node";
1037 "NUMA node identification. Typically
1045 "List of VCPUs to allocate on
1049 description "List of VCPUs ids to allocate on
1056 "Memory size expressed in MB
1057 for this NUMA node.";
1061 choice om-numa-type {
1063 "OpenMANO Numa type selection";
1071 case paired-threads {
1072 container paired-threads {
1073 leaf num-paired-threads {
1077 list paired-thread-ids {
1079 "List of thread pairs to use in case of paired-thread NUMA";
1107 grouping allocation-properties {
1109 description "Defines the maximum allocation. The value 0 indicates that usage is not limited.
1110 This parameter ensures that the instance never uses more than the defined amount of resource.";
1115 description "Defines the guaranteed minimum reservation.
1116 If needed, the machine will definitely get allocated the reserved amount of resources.";
1121 description "Number of shares allocated.
1122 Specifies the proportional weighted share for the domain.
1123 If this element is omitted, the service defaults to the OS provided defaults";
1128 grouping provider-network {
1129 container provider-network {
1130 description "Container for the provider network.";
1131 leaf physical-network {
1133 "Name of the physical network on which the provider
1138 leaf segmentation_id {
1140 "ID of segregated virtual networks";
1146 grouping ns-service-primitive {
1147 list service-primitive {
1149 "Network service level service primitives.";
1155 "Name of the service primitive.";
1161 "List of parameters for the service primitive.";
1164 uses manotypes:primitive-parameter;
1167 list parameter-group {
1169 "Grouping of parameters which are logically grouped in UI";
1174 "Name of the parameter group";
1180 "List of parameters for the service primitive.";
1182 uses manotypes:primitive-parameter;
1186 description "Is this parameter group mandatory";
1192 list vnf-primitive-group {
1194 "List of service primitives grouped by VNF.";
1196 key "member-vnf-index-ref";
1197 leaf member-vnf-index-ref {
1199 "Reference to member-vnf within constituent-vnfds";
1205 "A reference to a vnfd. This is a
1207 ../../../../nsd:constituent-vnfd
1208 + [nsd:id = current()/../nsd:id-ref]
1210 NOTE: An issue with confd is preventing the
1211 use of xpath. Seems to be an issue with leafref
1212 to leafref, whose target is in a different module.
1213 Once that is resolved this will switched to use
1229 description "Index of this primitive";
1234 description "Name of the primitive in the VNF primitive ";
1240 leaf user-defined-script {
1242 "A user defined script.";
1248 grouping http-endpoints {
1249 list http-endpoint {
1251 "List of http endpoints to be used by monitoring params";
1255 description "The HTTP path on the management server";
1260 description "Pick HTTPS instead of HTTP , Default is false";
1266 description "The HTTP port to connect to";
1267 type inet:port-number;
1271 description "The HTTP basic auth username";
1276 description "The HTTP basic auth password";
1280 leaf polling-interval-secs {
1281 description "The HTTP polling interval in seconds";
1288 "Method that the URI should perform.
1289 Deafult action is GET.";
1291 type manotypes:http-method;
1296 description "Custom HTTP headers to put on HTTP request";
1299 description "HTTP header key";
1304 description "HTTP header value";
1311 grouping monitoring-param-aggregation {
1312 typedef aggregation-type {
1314 "aggregation-type, indicates the way to aggregate monitoring-params
1315 (e.g. how to aggregate CPU utilisation of all VNFs belonging to the
1316 same VNF group identified by member-vnf-index; or how to aggregate
1317 memory utilisation of all VDUs belonging to the same VDU group
1318 identified by vdu id)";
1328 leaf aggregation-type {
1329 type aggregation-type;
1333 grouping monitoring-param-ui-data {
1339 description "A tag to group monitoring parameters";
1345 description "Defines the UI Display variant of measured counters.";
1346 type manotypes:widget-type;
1351 description "Measured Counter Units (e.g., Packets, Kbps, Mbps, etc.)";
1356 grouping monitoring-param-value {
1358 type param-value-type;
1362 container numeric-constraints {
1365 "Minimum value for the parameter";
1370 "Maximum value for the parameter";
1375 container text-constraints {
1378 "Minimum string length for the parameter";
1383 "Maximum string length for the parameter";
1388 leaf value-integer {
1390 "Current value for an integer parameter";
1394 leaf value-decimal {
1396 "Current value for a decimal parameter";
1404 "Current value for a string parameter";
1409 grouping control-param {
1410 list control-param {
1412 "List of control parameters to manage and
1413 update the running configuration of the VNF";
1417 description "Identifier for control parameter";
1422 description "Name of a control parameter";
1427 description "A description of the control parameter";
1432 description "A tag to group control parameters";
1438 "Minimum value for the parameter";
1444 "Maximum value for the parameter";
1448 leaf current-value {
1450 "Current value for the parameter";
1456 "Step value for the parameter";
1465 type manotypes:widget-type;
1470 "This is the URL where the operation should be performed.";
1477 "Method that the URI should perform.
1478 Default Action is POST";
1480 type manotypes:http-method;
1486 "This is the operation payload or payload template as stringified
1487 JSON. This field provides the data to be sent for this operation
1495 grouping action-param {
1498 "List of action parameters to
1514 description "A tag to group monitoring parameter";
1520 "This is the URL where to perform the operation";
1526 "This is the method to be performed at the uri.
1527 POST by default for action";
1529 type manotypes:http-method;
1535 "This is the operation payload or payload template to be sent in
1536 the data for this operation call";
1543 grouping input-parameter {
1544 description "List of input parameters that can be specified when instantiating a network service.";
1546 list input-parameter {
1548 "List of input parameters";
1555 "An xpath that specfies which element in a descriptor is to be
1562 "The value that the element specified by the xpath should take when a
1563 record is created.";
1569 grouping input-parameter-xpath {
1570 list input-parameter-xpath {
1572 "List of xpaths to parameters inside the NSD
1573 the can be customized during the instantiation.";
1578 "An xpath that specifies the element in a descriptor.";
1583 description "A descriptive string";
1587 leaf default-value {
1588 description "Default Value for the Input Parameter";
1594 grouping nfvi-metrics {
1598 "Label to show in UI";
1605 "The total number of VCPUs available.";
1611 "The VCPU utilization (percentage).";
1622 "Label to show in UI";
1629 "The amount of memory (bytes) currently in use.";
1635 "The amount of memory (bytes) available.";
1641 "The memory utilization (percentage).";
1652 "Label to show in UI";
1659 "The amount of storage (bytes) currently in use.";
1665 "The amount of storage (bytes) available.";
1671 "The storage utilization (percentage).";
1679 container external-ports {
1682 "Label to show in UI";
1684 default "EXTERNAL PORTS";
1689 "The total number of external ports.";
1694 container internal-ports {
1697 "Label to show in UI";
1699 default "INTERNAL PORTS";
1704 "The total number of internal ports.";
1712 "Label to show in UI";
1714 default "NETWORK TRAFFIC";
1717 container incoming {
1720 "Label to show in UI";
1722 default "INCOMING NETWORK TRAFFIC";
1727 "The cumulative number of incoming bytes.";
1733 "The cumulative number of incoming packets.";
1739 "The current incoming byte-rate (bytes per second).";
1747 "The current incoming packet (packets per second).";
1754 container outgoing {
1757 "Label to show in UI";
1759 default "OUTGOING NETWORK TRAFFIC";
1764 "The cumulative number of outgoing bytes.";
1770 "The cumulative number of outgoing packets.";
1776 "The current outgoing byte-rate (bytes per second).";
1784 "The current outgoing packet (packets per second).";
1793 typedef alarm-severity-type {
1794 description "An indication of the importance or urgency of the alarm";
1802 typedef alarm-metric-type {
1803 description "The type of metrics to register the alarm for";
1805 enum CPU_UTILIZATION;
1806 enum MEMORY_UTILIZATION;
1807 enum STORAGE_UTILIZATION;
1811 typedef alarm-statistic-type {
1813 "Statistic type to use to determine threshold crossing
1824 typedef relational-operation-type {
1826 "The relational operator used to define whether an alarm,
1827 scaling event, etc. should be triggered in certain scenarios,
1828 such as if the metric statistic goes above or below a specified
1831 enum GE; // greater than or equal
1832 enum LE; // less than or equal
1833 enum GT; // greater than
1834 enum LT; // less than
1842 "This field is reserved for the identifier assigned by the VIM provider";
1848 description "A human readable string to identify the alarm";
1853 description "A description of this alarm";
1859 "The identifier of the VDUR that the alarm is associated with";
1871 list insufficient-data {
1888 "This flag indicates whether the alarm should be repeatedly emitted
1889 while the associated threshold has been crossed.";
1897 "This flag indicates whether the alarm has been enabled or
1905 description "A measure of the importance or urgency of the alarm";
1906 type alarm-severity-type;
1910 description "The metric to be tracked by this alarm.";
1911 type alarm-metric-type;
1915 description "The type of metric statistic that is tracked by this alarm";
1916 type alarm-statistic-type;
1921 "The relational operator used to define whether an alarm should be
1922 triggered in certain scenarios, such as if the metric statistic
1923 goes above or below a specified value.";
1924 type relational-operation-type;
1929 "This value defines the threshold that, if crossed, will trigger
1938 "The period defines the length of time (seconds) that the metric
1939 data are collected over in oreder to evaluate the chosen
1946 "Defines the length of time (seconds) in which metric data are
1947 collected in order to evaluate the chosen statistic.";
1952 typedef cloud-account-type {
1953 description "VIM account type";
1957 enum cloudsim_proxy;
1966 grouping host-aggregate {
1967 list host-aggregate {
1968 description "Name of the Host Aggregate";
1973 "Name of the additional information attached to the host-aggregate";
1976 leaf metadata-value {
1978 "Value of the corresponding metadata-key";
1984 grouping placement-group-input {
1986 type manotypes:cloud-account-type;
1988 choice cloud-provider {
1990 container availability-zone {
1991 description "Name of the Availability Zone";
1996 container server-group {
1997 description "Name of the Affinity/Anti-Affinity Server Group";
2002 uses host-aggregate;
2005 leaf aws-construct {
2010 leaf openmano-construct {
2015 leaf vsphere-construct {
2020 leaf mock-construct {
2025 leaf cloudsim-construct {
2032 grouping cloud-config {
2035 description "Used to configure the list of public keys to be injected as part
2036 of ns instantiation";
2039 description "Name of this key pair";
2044 description "Key associated with this key pair";
2051 description "List of users to be added through cloud-config";
2054 description "Name of the user ";
2059 description "The user name's real name";
2065 description "Used to configure the list of public keys to be injected as part
2066 of ns instantiation";
2069 description "Name of this key pair";
2074 description "Key associated with this key pair";
2081 grouping placement-group-info {
2086 "Place group construct to define the compute resource placement strategy
2087 in cloud environment";
2092 description "This is free text space used to describe the intent/rationale
2093 behind this placement group. This is for human consumption only";
2099 "Strategy associated with this placement group
2100 Following values are possible
2101 - COLOCATION: Colocation strategy imply intent to share the physical
2102 infrastructure (hypervisor/network) among all members
2104 - ISOLATION: Isolation strategy imply intent to not share the physical
2105 infrastructure (hypervisor/network) among the members
2112 default "COLOCATION";
2116 grouping ip-profile-info {
2117 description "Grouping for IP-Profile";
2118 container ip-profile-params {
2121 type inet:ip-version;
2125 leaf subnet-address {
2126 description "Subnet IP prefix associated with IP Profile";
2127 type inet:ip-prefix;
2130 leaf gateway-address {
2131 description "IP Address of the default gateway associated with IP Profile";
2132 type inet:ip-address;
2135 leaf security-group {
2136 description "Name of the security group";
2143 description "List of DNS Servers associated with IP Profile";
2144 type inet:ip-address;
2148 container dhcp-params {
2150 description "This flag indicates if DHCP is enabled or not";
2155 leaf start-address {
2156 description "Start IP address of the IP-Address range associated with DHCP domain";
2157 type inet:ip-address;
2161 description "Size of the DHCP pool associated with DHCP domain";
2166 leaf subnet-prefix-pool {
2167 description "VIM Specific reference to pre-created subnet prefix";
2173 grouping ip-profile-list {
2176 "List of IP Profiles.
2177 IP Profile describes the IP characteristics for the Virtual-Link";
2182 description "Name of the IP-Profile";
2187 description "Description for IP profile";
2191 uses ip-profile-info;
2195 grouping config-file {
2196 description "Grouping for files needed to be mounted into an additional drive";
2199 "List of configuration files to be written on an additional drive";
2202 description "Name of the configuration file";
2206 description "Full path of the destination in the guest";
2212 grouping supplemental-boot-data {
2213 description "Grouping for custom vim data";
2214 container supplemental-boot-data {
2215 // uses manotypes:config-file;
2216 leaf boot-data-drive {
2217 description "Some VIMs implement additional drives to host config-files or meta-data";
2224 grouping volume-info {
2225 description "Grouping for Volume-info";
2228 description "Description for Volume";
2233 description "Size of disk in GB";
2237 choice volume-source {
2239 "Defines the source of the volume. Possible options are
2240 1. Ephemeral -- Empty disk
2241 2. Image -- Refer to image to be used for volume
2242 3. Volume -- Reference of pre-existing volume to be used
2252 uses image-properties;
2257 description "Type of disk-bus on which this disk is exposed to guest";
2267 description "The type of device as exposed to guest";
2277 grouping rpc-project-name {
2281 "Project to which this belongs";
2283 path "/rw-project:project/rw-project:name";