X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FIM.git;a=blobdiff_plain;f=models%2Fyang%2Fmano-types.yang;h=dbf2ba21e65c98c5c22d1c87eb0821df4337c3e7;hp=ebd24a9e0930c4688ade971fa13cb1b396006fd6;hb=bbfb53f73103e6fb47c1a039eff164eb723e2e10;hpb=793e5eadd0946e5be1fa601284127518ff8d8f93 diff --git a/models/yang/mano-types.yang b/models/yang/mano-types.yang index ebd24a9..dbf2ba2 100644 --- a/models/yang/mano-types.yang +++ b/models/yang/mano-types.yang @@ -1,7 +1,7 @@ /* - * - * Copyright 2016 RIFT.IO Inc + * + * Copyright 2016-2017 RIFT.IO Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,8 +27,13 @@ module mano-types prefix "inet"; } - import rw-pb-ext { - prefix "rwpb"; + import rw-project { + prefix "rw-project"; + } + + revision 2017-02-08 { + description + "Update model to support projects."; } revision 2015-04-23 { @@ -40,6 +45,12 @@ module mano-types "Derived from earlier versions of base YANG files"; } + typedef meta-data-type { + type enumeration { + enum STRING; + } + } + typedef package-type { description "Type of descriptor being on-boarded"; type enumeration { @@ -67,6 +78,12 @@ module mano-types type string; } + leaf data-type { + description + "Data type associated with the value."; + type manotypes:parameter-data-type; + } + leaf value { description "Value associated with the name."; @@ -109,6 +126,7 @@ module mano-types "The value should be dimmed by the UI. Only applies to parameters with default values."; type boolean; + default false; } leaf hidden { @@ -116,28 +134,29 @@ module mano-types "The value should be hidden by the UI. Only applies to parameters with default values."; type boolean; + default false; } } - + grouping ui-primitive-group { list parameter-group { description "Grouping of parameters which are logically grouped in UI"; key "name"; - + leaf name { description "Name of the parameter group"; type string; } - + list parameter { description "List of parameters for the service primitive."; key "name"; uses manotypes:primitive-parameter; } - + leaf mandatory { description "Is this parameter group mandatory"; type boolean; @@ -146,28 +165,7 @@ module mano-types } } - grouping image-properties { - leaf image { - description - "Image name for the software image. - If the image name is found within the VNF package it will - be uploaded to all VIM accounts during onboarding process. - Otherwise, the image must be added to the VIM account with - the same name as entered here. - "; - type string; - } - - leaf image-checksum { - description - "Image md5sum for the software image. - The md5sum, if provided, along with the image name uniquely - identifies an image uploaded to the CAL. - "; - type string; - } - } - grouping initial-config { + grouping event-config { leaf seq { description "Sequence number for the configuration primitive."; @@ -200,91 +198,183 @@ module mano-types } } - grouping vnf-configuration { - container vnf-configuration { - rwpb:msg-new VnfConfiguration; + grouping image-properties { + leaf image { + description + "Image name for the software image. + If the image name is found within the VNF package it will + be uploaded to all VIM accounts during onboarding process. + Otherwise, the image must be added to the VIM account with + the same name as entered here. + "; + type string; + } + + leaf image-checksum { description - "Information about the VNF configuration. Note: - If the NS contains multiple instances of the - same VNF, each instance could have a different - configuration."; + "Image md5sum for the software image. + The md5sum, if provided, along with the image name uniquely + identifies an image uploaded to the CAL. + "; + type string; + } + } - choice config-method { - description - "Defines the configuration method for the VNF."; - case script { + + grouping vca-relationships { + container vca-relationships { + list relation { + description "List of relations between VCA componets."; + + key "requires provides"; + + leaf requires { description - "Use custom script for configuring the VNF. - This script is executed in the context of - Orchestrator (The same system and environment - as the Launchpad)."; - container script { - leaf script-type { - description - "Script type - currently supported - Scripts confirming to Rift CA plugin"; - type enumeration { - enum rift; - } - } - } + "Name of the required relation."; + type string; } - case juju { + leaf provides { description - "Configure the VNF through Juju."; - container juju { - leaf charm { - description "Juju charm to use with the VNF."; - type string; - } - } + "Name of the provided relation."; + type string; } } + } + } - list service-primitive { - rwpb:msg-new ServicePrimitive; + grouping vca-metrics { + description + "Information about the VNF or VDU metrics"; + list metrics { + description "List of VCA related metrics"; + key "name"; + leaf name { description - "List of service primitives supported by the - configuration agent for this VNF."; - key "name"; + "Name of the metric, as defined in the Juju charm."; + type string; + } + } + } // END - grouping vca-metrics - leaf name { - description - "Name of the service primitive."; - type string; + grouping vca-configuration { + description + "Information about the VNF or VDU configuration. Note: + If the NS contains multiple instances of the + same VNF or VDU, each instance could have a different + configuration."; + + choice config-method { + description + "Defines the configuration method for the VNF or VDU."; + case script { + description + "Use custom script for configuring the VNF or VDU. + This script is executed in the context of + Orchestrator (The same system and environment + as the Launchpad)."; + container script { + leaf script-type { + description + "Script type - currently supported - Scripts confirming to Rift CA plugin"; + type enumeration { + enum rift; + } + } } + } - list parameter { - description - "List of parameters to the service primitive."; - key "name"; - uses primitive-parameter; + case juju { + description + "Configure the VNF or VDU through Juju."; + container juju { + leaf charm { + description "Juju charm to use with the VNF or VDU."; + type string; + } + leaf proxy { + description "Is this a proxy charm?"; + type boolean; + default true; + } + uses manotypes:vca-relationships; } } + } + + list config-primitive { + description + "List of config primitives supported by the + configuration agent for this VNF or VDU."; + key "name"; - list initial-config-primitive { - rwpb:msg-new InitialConfigPrimitive; + leaf name { description - "Initial set of configuration primitives."; - key "seq"; - uses initial-config; + "Name of the config primitive."; + type string; + } + + list parameter { + description + "List of parameters to the config primitive."; + key "name"; + uses primitive-parameter; + } + + leaf user-defined-script { + description + "A user defined script. If user defined script is defined, + the script will be executed using bash"; + type string; + } + } + + list initial-config-primitive { + description + "Initial set of configuration primitives."; + key "seq"; + leaf seq { + description + "Sequence number for the configuration primitive."; + type uint64; + } + + choice primitive-type { + case primitive-definition { + leaf name { + description + "Name of the configuration primitive."; + type string; + } + + uses primitive-parameter-value; + + leaf user-defined-script { + description + "A user defined script."; + type string; + } + } } } - } // END - grouping vnf-configuration + + uses manotypes:vca-metrics; + + } // END - grouping vca-configuration typedef virtual-link-type { description "Type of virtual link ELAN: A multipoint service connecting a set of VNFs - // ELINE: For a simple point to point connection + ELINE: For a simple point to point connection // between a VNF and the existing network. // ETREE: A multipoint service connecting one or // more roots and a set of leaves, but // preventing inter-leaf communication."; type enumeration { enum ELAN; + enum ELINE; // enum ETREE; - // enum ELINE; } } @@ -364,12 +454,12 @@ module mano-types description "Type of the widget, typically used by the UI."; type enumeration { - enum HISTOGRAM; - enum BAR; - enum GAUGE; - enum SLIDER; enum COUNTER; + enum GAUGE; enum TEXTBOX; + enum SLIDER; + enum HISTOGRAM; + enum BAR; } } @@ -555,6 +645,60 @@ module mano-types } } + typedef nfvi-metric-type { + description "Type of NFVI metric to be monitored"; + type enumeration { + enum cpu_utilization; + enum average_memory_utilization; + enum disk_read_ops; + enum disk_write_ops; + enum disk_read_bytes; + enum disk_write_bytes; + enum packets_sent; + enum packets_received; + enum packets_dropped; + } + } + + typedef scaling-trigger { + type enumeration { + enum pre-scale-in { + value 1; + } + enum post-scale-in { + value 2; + } + enum pre-scale-out { + value 3; + } + enum post-scale-out { + value 4; + } + } + } + + typedef scaling-policy-type { + type enumeration { + enum manual { + value 1; + } + enum automatic { + value 2; + } + } + } + + typedef scaling-criteria-operation { + type enumeration { + enum AND { + value 1; + } + enum OR { + value 2; + } + } + } + grouping vm-flavor { container vm-flavor { leaf vcpu-count { @@ -577,6 +721,13 @@ module mano-types } } //grouping vm-flavor + grouping vm-flavor-name { + leaf vm-flavor-name { + description "flavor name to be used while creating vm using cloud account"; + type string; + } + } + grouping vswitch-epa { container vswitch-epa { leaf ovs-acceleration { @@ -694,7 +845,7 @@ module mano-types description "Number of threads per cores on the host."; type uint64; } - + list cpu-feature { key "feature"; description "List of CPU features."; @@ -704,7 +855,6 @@ module mano-types } } - leaf om-cpu-model-string { description "OpenMANO CPU model string"; type string; @@ -718,6 +868,7 @@ module mano-types type string; } } + } } @@ -749,47 +900,76 @@ module mano-types } } - leaf cpu-pinning-policy { - description - "CPU pinning policy describes association - between virtual CPUs in guest and the - physical CPUs in the host. - DEDICATED : Virtual CPUs are pinned to - physical CPUs - SHARED : Multiple VMs may share the - same physical CPUs. - ANY : Any policy is acceptable for the VM"; - type enumeration { - enum DEDICATED; - enum SHARED; - enum ANY; + choice cpu-policy { + case cpu-pinning { + leaf cpu-pinning-policy { + description + "CPU pinning policy describes association + between virtual CPUs in guest and the + physical CPUs in the host. + DEDICATED : Virtual CPUs are pinned to + physical CPUs + SHARED : Multiple VMs may share the + same physical CPUs. + ANY : Any policy is acceptable for the VM"; + type enumeration { + enum DEDICATED; + enum SHARED; + enum ANY; + } + default "ANY"; + } + leaf cpu-thread-pinning-policy { + description + "CPU thread pinning policy describes how to + place the guest CPUs when the host supports + hyper threads: + AVOID : Avoids placing a guest on a host + with threads. + SEPARATE: Places vCPUs on separate cores, + and avoids placing two vCPUs on + two threads of same core. + ISOLATE : Places each vCPU on a different core, + and places no vCPUs from a different + guest on the same core. + PREFER : Attempts to place vCPUs on threads + of the same core."; + type enumeration { + enum AVOID; + enum SEPARATE; + enum ISOLATE; + enum PREFER; + } + } } - default "ANY"; - } - leaf cpu-thread-pinning-policy { - description - "CPU thread pinning policy describes how to - place the guest CPUs when the host supports - hyper threads: - AVOID : Avoids placing a guest on a host - with threads. - SEPARATE: Places vCPUs on separate cores, - and avoids placing two vCPUs on - two threads of same core. - ISOLATE : Places each vCPU on a different core, - and places no vCPUs from a different - guest on the same core. - PREFER : Attempts to place vCPUs on threads - of the same core."; - type enumeration { - enum AVOID; - enum SEPARATE; - enum ISOLATE; - enum PREFER; + case cpu-quota { + container cpu-quota { + description "CPU quota describes the CPU resource allocation policy. + Limit and Reserve values are defined in MHz"; + uses allocation-properties; + } } } + container mem-quota { + description "Memory quota describes the memory resource allocation policy. + Limit and Reserve values are defined in MB"; + uses allocation-properties; + } + + container disk-io-quota { + description "Disk IO quota describes the disk IO operations resource allocation policy. + Limit and Reserve values are defined in IOPS"; + uses allocation-properties; + } + + container vif-quota { + description "Virtual interfaces quota describes the virtual interface bandwidth resource allocation policy. + Limit and Reserve values are defined in Mbps"; + uses allocation-properties; + } + list pcie-device { description "List of pcie passthrough devices."; @@ -924,6 +1104,27 @@ module mano-types } } + grouping allocation-properties { + leaf limit { + description "Defines the maximum allocation. The value 0 indicates that usage is not limited. + This parameter ensures that the instance never uses more than the defined amount of resource."; + type uint64; + } + + leaf reserve { + description "Defines the guaranteed minimum reservation. + If needed, the machine will definitely get allocated the reserved amount of resources."; + type uint64; + } + + leaf shares { + description "Number of shares allocated. + Specifies the proportional weighted share for the domain. + If this element is omitted, the service defaults to the OS provided defaults"; + type uint64; + } + } + grouping provider-network { container provider-network { description "Container for the provider network."; @@ -934,31 +1135,117 @@ module mano-types type string; } - leaf overlay-type { + leaf segmentation_id { description - "Type of the overlay network. - LOCAL - Provider network implemented in a single compute node - FLAT - Provider network shared by all tenants - VLAN - Provider network implemented using 802.1Q tagging - VXLAN - Provider networks implemented using RFC 7348 - GRE - Provider networks implemented using GRE tunnels"; - type enumeration { - enum LOCAL; - enum FLAT; - enum VLAN; - enum VXLAN; - enum GRE; + "ID of segregated virtual networks"; + type uint32; + } + } + } + + grouping ns-service-primitive { + list service-primitive { + description + "Network service level service primitives."; + + key "name"; + + leaf name { + description + "Name of the service primitive."; + type string; + } + + list parameter { + description + "List of parameters for the service primitive."; + + key "name"; + uses manotypes:primitive-parameter; + } + + list parameter-group { + description + "Grouping of parameters which are logically grouped in UI"; + key "name"; + + leaf name { + description + "Name of the parameter group"; + type string; + } + + list parameter { + description + "List of parameters for the service primitive."; + key "name"; + uses manotypes:primitive-parameter; + } + + leaf mandatory { + description "Is this parameter group mandatory"; + type boolean; + default true; } } - leaf segmentation_id { + + list vnf-primitive-group { description - "ID of segregated virtual networks"; + "List of service primitives grouped by VNF."; + + key "member-vnf-index-ref"; + leaf member-vnf-index-ref { + description + "Reference to member-vnf within constituent-vnfds"; + type string; + } + + leaf vnfd-id-ref { + description + "A reference to a vnfd. This is a + leafref to path: + ../../../../nsd:constituent-vnfd + + [nsd:id = current()/../nsd:id-ref] + + /nsd:vnfd-id-ref + NOTE: An issue with confd is preventing the + use of xpath. Seems to be an issue with leafref + to leafref, whose target is in a different module. + Once that is resolved this will switched to use + leafref"; + + type string; + } + + leaf vnfd-name { + description + "Name of the VNFD"; + type string; + } + + list primitive { + key "index"; + + leaf index { + description "Index of this primitive"; type uint32; + } + + leaf name { + description "Name of the primitive in the VNF primitive "; + type string; + } + } + } + + leaf user-defined-script { + description + "A user defined script."; + type string; } } } - grouping monitoring-param { + grouping http-endpoints { list http-endpoint { description "List of http endpoints to be used by monitoring params"; @@ -1019,52 +1306,16 @@ module mano-types } } } - - list monitoring-param { - description - "List of monitoring parameters at the network service level"; - key id; - leaf id { - type string; - } - - leaf name { - type string; - } - - leaf http-endpoint-ref { - type leafref { - path "../../http-endpoint/path"; - } - } - - leaf json-query-method { - type json-query-method; - default "NAMEKEY"; - } - - container json-query-params { - leaf json-path { - description - "The jsonpath to use to extract value from JSON structure"; - type string; - } - leaf object-path { - description - "The objectpath to use to extract value from JSON structure"; - type string; - } - } - - uses monitoring-param-ui-data; - uses monitoring-param-value; - - } } grouping monitoring-param-aggregation { typedef aggregation-type { - description "aggregation-type"; + description + "aggregation-type, indicates the way to aggregate monitoring-params + (e.g. how to aggregate CPU utilisation of all VNFs belonging to the + same VNF group identified by member-vnf-index; or how to aggregate + memory utilisation of all VDUs belonging to the same VDU group + identified by vdu id)"; type enumeration { enum AVERAGE; enum MINIMUM; @@ -1093,6 +1344,7 @@ module mano-types leaf widget-type { description "Defines the UI Display variant of measured counters."; type manotypes:widget-type; + default "COUNTER"; } leaf units { @@ -1333,7 +1585,7 @@ module mano-types } leaf default-value { - description "/nsd:nsd-catalog/nsd:nsd/nsd:vendor"; + description "Default Value for the Input Parameter"; type string; } } @@ -1569,11 +1821,12 @@ module mano-types } } - typedef alarm-operation-type { + typedef relational-operation-type { description - "The relational operator used to define whether an alarm - should be triggered in certain scenarios, such as if the - metric statistic goes above or below a specified value."; + "The relational operator used to define whether an alarm, + scaling event, etc. should be triggered in certain scenarios, + such as if the metric statistic goes above or below a specified + value."; type enumeration { enum GE; // greater than or equal enum LE; // less than or equal @@ -1666,9 +1919,9 @@ module mano-types leaf operation { description "The relational operator used to define whether an alarm should be - triggered in certain scenarios, such as if the metric statistic + triggered in certain scenarios, such as if the metric statistic goes above or below a specified value."; - type alarm-operation-type; + type relational-operation-type; } leaf value { @@ -1709,12 +1962,12 @@ module mano-types enum openvim; } } - + grouping host-aggregate { list host-aggregate { description "Name of the Host Aggregate"; key "metadata-key"; - + leaf metadata-key { description "Name of the additional information attached to the host-aggregate"; @@ -1727,13 +1980,13 @@ module mano-types } } } - + grouping placement-group-input { leaf cloud-type { type manotypes:cloud-account-type; } choice cloud-provider { - case openstack { + case openstack { container availability-zone { description "Name of the Availability Zone"; leaf name { @@ -1756,7 +2009,7 @@ module mano-types case openmano { leaf openmano-construct { type empty; - } + } } case vsphere { leaf vsphere-construct { @@ -1775,7 +2028,56 @@ module mano-types } } } - + + grouping cloud-config { + list key-pair { + key "name"; + description "Used to configure the list of public keys to be injected as part + of ns instantiation"; + + leaf name { + description "Name of this key pair"; + type string; + } + + leaf key { + description "Key associated with this key pair"; + type string; + } + } + + list user { + key "name"; + description "List of users to be added through cloud-config"; + + leaf name { + description "Name of the user "; + type string; + } + + leaf user-info { + description "The user name's real name"; + type string; + } + + list key-pair { + key "name"; + description "Used to configure the list of public keys to be injected as part + of ns instantiation"; + + leaf name { + description "Name of this key pair"; + type string; + } + + leaf key { + description "Key associated with this key pair"; + type string; + } + } + } + } + grouping placement-group-info { description ""; @@ -1791,7 +2093,7 @@ module mano-types behind this placement group. This is for human consumption only"; type string; } - + leaf strategy { description "Strategy associated with this placement group @@ -1814,7 +2116,7 @@ module mano-types grouping ip-profile-info { description "Grouping for IP-Profile"; container ip-profile-params { - + leaf ip-version { type inet:ip-version; default ipv4; @@ -1838,12 +2140,12 @@ module mano-types list dns-server { key "address"; leaf address { - description "List of DNS Servers associated with IP Profile"; - type inet:ip-address; + description "List of DNS Servers associated with IP Profile"; + type inet:ip-address; } } - container dhcp-params { + container dhcp-params { leaf enabled { description "This flag indicates if DHCP is enabled or not"; type boolean; @@ -1873,19 +2175,19 @@ module mano-types description "List of IP Profiles. IP Profile describes the IP characteristics for the Virtual-Link"; - + key "name"; leaf name { description "Name of the IP-Profile"; type string; } - + leaf description { description "Description for IP profile"; type string; } - + uses ip-profile-info; } } @@ -1910,12 +2212,12 @@ module mano-types grouping supplemental-boot-data { description "Grouping for custom vim data"; container supplemental-boot-data { - uses manotypes:config-file; +// uses manotypes:config-file; leaf boot-data-drive { description "Some VIMs implement additional drives to host config-files or meta-data"; type boolean; default false; - } + } } } @@ -1949,7 +2251,6 @@ module mano-types case image { uses image-properties; } - } leaf device-bus { @@ -1971,6 +2272,16 @@ module mano-types enum lun; } } + } + grouping rpc-project-name { + leaf project-name { + default "default"; + description + "Project to which this belongs"; + type leafref { + path "/rw-project:project/rw-project:name"; + } + } } }