Commits (24)
......@@ -80,8 +80,12 @@
</virtual-compute-desc>
<virtual-storage-desc>
<id>root</id>
<type-of-storage>root-storage</type-of-storage>
<size-of-storage>10</size-of-storage>
<type-of-storage>block</type-of-storage>
<block-storage-data>
<size-of-storage>10</size-of-storage>
<rdma-enabled>true</rdma-enabled>
<sw-image-desc>CP</sw-image-desc>
</block-storage-data>
</virtual-storage-desc>
<sw-image-desc>
<id>CP</id>
......@@ -152,17 +156,13 @@
<id>control-plane-active</id>
<min-number-of-instances>1</min-number-of-instances>
<max-number-of-instances>1</max-number-of-instances>
<affinity-or-anti-affinity-group>
<id>control-plane</id>
</affinity-or-anti-affinity-group>
<affinity-or-anti-affinity-group-id>control-plane</affinity-or-anti-affinity-group-id>
</vdu-profile>
<vdu-profile>
<id>control-plane-standby</id>
<min-number-of-instances>1</min-number-of-instances>
<max-number-of-instances>1</max-number-of-instances>
<affinity-or-anti-affinity-group>
<id>control-plane</id>
</affinity-or-anti-affinity-group>
<affinity-or-anti-affinity-group-id>control-plane</affinity-or-anti-affinity-group-id>
</vdu-profile>
<vdu-profile>
<id>data-plane</id>
......@@ -223,17 +223,13 @@
<id>control-plane-active</id>
<min-number-of-instances>1</min-number-of-instances>
<max-number-of-instances>1</max-number-of-instances>
<affinity-or-anti-affinity-group>
<id>control-plane</id>
</affinity-or-anti-affinity-group>
<affinity-or-anti-affinity-group-id>control-plane</affinity-or-anti-affinity-group-id>
</vdu-profile>
<vdu-profile>
<id>control-plane-standby</id>
<min-number-of-instances>1</min-number-of-instances>
<max-number-of-instances>1</max-number-of-instances>
<affinity-or-anti-affinity-group>
<id>control-plane</id>
</affinity-or-anti-affinity-group>
<affinity-or-anti-affinity-group-id>control-plane</affinity-or-anti-affinity-group-id>
</vdu-profile>
<vdu-profile>
<id>data-plane</id>
......
<nsd xmlns="urn:etsi:nfv:yang:etsi-nfv-nsd">
<?xml version="1.0" encoding="UTF-8"?>
<nfv xmlns="urn:etsi:nfv:yang:etsi-nfv-descriptors">
<vnfd>
<id>ASA</id>
<provider>My Company</provider>
......@@ -36,8 +37,10 @@
</virtual-compute-desc>
<virtual-storage-desc>
<id>asa-vsd</id>
<type-of-storage xmlns:nfv="urn:etsi:nfv:yang:etsi-nfv-descriptors">nfv:root-storage</type-of-storage>
<size-of-storage>0</size-of-storage>
<type-of-storage xmlns:nfv="urn:etsi:nfv:yang:etsi-nfv-descriptors">nfv:block</type-of-storage>
<block-storage-data>
<size-of-storage>0</size-of-storage>
</block-storage-data>
</virtual-storage-desc>
<sw-image-desc>
<id>asa-image</id>
......@@ -49,7 +52,7 @@
</checksum>
<container-format>bare</container-format>
<disk-format>qcow2</disk-format>
<min-disk>20</min-disk>
<min-disk>0</min-disk>
<min-ram>2.0</min-ram>
<size>1</size>
<image>http://www.mycompany.com/asa.qcow2</image>
......@@ -133,4 +136,4 @@
</ns-instantiation-level>
</df>
</nsd>
</config>
</nfv>
......@@ -35,8 +35,11 @@
</virtual-compute-desc>
<virtual-storage-desc>
<id>asa-vsd</id>
<type-of-storage xmlns:nfv="urn:etsi:nfv:yang:etsi-nfv-descriptors">nfv:root-storage</type-of-storage>
<size-of-storage>0</size-of-storage>
<type-of-storage xmlns:nfv="urn:etsi:nfv:yang:etsi-nfv-descriptors">nfv:file</type-of-storage>
<file-storage-data>
<size-of-storage>0</size-of-storage>
<int-virtual-link-desc>asa-image</int-virtual-link-desc>
</file-storage-data>
</virtual-storage-desc>
<sw-image-desc>
<id>asa-image</id>
......@@ -48,7 +51,7 @@
</checksum>
<container-format>bare</container-format>
<disk-format>qcow2</disk-format>
<min-disk>20</min-disk>
<min-disk>0</min-disk>
<min-ram>2.0</min-ram>
<size>1</size>
<image>http://www.mycompany.com/asa.qcow2</image>
......
......@@ -36,8 +36,12 @@
</virtual-compute-desc>
<virtual-storage-desc>
<id>asa-vsd</id>
<type-of-storage>root-storage</type-of-storage>
<size-of-storage>0</size-of-storage>
<type-of-storage>block</type-of-storage>
<block-storage-data>
<size-of-storage>1</size-of-storage>
<rdma-enabled>true</rdma-enabled>
<sw-image-desc>asa-image</sw-image-desc>
</block-storage-data>
</virtual-storage-desc>
<sw-image-desc>
<id>asa-image</id>
......@@ -181,8 +185,11 @@
</virtual-compute-desc>
<virtual-storage-desc>
<id>csr-vsd</id>
<type-of-storage>root-storage</type-of-storage>
<size-of-storage>0</size-of-storage>
<type-of-storage>file</type-of-storage>
<file-storage-data>
<size-of-storage>1</size-of-storage>
<int-virtual-link-desc>csr-image</int-virtual-link-desc>
</file-storage-data>
</virtual-storage-desc>
<sw-image-desc>
<id>csr-image</id>
......
......@@ -233,22 +233,22 @@ submodule etsi-nfv-common {
"Base type of storage that identities can derive from.";
}
identity root-storage {
identity block {
base storage-type;
description
"Root type of storage.";
"Block type of storage.";
}
identity swap-storage {
identity object {
base storage-type;
description
"Swap type of storage.";
"Object type of storage.";
}
identity ephemeral-storage {
identity file {
base storage-type;
description
"Ephemeral type of storage.";
"File type of storage.";
}
identity forwarding-behaviour {
......@@ -393,6 +393,19 @@ submodule etsi-nfv-common {
}
}
typedef external-lifecycle-management-script-event {
type enumeration {
enum "instantiation";
enum "scaling";
enum "healing";
enum "termination";
enum "vnf-flavour-change";
enum "vnf-operation-change";
enum "vnf-ext-conn-change";
enum "vnfinfo-modification";
}
}
grouping local-affinity-or-anti-affinity-rule {
list local-affinity-or-anti-affinity-rule {
key "type scope";
......@@ -424,6 +437,7 @@ submodule etsi-nfv-common {
type identityref {
base layer-protocol;
}
min-elements 1;
description
"Identifies the protocols that the VL uses (Ethernet,
MPLS, ODU2, IPV4, IPV6, Pseudo-Wire). The top layer
......
......@@ -355,7 +355,6 @@ submodule etsi-nfv-ns {
"GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
information element";
}
uses security-parameters;
}
list vnffgd {
......@@ -792,21 +791,16 @@ submodule etsi-nfv-ns {
uses local-affinity-or-anti-affinity-rule;
list affinity-or-anti-affinity-group {
key "id";
leaf-list affinity-or-anti-affinity-group-id {
type leafref {
path "../../affinity-or-anti-affinity-group/id";
}
description
"Identifier(s) of the affinity or anti-affinity
group(s) the VnfProfile belongs to.";
reference
"GS NFV IFA014: Section 6.3.3.2 VnfProfile information
element";
leaf id {
type leafref {
path "../../../affinity-or-anti-affinity-group/id";
}
}
}
list virtual-link-connectivity {
......@@ -1004,9 +998,10 @@ submodule etsi-nfv-ns {
uses local-affinity-or-anti-affinity-rule;
list affinity-or-anti-affinity-group {
key "id";
leaf-list affinity-or-anti-affinity-group-id {
type leafref {
path "../../affinity-or-anti-affinity-group/id";
}
description
"Identifies an affinity or anti-affinity group the
VLs instantiated according to the VlProfile belong
......@@ -1014,12 +1009,6 @@ submodule etsi-nfv-ns {
reference
"GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile
information element";
leaf id {
type leafref {
path "../../../affinity-or-anti-affinity-group/id";
}
}
}
container max-bitrate-requirements {
......@@ -1452,21 +1441,16 @@ submodule etsi-nfv-ns {
element";
}
list affinity-or-anti-affinity-group-id {
key "id";
leaf-list affinity-or-anti-affinity-group-id {
type leafref {
path "../../affinity-or-anti-affinity-group/id";
}
description
"Identifies an affinity or anti-affinity group the NSs
created according to this NsProfile belongs to.";
reference
"GS NFV IFA014: Section 6.3.11.2 NsProfile information
element";
leaf id {
type leafref {
path "../../../affinity-or-anti-affinity-group/id";
}
}
}
list virtual-link-connectivity {
......
......@@ -30,8 +30,10 @@ module etsi-nfv-nsd {
container nsd {
list nsd {
key "id";
max-elements 1;
uses nfv:nsd;
description
"The NSD information element is a deployment template whose
instances are used by the NFVO for the lifecycle management
......
......@@ -95,6 +95,79 @@ submodule etsi-nfv-vnf {
"GS NFV-IFA011: Section 7.1.6.6,
VirtualNetworkInterfaceRequirements information element";
}
leaf nic-io-requirements {
type leafref {
path "/nfv:nfv/nfv:vnfd/nfv:virtual-compute-desc/" +
"nfv:logical-node/nfv:id";
}
description
"This references (couples) the CPD with any logical node
I/O requirements (for network devices) that may have been
created. Linking these attributes is necessary so that I/O
requirements that need to be articulated at the logical
node level can be associated with the network interface
requirements associated with the CPD.";
reference
"GS NFV-IFA011: Section 7.1.6.6,
VirtualNetworkInterfaceRequirements information element";
}
}
}
grouping block-storage-data {
leaf size-of-storage {
type uint64;
units "GB";
default 0;
description
"Size of virtualized storage resource in GB.";
reference
"GS NFV IFA011: Section 7.1.9.4.3, BlockStorageData
Information element.";
}
list vdu-storage-requirements {
key "key";
leaf key {
type string;
}
leaf value {
type string;
}
description
"An array of key-value pairs that articulate
the storage deployment requirements.";
reference
"GS NFV IFA011: Section 7.1.9.4.3, BlockStorageData
Information element.";
}
leaf rdma-enabled {
type boolean;
description
"Indicate if the storage support RDMA.";
reference
"GS NFV IFA011: Section 7.1.9.4.3, BlockStorageData
Information element.";
}
leaf sw-image-desc {
type leafref {
path "../../../sw-image-desc/id";
}
must "../size-of-storage >=" +
"../../../sw-image-desc[id=current()]/min-disk" {
}
description
"Software image to be loaded on the VirtualStorage
resource created based on this VirtualStorageDesc.
Shall be absent when used for virtual disks.";
reference
"GS NFV IFA011: Section 7.1.9.4.3, BlockStorageData
Information element.";
}
}
......@@ -491,6 +564,7 @@ submodule etsi-nfv-vnf {
list requirement-detail {
key "key";
min-elements 1;
leaf key {
type string;
......@@ -778,6 +852,24 @@ submodule etsi-nfv-vnf {
VirtualCpuData information element.";
}
}
list virtual-disk {
key "id";
description
"The local or ephemeral disk(s) of the virtualised compute.";
reference
"GS NFV IFA011: Section 7.1.9.2.2, VirtualComputeDesc
Information element.";
leaf id {
type string;
description
"Unique identifier for the list of virtual disks.";
}
uses block-storage-data;
}
}
list virtual-storage-desc {
......@@ -797,70 +889,99 @@ submodule etsi-nfv-vnf {
leaf type-of-storage {
// Needed to be able to onboard images
default root-storage;
type identityref {
base storage-type;
}
default "nfv:block";
description
"Type of virtualised storage resource (e.g. volume,
object).";
reference
"GS NFV IFA011: Section 7.1.9.4, Information elements
related to Virtual Storage.";
}
leaf size-of-storage {
type uint64;
units "GB";
default 0;
description
"Size of virtualised storage resource (e.g. size of
volume, in GB)";
"Type of virtualised storage resource (BLOCK, OBJECT,
FILE).";
reference
"GS NFV IFA011: Section 7.1.9.4, Information elements
related to Virtual Storage.";
}
list vdu-storage-requirements {
key "key";
leaf key {
type string;
}
choice storage {
container block-storage-data {
when '../type-of-storage = "nfv:block"';
description
"Specifies the details of block storage. It shall
be present when the 'typeOfStorage' attribute is set to
'BLOCK'. It shall be absent otherwise.";
reference
"GS NFV IFA011: Section 7.1.9.4, Information elements
related to Virtual Storage.";
uses block-storage-data;
}
container object-storage-data {
when '../type-of-storage = "nfv:object"';
description
"Specifies the details of object storage. It shall be
present when the 'typeOfStorage' attribute is set to
'OBJECT'. It shall be absent otherwise.";
reference
"GS NFV IFA011: Section 7.1.9.4, Information elements
related to Virtual Storage.";
leaf max-size-of-storage {
type uint64;
units "GB";
default 0;
description
"Max size of virtualised storage resource in GB.";
reference
"GS NFV IFA011: Section 7.1.9.4.4, ObjectStorage Information
element.";
}
}
leaf value {
type string;
}
description
"Array of key-value pairs that articulate the storage
deployment requirements.";
reference
"GS NFV IFA011: Section 7.1.9.4.2, VirtualStorageDesc
information element.";
}
container file-storage-data {
when '../type-of-storage = "nfv:file"';
description
"Specifies the details of file storage. It shall be present
when the 'typeOfStorage' attribute is set to 'FILE'. It
shall be absent otherwise.";
reference
"GS NFV IFA011: Section 7.1.9.4, Information elements
related to Virtual Storage.";
leaf size-of-storage {
type uint64;
units "GB";
default 0;
description
"Size of virtualised storage resource in GB.";
reference
"GS NFV IFA011: Section 7.1.9.4.5, FileStorageData
Information element.";
}
leaf rdma-enabled {
type boolean;
description
"Indicate if the storage support RDMA.";
reference
"GS NFV IFA011: Section 7.1.9.4, Information elements
related to Virtual Storage.";
}
leaf file-system-protocol {
type string;
default "cifs";
description
"The shared file system protocol (e.g. NFS, CIFS).";
reference
"GS NFV IFA011: Section 7.1.9.4.5, FileStorageData
Information element.";
}
leaf sw-image-desc {
type leafref {
path "../../sw-image-desc/id";
}
must "../size-of-storage >=" +
"../../sw-image-desc[id=current()]/min-disk" {
}
description
"Software image to be loaded on the VirtualStorage
resource created based on this VirtualStorageDesc.";
reference
"GS NFV IFA011: Section 7.1.9.4, Information elements
related to Virtual Storage.";
leaf int-virtual-link-desc {
type leafref {
path "../../../sw-image-desc/id";
}
mandatory true;
description
"Reference of the internal VLD which this file storage
connects to. The attached VDUs shall connect to the
same internal VLD.";
reference
"GS NFV IFA011: Section 7.1.9.4.5, FileStorageData
Information element.";
}
}
}
}
......@@ -1445,27 +1566,16 @@ submodule etsi-nfv-vnf {
}
uses local-affinity-or-anti-affinity-rule;
list affinity-or-anti-affinity-group {
key "id";
leaf-list affinity-or-anti-affinity-group-id {
type leafref {
path "../../affinity-or-anti-affinity-group/id";
}
description
"Identifier(s) of the affinity or anti-affinity
group(s) the VDU belongs to.";
reference
"GS NFV IFA011: Section 7.1.8.3, VduProfile information
element.";
leaf id {
type leafref {
path "../../../" +
"affinity-or-anti-affinity-group/id";
}
description
"Identifies an affinity or anti-affinity group to
which the affinity or anti-affinity rule applies.";
reference
"GS NFV IFA011: Section 7.1.8.12, AffinityOrAntiAffinity
information element.";
}
}
}
......@@ -1502,12 +1612,9 @@ submodule etsi-nfv-vnf {
}
uses local-affinity-or-anti-affinity-rule;
list affinity-or-anti-affinity-group {
key "id";
leaf id {
type leafref {
path "../../../affinity-or-anti-affinity-group/id";
}
leaf-list affinity-or-anti-affinity-group-id {
type leafref {
path "../../affinity-or-anti-affinity-group/id";
}
description
"Identifier(s) of the affinity or anti-affinity
......@@ -2856,10 +2963,25 @@ submodule etsi-nfv-vnf {
}
leaf-list event {
type internal-lifecycle-management-script-event;
type union {
type internal-lifecycle-management-script-event;
type external-lifecycle-management-script-event;
}
description
"Describes VNF lifecycle event(s) or an external stimulus
detected on a VNFM reference point.";
detected on a VNFM reference point.
If the event is of type
internal-lifecycle-management-script-event, then depending
on whether the event is of type start-* or end-*, the
script associated with the VNF LCM operation needs to be
executed before the event, or after the event,
respectively.
On the other hand, if the event is of type
external-lifecycle-management-script-event, then the
script associated with the event needs to be executed
for the given VNF LCM operation.";
reference
"GS NFV IFA011: Section 7.1.13 LifeCycleManagementScript
information element";
......@@ -2931,10 +3053,15 @@ submodule etsi-nfv-vnf {
}
list element-group {
status deprecated;
key "id";
description
"Describes the associated elements of a VNFD for a certain
purpose during VNF lifecycle management.";
purpose during VNF lifecycle management.
Reason for deprecating this node - Information about which
VDU and VLD are involved in scaling is better defined by
ScalingDelta.";
reference
"GS NFV IFA011: Section 7.1.2 VNFD information element";
......