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 ns-configuration {
302 "Information about NS configuration. Note:
303 In the future this should be equivalent to vca-configuration
306 uses manotypes:configuration-method;
309 grouping vca-configuration {
311 "Information about the VNF or VDU configuration. Note:
312 If the NS contains multiple instances of the
313 same VNF or VDU, each instance could have a different
316 uses manotypes:configuration-method;
318 list config-primitive {
320 "List of config primitives supported by the
321 configuration agent for this VNF or VDU.";
326 "Name of the config primitive.";
332 "List of parameters to the config primitive.";
334 uses primitive-parameter;
337 leaf user-defined-script {
339 "A user defined script. If user defined script is defined,
340 the script will be executed using bash";
345 list initial-config-primitive {
347 "Initial set of configuration primitives.";
351 "Sequence number for the configuration primitive.";
355 choice primitive-type {
356 case primitive-definition {
359 "Name of the configuration primitive.";
363 uses primitive-parameter-value;
365 leaf user-defined-script {
367 "A user defined script.";
374 list terminate-config-primitive {
376 "Terminate set of configuration primitives.";
380 "Sequence number for the configuration primitive.";
385 "Name of the configuration primitive.";
389 uses primitive-parameter-value;
391 leaf user-defined-script {
393 "A user defined script.";
397 uses manotypes:vca-metrics;
399 } // END - grouping vca-configuration
401 typedef virtual-link-type {
403 "Type of virtual link
404 ELAN: A multipoint service connecting a set of VNFs
405 ELINE: For a simple point to point connection
406 // between a VNF and the existing network.
407 // ETREE: A multipoint service connecting one or
408 // more roots and a set of leaves, but
409 // preventing inter-leaf communication.";
417 grouping named-value {
427 typedef http-method {
429 "Type of HTTP operation";
443 "Type of API to fetch monitoring parameters";
452 typedef json-query-method {
454 "The method to extract a value from a JSON response
456 NAMEKEY - Use the name as the key for a non-nested value.
457 JSONPATH - Use jsonpath-rw implementation to extract a value.
458 OBJECTPATH - Use objectpath implementation to extract a value.";
466 typedef param-value-type {
468 "The type of the parameter value";
476 typedef connection-point-type {
478 "Type of connection point
480 // VNIC_ADDR: Virtual NIC Address
481 // PNIC_ADDR: Physical NIC Address
482 // PPORT: Physical Port.";
489 typedef widget-type {
491 "Type of the widget, typically used by the UI.";
502 typedef cpu-feature-type {
504 "Enumeration for CPU features.
506 AES: CPU supports advanced instruction set for
507 AES (Advanced Encryption Standard).
509 CAT: Cache Allocation Technology (CAT) allows
510 an Operating System, Hypervisor, or similar
511 system management agent to specify the amount
512 of L3 cache (currently the last-level cache
513 in most server and client platforms) space an
514 application can fill (as a hint to hardware
515 functionality, certain features such as power
516 management may override CAT settings).
518 CMT: Cache Monitoring Technology (CMT) allows
519 an Operating System, Hypervisor, or similar
520 system management agent to determine the
521 usage of cache based on applications running
522 on the platform. The implementation is
523 directed at L3 cache monitoring (currently
524 the last-level cache in most server and
527 DDIO: Intel Data Direct I/O (DDIO) enables
528 Ethernet server NICs and controllers talk
529 directly to the processor cache without a
530 detour via system memory. This enumeration
531 specifies if the VM requires a DDIO
575 enum REQUIRE_CLFLUSH;
603 enum REQUIRE_PCLMULQDQ;
604 enum PREFER_PCLMULQDQ;
607 enum REQUIRE_MONITOR;
645 enum REQUIRE_TSC_DEADLINE_TIMER;
646 enum PREFER_TSC_DEADLINE_TIMER;
655 enum REQUIRE_FSGSBASE;
656 enum PREFER_FSGSBASE;
669 enum REQUIRE_INVPCID;
684 typedef nfvi-metric-type {
685 description "Type of NFVI metric to be monitored";
687 enum cpu_utilization;
688 enum average_memory_utilization;
691 enum disk_read_bytes;
692 enum disk_write_bytes;
694 enum packets_received;
695 enum packets_in_dropped;
696 enum packets_out_dropped;
700 typedef scaling-trigger {
711 enum post-scale-out {
717 typedef scaling-policy-type {
728 typedef scaling-criteria-operation {
740 container vm-flavor {
743 "Number of VCPUs for the VM.";
749 "Amount of memory in MB.";
755 "Amount of disk space in GB.";
759 } //grouping vm-flavor
761 grouping vm-flavor-name {
762 leaf vm-flavor-name {
763 description "flavor name to be used while creating vm using cloud account";
768 grouping vswitch-epa {
769 container vswitch-epa {
770 leaf ovs-acceleration {
772 "Specifies Open vSwitch acceleration mode.
773 MANDATORY: OVS acceleration is required
774 PREFERRED: OVS acceleration is preferred";
784 "Specifies Open vSwitch hardware offload mode.
785 MANDATORY: OVS offload is required
786 PREFERRED: OVS offload is preferred";
796 grouping hypervisor-epa {
797 container hypervisor-epa {
800 "Specifies the type of hypervisor.
816 description "Specifies the host level EPA attributes.";
819 "Host CPU model. Examples include: SandyBridge,
822 enum PREFER_WESTMERE;
823 enum REQUIRE_WESTMERE;
824 enum PREFER_SANDYBRIDGE;
825 enum REQUIRE_SANDYBRIDGE;
826 enum PREFER_IVYBRIDGE;
827 enum REQUIRE_IVYBRIDGE;
829 enum REQUIRE_HASWELL;
830 enum PREFER_BROADWELL;
831 enum REQUIRE_BROADWELL;
833 enum REQUIRE_NEHALEM;
838 enum PREFER_CORE2DUO;
839 enum REQUIRE_CORE2DUO;
844 description "Host CPU architecture.";
862 description "Host CPU Vendor.";
871 leaf cpu-socket-count {
872 description "Number of sockets on the host.";
876 leaf cpu-core-count {
877 description "Number of cores on the host.";
881 leaf cpu-core-thread-count {
882 description "Number of threads per cores on the host.";
888 description "List of CPU features.";
890 description "CPU feature.";
891 type cpu-feature-type;
895 leaf om-cpu-model-string {
896 description "OpenMANO CPU model string";
900 list om-cpu-feature {
902 description "List of OpenMANO CPU features";
904 description "CPU feature";
913 description "EPA attributes for the guest";
914 container guest-epa {
915 leaf trusted-execution {
916 description "This VM should be allocated from trusted pool";
922 "Memory page allocation size. If a VM requires
923 hugepages, it should choose LARGE or SIZE_2MB
924 or SIZE_1GB. If the VM prefers hugepages it
925 should choose PREFER_LARGE.
926 LARGE : Require hugepages (either 2MB or 1GB)
927 SMALL : Doesn't require hugepages
928 SIZE_2MB : Requires 2MB hugepages
929 SIZE_1GB : Requires 1GB hugepages
930 PREFER_LARGE : Application prefers hugepages";
942 leaf cpu-pinning-policy {
944 "CPU pinning policy describes association
945 between virtual CPUs in guest and the
946 physical CPUs in the host.
947 DEDICATED : Virtual CPUs are pinned to
949 SHARED : Multiple VMs may share the
951 ANY : Any policy is acceptable for the VM";
959 leaf cpu-thread-pinning-policy {
961 "CPU thread pinning policy describes how to
962 place the guest CPUs when the host supports
964 AVOID : Avoids placing a guest on a host
966 SEPARATE: Places vCPUs on separate cores,
967 and avoids placing two vCPUs on
968 two threads of same core.
969 ISOLATE : Places each vCPU on a different core,
970 and places no vCPUs from a different
971 guest on the same core.
972 PREFER : Attempts to place vCPUs on threads
984 container cpu-quota {
985 description "CPU quota describes the CPU resource allocation policy.
986 Limit and Reserve values are defined in MHz";
987 uses allocation-properties;
992 container mem-quota {
993 description "Memory quota describes the memory resource allocation policy.
994 Limit and Reserve values are defined in MB";
995 uses allocation-properties;
998 container disk-io-quota {
999 description "Disk IO quota describes the disk IO operations resource allocation policy.
1000 Limit and Reserve values are defined in IOPS";
1001 uses allocation-properties;
1004 container vif-quota {
1005 description "Virtual interfaces quota describes the virtual interface bandwidth resource allocation policy.
1006 Limit and Reserve values are defined in Mbps";
1007 uses allocation-properties;
1012 "List of pcie passthrough devices.";
1016 "Device identifier.";
1021 "Number of devices to attach to the VM.";
1026 choice numa-policy {
1034 container numa-node-policy {
1036 "This policy defines NUMA topology of the
1037 guest. Specifically identifies if the guest
1038 should be run on a host with one NUMA
1039 node or multiple NUMA nodes. As an example
1040 a guest might need 8 VCPUs and 4 GB of
1041 memory. However, it might need the VCPUs
1042 and memory distributed across multiple
1043 NUMA nodes. In this scenario, NUMA node
1044 1 could run with 6 VCPUs and 3GB, and
1045 NUMA node 2 could run with 2 VCPUs and
1050 "The number of NUMA nodes to expose to the VM.";
1056 "This policy specifies how the memory should
1057 be allocated in a multi-node scenario.
1058 STRICT : The memory must be allocated
1059 strictly from the memory attached
1061 PREFERRED : The memory should be allocated
1062 preferentially from the memory
1063 attached to the NUMA node";
1074 "NUMA node identification. Typically
1082 "List of VCPUs to allocate on
1086 description "List of VCPUs ids to allocate on
1093 "Memory size expressed in MB
1094 for this NUMA node.";
1098 choice om-numa-type {
1100 "OpenMANO Numa type selection";
1108 case paired-threads {
1109 container paired-threads {
1110 leaf num-paired-threads {
1114 list paired-thread-ids {
1116 "List of thread pairs to use in case of paired-thread NUMA";
1144 grouping allocation-properties {
1146 description "Defines the maximum allocation. The value 0 indicates that usage is not limited.
1147 This parameter ensures that the instance never uses more than the defined amount of resource.";
1152 description "Defines the guaranteed minimum reservation.
1153 If needed, the machine will definitely get allocated the reserved amount of resources.";
1158 description "Number of shares allocated.
1159 Specifies the proportional weighted share for the domain.
1160 If this element is omitted, the service defaults to the OS provided defaults";
1165 grouping provider-network {
1166 container provider-network {
1167 description "Container for the provider network.";
1168 leaf physical-network {
1170 "Name of the physical network on which the provider
1175 leaf segmentation_id {
1177 "ID of segregated virtual networks";
1183 grouping ns-service-primitive {
1184 list service-primitive {
1186 "Network service level service primitives.";
1192 "Name of the service primitive.";
1198 "List of parameters for the service primitive.";
1201 uses manotypes:primitive-parameter;
1204 list parameter-group {
1206 "Grouping of parameters which are logically grouped in UI";
1211 "Name of the parameter group";
1217 "List of parameters for the service primitive.";
1219 uses manotypes:primitive-parameter;
1223 description "Is this parameter group mandatory";
1229 list vnf-primitive-group {
1231 "List of service primitives grouped by VNF.";
1233 key "member-vnf-index-ref";
1234 leaf member-vnf-index-ref {
1236 "Reference to member-vnf within constituent-vnfds";
1242 "A reference to a vnfd. This is a
1244 ../../../../nsd:constituent-vnfd
1245 + [nsd:id = current()/../nsd:id-ref]
1247 NOTE: An issue with confd is preventing the
1248 use of xpath. Seems to be an issue with leafref
1249 to leafref, whose target is in a different module.
1250 Once that is resolved this will switched to use
1266 description "Index of this primitive";
1271 description "Name of the primitive in the VNF primitive ";
1277 leaf user-defined-script {
1279 "A user defined script.";
1285 grouping http-endpoints {
1286 list http-endpoint {
1288 "List of http endpoints to be used by monitoring params";
1292 description "The HTTP path on the management server";
1297 description "Pick HTTPS instead of HTTP , Default is false";
1303 description "The HTTP port to connect to";
1304 type inet:port-number;
1308 description "The HTTP basic auth username";
1313 description "The HTTP basic auth password";
1317 leaf polling-interval-secs {
1318 description "The HTTP polling interval in seconds";
1325 "Method that the URI should perform.
1326 Deafult action is GET.";
1328 type manotypes:http-method;
1333 description "Custom HTTP headers to put on HTTP request";
1336 description "HTTP header key";
1341 description "HTTP header value";
1348 grouping monitoring-param-aggregation {
1349 typedef aggregation-type {
1351 "aggregation-type, indicates the way to aggregate monitoring-params
1352 (e.g. how to aggregate CPU utilisation of all VNFs belonging to the
1353 same VNF group identified by member-vnf-index; or how to aggregate
1354 memory utilisation of all VDUs belonging to the same VDU group
1355 identified by vdu id)";
1365 leaf aggregation-type {
1366 type aggregation-type;
1370 grouping monitoring-param-ui-data {
1376 description "A tag to group monitoring parameters";
1382 description "Defines the UI Display variant of measured counters.";
1383 type manotypes:widget-type;
1388 description "Measured Counter Units (e.g., Packets, Kbps, Mbps, etc.)";
1393 grouping monitoring-param-value {
1395 type param-value-type;
1399 container numeric-constraints {
1402 "Minimum value for the parameter";
1407 "Maximum value for the parameter";
1412 container text-constraints {
1415 "Minimum string length for the parameter";
1420 "Maximum string length for the parameter";
1425 leaf value-integer {
1427 "Current value for an integer parameter";
1431 leaf value-decimal {
1433 "Current value for a decimal parameter";
1441 "Current value for a string parameter";
1446 grouping control-param {
1447 list control-param {
1449 "List of control parameters to manage and
1450 update the running configuration of the VNF";
1454 description "Identifier for control parameter";
1459 description "Name of a control parameter";
1464 description "A description of the control parameter";
1469 description "A tag to group control parameters";
1475 "Minimum value for the parameter";
1481 "Maximum value for the parameter";
1485 leaf current-value {
1487 "Current value for the parameter";
1493 "Step value for the parameter";
1502 type manotypes:widget-type;
1507 "This is the URL where the operation should be performed.";
1514 "Method that the URI should perform.
1515 Default Action is POST";
1517 type manotypes:http-method;
1523 "This is the operation payload or payload template as stringified
1524 JSON. This field provides the data to be sent for this operation
1532 grouping action-param {
1535 "List of action parameters to
1551 description "A tag to group monitoring parameter";
1557 "This is the URL where to perform the operation";
1563 "This is the method to be performed at the uri.
1564 POST by default for action";
1566 type manotypes:http-method;
1572 "This is the operation payload or payload template to be sent in
1573 the data for this operation call";
1580 grouping input-parameter {
1581 description "List of input parameters that can be specified when instantiating a network service.";
1583 list input-parameter {
1585 "List of input parameters";
1592 "An xpath that specfies which element in a descriptor is to be
1599 "The value that the element specified by the xpath should take when a
1600 record is created.";
1606 grouping input-parameter-xpath {
1607 list input-parameter-xpath {
1609 "List of xpaths to parameters inside the NSD
1610 the can be customized during the instantiation.";
1615 "An xpath that specifies the element in a descriptor.";
1620 description "A descriptive string";
1624 leaf default-value {
1625 description "Default Value for the Input Parameter";
1631 grouping nfvi-metrics {
1635 "Label to show in UI";
1642 "The total number of VCPUs available.";
1648 "The VCPU utilization (percentage).";
1659 "Label to show in UI";
1666 "The amount of memory (bytes) currently in use.";
1672 "The amount of memory (bytes) available.";
1678 "The memory utilization (percentage).";
1689 "Label to show in UI";
1696 "The amount of storage (bytes) currently in use.";
1702 "The amount of storage (bytes) available.";
1708 "The storage utilization (percentage).";
1716 container external-ports {
1719 "Label to show in UI";
1721 default "EXTERNAL PORTS";
1726 "The total number of external ports.";
1731 container internal-ports {
1734 "Label to show in UI";
1736 default "INTERNAL PORTS";
1741 "The total number of internal ports.";
1749 "Label to show in UI";
1751 default "NETWORK TRAFFIC";
1754 container incoming {
1757 "Label to show in UI";
1759 default "INCOMING NETWORK TRAFFIC";
1764 "The cumulative number of incoming bytes.";
1770 "The cumulative number of incoming packets.";
1776 "The current incoming byte-rate (bytes per second).";
1784 "The current incoming packet (packets per second).";
1791 container outgoing {
1794 "Label to show in UI";
1796 default "OUTGOING NETWORK TRAFFIC";
1801 "The cumulative number of outgoing bytes.";
1807 "The cumulative number of outgoing packets.";
1813 "The current outgoing byte-rate (bytes per second).";
1821 "The current outgoing packet (packets per second).";
1830 typedef alarm-severity-type {
1831 description "An indication of the importance or urgency of the alarm";
1839 typedef alarm-metric-type {
1840 description "The type of metrics to register the alarm for";
1842 enum CPU_UTILIZATION;
1843 enum MEMORY_UTILIZATION;
1844 enum STORAGE_UTILIZATION;
1848 typedef alarm-statistic-type {
1850 "Statistic type to use to determine threshold crossing
1861 typedef relational-operation-type {
1863 "The relational operator used to define whether an alarm,
1864 scaling event, etc. should be triggered in certain scenarios,
1865 such as if the metric statistic goes above or below a specified
1868 enum GE; // greater than or equal
1869 enum LE; // less than or equal
1870 enum GT; // greater than
1871 enum LT; // less than
1876 grouping alarm-properties {
1878 description "A human readable string to identify the alarm";
1883 description "A description of this alarm";
1889 "The identifier of the VDUR that the alarm is associated with";
1901 list insufficient-data {
1918 "This flag indicates whether the alarm should be repeatedly emitted
1919 while the associated threshold has been crossed.";
1927 "This flag indicates whether the alarm has been enabled or
1935 description "A measure of the importance or urgency of the alarm";
1936 type alarm-severity-type;
1940 description "The type of metric statistic that is tracked by this alarm";
1941 type alarm-statistic-type;
1946 "The relational operator used to define whether an alarm should be
1947 triggered in certain scenarios, such as if the metric statistic
1948 goes above or below a specified value.";
1949 type relational-operation-type;
1954 "This value defines the threshold that, if crossed, will trigger
1963 "The period defines the length of time (seconds) that the metric
1964 data are collected over in oreder to evaluate the chosen
1971 "Defines the length of time (seconds) in which metric data are
1972 collected in order to evaluate the chosen statistic.";
1977 typedef cloud-account-type {
1978 description "VIM account type";
1982 enum cloudsim_proxy;
1991 grouping host-aggregate {
1992 list host-aggregate {
1993 description "Name of the Host Aggregate";
1998 "Name of the additional information attached to the host-aggregate";
2001 leaf metadata-value {
2003 "Value of the corresponding metadata-key";
2009 grouping placement-group-input {
2011 type manotypes:cloud-account-type;
2013 choice cloud-provider {
2015 container availability-zone {
2016 description "Name of the Availability Zone";
2021 container server-group {
2022 description "Name of the Affinity/Anti-Affinity Server Group";
2027 uses host-aggregate;
2030 leaf aws-construct {
2035 leaf openmano-construct {
2040 leaf vsphere-construct {
2045 leaf mock-construct {
2050 leaf cloudsim-construct {
2057 grouping cloud-config {
2060 description "Used to configure the list of public keys to be injected as part
2061 of ns instantiation";
2064 description "Name of this key pair";
2069 description "Key associated with this key pair";
2076 description "List of users to be added through cloud-config";
2079 description "Name of the user ";
2084 description "The user name's real name";
2090 description "Used to configure the list of public keys to be injected as part
2091 of ns instantiation";
2094 description "Name of this key pair";
2099 description "Key associated with this key pair";
2106 grouping placement-group-info {
2111 "Place group construct to define the compute resource placement strategy
2112 in cloud environment";
2117 description "This is free text space used to describe the intent/rationale
2118 behind this placement group. This is for human consumption only";
2124 "Strategy associated with this placement group
2125 Following values are possible
2126 - COLOCATION: Colocation strategy imply intent to share the physical
2127 infrastructure (hypervisor/network) among all members
2129 - ISOLATION: Isolation strategy imply intent to not share the physical
2130 infrastructure (hypervisor/network) among the members
2137 default "COLOCATION";
2141 grouping ip-profile-info {
2142 description "Grouping for IP-Profile";
2143 container ip-profile-params {
2146 type inet:ip-version;
2150 leaf subnet-address {
2151 description "Subnet IP prefix associated with IP Profile";
2152 type inet:ip-prefix;
2155 leaf gateway-address {
2156 description "IP Address of the default gateway associated with IP Profile";
2157 type inet:ip-address;
2160 leaf security-group {
2161 description "Name of the security group";
2168 description "List of DNS Servers associated with IP Profile";
2169 type inet:ip-address;
2173 container dhcp-params {
2175 description "This flag indicates if DHCP is enabled or not";
2180 leaf start-address {
2181 description "Start IP address of the IP-Address range associated with DHCP domain";
2182 type inet:ip-address;
2186 description "Size of the DHCP pool associated with DHCP domain";
2191 leaf subnet-prefix-pool {
2192 description "VIM Specific reference to pre-created subnet prefix";
2198 grouping ip-profile-list {
2201 "List of IP Profiles.
2202 IP Profile describes the IP characteristics for the Virtual-Link";
2207 description "Name of the IP-Profile";
2212 description "Description for IP profile";
2216 uses ip-profile-info;
2220 grouping config-file {
2221 description "Grouping for files needed to be mounted into an additional drive";
2224 "List of configuration files to be written on an additional drive";
2227 description "Name of the configuration file";
2231 description "Full path of the destination in the guest";
2237 grouping supplemental-boot-data {
2238 description "Grouping for custom vim data";
2239 container supplemental-boot-data {
2240 // uses manotypes:config-file;
2241 leaf boot-data-drive {
2242 description "Some VIMs implement additional drives to host config-files or meta-data";
2249 grouping volume-info {
2250 description "Grouping for Volume-info";
2253 description "Description for Volume";
2258 description "Size of disk in GB";
2262 choice volume-source {
2264 "Defines the source of the volume. Possible options are
2265 1. Ephemeral -- Empty disk
2266 2. Image -- Refer to image to be used for volume
2267 3. Volume -- Reference of pre-existing volume to be used
2277 uses image-properties;
2282 description "Type of disk-bus on which this disk is exposed to guest";
2292 description "The type of device as exposed to guest";
2302 grouping rpc-project-name {
2306 "Project to which this belongs";
2308 path "/osm-project:project/osm-project:name";