Commit 63d359ee authored by Mahesh Jethanandani's avatar Mahesh Jethanandani
Browse files

Merge branch 'dev-v2.8.1' into 'issue#1'

# Conflicts:
#   example-data/complex-vnfd.xml
#   example-data/nfv-nsd.xml
#   example-data/nfv-vnfd.xml
parents e6af2d7a 6bf709ac
Pipeline #2126 passed with stage
in 0 seconds
......@@ -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>
......
<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,10 +52,10 @@
</checksum>
<container-format>bare</container-format>
<disk-format>qcow2</disk-format>
<min-disk>1</min-disk>
<min-disk>0</min-disk>
<min-ram>2.0</min-ram>
<size>1</size>
<image>http://www.cisco.com/asa.qcow2</image>
<image>http://www.mycompany.com/asa.qcow2</image>
</sw-image-desc>
<ext-cpd>
<id>inside</id>
......@@ -133,4 +136,4 @@
</ns-instantiation-level>
</df>
</nsd>
</nsd>
</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,10 +51,10 @@
</checksum>
<container-format>bare</container-format>
<disk-format>qcow2</disk-format>
<min-disk>1</min-disk>
<min-disk>0</min-disk>
<min-ram>2.0</min-ram>
<size>1</size>
<image>http://www.cisco.com/asa.qcow2</image>
<image>http://www.mycompany.com/asa.qcow2</image>
</sw-image-desc>
<ext-cpd>
<id>inside</id>
......
......@@ -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>
......@@ -54,12 +58,23 @@
<size>1</size>
<image>http://mycompany.images.com/asa.qcow2</image>
</sw-image-desc>
<int-virtual-link-desc>
<id>inside-vl</id>
<flavour>
<id>1g</id>
<qos>
<latency>1</latency>
<packet-delay-variation>1</packet-delay-variation>
<packet-loss-ratio>0.02</packet-loss-ratio>
</qos>
</flavour>
<connectivity-type>
<layer-protocol>ethernet</layer-protocol>
</connectivity-type>
</int-virtual-link-desc>
<ext-cpd>
<id>inside</id>
<int-cpd>
<vdu-id>firewall</vdu-id>
<cpd>inside</cpd>
</int-cpd>
<int-virtual-link-desc>inside-vl</int-virtual-link-desc>
<layer-protocol>ethernet</layer-protocol>
</ext-cpd>
<ext-cpd>
......@@ -85,6 +100,26 @@
<min-number-of-instances>1</min-number-of-instances>
<max-number-of-instances>2</max-number-of-instances>
</vdu-profile>
<virtual-link-profile>
<id>inside-vl</id>
<flavour>1g</flavour>
<max-bit-rate-requirements>
<root>10</root>
</max-bit-rate-requirements>
<min-bit-rate-requirements>
<root>1</root>
</min-bit-rate-requirements>
<virtual-link-protocol-data>
<associated-layer-protocol>ipv4</associated-layer-protocol>
<l3-protocol-data>
<name>inside-network</name>
<ip-version>ipv4</ip-version>
<cidr>192.138.0.0/8</cidr>
<gateway-ip>192.138.0.1</gateway-ip>
<dhcp-enabled>true</dhcp-enabled>
</l3-protocol-data>
</virtual-link-protocol-data>
</virtual-link-profile>
<instantiation-level>
<id>double</id>
<vdu-level>
......@@ -150,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>
......
......@@ -9,6 +9,14 @@ submodule etsi-nfv-common {
description
"Common data types for ETSI data models.";
revision 2019-10-01 {
description
"Version 2.7.1.
Common data structures to support VNFD and NSD according to:
ETSI GS NFV-IFA 014 Ed271v264
ETSI GS NFV-IFA 011 Ed271v264";
}
revision 2019-04-25 {
description
"Initial revision
......@@ -225,22 +233,115 @@ 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 {
description
"Base identity for forwarding behaviour.";
}
identity all {
base forwarding-behaviour;
description
"Traffic flows shall be forwarded simultaneously to all CP
or SAP instances created from the referenced CP profile(s).";
}
identity lb {
base forwarding-behaviour;
description
"Traffic flows shall be forwarded to one CP or SAP instance
created from the referenced CP profile(s) selected based on
a load-balancing algorithm.";
}
identity vip-function {
description
"Indicates the function the virtual IP address is used for.";
}
identity high-availability {
base vip-function;
description
"High availability function.";
}
identity load-balancing {
base vip-function;
description
"Load balancing function.";
}
identity vnic-type {
description
"Describes the type of the virtual network interface realizing
the CPs instantiated from this CPD. This is used to determine
which mechanism driver(s) to be used to bind the port. Value:
• NORMAL
• VIRTIO
• DIRECT
• BAREMETAL
• VIRTIO-FORWARDER
• DIRECT-PHYSICAL
• SMART-NIC";
}
identity normal {
base vnic-type;
description
"Normal NIC.";
}
identity virtio {
base vnic-type;
description
"VirtIO NIC.";
}
identity direct {
base vnic-type;
description
"Direct NIC type.";
}
identity bare-metal {
base vnic-type;
description
"Bare metal NIC type.";
}
identity virtio-forwarder {
base vnic-type;
description
"VirtIO Forwarder NIC type.";
}
identity direct-physical {
base vnic-type;
description
"Direct physical NIC type.";
}
identity smart-nic {
base vnic-type;
description
"SmartNIC or Smart NIC type.";
}
/*
......@@ -307,8 +408,8 @@ submodule etsi-nfv-common {
grouping local-affinity-or-anti-affinity-rule {
list local-affinity-or-anti-affinity-rule {
key "affinity-type affinity-scope";
leaf affinity-type {
key "type scope";
leaf type {
type affinity-type;
description
"Specifies whether the rule is an affinity rule or an
......@@ -318,7 +419,7 @@ submodule etsi-nfv-common {
LocalAffinityOrAntiAffinityRule information element.";
}
leaf affinity-scope {
leaf scope {
type affinity-scope;
description
"Specifies the scope of the rule, possible values are
......
......@@ -14,6 +14,13 @@ module etsi-nfv-descriptors {
description
"Network Function Virtualization Descriptors";
revision 2019-10-01 {
description
"Version 2.7.1.
NSD and PNFD according to ETSI GS NFV-IFA 014 Ed271v264
VNFD according to ETSI GS NFV-IFA 011 Ed271v264.";
}
revision 2019-04-25 {
description
"Initial revision.
......@@ -24,6 +31,7 @@ module etsi-nfv-descriptors {
container nfv {
list vnfd {
key "id";
description
"A VNF Descriptor (VNFD) is a deployment template which
describes a VNF in terms of deployment and operational
......
......@@ -11,6 +11,14 @@ submodule etsi-nfv-ns {
description
"Models for NS according to ETSI GS NFV-IFA 014.";
revision 2019-10-01 {
description
"Version 2.7.1.
Common data structures to support VNFD and NSD according to:
ETSI GS NFV-IFA 014 Ed271v264
ETSI GS NFV-IFA 011 Ed271v264";
}
revision 2019-04-25 {
description
"Initial revision
......@@ -97,7 +105,7 @@ submodule etsi-nfv-ns {
leaf-list vnfd-id {
type leafref {
path "../../vnfd/id";
path "/nfv:nfv/nfv:vnfd/nfv:id";
}
description
"References the VNFD of a constituent VNF.";
......@@ -108,7 +116,7 @@ submodule etsi-nfv-ns {
leaf-list pnfd-id {
type leafref {
path "../../pnfd/id";
path "/nfv:nfv/nfv:pnfd/nfv:id";
}
description
"References the PNFD of a constituent PNF.";
......@@ -164,7 +172,7 @@ submodule etsi-nfv-ns {
leaf vnfd-id {
mandatory true;
type leafref {
path "../../../../vnfd/id";
path "/nfv:nfv/nfv:vnfd/nfv:id";
}
must "boolean(../../../vnfd-id[.=current()])";
}
......@@ -172,7 +180,7 @@ submodule etsi-nfv-ns {
leaf ext-cpd-id {
mandatory true;
type leafref {
path "deref(../vnfd-id)/../ext-cpd/id";
path "deref(../vnfd-id)/../nfv:ext-cpd/nfv:id";
}
}
}
......@@ -181,7 +189,7 @@ submodule etsi-nfv-ns {
leaf pnfd-id {
mandatory true;
type leafref {
path "../../../../pnfd/id";
path "/nfv:nfv/nfv:pnfd/nfv:id";
}
must "boolean(../pnfd-id[.=current()])";
}
......@@ -189,7 +197,7 @@ submodule etsi-nfv-ns {
leaf ext-cpd-id {
mandatory true;
type leafref {
path "deref(../pnfd-id)/../ext-cpd/id";
path "deref(../pnfd-id)/../nfv:ext-cpd/nfv:id";
}
}
}
......@@ -415,121 +423,136 @@ submodule etsi-nfv-ns {
element";
}
list cpd-pool {
list nfp-position-element {
key "id";
description
"Describes a pool of descriptors of connection points
attached to one of the constituent VNFs and PNFs and/or
one of the SAPs of the parent NS or of a nested NS.";
reference
"GS NFV IFA014: Section 6.4.2.2 Vnffgd information
element";
min-elements 1;
leaf id {
type string;
description
"Identifier of this NfpPositionElemen information
element. It uniquely identifies an
NfpPositionElemen.";
reference
"GS NFV IFA014: Section 6.4.6.2 NfpPositionElement
information element";
}
choice constituent-base-element-id {
mandatory "true";
container vnf-profile {
leaf vnf-profile-id {
must ". = deref(../../vnfd-profile-id)" {
}
type leafref {
path "../../../../../nsd/df/vnf-profile/id";
container desc {
choice constituent-base-element-id {
mandatory "true";
container vnf-profile {
leaf vnf-profile-id {
must ". = deref(../../vnfd-profile-id)" {
}
type leafref {
path "../../../../../../nsd/df/vnf-profile/id";
}
}
}
}
container pnf-profile {
leaf pnf-profile-id {
must ". = deref(../../pnfd-profile-id)" {
}
type leafref {
path "../../../../../nsd/df/pnf-profile/id";
container pnf-profile {
leaf pnf-profile-id {
must ". = deref(../../pnfd-profile-id)" {
}
type leafref {
path "../../../../../../nsd/df/pnf-profile/id";
}
}
}
}
container ns-profile {
leaf ns-profile-id {
must ". = deref(../../ns-profile-id)" {
}
type leafref {
path "../../../../../nsd/df/ns-profile/id";
container ns-profile {
leaf ns-profile-id {
must ". = deref(../../ns-profile-id)" {
}
type leafref {
path "../../../../../../nsd/df/ns-profile/id";
}
}
}
description
"Reference to the profile of an NS constituent.";
reference
"GS NFV IFA014: Section 6.4.8
CpdInConstituentElement information element";
}
description
"Reference to the profile of an NS constituent.";
reference
"GS NFV IFA014: Section 6.4.8 CpdInConstituentElement
information element";
}
choice constituent-cpd-id {
container vnf {
leaf vnfd-id {
must ". = deref(../../vnfd-profile-id)/../vnfd-id" {
}
type leafref {
path "../../../../../vnfd/id";
choice constituent-cpd-id {
container vnf {
leaf vnfd-id {
must ". = deref(../../vnfd-profile-id)/../vnfd-id" {
}
type leafref {
path "/nfv:nfv/nfv:vnfd/nfv:id";
}
}
}
leaf cpd-id {
type leafref {
path "deref(../vnfd-id)/../ext-cpd/id";
leaf cpd-id {
type leafref {
path "deref(../vnfd-id)/../nfv:ext-cpd/nfv:id";
}
}
}
}
container pnf {
leaf pnfd-id {
must ". = deref(../../pnfd-profile-id)/../pnfd-id" {
container pnf {
leaf pnfd-id {
must ". = deref(../../pnfd-profile-id)/../pnfd-id" {
}
type leafref {
path "/nfv:nfv/nfv:pnfd/nfv:id";
}
}
type leafref {
path "../../../../../pnfd/id";
leaf pnf-cpd-id {
type leafref {
path "deref(../pnfd-id)/../nfv:ext-cpd/nfv:id";
}
}
}
leaf pnf-cpd-id {
type leafref {
path "deref(../pnfd-id)/../ext-cpd/id";
}
}
}
container ns {
leaf nsd-id {
must ". = deref(../../nested-ns-profile-id)/" +
"../nsd-id" {
}
type leafref {
path "../../../../../nsd/id";
container ns {
leaf nsd-id {
must ". = deref(../../nested-ns-profile-id)/" +
"../nsd-id" {
}
type leafref {
path "../../../../../../nsd/id";
}
}
}
leaf sap-cpd-id {
type leafref {
path "deref(../nsd-id)/../sapd/id";
leaf sap-cpd-id {
type leafref {
path "deref(../nsd-id)/../sapd/id";
}
}
}
description
"References the VNF external CPD for a given
VnfProfile, or the PNF external CPD for a given
PnfProfile, or a NS SAPD for a given NsProfile
identified by the constituentBaseElementId.";
reference
"GS NFV IFA014: Section 6.4.8.2
CpdInConstituentElement information element";
}
description
"A reference to the descriptor of a connection point
attached to one of the constituent VNFs and PNFs or to
the descriptor of a NS SAP.";
"Specifies a CPD or SAPD in the context of a profile
of an NS constituent element.";
reference
"GS NFV IFA014: Section 6.4.4.2 CpdPool information
element";
"GS NFV IFA014: Section 6.4.6.2 NfpPositionElement
information element";
}
description
"One or a pair of CPDs or SAPDs. These descriptors
shall be members of the CpdPool associated to the
parent VNFFG.";
reference
"GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
information element";
}
list nfpd {
key "id";
description
"The network forwarding path associated to the VNFFG.";
reference
"GS NFV IFA014: Section 6.4.2.2 Vnffgd information
element";
leaf id {
type string;
description
......@@ -544,32 +567,18 @@ submodule etsi-nfv-ns {
type string;