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 @@ ...@@ -80,8 +80,12 @@
</virtual-compute-desc> </virtual-compute-desc>
<virtual-storage-desc> <virtual-storage-desc>
<id>root</id> <id>root</id>
<type-of-storage>root-storage</type-of-storage> <type-of-storage>block</type-of-storage>
<size-of-storage>10</size-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> </virtual-storage-desc>
<sw-image-desc> <sw-image-desc>
<id>CP</id> <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> <vnfd>
<id>ASA</id> <id>ASA</id>
<provider>My Company</provider> <provider>My Company</provider>
...@@ -36,8 +37,10 @@ ...@@ -36,8 +37,10 @@
</virtual-compute-desc> </virtual-compute-desc>
<virtual-storage-desc> <virtual-storage-desc>
<id>asa-vsd</id> <id>asa-vsd</id>
<type-of-storage xmlns:nfv="urn:etsi:nfv:yang:etsi-nfv-descriptors">nfv:root-storage</type-of-storage> <type-of-storage xmlns:nfv="urn:etsi:nfv:yang:etsi-nfv-descriptors">nfv:block</type-of-storage>
<size-of-storage>0</size-of-storage> <block-storage-data>
<size-of-storage>0</size-of-storage>
</block-storage-data>
</virtual-storage-desc> </virtual-storage-desc>
<sw-image-desc> <sw-image-desc>
<id>asa-image</id> <id>asa-image</id>
...@@ -49,10 +52,10 @@ ...@@ -49,10 +52,10 @@
</checksum> </checksum>
<container-format>bare</container-format> <container-format>bare</container-format>
<disk-format>qcow2</disk-format> <disk-format>qcow2</disk-format>
<min-disk>1</min-disk> <min-disk>0</min-disk>
<min-ram>2.0</min-ram> <min-ram>2.0</min-ram>
<size>1</size> <size>1</size>
<image>http://www.cisco.com/asa.qcow2</image> <image>http://www.mycompany.com/asa.qcow2</image>
</sw-image-desc> </sw-image-desc>
<ext-cpd> <ext-cpd>
<id>inside</id> <id>inside</id>
...@@ -133,4 +136,4 @@ ...@@ -133,4 +136,4 @@
</ns-instantiation-level> </ns-instantiation-level>
</df> </df>
</nsd> </nsd>
</nsd> </nfv>
...@@ -35,8 +35,11 @@ ...@@ -35,8 +35,11 @@
</virtual-compute-desc> </virtual-compute-desc>
<virtual-storage-desc> <virtual-storage-desc>
<id>asa-vsd</id> <id>asa-vsd</id>
<type-of-storage xmlns:nfv="urn:etsi:nfv:yang:etsi-nfv-descriptors">nfv:root-storage</type-of-storage> <type-of-storage xmlns:nfv="urn:etsi:nfv:yang:etsi-nfv-descriptors">nfv:file</type-of-storage>
<size-of-storage>0</size-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> </virtual-storage-desc>
<sw-image-desc> <sw-image-desc>
<id>asa-image</id> <id>asa-image</id>
...@@ -48,10 +51,10 @@ ...@@ -48,10 +51,10 @@
</checksum> </checksum>
<container-format>bare</container-format> <container-format>bare</container-format>
<disk-format>qcow2</disk-format> <disk-format>qcow2</disk-format>
<min-disk>1</min-disk> <min-disk>0</min-disk>
<min-ram>2.0</min-ram> <min-ram>2.0</min-ram>
<size>1</size> <size>1</size>
<image>http://www.cisco.com/asa.qcow2</image> <image>http://www.mycompany.com/asa.qcow2</image>
</sw-image-desc> </sw-image-desc>
<ext-cpd> <ext-cpd>
<id>inside</id> <id>inside</id>
......
...@@ -36,8 +36,12 @@ ...@@ -36,8 +36,12 @@
</virtual-compute-desc> </virtual-compute-desc>
<virtual-storage-desc> <virtual-storage-desc>
<id>asa-vsd</id> <id>asa-vsd</id>
<type-of-storage>root-storage</type-of-storage> <type-of-storage>block</type-of-storage>
<size-of-storage>0</size-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> </virtual-storage-desc>
<sw-image-desc> <sw-image-desc>
<id>asa-image</id> <id>asa-image</id>
...@@ -54,12 +58,23 @@ ...@@ -54,12 +58,23 @@
<size>1</size> <size>1</size>
<image>http://mycompany.images.com/asa.qcow2</image> <image>http://mycompany.images.com/asa.qcow2</image>
</sw-image-desc> </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> <ext-cpd>
<id>inside</id> <id>inside</id>
<int-cpd> <int-virtual-link-desc>inside-vl</int-virtual-link-desc>
<vdu-id>firewall</vdu-id>
<cpd>inside</cpd>
</int-cpd>
<layer-protocol>ethernet</layer-protocol> <layer-protocol>ethernet</layer-protocol>
</ext-cpd> </ext-cpd>
<ext-cpd> <ext-cpd>
...@@ -85,6 +100,26 @@ ...@@ -85,6 +100,26 @@
<min-number-of-instances>1</min-number-of-instances> <min-number-of-instances>1</min-number-of-instances>
<max-number-of-instances>2</max-number-of-instances> <max-number-of-instances>2</max-number-of-instances>
</vdu-profile> </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> <instantiation-level>
<id>double</id> <id>double</id>
<vdu-level> <vdu-level>
...@@ -150,8 +185,11 @@ ...@@ -150,8 +185,11 @@
</virtual-compute-desc> </virtual-compute-desc>
<virtual-storage-desc> <virtual-storage-desc>
<id>csr-vsd</id> <id>csr-vsd</id>
<type-of-storage>root-storage</type-of-storage> <type-of-storage>file</type-of-storage>
<size-of-storage>0</size-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> </virtual-storage-desc>
<sw-image-desc> <sw-image-desc>
<id>csr-image</id> <id>csr-image</id>
......
...@@ -9,6 +9,14 @@ submodule etsi-nfv-common { ...@@ -9,6 +9,14 @@ submodule etsi-nfv-common {
description description
"Common data types for ETSI data models."; "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 { revision 2019-04-25 {
description description
"Initial revision "Initial revision
...@@ -225,22 +233,115 @@ submodule etsi-nfv-common { ...@@ -225,22 +233,115 @@ submodule etsi-nfv-common {
"Base type of storage that identities can derive from."; "Base type of storage that identities can derive from.";
} }
identity root-storage { identity block {
base storage-type; base storage-type;
description description
"Root type of storage."; "Block type of storage.";
} }
identity swap-storage { identity object {
base storage-type; base storage-type;
description description
"Swap type of storage."; "Object type of storage.";
} }
identity ephemeral-storage { identity file {
base storage-type; base storage-type;
description 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 { ...@@ -307,8 +408,8 @@ submodule etsi-nfv-common {
grouping local-affinity-or-anti-affinity-rule { grouping local-affinity-or-anti-affinity-rule {
list local-affinity-or-anti-affinity-rule { list local-affinity-or-anti-affinity-rule {
key "affinity-type affinity-scope"; key "type scope";
leaf affinity-type { leaf type {
type affinity-type; type affinity-type;
description description
"Specifies whether the rule is an affinity rule or an "Specifies whether the rule is an affinity rule or an
...@@ -318,7 +419,7 @@ submodule etsi-nfv-common { ...@@ -318,7 +419,7 @@ submodule etsi-nfv-common {
LocalAffinityOrAntiAffinityRule information element."; LocalAffinityOrAntiAffinityRule information element.";
} }
leaf affinity-scope { leaf scope {
type affinity-scope; type affinity-scope;
description description
"Specifies the scope of the rule, possible values are "Specifies the scope of the rule, possible values are
......
...@@ -14,6 +14,13 @@ module etsi-nfv-descriptors { ...@@ -14,6 +14,13 @@ module etsi-nfv-descriptors {
description description
"Network Function Virtualization Descriptors"; "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 { revision 2019-04-25 {
description description
"Initial revision. "Initial revision.
...@@ -24,6 +31,7 @@ module etsi-nfv-descriptors { ...@@ -24,6 +31,7 @@ module etsi-nfv-descriptors {
container nfv { container nfv {
list vnfd { list vnfd {
key "id"; key "id";
description description
"A VNF Descriptor (VNFD) is a deployment template which "A VNF Descriptor (VNFD) is a deployment template which
describes a VNF in terms of deployment and operational describes a VNF in terms of deployment and operational
......
...@@ -11,6 +11,14 @@ submodule etsi-nfv-ns { ...@@ -11,6 +11,14 @@ submodule etsi-nfv-ns {
description description
"Models for NS according to ETSI GS NFV-IFA 014."; "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 { revision 2019-04-25 {
description description
"Initial revision "Initial revision
...@@ -97,7 +105,7 @@ submodule etsi-nfv-ns { ...@@ -97,7 +105,7 @@ submodule etsi-nfv-ns {
leaf-list vnfd-id { leaf-list vnfd-id {
type leafref { type leafref {
path "../../vnfd/id"; path "/nfv:nfv/nfv:vnfd/nfv:id";
} }
description description
"References the VNFD of a constituent VNF."; "References the VNFD of a constituent VNF.";
...@@ -108,7 +116,7 @@ submodule etsi-nfv-ns { ...@@ -108,7 +116,7 @@ submodule etsi-nfv-ns {
leaf-list pnfd-id { leaf-list pnfd-id {
type leafref { type leafref {
path "../../pnfd/id"; path "/nfv:nfv/nfv:pnfd/nfv:id";
} }
description description
"References the PNFD of a constituent PNF."; "References the PNFD of a constituent PNF.";
...@@ -164,7 +172,7 @@ submodule etsi-nfv-ns { ...@@ -164,7 +172,7 @@ submodule etsi-nfv-ns {
leaf vnfd-id { leaf vnfd-id {
mandatory true; mandatory true;
type leafref { type leafref {
path "../../../../vnfd/id"; path "/nfv:nfv/nfv:vnfd/nfv:id";
} }
must "boolean(../../../vnfd-id[.=current()])"; must "boolean(../../../vnfd-id[.=current()])";
} }
...@@ -172,7 +180,7 @@ submodule etsi-nfv-ns { ...@@ -172,7 +180,7 @@ submodule etsi-nfv-ns {
leaf ext-cpd-id { leaf ext-cpd-id {
mandatory true; mandatory true;
type leafref { 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 { ...@@ -181,7 +189,7 @@ submodule etsi-nfv-ns {
leaf pnfd-id { leaf pnfd-id {
mandatory true; mandatory true;
type leafref { type leafref {
path "../../../../pnfd/id"; path "/nfv:nfv/nfv:pnfd/nfv:id";
} }
must "boolean(../pnfd-id[.=current()])"; must "boolean(../pnfd-id[.=current()])";
} }
...@@ -189,7 +197,7 @@ submodule etsi-nfv-ns { ...@@ -189,7 +197,7 @@ submodule etsi-nfv-ns {
leaf ext-cpd-id { leaf ext-cpd-id {
mandatory true; mandatory true;
type leafref { 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 { ...@@ -415,121 +423,136 @@ submodule etsi-nfv-ns {
element"; element";
} }
list cpd-pool { list nfp-position-element {
key "id"; key "id";
description min-elements 1;
"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";
leaf id { leaf id {
type string; 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 { container desc {
mandatory "true"; choice constituent-base-element-id {
container vnf-profile { mandatory "true";
leaf vnf-profile-id { container vnf-profile {
must ". = deref(../../vnfd-profile-id)" { leaf vnf-profile-id {
} must ". = deref(../../vnfd-profile-id)" {
type leafref { }
path "../../../../../nsd/df/vnf-profile/id"; type leafref {
path "../../../../../../nsd/df/vnf-profile/id";
}
} }
} }
}
container pnf-profile { container pnf-profile {
leaf pnf-profile-id { leaf pnf-profile-id {
must ". = deref(../../pnfd-profile-id)" { must ". = deref(../../pnfd-profile-id)" {
} }
type leafref { type leafref {
path "../../../../../nsd/df/pnf-profile/id"; path "../../../../../../nsd/df/pnf-profile/id";
}
} }
} }
}
container ns-profile { container ns-profile {
leaf ns-profile-id { leaf ns-profile-id {
must ". = deref(../../ns-profile-id)" { must ". = deref(../../ns-profile-id)" {
} }
type leafref { type leafref {
path "../../../../../nsd/df/ns-profile/id"; 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";
}