module mano-types
{
- namespace "urn:ietf:params:xml:ns:yang:nfvo:mano-types";
+ namespace "urn:etsi:osm:yang:mano-types";
prefix "manotypes";
import ietf-inet-types {
prefix "inet";
}
- import rw-project {
- prefix "rw-project";
+ import osm-project {
+ prefix "osm-project";
}
revision 2017-02-08 {
description
"Name of the configuration primitive.";
type string;
- mandatory "true";
+ mandatory true;
}
leaf user-defined-script {
}
- grouping vca-relationships {
- container vca-relationships {
- list relation {
- description "List of relations between VCA componets.";
+ grouping vca-relations {
+ list relation {
+ description "List of relations between elements in this descriptor.";
+ key "name";
+
+ leaf name {
+ description
+ "Name of the relation.";
+
+ type string;
+ }
- key "requires provides";
+ list entities {
+ description
+ "List of two elements to be related.
+ Elements to be related are identified by a pair (id, endpoint).
+ The relation will relate (id1, endpoint1) to (id2, endpoint2).";
+ key "id";
- leaf requires {
+ leaf id {
description
- "Name of the required relation.";
+ "A string, reference to the element id in the descriptor.
+ It could be a vnfd-id or a vdu-id in a VNFD,
+ or a nsd-id or member-vnf-index in a NSD.";
type string;
}
- leaf provides {
+ leaf endpoint {
description
- "Name of the provided relation.";
+ "Endpoint name defining the relation.";
type string;
}
}
"Name of the metric, as defined in the Juju charm.";
type string;
}
+ leaf execution-environment-ref {
+ description
+ "Leaf reference to the particular execution environment getting that metric";
+ type leafref {
+ path "../../execution-environment-list/id";
+ }
+ }
+ leaf execution-environment-metric {
+ description
+ "Metric in the execution environment referenced by execution-environment-ref";
+ type string;
+ }
}
} // END - grouping vca-metrics
- 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.";
-
+ grouping configuration-method {
choice config-method {
description
"Defines the configuration method for the VNF or VDU.";
type boolean;
default true;
}
- uses manotypes:vca-relationships;
+ leaf cloud {
+ description
+ "Type of cloud where the charm will be deployed. It only
+ applies to proxy charms (not native)";
+ type enumeration {
+ enum lxd;
+ enum k8s;
+ }
+ default lxd;
+ }
+ }
+ }
+
+ case execution-environment-list {
+ description
+ "List of Execution Environments to configure or monitor VNF or VDU.";
+ list execution-environment-list {
+ key "id";
+ leaf id {
+ description "Execution environment identifier.";
+ type string;
+ }
+ choice execution-environment-model {
+ description "Execution environment model (juju, helm-chart)";
+ case juju {
+ description
+ "Interact with the VNF or xDU 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;
+ }
+ leaf cloud {
+ description
+ "Type of cloud where the charm will be deployed. It only
+ applies to proxy charms (not native)";
+ type enumeration {
+ enum lxd;
+ enum k8s;
+ }
+ default lxd;
+ }
+ }
+ }
+ case helm-chart {
+ description
+ "Interact with the VNF or xDU through Helm.";
+ leaf helm-chart {
+ description
+ "Helm chart that models the execution environment, in any of the following ways:
+ - <helm-repo>/<helm-chart>
+ - <helm-chart folder name under helm-charts folder in the package>
+ - <helm-chart tgz file (w/ or w/o extension) under helm-charts folder in the package>
+ - <URL_where_to_fetch_chart>
+ ";
+ type string;
+ }
+ leaf helm-version {
+ description
+ "Helm version to use for this helm-chart, v3 by default";
+ type enumeration {
+ enum "v2";
+ enum "v3";
+ }
+ default "v3";
+ }
+ }
+ }
+ leaf metric-service {
+ description
+ "Service name in the execution environment. For helm charts, it will be
+ the name of the kubernetes service used by the exporter to expose metrics
+ to the OSM collector.
+ ";
+ type string;
+ }
+ leaf connection-point-ref {
+ description
+ "String representing a leaf reference to the particular external connection point
+ This field should match /vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id/vnfd:connection-point/vnfd:name
+ ";
+ type string;
+ // type leafref {
+ // path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id/vnfd:connection-point/vnfd:name";
+ // }
+ }
}
}
+
}
+ }
+
+ grouping vca-config-access {
+
+ container config-access {
+
+ description
+ "Indicates the way to access to the xNF or xDU for VCA configuration.
+ For the moment there is a single way (ssh-access).";
+
+ container ssh-access {
+
+ description
+ "If the xNF requires ssh and this parameter is set, SSH keys
+ will be injected so that VCA can configure the xNF or xDU via ssh.";
+
+ leaf required {
+ description "whether ssh access is needed or not";
+ type boolean;
+ default false;
+ }
+
+ leaf default-user {
+ description "Default user for ssh";
+ type string;
+ }
+ }
+ }
+ } // END - grouping vca-config-access
+
+ grouping vca-configuration {
+ description
+ "Common information in the descriptors for NS, 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
type string;
}
+ leaf execution-environment-ref {
+ description
+ "Leaf reference to the particular execution environment";
+ type leafref {
+ path "../../execution-environment-list/id";
+ }
+ }
+
+ leaf execution-environment-primitive {
+ description
+ "Name of the primitive in the execution enviroment. If not explicit,
+ the leaf 'name' will be used as the name of the primitive.";
+ type string;
+ }
+
list parameter {
description
"List of parameters to the config primitive.";
case primitive-definition {
leaf name {
description
- "Name of the configuration primitive.";
+ "Name of the configuration primitive in the execution environment.";
type string;
}
+ leaf execution-environment-ref {
+ description
+ "Leaf reference to the particular execution environment";
+ type leafref {
+ path "../../execution-environment-list/id";
+ }
+ }
+
uses primitive-parameter-value;
leaf user-defined-script {
}
}
+ list terminate-config-primitive {
+ description
+ "Terminate set of configuration primitives.";
+ key "seq";
+ leaf seq {
+ description
+ "Sequence number for the configuration primitive.";
+ type uint64;
+ }
+ leaf name {
+ description
+ "Name of the configuration primitive in the execution environment.";
+ type string;
+ }
+
+ leaf execution-environment-ref {
+ description
+ "Leaf reference to the particular execution environment";
+ type leafref {
+ path "../../execution-environment-list/id";
+ }
+ }
+
+ 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
- // between a VNF and the existing network.
+ ELAN: A multipoint service connecting a set of elements
+ ELINE: A point-to-point service connecting two elements
+ L3: A service providing either Layer-3 visibility (IP) between
+ VDUs/VNFs or explicit interconnection between two ELAN VLDs.";
// 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 L3;
// enum ETREE;
}
}
enum disk_write_bytes;
enum packets_sent;
enum packets_received;
- enum packets_dropped;
+ enum packets_in_dropped;
+ enum packets_out_dropped;
}
}
}
}
-
leaf om-cpu-model-string {
description "OpenMANO CPU model string";
type string;
type string;
}
}
+
}
}
}
}
- 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.";
}
}
+ 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.";
}
}
- 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;
- }
- }
-
- list vnf-primitive-group {
- description
- "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 http-endpoints {
list http-endpoint {
description
}
}
- grouping alarm {
- leaf alarm-id {
- description
- "This field is reserved for the identifier assigned by the VIM provider";
-
- type string;
- }
-
+ grouping alarm-properties {
leaf name {
description "A human readable string to identify the alarm";
type string;
type alarm-severity-type;
}
- leaf metric {
- description "The metric to be tracked by this alarm.";
- type alarm-metric-type;
- }
-
leaf statistic {
description "The type of metric statistic that is tracked by this alarm";
type alarm-statistic-type;
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;
description
"Project to which this belongs";
type leafref {
- path "/rw-project:project/rw-project:name";
+ path "/osm-project:project/osm-project:name";
}
}
}