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-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 configuration-method {
261 choice config-method {
263 "Defines the configuration method for the VNF or VDU.";
266 "Use custom script for configuring the VNF or VDU.
267 This script is executed in the context of
268 Orchestrator (The same system and environment
273 "Script type - currently supported - Scripts confirming to Rift CA plugin";
283 "Configure the VNF or VDU through Juju.";
286 description "Juju charm to use with the VNF or VDU.";
290 description "Is this a proxy charm?";
294 uses manotypes:vca-relationships;
300 grouping vca-config-access {
302 container config-access {
305 "Indicates the way to access to the xNF or xDU for VCA configuration.
306 For the moment there is a single way (ssh-access).";
308 container ssh-access {
311 "If the xNF requires ssh and this parameter is set, SSH keys
312 will be injected so that VCA can configure the xNF or xDU via ssh.";
315 description "whether ssh access is needed or not";
321 description "Default user for ssh";
326 } // END - grouping vca-config-access
328 grouping vca-configuration {
330 "Common information in the descriptors for NS, VNF or VDU configuration.
331 Note: If the NS contains multiple instances of the
332 same VNF or VDU, each instance could have a different
335 uses manotypes:configuration-method;
337 list config-primitive {
339 "List of config primitives supported by the
340 configuration agent for this VNF or VDU.";
345 "Name of the config primitive.";
351 "List of parameters to the config primitive.";
353 uses primitive-parameter;
356 leaf user-defined-script {
358 "A user defined script. If user defined script is defined,
359 the script will be executed using bash";
364 list initial-config-primitive {
366 "Initial set of configuration primitives.";
370 "Sequence number for the configuration primitive.";
374 choice primitive-type {
375 case primitive-definition {
378 "Name of the configuration primitive.";
382 uses primitive-parameter-value;
384 leaf user-defined-script {
386 "A user defined script.";
393 list terminate-config-primitive {
395 "Terminate set of configuration primitives.";
399 "Sequence number for the configuration primitive.";
404 "Name of the configuration primitive.";
408 uses primitive-parameter-value;
410 leaf user-defined-script {
412 "A user defined script.";
416 uses manotypes:vca-metrics;
418 } // END - grouping vca-configuration
420 typedef virtual-link-type {
422 "Type of virtual link
423 ELAN: A multipoint service connecting a set of VNFs
424 ELINE: For a simple point to point connection
425 // between a VNF and the existing network.
426 // ETREE: A multipoint service connecting one or
427 // more roots and a set of leaves, but
428 // preventing inter-leaf communication.";
436 grouping named-value {
446 typedef http-method {
448 "Type of HTTP operation";
462 "Type of API to fetch monitoring parameters";
471 typedef json-query-method {
473 "The method to extract a value from a JSON response
475 NAMEKEY - Use the name as the key for a non-nested value.
476 JSONPATH - Use jsonpath-rw implementation to extract a value.
477 OBJECTPATH - Use objectpath implementation to extract a value.";
485 typedef param-value-type {
487 "The type of the parameter value";
495 typedef connection-point-type {
497 "Type of connection point
499 // VNIC_ADDR: Virtual NIC Address
500 // PNIC_ADDR: Physical NIC Address
501 // PPORT: Physical Port.";
508 typedef widget-type {
510 "Type of the widget, typically used by the UI.";
521 typedef cpu-feature-type {
523 "Enumeration for CPU features.
525 AES: CPU supports advanced instruction set for
526 AES (Advanced Encryption Standard).
528 CAT: Cache Allocation Technology (CAT) allows
529 an Operating System, Hypervisor, or similar
530 system management agent to specify the amount
531 of L3 cache (currently the last-level cache
532 in most server and client platforms) space an
533 application can fill (as a hint to hardware
534 functionality, certain features such as power
535 management may override CAT settings).
537 CMT: Cache Monitoring Technology (CMT) allows
538 an Operating System, Hypervisor, or similar
539 system management agent to determine the
540 usage of cache based on applications running
541 on the platform. The implementation is
542 directed at L3 cache monitoring (currently
543 the last-level cache in most server and
546 DDIO: Intel Data Direct I/O (DDIO) enables
547 Ethernet server NICs and controllers talk
548 directly to the processor cache without a
549 detour via system memory. This enumeration
550 specifies if the VM requires a DDIO
594 enum REQUIRE_CLFLUSH;
622 enum REQUIRE_PCLMULQDQ;
623 enum PREFER_PCLMULQDQ;
626 enum REQUIRE_MONITOR;
664 enum REQUIRE_TSC_DEADLINE_TIMER;
665 enum PREFER_TSC_DEADLINE_TIMER;
674 enum REQUIRE_FSGSBASE;
675 enum PREFER_FSGSBASE;
688 enum REQUIRE_INVPCID;
703 typedef nfvi-metric-type {
704 description "Type of NFVI metric to be monitored";
706 enum cpu_utilization;
707 enum average_memory_utilization;
710 enum disk_read_bytes;
711 enum disk_write_bytes;
713 enum packets_received;
714 enum packets_in_dropped;
715 enum packets_out_dropped;
719 typedef scaling-trigger {
730 enum post-scale-out {
736 typedef scaling-policy-type {
747 typedef scaling-criteria-operation {
759 container vm-flavor {
762 "Number of VCPUs for the VM.";
768 "Amount of memory in MB.";
774 "Amount of disk space in GB.";
778 } //grouping vm-flavor
780 grouping vm-flavor-name {
781 leaf vm-flavor-name {
782 description "flavor name to be used while creating vm using cloud account";
787 grouping vswitch-epa {
788 container vswitch-epa {
789 leaf ovs-acceleration {
791 "Specifies Open vSwitch acceleration mode.
792 MANDATORY: OVS acceleration is required
793 PREFERRED: OVS acceleration is preferred";
803 "Specifies Open vSwitch hardware offload mode.
804 MANDATORY: OVS offload is required
805 PREFERRED: OVS offload is preferred";
815 grouping hypervisor-epa {
816 container hypervisor-epa {
819 "Specifies the type of hypervisor.
835 description "Specifies the host level EPA attributes.";
838 "Host CPU model. Examples include: SandyBridge,
841 enum PREFER_WESTMERE;
842 enum REQUIRE_WESTMERE;
843 enum PREFER_SANDYBRIDGE;
844 enum REQUIRE_SANDYBRIDGE;
845 enum PREFER_IVYBRIDGE;
846 enum REQUIRE_IVYBRIDGE;
848 enum REQUIRE_HASWELL;
849 enum PREFER_BROADWELL;
850 enum REQUIRE_BROADWELL;
852 enum REQUIRE_NEHALEM;
857 enum PREFER_CORE2DUO;
858 enum REQUIRE_CORE2DUO;
863 description "Host CPU architecture.";
881 description "Host CPU Vendor.";
890 leaf cpu-socket-count {
891 description "Number of sockets on the host.";
895 leaf cpu-core-count {
896 description "Number of cores on the host.";
900 leaf cpu-core-thread-count {
901 description "Number of threads per cores on the host.";
907 description "List of CPU features.";
909 description "CPU feature.";
910 type cpu-feature-type;
914 leaf om-cpu-model-string {
915 description "OpenMANO CPU model string";
919 list om-cpu-feature {
921 description "List of OpenMANO CPU features";
923 description "CPU feature";
932 description "EPA attributes for the guest";
933 container guest-epa {
934 leaf trusted-execution {
935 description "This VM should be allocated from trusted pool";
941 "Memory page allocation size. If a VM requires
942 hugepages, it should choose LARGE or SIZE_2MB
943 or SIZE_1GB. If the VM prefers hugepages it
944 should choose PREFER_LARGE.
945 LARGE : Require hugepages (either 2MB or 1GB)
946 SMALL : Doesn't require hugepages
947 SIZE_2MB : Requires 2MB hugepages
948 SIZE_1GB : Requires 1GB hugepages
949 PREFER_LARGE : Application prefers hugepages";
961 leaf cpu-pinning-policy {
963 "CPU pinning policy describes association
964 between virtual CPUs in guest and the
965 physical CPUs in the host.
966 DEDICATED : Virtual CPUs are pinned to
968 SHARED : Multiple VMs may share the
970 ANY : Any policy is acceptable for the VM";
978 leaf cpu-thread-pinning-policy {
980 "CPU thread pinning policy describes how to
981 place the guest CPUs when the host supports
983 AVOID : Avoids placing a guest on a host
985 SEPARATE: Places vCPUs on separate cores,
986 and avoids placing two vCPUs on
987 two threads of same core.
988 ISOLATE : Places each vCPU on a different core,
989 and places no vCPUs from a different
990 guest on the same core.
991 PREFER : Attempts to place vCPUs on threads
1003 container cpu-quota {
1004 description "CPU quota describes the CPU resource allocation policy.
1005 Limit and Reserve values are defined in MHz";
1006 uses allocation-properties;
1011 container mem-quota {
1012 description "Memory quota describes the memory resource allocation policy.
1013 Limit and Reserve values are defined in MB";
1014 uses allocation-properties;
1017 container disk-io-quota {
1018 description "Disk IO quota describes the disk IO operations resource allocation policy.
1019 Limit and Reserve values are defined in IOPS";
1020 uses allocation-properties;
1023 container vif-quota {
1024 description "Virtual interfaces quota describes the virtual interface bandwidth resource allocation policy.
1025 Limit and Reserve values are defined in Mbps";
1026 uses allocation-properties;
1031 "List of pcie passthrough devices.";
1035 "Device identifier.";
1040 "Number of devices to attach to the VM.";
1045 choice numa-policy {
1053 container numa-node-policy {
1055 "This policy defines NUMA topology of the
1056 guest. Specifically identifies if the guest
1057 should be run on a host with one NUMA
1058 node or multiple NUMA nodes. As an example
1059 a guest might need 8 VCPUs and 4 GB of
1060 memory. However, it might need the VCPUs
1061 and memory distributed across multiple
1062 NUMA nodes. In this scenario, NUMA node
1063 1 could run with 6 VCPUs and 3GB, and
1064 NUMA node 2 could run with 2 VCPUs and
1069 "The number of NUMA nodes to expose to the VM.";
1075 "This policy specifies how the memory should
1076 be allocated in a multi-node scenario.
1077 STRICT : The memory must be allocated
1078 strictly from the memory attached
1080 PREFERRED : The memory should be allocated
1081 preferentially from the memory
1082 attached to the NUMA node";
1093 "NUMA node identification. Typically
1101 "List of VCPUs to allocate on
1105 description "List of VCPUs ids to allocate on
1112 "Memory size expressed in MB
1113 for this NUMA node.";
1117 choice om-numa-type {
1119 "OpenMANO Numa type selection";
1127 case paired-threads {
1128 container paired-threads {
1129 leaf num-paired-threads {
1133 list paired-thread-ids {
1135 "List of thread pairs to use in case of paired-thread NUMA";
1163 grouping allocation-properties {
1165 description "Defines the maximum allocation. The value 0 indicates that usage is not limited.
1166 This parameter ensures that the instance never uses more than the defined amount of resource.";
1171 description "Defines the guaranteed minimum reservation.
1172 If needed, the machine will definitely get allocated the reserved amount of resources.";
1177 description "Number of shares allocated.
1178 Specifies the proportional weighted share for the domain.
1179 If this element is omitted, the service defaults to the OS provided defaults";
1184 grouping provider-network {
1185 container provider-network {
1186 description "Container for the provider network.";
1187 leaf physical-network {
1189 "Name of the physical network on which the provider
1194 leaf segmentation_id {
1196 "ID of segregated virtual networks";
1202 grouping http-endpoints {
1203 list http-endpoint {
1205 "List of http endpoints to be used by monitoring params";
1209 description "The HTTP path on the management server";
1214 description "Pick HTTPS instead of HTTP , Default is false";
1220 description "The HTTP port to connect to";
1221 type inet:port-number;
1225 description "The HTTP basic auth username";
1230 description "The HTTP basic auth password";
1234 leaf polling-interval-secs {
1235 description "The HTTP polling interval in seconds";
1242 "Method that the URI should perform.
1243 Deafult action is GET.";
1245 type manotypes:http-method;
1250 description "Custom HTTP headers to put on HTTP request";
1253 description "HTTP header key";
1258 description "HTTP header value";
1265 grouping monitoring-param-aggregation {
1266 typedef aggregation-type {
1268 "aggregation-type, indicates the way to aggregate monitoring-params
1269 (e.g. how to aggregate CPU utilisation of all VNFs belonging to the
1270 same VNF group identified by member-vnf-index; or how to aggregate
1271 memory utilisation of all VDUs belonging to the same VDU group
1272 identified by vdu id)";
1282 leaf aggregation-type {
1283 type aggregation-type;
1287 grouping monitoring-param-ui-data {
1293 description "A tag to group monitoring parameters";
1299 description "Defines the UI Display variant of measured counters.";
1300 type manotypes:widget-type;
1305 description "Measured Counter Units (e.g., Packets, Kbps, Mbps, etc.)";
1310 grouping monitoring-param-value {
1312 type param-value-type;
1316 container numeric-constraints {
1319 "Minimum value for the parameter";
1324 "Maximum value for the parameter";
1329 container text-constraints {
1332 "Minimum string length for the parameter";
1337 "Maximum string length for the parameter";
1342 leaf value-integer {
1344 "Current value for an integer parameter";
1348 leaf value-decimal {
1350 "Current value for a decimal parameter";
1358 "Current value for a string parameter";
1363 grouping control-param {
1364 list control-param {
1366 "List of control parameters to manage and
1367 update the running configuration of the VNF";
1371 description "Identifier for control parameter";
1376 description "Name of a control parameter";
1381 description "A description of the control parameter";
1386 description "A tag to group control parameters";
1392 "Minimum value for the parameter";
1398 "Maximum value for the parameter";
1402 leaf current-value {
1404 "Current value for the parameter";
1410 "Step value for the parameter";
1419 type manotypes:widget-type;
1424 "This is the URL where the operation should be performed.";
1431 "Method that the URI should perform.
1432 Default Action is POST";
1434 type manotypes:http-method;
1440 "This is the operation payload or payload template as stringified
1441 JSON. This field provides the data to be sent for this operation
1449 grouping action-param {
1452 "List of action parameters to
1468 description "A tag to group monitoring parameter";
1474 "This is the URL where to perform the operation";
1480 "This is the method to be performed at the uri.
1481 POST by default for action";
1483 type manotypes:http-method;
1489 "This is the operation payload or payload template to be sent in
1490 the data for this operation call";
1497 grouping input-parameter {
1498 description "List of input parameters that can be specified when instantiating a network service.";
1500 list input-parameter {
1502 "List of input parameters";
1509 "An xpath that specfies which element in a descriptor is to be
1516 "The value that the element specified by the xpath should take when a
1517 record is created.";
1523 grouping input-parameter-xpath {
1524 list input-parameter-xpath {
1526 "List of xpaths to parameters inside the NSD
1527 the can be customized during the instantiation.";
1532 "An xpath that specifies the element in a descriptor.";
1537 description "A descriptive string";
1541 leaf default-value {
1542 description "Default Value for the Input Parameter";
1548 grouping nfvi-metrics {
1552 "Label to show in UI";
1559 "The total number of VCPUs available.";
1565 "The VCPU utilization (percentage).";
1576 "Label to show in UI";
1583 "The amount of memory (bytes) currently in use.";
1589 "The amount of memory (bytes) available.";
1595 "The memory utilization (percentage).";
1606 "Label to show in UI";
1613 "The amount of storage (bytes) currently in use.";
1619 "The amount of storage (bytes) available.";
1625 "The storage utilization (percentage).";
1633 container external-ports {
1636 "Label to show in UI";
1638 default "EXTERNAL PORTS";
1643 "The total number of external ports.";
1648 container internal-ports {
1651 "Label to show in UI";
1653 default "INTERNAL PORTS";
1658 "The total number of internal ports.";
1666 "Label to show in UI";
1668 default "NETWORK TRAFFIC";
1671 container incoming {
1674 "Label to show in UI";
1676 default "INCOMING NETWORK TRAFFIC";
1681 "The cumulative number of incoming bytes.";
1687 "The cumulative number of incoming packets.";
1693 "The current incoming byte-rate (bytes per second).";
1701 "The current incoming packet (packets per second).";
1708 container outgoing {
1711 "Label to show in UI";
1713 default "OUTGOING NETWORK TRAFFIC";
1718 "The cumulative number of outgoing bytes.";
1724 "The cumulative number of outgoing packets.";
1730 "The current outgoing byte-rate (bytes per second).";
1738 "The current outgoing packet (packets per second).";
1747 typedef alarm-severity-type {
1748 description "An indication of the importance or urgency of the alarm";
1756 typedef alarm-metric-type {
1757 description "The type of metrics to register the alarm for";
1759 enum CPU_UTILIZATION;
1760 enum MEMORY_UTILIZATION;
1761 enum STORAGE_UTILIZATION;
1765 typedef alarm-statistic-type {
1767 "Statistic type to use to determine threshold crossing
1778 typedef relational-operation-type {
1780 "The relational operator used to define whether an alarm,
1781 scaling event, etc. should be triggered in certain scenarios,
1782 such as if the metric statistic goes above or below a specified
1785 enum GE; // greater than or equal
1786 enum LE; // less than or equal
1787 enum GT; // greater than
1788 enum LT; // less than
1793 grouping alarm-properties {
1795 description "A human readable string to identify the alarm";
1800 description "A description of this alarm";
1806 "The identifier of the VDUR that the alarm is associated with";
1818 list insufficient-data {
1835 "This flag indicates whether the alarm should be repeatedly emitted
1836 while the associated threshold has been crossed.";
1844 "This flag indicates whether the alarm has been enabled or
1852 description "A measure of the importance or urgency of the alarm";
1853 type alarm-severity-type;
1857 description "The type of metric statistic that is tracked by this alarm";
1858 type alarm-statistic-type;
1863 "The relational operator used to define whether an alarm should be
1864 triggered in certain scenarios, such as if the metric statistic
1865 goes above or below a specified value.";
1866 type relational-operation-type;
1871 "This value defines the threshold that, if crossed, will trigger
1880 "The period defines the length of time (seconds) that the metric
1881 data are collected over in oreder to evaluate the chosen
1888 "Defines the length of time (seconds) in which metric data are
1889 collected in order to evaluate the chosen statistic.";
1894 typedef cloud-account-type {
1895 description "VIM account type";
1899 enum cloudsim_proxy;
1908 grouping host-aggregate {
1909 list host-aggregate {
1910 description "Name of the Host Aggregate";
1915 "Name of the additional information attached to the host-aggregate";
1918 leaf metadata-value {
1920 "Value of the corresponding metadata-key";
1926 grouping placement-group-input {
1928 type manotypes:cloud-account-type;
1930 choice cloud-provider {
1932 container availability-zone {
1933 description "Name of the Availability Zone";
1938 container server-group {
1939 description "Name of the Affinity/Anti-Affinity Server Group";
1944 uses host-aggregate;
1947 leaf aws-construct {
1952 leaf openmano-construct {
1957 leaf vsphere-construct {
1962 leaf mock-construct {
1967 leaf cloudsim-construct {
1974 grouping cloud-config {
1977 description "Used to configure the list of public keys to be injected as part
1978 of ns instantiation";
1981 description "Name of this key pair";
1986 description "Key associated with this key pair";
1993 description "List of users to be added through cloud-config";
1996 description "Name of the user ";
2001 description "The user name's real name";
2007 description "Used to configure the list of public keys to be injected as part
2008 of ns instantiation";
2011 description "Name of this key pair";
2016 description "Key associated with this key pair";
2023 grouping placement-group-info {
2028 "Place group construct to define the compute resource placement strategy
2029 in cloud environment";
2034 description "This is free text space used to describe the intent/rationale
2035 behind this placement group. This is for human consumption only";
2041 "Strategy associated with this placement group
2042 Following values are possible
2043 - COLOCATION: Colocation strategy imply intent to share the physical
2044 infrastructure (hypervisor/network) among all members
2046 - ISOLATION: Isolation strategy imply intent to not share the physical
2047 infrastructure (hypervisor/network) among the members
2054 default "COLOCATION";
2058 grouping ip-profile-info {
2059 description "Grouping for IP-Profile";
2060 container ip-profile-params {
2063 type inet:ip-version;
2067 leaf subnet-address {
2068 description "Subnet IP prefix associated with IP Profile";
2069 type inet:ip-prefix;
2072 leaf gateway-address {
2073 description "IP Address of the default gateway associated with IP Profile";
2074 type inet:ip-address;
2077 leaf security-group {
2078 description "Name of the security group";
2085 description "List of DNS Servers associated with IP Profile";
2086 type inet:ip-address;
2090 container dhcp-params {
2092 description "This flag indicates if DHCP is enabled or not";
2097 leaf start-address {
2098 description "Start IP address of the IP-Address range associated with DHCP domain";
2099 type inet:ip-address;
2103 description "Size of the DHCP pool associated with DHCP domain";
2108 leaf subnet-prefix-pool {
2109 description "VIM Specific reference to pre-created subnet prefix";
2115 grouping ip-profile-list {
2118 "List of IP Profiles.
2119 IP Profile describes the IP characteristics for the Virtual-Link";
2124 description "Name of the IP-Profile";
2129 description "Description for IP profile";
2133 uses ip-profile-info;
2137 grouping config-file {
2138 description "Grouping for files needed to be mounted into an additional drive";
2141 "List of configuration files to be written on an additional drive";
2144 description "Name of the configuration file";
2148 description "Full path of the destination in the guest";
2154 grouping supplemental-boot-data {
2155 description "Grouping for custom vim data";
2156 container supplemental-boot-data {
2157 // uses manotypes:config-file;
2158 leaf boot-data-drive {
2159 description "Some VIMs implement additional drives to host config-files or meta-data";
2166 grouping volume-info {
2167 description "Grouping for Volume-info";
2170 description "Description for Volume";
2175 description "Size of disk in GB";
2179 choice volume-source {
2181 "Defines the source of the volume. Possible options are
2182 1. Ephemeral -- Empty disk
2183 2. Image -- Refer to image to be used for volume
2184 3. Volume -- Reference of pre-existing volume to be used
2194 uses image-properties;
2199 description "Type of disk-bus on which this disk is exposed to guest";
2209 description "The type of device as exposed to guest";
2219 grouping rpc-project-name {
2223 "Project to which this belongs";
2225 path "/osm-project:project/osm-project:name";