/*
*
- * 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.
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 {
"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 {
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.";
"The value should be dimmed by the UI.
Only applies to parameters with default values.";
type boolean;
+ default false;
}
leaf hidden {
"The value should be hidden by the UI.
Only applies to parameters with default values.";
type boolean;
+ default false;
}
}
}
}
- 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.";
}
}
+ 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 vca-relationships {
container vca-relationships {
list relation {
}
}
-
- grouping vca-configuration {
+ grouping vca-metrics {
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.";
+ "Information about the VNF or VDU metrics";
+ list metrics {
+ description "List of VCA related metrics";
+ key "name";
+ leaf name {
+ description
+ "Name of the metric, as defined in the Juju charm.";
+ type string;
+ }
+ }
+ } // END - grouping vca-metrics
+ grouping configuration-method {
choice config-method {
description
"Defines the configuration method for the VNF or VDU.";
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;
-
}
}
+ }
+ }
+ grouping ns-configuration {
+ description
+ "Information about NS configuration. Note:
+ In the future this should be equivalent to vca-configuration
+ grouping.";
- list service-primitive {
- rwpb:msg-new ServicePrimitive;
+ uses manotypes:configuration-method;
+ }
+
+ 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.";
+
+ uses manotypes:configuration-method;
+
+ list config-primitive {
+ description
+ "List of config primitives supported by the
+ configuration agent for this VNF or VDU.";
+ key "name";
+
+ leaf name {
description
- "List of service primitives supported by the
- configuration agent for this VNF or VDU.";
+ "Name of the config primitive.";
+ type string;
+ }
+
+ list parameter {
+ description
+ "List of parameters to the config primitive.";
key "name";
+ uses primitive-parameter;
+ }
- leaf name {
- description
- "Name of the service primitive.";
- type string;
- }
+ 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 parameter {
- description
- "List of parameters to the service primitive.";
- key "name";
- uses primitive-parameter;
+ 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;
+ }
}
}
+ }
- list initial-config-primitive {
- rwpb:msg-new InitialConfigPrimitive;
+ list terminate-config-primitive {
+ description
+ "Terminate set of configuration primitives.";
+ key "seq";
+ leaf seq {
description
- "Initial set of configuration primitives.";
- key "seq";
- uses initial-config;
+ "Sequence number for the configuration primitive.";
+ type uint64;
+ }
+ 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;
}
}
+ 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;
}
}
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;
}
}
}
}
+ 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 {
}
} //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 {
type string;
}
- leaf overlay-type {
+ leaf segmentation_id {
+ description
+ "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
- "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;
+ "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";
}
}
}
-
- 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;
leaf widget-type {
description "Defines the UI Display variant of measured counters.";
type manotypes:widget-type;
+ default "COUNTER";
}
leaf units {
}
leaf default-value {
- description "/nsd:nsd-catalog/nsd:nsd/nsd:vendor";
+ description "Default Value for the Input Parameter";
type string;
}
}
}
}
- 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
"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;
+ type relational-operation-type;
}
leaf value {
}
}
+ 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 "";
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;
}
}
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;
case image {
uses image-properties;
}
-
}
leaf device-bus {
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";
+ }
+ }
}
}