X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=models%2Fplugins%2Fyang%2Fmano-types.yang;h=8950c7a2e674d73d8cb9dff67724304e2fc31e01;hb=9eba2577c8cc1de7cfe9f650bd53fee302881bef;hp=ec3d583fa022770ff91093deadac02cb9c8bbd92;hpb=3558119e212cc1f5ffc5130118e38114fb80990d;p=osm%2FSO.git diff --git a/models/plugins/yang/mano-types.yang b/models/plugins/yang/mano-types.yang index ec3d583f..8950c7a2 100644 --- a/models/plugins/yang/mano-types.yang +++ b/models/plugins/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 { @@ -43,10 +48,17 @@ module mano-types typedef meta-data-type { type enumeration { enum STRING; - enum JSON; } } + typedef package-type { + description "Type of descriptor being on-boarded"; + type enumeration { + enum NSD; + enum VNFD; + } + } + typedef parameter-data-type { type enumeration { enum STRING; @@ -99,15 +111,16 @@ module mano-types } leaf parameter-pool { - description "NSD Parameter pool name to use for this paramter"; + description "NSD parameter pool name to use for this parameter"; type string; } leaf read-only { description - "The value should be greyed out by the UI. + "The value should be dimmed by the UI. Only applies to parameters with default values."; type boolean; + default false; } leaf hidden { @@ -115,17 +128,77 @@ 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; + default true; + } } } - - grouping image-properties { + grouping event-config { + leaf seq { + description + "Sequence number for the configuration primitive."; + type uint64; + } + + leaf name { + description + "Name of the configuration primitive."; + type string; + mandatory "true"; + } + + leaf user-defined-script { + description + "A user defined script."; + type string; + } + + list parameter { + key "name"; + leaf name { + type string; + } + + leaf value { + description "Value of the configuration primitive."; + type string; + } + } + } + + grouping image-properties { leaf image { description "Image name for the software image. - If the image name is found within the VNF packaage it will - be uploaded to all cloud accounts during onboarding process. - Otherwise, the image must be added to the cloud account with + 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; @@ -138,204 +211,142 @@ module mano-types identifies an image uploaded to the CAL. "; type string; - } + } } - grouping vnf-configuration { - container vnf-configuration { - rwpb:msg-new VnfConfiguration; - description - "Information regarding the VNF configuration - is captured here. Note that if the NS contains - multiple instances of the same VNF, each instance - of the VNF may have different configuration"; - - choice config-method { - description - "Defines the configuration method for the VNF."; - case netconf { - description - "Use NETCONF for configuring the VNF."; - container netconf { - leaf target { - description - "Netconf configuration target"; - type enumeration { - enum running; - enum candidate; - } - } - leaf protocol { - description - "Protocol to use for netconf (e.g. ssh)"; - type enumeration { - enum None; - enum ssh; - } - } + grouping vca-relationships { + container vca-relationships { + list relation { + description "List of relations between VCA componets."; - leaf port { - description - "Port for the netconf server."; - type inet:port-number; - } - } - } + key "requires provides"; - case rest { + leaf requires { description - "Use REST for configuring the VNF."; - container rest { - leaf port { - description - "Port for the REST server."; - type inet:port-number; - } - } + "Name of the required relation."; + type string; } - case script { + leaf provides { description - "Use custom script for configuring the VNF. - This script is executed in the context of - Orchestrator."; - container script { - leaf script-type { - description - "Script type - currently supported : bash, expect"; - type enumeration { - enum bash; - enum expect; - } - } - } + "Name of the provided relation."; + type string; } + } + } + } - case juju { - description - "Configure the VNF through Juju."; - container juju { - leaf charm { - description "Juju charm to use with the VNF."; - 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; } } } } - container config-access { - leaf mgmt-ip-address { - description - "IP address to be used to configure this VNF, - optional if it is possible to resolve dynamically."; - type inet:ip-address; - } - - leaf username { - description - "username for configuration."; - type string; - } - - leaf password { - description - "Password for configuration access authentication."; - type string; + 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; + } + uses manotypes:vca-relationships; } } + } - container config-attributes { - description - "Miscelaneous input parameters to be considered - while processing the NSD to apply configuration"; - - leaf config-priority { - description - "Configuration priority - order of confgiration - to be applied to each VNF in this NS, - low number gets precedence over high number"; - type uint64; - } + list config-primitive { + description + "List of config primitives supported by the + configuration agent for this VNF or VDU."; + key "name"; - leaf config-delay { - description - "Wait (seconds) before applying the configuration to VNF"; - type uint64; - } + leaf name { + description + "Name of the config primitive."; + type string; } - list service-primitive { - rwpb:msg-new ServicePrimitive; + list parameter { description - "List of service primitives supported by the - configuration agent for this VNF."; + "List of parameters to the config primitive."; key "name"; - - leaf name { - description - "Name of the service primitive."; - type string; - } - - list parameter { - description - "List of parameters to the service primitive."; - key "name"; - uses primitive-parameter; - } + uses primitive-parameter; } - list initial-config-primitive { - rwpb:msg-new InitialConfigPrimitive; + leaf user-defined-script { description - "Initial set of configuration primitives."; - key "seq"; - leaf seq { - description - "Sequence number for the configuration primitive."; - type uint64; - } + "A user defined script. If user defined script is defined, + the script will be executed using bash"; + type string; + } + } - leaf name { - description - "Name of the configuration primitive."; - 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; + } - list parameter { - key "name"; + choice primitive-type { + case primitive-definition { leaf name { + description + "Name of the configuration primitive."; type string; } - leaf value { + uses primitive-parameter-value; + + leaf user-defined-script { + description + "A user defined script."; type string; } } } - - leaf config-template { - description - "Configuration template for each VNF"; - type string; - } } - } // END - grouping vnf-configuration + } // 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; } } @@ -365,7 +376,7 @@ module mano-types typedef api-type { description - "Type of API to fetch monitoring params"; + "Type of API to fetch monitoring parameters"; type enumeration { enum HTTP; @@ -379,8 +390,8 @@ module mano-types "The method to extract a value from a JSON response NAMEKEY - Use the name as the key for a non-nested value. - JSONPATH - Use jsonpath-rw implemenation to extract a value. - OBJECTPATH - Use objectpath implemenation to extract a value."; + JSONPATH - Use jsonpath-rw implementation to extract a value. + OBJECTPATH - Use objectpath implementation to extract a value."; type enumeration { enum NAMEKEY; enum JSONPATH; @@ -404,7 +415,7 @@ module mano-types VPORT: Virtual Port // VNIC_ADDR: Virtual NIC Address // PNIC_ADDR: Physical NIC Address - // PPORT: Phsical Port."; + // PPORT: Physical Port."; type enumeration { enum VPORT; @@ -415,12 +426,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; } } @@ -610,7 +621,7 @@ module mano-types container vm-flavor { leaf vcpu-count { description - "Number of vcpus for the VM."; + "Number of VCPUs for the VM."; type uint16; } @@ -628,6 +639,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 { @@ -745,7 +763,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."; @@ -755,15 +773,15 @@ module mano-types } } - + leaf om-cpu-model-string { - description "Openmano CPU model string"; + description "OpenMANO CPU model string"; type string; } list om-cpu-feature { key "feature"; - description "List of openmano CPU features"; + description "List of OpenMANO CPU features"; leaf feature { description "CPU feature"; type string; @@ -785,12 +803,12 @@ module mano-types "Memory page allocation size. If a VM requires hugepages, it should choose LARGE or SIZE_2MB or SIZE_1GB. If the VM prefers hugepages it - should chose PREFER_LARGE. + should choose PREFER_LARGE. LARGE : Require hugepages (either 2MB or 1GB) SMALL : Doesn't require hugepages SIZE_2MB : Requires 2MB hugepages SIZE_1GB : Requires 1GB hugepages - PREFER_LARGE : Application perfers hugepages"; + PREFER_LARGE : Application prefers hugepages"; type enumeration { enum LARGE; enum SMALL; @@ -867,20 +885,21 @@ module mano-types case numa-aware { container numa-node-policy { description - "This policy defines numa topology of the + "This policy defines NUMA topology of the guest. Specifically identifies if the guest - should be run on a host with one numa - node or multiple numa nodes. As an example - a guest may want 8 vcpus and 4 GB of - memory. But may want the vcpus and memory - distributed across multiple numa nodes. - The NUMA node 1 may run with 6 vcpus and - 3GB, and NUMA node 2 may run with 2 vcpus - and 1GB."; + should be run on a host with one NUMA + node or multiple NUMA nodes. As an example + a guest might need 8 VCPUs and 4 GB of + memory. However, it might need the VCPUs + and memory distributed across multiple + NUMA nodes. In this scenario, NUMA node + 1 could run with 6 VCPUs and 3GB, and + NUMA node 2 could run with 2 VCPUs and + 1GB."; leaf node-cnt { description - "The number of numa nodes to expose to the VM."; + "The number of NUMA nodes to expose to the VM."; type uint16; } @@ -892,7 +911,7 @@ module mano-types strictly from the memory attached to the NUMA node. PREFERRED : The memory should be allocated - perferentially from the memory + preferentially from the memory attached to the NUMA node"; type enumeration { enum STRICT; @@ -912,12 +931,12 @@ module mano-types list vcpu { key "id"; description - "List of vcpus to allocate on - this numa node."; + "List of VCPUs to allocate on + this NUMA node."; leaf id { type uint64; - description "List of vcpus ids to allocate on - this numa node"; + description "List of VCPUs ids to allocate on + this NUMA node"; } } @@ -930,7 +949,7 @@ module mano-types choice om-numa-type { description - "Openmano Numa type selection"; + "OpenMANO Numa type selection"; case cores { leaf num-cores { @@ -946,7 +965,7 @@ module mano-types list paired-thread-ids { description - "List of thread pairs to use in case of paired-thread numa"; + "List of thread pairs to use in case of paired-thread NUMA"; max-elements 16; key thread-a; @@ -979,25 +998,14 @@ module mano-types description "Container for the provider network."; leaf physical-network { description - "Name of the phsyical network on which the provider + "Name of the physical network on which the provider network is built."; type string; } - leaf overlay-type { - description - "Type of the overlay network."; - type enumeration { - enum LOCAL; - enum FLAT; - enum VLAN; - enum VXLAN; - enum GRE; - } - } leaf segmentation_id { description - "Segmentation ID"; + "ID of segregated virtual networks"; type uint32; } } @@ -1062,7 +1070,7 @@ module mano-types leaf vnfd-id-ref { description - "A reference to a vnfd. This is a + "A reference to a vnfd. This is a leafref to path: ../../../../nsd:constituent-vnfd + [nsd:id = current()/../nsd:id-ref] @@ -1070,7 +1078,7 @@ module mano-types 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 resovled this will switched to use + Once that is resolved this will switched to use leafref"; type string; @@ -1137,7 +1145,7 @@ module mano-types type string; } - leaf polling_interval_secs { + leaf polling-interval-secs { description "The HTTP polling interval in seconds"; type uint8; default 2; @@ -1145,8 +1153,8 @@ module mano-types leaf method { description - "This is the method to be performed at the uri. - GET by default for action"; + "Method that the URI should perform. + Deafult action is GET."; type manotypes:http-method; default "GET"; @@ -1169,7 +1177,7 @@ module mano-types list monitoring-param { description - "List of monitoring parameters at the NS level"; + "List of monitoring parameters at the network service level"; key id; leaf id { type string; @@ -1232,16 +1240,19 @@ module mano-types } leaf group-tag { - description "A simple tag to group monitoring parameters"; + description "A tag to group monitoring parameters"; type string; } leaf widget-type { + description "Defines the UI Display variant of measured counters."; type manotypes:widget-type; + default "COUNTER"; } leaf units { + description "Measured Counter Units (e.g., Packets, Kbps, Mbps, etc.)"; type string; } } @@ -1260,7 +1271,7 @@ module mano-types } leaf max-value { description - "Maxium value for the parameter"; + "Maximum value for the parameter"; type uint64; } } @@ -1307,19 +1318,22 @@ module mano-types key id; leaf id { + description "Identifier for control parameter"; type string; } leaf name { + description "Name of a control parameter"; type string; } leaf description { + description "A description of the control parameter"; type string; } leaf group-tag { - description "A simple tag to group control parameters"; + description "A tag to group control parameters"; type string; } @@ -1331,7 +1345,7 @@ module mano-types leaf max-value { description - "Maxium value for the parameter"; + "Maximum value for the parameter"; type uint64; } @@ -1357,15 +1371,15 @@ module mano-types leaf url { description - "This is the URL where to perform the operation"; + "This is the URL where the operation should be performed."; type inet:uri; } leaf method { description - "This is the method to be performed at the uri. - POST by default for action"; + "Method that the URI should perform. + Default Action is POST"; type manotypes:http-method; default "POST"; @@ -1401,7 +1415,7 @@ module mano-types } leaf group-tag { - description "A simple tag to group monitoring parameter"; + description "A tag to group monitoring parameter"; type string; } @@ -1431,7 +1445,7 @@ module mano-types } grouping input-parameter { - description ""; + description "List of input parameters that can be specified when instantiating a network service."; list input-parameter { description @@ -1442,7 +1456,7 @@ module mano-types leaf xpath { description - "A an xpath that specfies which element in a descriptor is to be + "An xpath that specfies which element in a descriptor is to be modified."; type string; } @@ -1475,7 +1489,7 @@ module mano-types } leaf default-value { - description " A default value for this input parameter"; + description "Default Value for the Input Parameter"; type string; } } @@ -1681,7 +1695,7 @@ module mano-types } typedef alarm-severity-type { - description "An indication of the importance or ugency of the alarm"; + description "An indication of the importance or urgency of the alarm"; type enumeration { enum LOW; enum MODERATE; @@ -1700,8 +1714,8 @@ module mano-types typedef alarm-statistic-type { description - "The type of statistic to used to measure a metric to determine - threshold crossing for an alarm."; + "Statistic type to use to determine threshold crossing + for an alarm."; type enumeration { enum AVERAGE; enum MINIMUM; @@ -1713,9 +1727,9 @@ module mano-types typedef alarm-operation-type { description - "The relational operator used to define whether an alarm should be - triggered when, say, the metric statistic goes above or below a - specified value."; + "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."; type enumeration { enum GE; // greater than or equal enum LE; // less than or equal @@ -1728,8 +1742,7 @@ module mano-types grouping alarm { leaf alarm-id { description - "This field is reserved for the identifier assigned by the cloud - provider"; + "This field is reserved for the identifier assigned by the VIM provider"; type string; } @@ -1740,7 +1753,7 @@ module mano-types } leaf description { - description "A string containing a description of this alarm"; + description "A description of this alarm"; type string; } @@ -1792,7 +1805,7 @@ module mano-types } leaf severity { - description "A measure of the important or urgency of the alarm"; + description "A measure of the importance or urgency of the alarm"; type alarm-severity-type; } @@ -1808,9 +1821,9 @@ module mano-types leaf operation { description - "The relational operator that defines whether the alarm should be - triggered when the metric statistic is, say, above or below the - specified threshold value."; + "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."; type alarm-operation-type; } @@ -1833,17 +1846,14 @@ module mano-types leaf evaluations { description - "This is the number of samples of the metric statistic used to - evaluate threshold crossing. Each sample or evaluation is equal to - the metric statistic obtained for a given period. This can be used - to mitigate spikes in the metric that may skew the statistic of - interest."; + "Defines the length of time (seconds) in which metric data are + collected in order to evaluate the chosen statistic."; type uint32; } } typedef cloud-account-type { - description "cloud account type"; + description "VIM account type"; type enumeration { enum aws; enum cloudsim; @@ -1855,27 +1865,31 @@ 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"; type string; } leaf metadata-value { + description + "Value of the corresponding metadata-key"; type string; } } } - + 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 { @@ -1898,7 +1912,7 @@ module mano-types case openmano { leaf openmano-construct { type empty; - } + } } case vsphere { leaf vsphere-construct { @@ -1917,7 +1931,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 ""; @@ -1933,7 +1996,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 @@ -1956,7 +2019,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; @@ -1980,12 +2043,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; @@ -2015,26 +2078,26 @@ 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; } } - grouping custom-config-files { + grouping config-file { description "Grouping for files needed to be mounted into an additional drive"; - list custom-config-files { + list config-file { description "List of configuration files to be written on an additional drive"; key "source"; @@ -2049,40 +2112,15 @@ module mano-types } } - grouping custom-meta-data { - description "Grouping for instance-specific meta data"; - list custom-meta-data { - description - "List of meta-data to be associated with the instance"; - key "name"; - leaf name { - description "Name of the meta-data parameter"; - type string; - } - - leaf data-type { - description "Data-type the meta-data parameter"; - type manotypes:meta-data-type; - default "STRING"; - } - - leaf value { - description "Value of the meta-data parameter"; - type string; - } - } - } - - grouping custom-boot-data { + grouping supplemental-boot-data { description "Grouping for custom vim data"; - container custom-boot-data { - uses manotypes:custom-config-files; - uses manotypes:custom-meta-data; - leaf custom-drive { - description "Some VIMs implement custom drives to host custom-files or meta-data"; + container supplemental-boot-data { + 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; - } + } } } @@ -2116,50 +2154,37 @@ module mano-types case image { uses image-properties; } - - case volume { - leaf volume-ref { - description "Reference for pre-existing volume in VIM"; - type string; - } - } } - container boot-params { - leaf boot-volume { - description "This flag indicates if this is boot volume or not"; - type boolean; - } - leaf boot-priority { - description "Boot priority associated with volume"; - type int32; + leaf device-bus { + description "Type of disk-bus on which this disk is exposed to guest"; + type enumeration { + enum ide; + enum usb; + enum virtio; + enum scsi; } } - container guest-params { - description "Guest virtualization parameter associated with volume"; - - leaf device_bus { - description "Type of disk-bus on which this disk is exposed to guest"; - type enumeration { - enum ide; - enum usb; - enum virtio; - enum scsi; - } - } - - leaf device_type { - description "The type of device as exposed to guest"; - type enumeration { + leaf device-type { + description "The type of device as exposed to guest"; + type enumeration { enum disk; enum cdrom; enum floppy; enum lun; - } } + } + } - uses custom-meta-data; + grouping rpc-project-name { + leaf project-name { + default "default"; + description + "Project to which this belongs"; + type leafref { + path "/rw-project:project/rw-project:name"; + } } } }