4 * Copyright 2016-2017 RIFT.IO Inc
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
23 namespace "urn:etsi:osm:yang:mano-types";
26 import ietf-inet-types {
36 "Update model to support projects.";
41 "Initial revision. This YANG file defines
42 the reusable base types for VNF Management
43 and Orchestration (MANO).";
45 "Derived from earlier versions of base YANG files";
48 typedef meta-data-type {
54 typedef package-type {
55 description "Type of descriptor being on-boarded";
62 typedef parameter-data-type {
70 grouping primitive-parameter-value {
73 "List of parameters to the configuration primitive.";
77 "Name of the parameter.";
83 "Data type associated with the value.";
84 type manotypes:parameter-data-type;
89 "Value associated with the name.";
95 grouping primitive-parameter {
98 "Name of the parameter.";
104 "Data type associated with the name.";
105 type manotypes:parameter-data-type;
109 description "Is this field mandatory";
115 description "The default value for this field";
119 leaf parameter-pool {
120 description "NSD parameter pool name to use for this parameter";
126 "The value should be dimmed by the UI.
127 Only applies to parameters with default values.";
134 "The value should be hidden by the UI.
135 Only applies to parameters with default values.";
141 grouping ui-primitive-group {
142 list parameter-group {
144 "Grouping of parameters which are logically grouped in UI";
149 "Name of the parameter group";
155 "List of parameters for the service primitive.";
157 uses manotypes:primitive-parameter;
161 description "Is this parameter group mandatory";
168 grouping event-config {
171 "Sequence number for the configuration primitive.";
177 "Name of the configuration primitive.";
182 leaf user-defined-script {
184 "A user defined script.";
195 description "Value of the configuration primitive.";
201 grouping image-properties {
204 "Image name for the software image.
205 If the image name is found within the VNF package it will
206 be uploaded to all VIM accounts during onboarding process.
207 Otherwise, the image must be added to the VIM account with
208 the same name as entered here.
213 leaf image-checksum {
215 "Image md5sum for the software image.
216 The md5sum, if provided, along with the image name uniquely
217 identifies an image uploaded to the CAL.
224 grouping vca-relations {
226 description "List of relations between elements in this descriptor.";
231 "Name of the relation.";
238 "List of two elements to be related.
239 Elements to be related are identified by a pair (id, endpoint).
240 The relation will relate (id1, endpoint1) to (id2, endpoint2).";
245 "A string, reference to the element id in the descriptor.
246 It could be a vnfd-id or a vdu-id in a VNFD,
247 or a nsd-id or member-vnf-index in a NSD.";
253 "Endpoint name defining the relation.";
260 grouping vca-metrics {
262 "Information about the VNF or VDU metrics";
264 description "List of VCA related metrics";
268 "Name of the metric, as defined in the Juju charm.";
271 leaf execution-environment-ref {
273 "Leaf reference to the particular execution environment getting that metric";
275 path "../../execution-environment-list/id";
278 leaf execution-environment-metric {
280 "Metric in the execution environment referenced by execution-environment-ref";
284 } // END - grouping vca-metrics
286 grouping configuration-method {
287 choice config-method {
289 "Defines the configuration method for the VNF or VDU.";
292 "Use custom script for configuring the VNF or VDU.
293 This script is executed in the context of
294 Orchestrator (The same system and environment
299 "Script type - currently supported - Scripts confirming to Rift CA plugin";
309 "Configure the VNF or VDU through Juju.";
312 description "Juju charm to use with the VNF or VDU.";
316 description "Is this a proxy charm?";
322 "Type of cloud where the charm will be deployed. It only
323 applies to proxy charms (not native)";
333 case execution-environment-list {
335 "List of Execution Environments to configure or monitor VNF or VDU.";
336 list execution-environment-list {
339 description "Execution environment identifier.";
342 choice execution-environment-model {
343 description "Execution environment model (juju, helm-chart)";
346 "Interact with the VNF or xDU through Juju.";
349 description "Juju charm to use with the VNF or VDU.";
353 description "Is this a proxy charm?";
359 "Type of cloud where the charm will be deployed. It only
360 applies to proxy charms (not native)";
371 "Interact with the VNF or xDU through Helm.";
374 "Helm chart that models the execution environment, in any of the following ways:
375 - <helm-repo>/<helm-chart>
376 - <helm-chart folder name under helm-charts folder in the package>
377 - <helm-chart tgz file (w/ or w/o extension) under helm-charts folder in the package>
378 - <URL_where_to_fetch_chart>
384 "Helm version to use for this helm-chart, v3 by default";
392 leaf metric-service {
394 "Service name in the execution environment. For helm charts, it will be
395 the name of the kubernetes service used by the exporter to expose metrics
396 to the OSM collector.
400 leaf connection-point-ref {
402 "String representing a leaf reference to the particular external connection point
403 This field should match /vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id/vnfd:connection-point/vnfd:name
407 // path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id/vnfd:connection-point/vnfd:name";
416 grouping vca-config-access {
418 container config-access {
421 "Indicates the way to access to the xNF or xDU for VCA configuration.
422 For the moment there is a single way (ssh-access).";
424 container ssh-access {
427 "If the xNF requires ssh and this parameter is set, SSH keys
428 will be injected so that VCA can configure the xNF or xDU via ssh.";
431 description "whether ssh access is needed or not";
437 description "Default user for ssh";
442 } // END - grouping vca-config-access
444 grouping vca-configuration {
446 "Common information in the descriptors for NS, VNF or VDU configuration.
447 Note: If the NS contains multiple instances of the
448 same VNF or VDU, each instance could have a different
451 uses manotypes:configuration-method;
453 list config-primitive {
455 "List of config primitives supported by the
456 configuration agent for this VNF or VDU.";
461 "Name of the config primitive.";
465 leaf execution-environment-ref {
467 "Leaf reference to the particular execution environment";
469 path "../../execution-environment-list/id";
473 leaf execution-environment-primitive {
475 "Name of the primitive in the execution enviroment. If not explicit,
476 the leaf 'name' will be used as the name of the primitive.";
482 "List of parameters to the config primitive.";
484 uses primitive-parameter;
487 leaf user-defined-script {
489 "A user defined script. If user defined script is defined,
490 the script will be executed using bash";
495 list initial-config-primitive {
497 "Initial set of configuration primitives.";
501 "Sequence number for the configuration primitive.";
505 choice primitive-type {
506 case primitive-definition {
509 "Name of the configuration primitive in the execution environment.";
513 leaf execution-environment-ref {
515 "Leaf reference to the particular execution environment";
517 path "../../execution-environment-list/id";
521 uses primitive-parameter-value;
523 leaf user-defined-script {
525 "A user defined script.";
532 list terminate-config-primitive {
534 "Terminate set of configuration primitives.";
538 "Sequence number for the configuration primitive.";
543 "Name of the configuration primitive in the execution environment.";
547 leaf execution-environment-ref {
549 "Leaf reference to the particular execution environment";
551 path "../../execution-environment-list/id";
555 uses primitive-parameter-value;
557 leaf user-defined-script {
559 "A user defined script.";
563 uses manotypes:vca-metrics;
565 } // END - grouping vca-configuration
567 typedef virtual-link-type {
569 "Type of virtual link
570 ELAN: A multipoint service connecting a set of elements
571 ELINE: A point-to-point service connecting two elements
572 L3: A service providing either Layer-3 visibility (IP) between
573 VDUs/VNFs or explicit interconnection between two ELAN VLDs.";
574 // ETREE: A multipoint service connecting one or
575 // more roots and a set of leaves, but
576 // preventing inter-leaf communication.";
585 grouping named-value {
595 typedef http-method {
597 "Type of HTTP operation";
611 "Type of API to fetch monitoring parameters";
620 typedef json-query-method {
622 "The method to extract a value from a JSON response
624 NAMEKEY - Use the name as the key for a non-nested value.
625 JSONPATH - Use jsonpath-rw implementation to extract a value.
626 OBJECTPATH - Use objectpath implementation to extract a value.";
634 typedef param-value-type {
636 "The type of the parameter value";
644 typedef connection-point-type {
646 "Type of connection point
648 // VNIC_ADDR: Virtual NIC Address
649 // PNIC_ADDR: Physical NIC Address
650 // PPORT: Physical Port.";
657 typedef widget-type {
659 "Type of the widget, typically used by the UI.";
670 typedef cpu-feature-type {
672 "Enumeration for CPU features.
674 AES: CPU supports advanced instruction set for
675 AES (Advanced Encryption Standard).
677 CAT: Cache Allocation Technology (CAT) allows
678 an Operating System, Hypervisor, or similar
679 system management agent to specify the amount
680 of L3 cache (currently the last-level cache
681 in most server and client platforms) space an
682 application can fill (as a hint to hardware
683 functionality, certain features such as power
684 management may override CAT settings).
686 CMT: Cache Monitoring Technology (CMT) allows
687 an Operating System, Hypervisor, or similar
688 system management agent to determine the
689 usage of cache based on applications running
690 on the platform. The implementation is
691 directed at L3 cache monitoring (currently
692 the last-level cache in most server and
695 DDIO: Intel Data Direct I/O (DDIO) enables
696 Ethernet server NICs and controllers talk
697 directly to the processor cache without a
698 detour via system memory. This enumeration
699 specifies if the VM requires a DDIO
743 enum REQUIRE_CLFLUSH;
771 enum REQUIRE_PCLMULQDQ;
772 enum PREFER_PCLMULQDQ;
775 enum REQUIRE_MONITOR;
813 enum REQUIRE_TSC_DEADLINE_TIMER;
814 enum PREFER_TSC_DEADLINE_TIMER;
823 enum REQUIRE_FSGSBASE;
824 enum PREFER_FSGSBASE;
837 enum REQUIRE_INVPCID;
852 typedef nfvi-metric-type {
853 description "Type of NFVI metric to be monitored";
855 enum cpu_utilization;
856 enum average_memory_utilization;
859 enum disk_read_bytes;
860 enum disk_write_bytes;
862 enum packets_received;
863 enum packets_in_dropped;
864 enum packets_out_dropped;
868 typedef scaling-trigger {
879 enum post-scale-out {
885 typedef scaling-policy-type {
896 typedef scaling-criteria-operation {
908 container vm-flavor {
911 "Number of VCPUs for the VM.";
917 "Amount of memory in MB.";
923 "Amount of disk space in GB.";
927 } //grouping vm-flavor
929 grouping vm-flavor-name {
930 leaf vm-flavor-name {
931 description "flavor name to be used while creating vm using cloud account";
936 grouping vswitch-epa {
937 container vswitch-epa {
938 leaf ovs-acceleration {
940 "Specifies Open vSwitch acceleration mode.
941 MANDATORY: OVS acceleration is required
942 PREFERRED: OVS acceleration is preferred";
952 "Specifies Open vSwitch hardware offload mode.
953 MANDATORY: OVS offload is required
954 PREFERRED: OVS offload is preferred";
964 grouping hypervisor-epa {
965 container hypervisor-epa {
968 "Specifies the type of hypervisor.
984 description "Specifies the host level EPA attributes.";
987 "Host CPU model. Examples include: SandyBridge,
990 enum PREFER_WESTMERE;
991 enum REQUIRE_WESTMERE;
992 enum PREFER_SANDYBRIDGE;
993 enum REQUIRE_SANDYBRIDGE;
994 enum PREFER_IVYBRIDGE;
995 enum REQUIRE_IVYBRIDGE;
997 enum REQUIRE_HASWELL;
998 enum PREFER_BROADWELL;
999 enum REQUIRE_BROADWELL;
1000 enum PREFER_NEHALEM;
1001 enum REQUIRE_NEHALEM;
1003 enum REQUIRE_PENRYN;
1005 enum REQUIRE_CONROE;
1006 enum PREFER_CORE2DUO;
1007 enum REQUIRE_CORE2DUO;
1012 description "Host CPU architecture.";
1017 enum REQUIRE_X86_64;
1030 description "Host CPU Vendor.";
1039 leaf cpu-socket-count {
1040 description "Number of sockets on the host.";
1044 leaf cpu-core-count {
1045 description "Number of cores on the host.";
1049 leaf cpu-core-thread-count {
1050 description "Number of threads per cores on the host.";
1056 description "List of CPU features.";
1058 description "CPU feature.";
1059 type cpu-feature-type;
1063 leaf om-cpu-model-string {
1064 description "OpenMANO CPU model string";
1068 list om-cpu-feature {
1070 description "List of OpenMANO CPU features";
1072 description "CPU feature";
1080 grouping guest-epa {
1081 description "EPA attributes for the guest";
1082 container guest-epa {
1083 leaf trusted-execution {
1084 description "This VM should be allocated from trusted pool";
1090 "Memory page allocation size. If a VM requires
1091 hugepages, it should choose LARGE or SIZE_2MB
1092 or SIZE_1GB. If the VM prefers hugepages it
1093 should choose PREFER_LARGE.
1094 LARGE : Require hugepages (either 2MB or 1GB)
1095 SMALL : Doesn't require hugepages
1096 SIZE_2MB : Requires 2MB hugepages
1097 SIZE_1GB : Requires 1GB hugepages
1098 PREFER_LARGE : Application prefers hugepages";
1110 leaf cpu-pinning-policy {
1112 "CPU pinning policy describes association
1113 between virtual CPUs in guest and the
1114 physical CPUs in the host.
1115 DEDICATED : Virtual CPUs are pinned to
1117 SHARED : Multiple VMs may share the
1119 ANY : Any policy is acceptable for the VM";
1127 leaf cpu-thread-pinning-policy {
1129 "CPU thread pinning policy describes how to
1130 place the guest CPUs when the host supports
1132 AVOID : Avoids placing a guest on a host
1134 SEPARATE: Places vCPUs on separate cores,
1135 and avoids placing two vCPUs on
1136 two threads of same core.
1137 ISOLATE : Places each vCPU on a different core,
1138 and places no vCPUs from a different
1139 guest on the same core.
1140 PREFER : Attempts to place vCPUs on threads
1152 container cpu-quota {
1153 description "CPU quota describes the CPU resource allocation policy.
1154 Limit and Reserve values are defined in MHz";
1155 uses allocation-properties;
1160 container mem-quota {
1161 description "Memory quota describes the memory resource allocation policy.
1162 Limit and Reserve values are defined in MB";
1163 uses allocation-properties;
1166 container disk-io-quota {
1167 description "Disk IO quota describes the disk IO operations resource allocation policy.
1168 Limit and Reserve values are defined in IOPS";
1169 uses allocation-properties;
1172 container vif-quota {
1173 description "Virtual interfaces quota describes the virtual interface bandwidth resource allocation policy.
1174 Limit and Reserve values are defined in Mbps";
1175 uses allocation-properties;
1180 "List of pcie passthrough devices.";
1184 "Device identifier.";
1189 "Number of devices to attach to the VM.";
1194 choice numa-policy {
1202 container numa-node-policy {
1204 "This policy defines NUMA topology of the
1205 guest. Specifically identifies if the guest
1206 should be run on a host with one NUMA
1207 node or multiple NUMA nodes. As an example
1208 a guest might need 8 VCPUs and 4 GB of
1209 memory. However, it might need the VCPUs
1210 and memory distributed across multiple
1211 NUMA nodes. In this scenario, NUMA node
1212 1 could run with 6 VCPUs and 3GB, and
1213 NUMA node 2 could run with 2 VCPUs and
1218 "The number of NUMA nodes to expose to the VM.";
1224 "This policy specifies how the memory should
1225 be allocated in a multi-node scenario.
1226 STRICT : The memory must be allocated
1227 strictly from the memory attached
1229 PREFERRED : The memory should be allocated
1230 preferentially from the memory
1231 attached to the NUMA node";
1242 "NUMA node identification. Typically
1250 "List of VCPUs to allocate on
1254 description "List of VCPUs ids to allocate on
1261 "Memory size expressed in MB
1262 for this NUMA node.";
1266 choice om-numa-type {
1268 "OpenMANO Numa type selection";
1276 case paired-threads {
1277 container paired-threads {
1278 leaf num-paired-threads {
1282 list paired-thread-ids {
1284 "List of thread pairs to use in case of paired-thread NUMA";
1312 grouping allocation-properties {
1314 description "Defines the maximum allocation. The value 0 indicates that usage is not limited.
1315 This parameter ensures that the instance never uses more than the defined amount of resource.";
1320 description "Defines the guaranteed minimum reservation.
1321 If needed, the machine will definitely get allocated the reserved amount of resources.";
1326 description "Number of shares allocated.
1327 Specifies the proportional weighted share for the domain.
1328 If this element is omitted, the service defaults to the OS provided defaults";
1333 grouping provider-network {
1334 container provider-network {
1335 description "Container for the provider network.";
1336 leaf physical-network {
1338 "Name of the physical network on which the provider
1343 leaf segmentation_id {
1345 "ID of segregated virtual networks";
1351 grouping http-endpoints {
1352 list http-endpoint {
1354 "List of http endpoints to be used by monitoring params";
1358 description "The HTTP path on the management server";
1363 description "Pick HTTPS instead of HTTP , Default is false";
1369 description "The HTTP port to connect to";
1370 type inet:port-number;
1374 description "The HTTP basic auth username";
1379 description "The HTTP basic auth password";
1383 leaf polling-interval-secs {
1384 description "The HTTP polling interval in seconds";
1391 "Method that the URI should perform.
1392 Deafult action is GET.";
1394 type manotypes:http-method;
1399 description "Custom HTTP headers to put on HTTP request";
1402 description "HTTP header key";
1407 description "HTTP header value";
1414 grouping monitoring-param-aggregation {
1415 typedef aggregation-type {
1417 "aggregation-type, indicates the way to aggregate monitoring-params
1418 (e.g. how to aggregate CPU utilisation of all VNFs belonging to the
1419 same VNF group identified by member-vnf-index; or how to aggregate
1420 memory utilisation of all VDUs belonging to the same VDU group
1421 identified by vdu id)";
1431 leaf aggregation-type {
1432 type aggregation-type;
1436 grouping monitoring-param-ui-data {
1442 description "A tag to group monitoring parameters";
1448 description "Defines the UI Display variant of measured counters.";
1449 type manotypes:widget-type;
1454 description "Measured Counter Units (e.g., Packets, Kbps, Mbps, etc.)";
1459 grouping monitoring-param-value {
1461 type param-value-type;
1465 container numeric-constraints {
1468 "Minimum value for the parameter";
1473 "Maximum value for the parameter";
1478 container text-constraints {
1481 "Minimum string length for the parameter";
1486 "Maximum string length for the parameter";
1491 leaf value-integer {
1493 "Current value for an integer parameter";
1497 leaf value-decimal {
1499 "Current value for a decimal parameter";
1507 "Current value for a string parameter";
1512 grouping control-param {
1513 list control-param {
1515 "List of control parameters to manage and
1516 update the running configuration of the VNF";
1520 description "Identifier for control parameter";
1525 description "Name of a control parameter";
1530 description "A description of the control parameter";
1535 description "A tag to group control parameters";
1541 "Minimum value for the parameter";
1547 "Maximum value for the parameter";
1551 leaf current-value {
1553 "Current value for the parameter";
1559 "Step value for the parameter";
1568 type manotypes:widget-type;
1573 "This is the URL where the operation should be performed.";
1580 "Method that the URI should perform.
1581 Default Action is POST";
1583 type manotypes:http-method;
1589 "This is the operation payload or payload template as stringified
1590 JSON. This field provides the data to be sent for this operation
1598 grouping action-param {
1601 "List of action parameters to
1617 description "A tag to group monitoring parameter";
1623 "This is the URL where to perform the operation";
1629 "This is the method to be performed at the uri.
1630 POST by default for action";
1632 type manotypes:http-method;
1638 "This is the operation payload or payload template to be sent in
1639 the data for this operation call";
1646 grouping input-parameter {
1647 description "List of input parameters that can be specified when instantiating a network service.";
1649 list input-parameter {
1651 "List of input parameters";
1658 "An xpath that specfies which element in a descriptor is to be
1665 "The value that the element specified by the xpath should take when a
1666 record is created.";
1672 grouping input-parameter-xpath {
1673 list input-parameter-xpath {
1675 "List of xpaths to parameters inside the NSD
1676 the can be customized during the instantiation.";
1681 "An xpath that specifies the element in a descriptor.";
1686 description "A descriptive string";
1690 leaf default-value {
1691 description "Default Value for the Input Parameter";
1697 grouping nfvi-metrics {
1701 "Label to show in UI";
1708 "The total number of VCPUs available.";
1714 "The VCPU utilization (percentage).";
1725 "Label to show in UI";
1732 "The amount of memory (bytes) currently in use.";
1738 "The amount of memory (bytes) available.";
1744 "The memory utilization (percentage).";
1755 "Label to show in UI";
1762 "The amount of storage (bytes) currently in use.";
1768 "The amount of storage (bytes) available.";
1774 "The storage utilization (percentage).";
1782 container external-ports {
1785 "Label to show in UI";
1787 default "EXTERNAL PORTS";
1792 "The total number of external ports.";
1797 container internal-ports {
1800 "Label to show in UI";
1802 default "INTERNAL PORTS";
1807 "The total number of internal ports.";
1815 "Label to show in UI";
1817 default "NETWORK TRAFFIC";
1820 container incoming {
1823 "Label to show in UI";
1825 default "INCOMING NETWORK TRAFFIC";
1830 "The cumulative number of incoming bytes.";
1836 "The cumulative number of incoming packets.";
1842 "The current incoming byte-rate (bytes per second).";
1850 "The current incoming packet (packets per second).";
1857 container outgoing {
1860 "Label to show in UI";
1862 default "OUTGOING NETWORK TRAFFIC";
1867 "The cumulative number of outgoing bytes.";
1873 "The cumulative number of outgoing packets.";
1879 "The current outgoing byte-rate (bytes per second).";
1887 "The current outgoing packet (packets per second).";
1896 typedef alarm-severity-type {
1897 description "An indication of the importance or urgency of the alarm";
1905 typedef alarm-metric-type {
1906 description "The type of metrics to register the alarm for";
1908 enum CPU_UTILIZATION;
1909 enum MEMORY_UTILIZATION;
1910 enum STORAGE_UTILIZATION;
1914 typedef alarm-statistic-type {
1916 "Statistic type to use to determine threshold crossing
1927 typedef relational-operation-type {
1929 "The relational operator used to define whether an alarm,
1930 scaling event, etc. should be triggered in certain scenarios,
1931 such as if the metric statistic goes above or below a specified
1934 enum GE; // greater than or equal
1935 enum LE; // less than or equal
1936 enum GT; // greater than
1937 enum LT; // less than
1939 enum NE; // not equal
1943 grouping alarm-properties {
1945 description "A human readable string to identify the alarm";
1950 description "A description of this alarm";
1956 "The identifier of the VDUR that the alarm is associated with";
1968 list insufficient-data {
1985 "This flag indicates whether the alarm should be repeatedly emitted
1986 while the associated threshold has been crossed.";
1994 "This flag indicates whether the alarm has been enabled or
2002 description "A measure of the importance or urgency of the alarm";
2003 type alarm-severity-type;
2007 description "The type of metric statistic that is tracked by this alarm";
2008 type alarm-statistic-type;
2013 "The relational operator used to define whether an alarm should be
2014 triggered in certain scenarios, such as if the metric statistic
2015 goes above or below a specified value.";
2016 type relational-operation-type;
2021 "This value defines the threshold that, if crossed, will trigger
2030 "The period defines the length of time (seconds) that the metric
2031 data are collected over in oreder to evaluate the chosen
2038 "Defines the length of time (seconds) in which metric data are
2039 collected in order to evaluate the chosen statistic.";
2044 typedef cloud-account-type {
2045 description "VIM account type";
2049 enum cloudsim_proxy;
2058 grouping host-aggregate {
2059 list host-aggregate {
2060 description "Name of the Host Aggregate";
2065 "Name of the additional information attached to the host-aggregate";
2068 leaf metadata-value {
2070 "Value of the corresponding metadata-key";
2076 grouping placement-group-input {
2078 type manotypes:cloud-account-type;
2080 choice cloud-provider {
2082 container availability-zone {
2083 description "Name of the Availability Zone";
2088 container server-group {
2089 description "Name of the Affinity/Anti-Affinity Server Group";
2094 uses host-aggregate;
2097 leaf aws-construct {
2102 leaf openmano-construct {
2107 leaf vsphere-construct {
2112 leaf mock-construct {
2117 leaf cloudsim-construct {
2124 grouping cloud-config {
2127 description "Used to configure the list of public keys to be injected as part
2128 of ns instantiation";
2131 description "Name of this key pair";
2136 description "Key associated with this key pair";
2143 description "List of users to be added through cloud-config";
2146 description "Name of the user ";
2151 description "The user name's real name";
2157 description "Used to configure the list of public keys to be injected as part
2158 of ns instantiation";
2161 description "Name of this key pair";
2166 description "Key associated with this key pair";
2173 grouping placement-group-info {
2178 "Place group construct to define the compute resource placement strategy
2179 in cloud environment";
2184 description "This is free text space used to describe the intent/rationale
2185 behind this placement group. This is for human consumption only";
2191 "Strategy associated with this placement group
2192 Following values are possible
2193 - COLOCATION: Colocation strategy imply intent to share the physical
2194 infrastructure (hypervisor/network) among all members
2196 - ISOLATION: Isolation strategy imply intent to not share the physical
2197 infrastructure (hypervisor/network) among the members
2204 default "COLOCATION";
2208 grouping ip-profile-info {
2209 description "Grouping for IP-Profile";
2210 container ip-profile-params {
2213 type inet:ip-version;
2217 leaf subnet-address {
2218 description "Subnet IP prefix associated with IP Profile";
2219 type inet:ip-prefix;
2222 leaf gateway-address {
2223 description "IP Address of the default gateway associated with IP Profile";
2224 type inet:ip-address;
2227 leaf security-group {
2228 description "Name of the security group";
2235 description "List of DNS Servers associated with IP Profile";
2236 type inet:ip-address;
2240 container dhcp-params {
2242 description "This flag indicates if DHCP is enabled or not";
2247 leaf start-address {
2248 description "Start IP address of the IP-Address range associated with DHCP domain";
2249 type inet:ip-address;
2253 description "Size of the DHCP pool associated with DHCP domain";
2258 leaf subnet-prefix-pool {
2259 description "VIM Specific reference to pre-created subnet prefix";
2265 grouping ip-profile-list {
2268 "List of IP Profiles.
2269 IP Profile describes the IP characteristics for the Virtual-Link";
2274 description "Name of the IP-Profile";
2279 description "Description for IP profile";
2283 uses ip-profile-info;
2287 grouping config-file {
2288 description "Grouping for files needed to be mounted into an additional drive";
2291 "List of configuration files to be written on an additional drive";
2294 description "Name of the configuration file";
2298 description "Full path of the destination in the guest";
2304 grouping supplemental-boot-data {
2305 description "Grouping for custom vim data";
2306 container supplemental-boot-data {
2307 // uses manotypes:config-file;
2308 leaf boot-data-drive {
2309 description "Some VIMs implement additional drives to host config-files or meta-data";
2316 grouping volume-info {
2317 description "Grouping for Volume-info";
2320 description "Description for Volume";
2325 description "Size of disk in GB";
2329 choice volume-source {
2331 "Defines the source of the volume. Possible options are
2332 1. Ephemeral -- Empty disk
2333 2. Image -- Refer to image to be used for volume
2334 3. Volume -- Reference of pre-existing volume to be used
2344 uses image-properties;
2349 description "Type of disk-bus on which this disk is exposed to guest";
2359 description "The type of device as exposed to guest";
2369 grouping rpc-project-name {
2373 "Project to which this belongs";
2375 path "/osm-project:project/osm-project:name";