Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
NFV - Network Functions Virtualisation
SOL006
Commits
0463e048
Commit
0463e048
authored
Jun 25, 2019
by
Mahesh Jethanandani
Browse files
Address bug#224
parent
fb9620e7
Pipeline
#1231
passed with stage
in 0 seconds
Changes
6
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
example-data/complex-vnfd.xml
View file @
0463e048
...
...
@@ -78,11 +78,11 @@
<num-virtual-cpu>
16
</num-virtual-cpu>
</virtual-cpu>
</virtual-compute-desc>
<virtual-storage-desc
riptor
>
<virtual-storage-desc>
<id>
root
</id>
<type-of-storage>
root-storage
</type-of-storage>
<size-of-storage>
10
</size-of-storage>
</virtual-storage-desc
riptor
>
</virtual-storage-desc>
<sw-image-desc>
<id>
CP
</id>
<name>
CP
</name>
...
...
@@ -116,17 +116,13 @@
<int-virtual-link-desc>
<id>
internal-vl
</id>
<connectivity-type>
<layer-protocol>
<protocol>
ipv4
</protocol>
</layer-protocol>
<layer-protocol>
ipv4
</layer-protocol>
</connectivity-type>
</int-virtual-link-desc>
<int-virtual-link-desc>
<id>
mgmt
</id>
<connectivity-type>
<layer-protocol>
<protocol>
ipv4
</protocol>
</layer-protocol>
<layer-protocol>
ipv4
</layer-protocol>
</connectivity-type>
</int-virtual-link-desc>
<ext-cpd>
...
...
example-data/nfv-nsd.xml
View file @
0463e048
<nsd
xmlns=
"urn:etsi:nfv:yang:etsi-nfv-nsd"
>
<vnfd>
<id>
ASA
</id>
<provider>
My Company
</provider>
<product-name>
My Company ASAv
</product-name>
<software-version>
9.8
</software-version>
<version>
9.8
</version>
<vnfm-info>
My Company Vnfm
</vnfm-info>
<vdu>
<id>
firewall
</id>
<name>
Firewall VDU
</name>
<int-cpd>
<id>
inside
</id>
<layer-protocol
xmlns:nfv=
"urn:etsi:nfv:yang:etsi-nfv-descriptors"
>
nfv:ethernet
</layer-protocol>
</int-cpd>
<int-cpd>
<id>
management
</id>
<layer-protocol
xmlns:nfv=
"urn:etsi:nfv:yang:etsi-nfv-descriptors"
>
nfv:ethernet
</layer-protocol>
</int-cpd>
<int-cpd>
<id>
outside
</id>
<layer-protocol
xmlns:nfv=
"urn:etsi:nfv:yang:etsi-nfv-descriptors"
>
nfv:ethernet
</layer-protocol>
</int-cpd>
<virtual-compute-desc>
asa-vcd
</virtual-compute-desc>
<virtual-storage-desc>
asa-vsd
</virtual-storage-desc>
<sw-image-desc>
asa-image
</sw-image-desc>
</vdu>
<virtual-compute-desc>
<id>
asa-vcd
</id>
<virtual-memory>
<size>
4.0
</size>
</virtual-memory>
<virtual-cpu>
<num-virtual-cpu>
2
</num-virtual-cpu>
</virtual-cpu>
</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>
</virtual-storage-desc>
<sw-image-desc>
<id>
asa-image
</id>
<name>
ASA image
</name>
<version>
1.1
</version>
<checksum>
<algorithm
xmlns:nfv=
"urn:etsi:nfv:yang:etsi-nfv-descriptors"
>
nfv:sha-224
</algorithm>
<hash>
deadbeef
</hash>
</checksum>
<container-format>
bare
</container-format>
<disk-format>
qcow2
</disk-format>
<min-ram>
2.0
</min-ram>
<size>
1
</size>
<image>
http://www.cisco.com/asa.qcow2
</image>
</sw-image-desc>
<ext-cpd>
<id>
inside
</id>
<int-cpd>
<vdu-id>
firewall
</vdu-id>
<cpd>
inside
</cpd>
</int-cpd>
<layer-protocol
xmlns:nfv=
"urn:etsi:nfv:yang:etsi-nfv-descriptors"
>
nfv:ethernet
</layer-protocol>
</ext-cpd>
<ext-cpd>
<id>
management
</id>
<int-cpd>
<vdu-id>
firewall
</vdu-id>
<cpd>
management
</cpd>
</int-cpd>
<layer-protocol
xmlns:nfv=
"urn:etsi:nfv:yang:etsi-nfv-descriptors"
>
nfv:ethernet
</layer-protocol>
</ext-cpd>
<ext-cpd>
<id>
outside
</id>
<int-cpd>
<vdu-id>
firewall
</vdu-id>
<cpd>
outside
</cpd>
</int-cpd>
<layer-protocol
xmlns:nfv=
"urn:etsi:nfv:yang:etsi-nfv-descriptors"
>
nfv:ethernet
</layer-protocol>
</ext-cpd>
<df>
<id>
normal
</id>
<vdu-profile>
<id>
firewall
</id>
<min-number-of-instances>
1
</min-number-of-instances>
<max-number-of-instances>
2
</max-number-of-instances>
</vdu-profile>
<instantiation-level>
<id>
double
</id>
<vdu-level>
<vdu-id>
firewall
</vdu-id>
<number-of-instances>
2
</number-of-instances>
</vdu-level>
</instantiation-level>
<instantiation-level>
<id>
single
</id>
<vdu-level>
<vdu-id>
firewall
</vdu-id>
<number-of-instances>
1
</number-of-instances>
</vdu-level>
</instantiation-level>
<default-instantiation-level>
single
</default-instantiation-level>
</df>
</vnfd>
<nsd>
<id>
firewall-nsd
</id>
<vnfd-id>
ASA
</vnfd-id>
<sapd>
<id>
inside
</id>
</sapd>
<sapd>
<id>
management
</id>
</sapd>
<sapd>
<id>
outside
</id>
</sapd>
<df>
<id>
firewall
</id>
<vnf-profile>
<id>
firewall
</id>
<vnfd-id>
ASA
</vnfd-id>
<flavour-id>
normal
</flavour-id>
<instantiation-level>
single
</instantiation-level>
<min-number-of-instances>
1
</min-number-of-instances>
<max-number-of-instances>
1
</max-number-of-instances>
</vnf-profile>
<ns-instantiation-level>
<id>
single
</id>
<vnf-to-level-mapping>
<vnf-profile-id>
firewall
</vnf-profile-id>
<number-of-instances>
1
</number-of-instances>
</vnf-to-level-mapping>
</ns-instantiation-level>
</df>
<?xml version="1.0" encoding="UTF-8"?>
<config
xmlns=
"urn:ietf:params:xml:ns:netconf:base:1.0"
>
<nfv
xmlns=
"urn:etsi:nfv:yang:etsi-nfv-descriptors"
>
<vnfd>
<id>
ASA
</id>
<provider>
My Company
</provider>
<product-name>
My Company ASAv
</product-name>
<software-version>
9.8
</software-version>
<version>
9.8
</version>
<vnfm-info>
My Company Vnfm
</vnfm-info>
<vdu>
<id>
firewall
</id>
<name>
Firewall VDU
</name>
<int-cpd>
<id>
inside
</id>
<layer-protocol>
ethernet
</layer-protocol>
</int-cpd>
<int-cpd>
<id>
management
</id>
<layer-protocol>
ethernet
</layer-protocol>
</int-cpd>
<int-cpd>
<id>
outside
</id>
<layer-protocol>
ethernet
</layer-protocol>
</int-cpd>
<virtual-compute-desc>
asa-vcd
</virtual-compute-desc>
<virtual-storage-desc>
asa-vsd
</virtual-storage-desc>
<sw-image-desc>
asa-image
</sw-image-desc>
</vdu>
<virtual-compute-desc>
<id>
asa-vcd
</id>
<virtual-memory>
<size>
4.0
</size>
</virtual-memory>
<virtual-cpu>
<num-virtual-cpu>
2
</num-virtual-cpu>
</virtual-cpu>
</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>
</virtual-storage-desc>
<sw-image-desc>
<id>
asa-image
</id>
<name>
ASA image
</name>
<version>
1.1
</version>
<checksum>
<algorithm>
sha-224
</algorithm>
<hash>
deadbeef
</hash>
</checksum>
<container-format>
bare
</container-format>
<disk-format>
qcow2
</disk-format>
<min-disk>
1
</min-disk>
<min-ram>
2.0
</min-ram>
<size>
1
</size>
<image>
http://mycompany.images.com/asa.qcow2
</image>
</sw-image-desc>
<ext-cpd>
<id>
inside
</id>
<int-cpd>
<vdu-id>
firewall
</vdu-id>
<cpd>
inside
</cpd>
</int-cpd>
<layer-protocol>
ethernet
</layer-protocol>
</ext-cpd>
<ext-cpd>
<id>
management
</id>
<int-cpd>
<vdu-id>
firewall
</vdu-id>
<cpd>
management
</cpd>
</int-cpd>
<layer-protocol>
ethernet
</layer-protocol>
</ext-cpd>
<ext-cpd>
<id>
outside
</id>
<int-cpd>
<vdu-id>
firewall
</vdu-id>
<cpd>
outside
</cpd>
</int-cpd>
<layer-protocol>
ethernet
</layer-protocol>
</ext-cpd>
<df>
<id>
normal
</id>
<vdu-profile>
<id>
firewall
</id>
<min-number-of-instances>
1
</min-number-of-instances>
<max-number-of-instances>
2
</max-number-of-instances>
</vdu-profile>
<instantiation-level>
<id>
double
</id>
<vdu-level>
<vdu-id>
firewall
</vdu-id>
<number-of-instances>
2
</number-of-instances>
</vdu-level>
</instantiation-level>
<instantiation-level>
<id>
single
</id>
<vdu-level>
<vdu-id>
firewall
</vdu-id>
<number-of-instances>
1
</number-of-instances>
</vdu-level>
</instantiation-level>
<default-instantiation-level>
single
</default-instantiation-level>
<lcm-operations-configuration>
<scale-vnf-to-level-op-config>
<arbitrary-target-levels-supported>
true
</arbitrary-target-levels-supported>
</scale-vnf-to-level-op-config>
<terminate-vnf-op-config>
<min-graceful-termination>
1
</min-graceful-termination>
</terminate-vnf-op-config>
<operate-vnf-op-config>
<min-graceful-stop-timeout>
1
</min-graceful-stop-timeout>
</operate-vnf-op-config>
</lcm-operations-configuration>
</df>
</vnfd>
</nfv>
<nsd
xmlns=
"urn:etsi:nfv:yang:etsi-nfv-nsd"
>
<nsd>
<id>
firewall-nsd
</id>
<vnfd-id>
ASA
</vnfd-id>
<sapd>
<id>
inside
</id>
</sapd>
<sapd>
<id>
management
</id>
</sapd>
<sapd>
<id>
outside
</id>
</sapd>
<df>
<id>
firewall
</id>
<vnf-profile>
<id>
firewall
</id>
<vnfd-id>
ASA
</vnfd-id>
<flavour-id>
normal
</flavour-id>
<instantiation-level>
single
</instantiation-level>
<min-number-of-instances>
1
</min-number-of-instances>
<max-number-of-instances>
1
</max-number-of-instances>
</vnf-profile>
<ns-instantiation-level>
<id>
single
</id>
<vnf-to-level-mapping>
<vnf-profile-id>
firewall
</vnf-profile-id>
<number-of-instances>
1
</number-of-instances>
</vnf-to-level-mapping>
</ns-instantiation-level>
</df>
</nsd>
</nsd>
</
nsd
>
</
config
>
example-data/nfv-vnfd.xml
View file @
0463e048
...
...
@@ -48,6 +48,7 @@
</checksum>
<container-format>
bare
</container-format>
<disk-format>
qcow2
</disk-format>
<min-disk>
1
</min-disk>
<min-ram>
2.0
</min-ram>
<size>
1
</size>
<image>
http://www.cisco.com/asa.qcow2
</image>
...
...
src/yang/etsi-nfv-ns.yang
View file @
0463e048
...
...
@@ -97,7 +97,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 +108,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 +164,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 +172,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 +181,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 +189,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"
;
}
}
}
...
...
@@ -472,12 +472,12 @@ submodule etsi-nfv-ns {
must
". = deref(../../vnfd-profile-id)/../vnfd-id"
{
}
type
leafref
{
path
"
../../../../../
vnfd/id"
;
path
"
/nfv:nfv/nfv:
vnfd/
nfv:
id"
;
}
}
leaf
cpd-id
{
type
leafref
{
path
"deref(../vnfd-id)/../ext-cpd/id"
;
path
"deref(../vnfd-id)/../
nfv:
ext-cpd/
nfv:
id"
;
}
}
}
...
...
@@ -486,12 +486,12 @@ submodule etsi-nfv-ns {
must
". = deref(../../pnfd-profile-id)/../pnfd-id"
{
}
type
leafref
{
path
"
../../../../../
pnfd/id"
;
path
"
/nfv:nfv/nfv:
pnfd/
nfv:
id"
;
}
}
leaf
pnf-cpd-id
{
type
leafref
{
path
"deref(../pnfd-id)/../ext-cpd/id"
;
path
"deref(../pnfd-id)/../
nfv:
ext-cpd/
nfv:
id"
;
}
}
}
...
...
@@ -642,6 +642,7 @@ submodule etsi-nfv-ns {
leaf-list
autoscale-rule
{
type
string
;
}
list
lifecycle-management-script
{
key
"event"
;
leaf
event
{
...
...
@@ -721,7 +722,7 @@ submodule etsi-nfv-ns {
leaf
vnfd-id
{
mandatory
true
;
type
leafref
{
path
"
../../../../
vnfd/id"
;
path
"
/nfv:nfv/nfv:
vnfd/
nfv:
id"
;
}
description
"References a VNFD."
;
...
...
@@ -733,7 +734,7 @@ submodule etsi-nfv-ns {
leaf
flavour-id
{
mandatory
true
;
type
leafref
{
path
"deref(../vnfd-id)/../
df/
id"
;
path
"deref(../vnfd-id)/../
nfv:df/nfv:
id"
;
}
description
"Identifies a flavour within the VNFD."
;
...
...
@@ -745,7 +746,8 @@ submodule etsi-nfv-ns {
leaf
instantiation-level
{
mandatory
true
;
type
leafref
{
path
"deref(../flavour-id)/../instantiation-level/id"
;
path
"deref(../flavour-id)/../nfv:instantiation-level/"
+
"nfv:id"
;
}
description
"Identifier of the instantiation level of the VNF DF
...
...
@@ -845,7 +847,7 @@ submodule etsi-nfv-ns {
leaf
constituent-cpd-id
{
type
leafref
{
path
"deref(../../../vnfd-id)/../ext-cpd/id"
;
path
"deref(../../../vnfd-id)/../
nfv:
ext-cpd/
nfv:
id"
;
}
description
"A reference to the descriptor of a connection point
...
...
@@ -879,7 +881,7 @@ submodule etsi-nfv-ns {
leaf
pnfd-id
{
type
leafref
{
path
"
../../../../
pnfd/id"
;
path
"
/nfv:nfv/nfv:
pnfd/
nfv:
id"
;
}
description
"References a PNFD."
;
...
...
@@ -935,7 +937,7 @@ submodule etsi-nfv-ns {
leaf
constituent-cpd-id
{
type
leafref
{
path
"deref(../../../pnfd-id)/../ext-cpd/id"
;
path
"deref(../../../pnfd-id)/../
nfv:
ext-cpd/
nfv:
id"
;
}
description
"A reference to the descriptor of a connection point
...
...
@@ -1506,7 +1508,7 @@ submodule etsi-nfv-ns {
container
vnf-indicator-info
{
leaf
vnfd-id
{
type
leafref
{
path
"
../../../../../
vnfd/id"
;
path
"
/nfv:nfv/nfv:
vnfd/
nfv:
id"
;
}
description
"Identifies a VNFD."
;
...
...
@@ -1518,7 +1520,7 @@ submodule etsi-nfv-ns {
leaf
vnf-indicator
{
mandatory
true
;
type
leafref
{
path
"deref(../vnfd-id)/../indicator/id"
;
path
"deref(../vnfd-id)/../
nfv:
indicator/
nfv:
id"
;
}
description
"Identifies a VNF indicator within the VNFD."
;
...
...
src/yang/etsi-nfv-nsd.yang
View file @
0463e048
...
...
@@ -20,19 +20,6 @@ module etsi-nfv-nsd {
}
container
nsd
{
list
vnfd
{
key
"id"
;
description
"A VNF Descriptor (VNFD) is a deployment template which
describes a VNF in terms of deployment and operational
behaviour requirements. It also contains connectivity,
interface and virtualised resource requirements"
;
reference
"GS NFV-IFA011: Section 7.1.2, VNFD information element"
;
uses
vnf
:
vnfd
;
}
list
nsd
{
key
"id"
;
max-elements
1
;
...
...
@@ -45,18 +32,5 @@ module etsi-nfv-nsd {
"GS NFV-IFA014: Section 6.2.2, Network Service Descriptor
information element"
;
}
list
pnfd
{
key
"id"
;
description
"The Pnfd information element is a deployment template
enabling on-boarding PNFs and referencing them from an
NSD. It focuses on connectivity aspects only."
;
reference
"GS NFV-IFA014: Section 6.6.2, Pnfd information element."
;
uses
vnf
:
pnfd
;
}
}
}
src/yang/etsi-nfv-vnf.yang
View file @
0463e048
...
...
@@ -236,7 +236,7 @@ submodule etsi-nfv-vnf {
leaf
int-virtual-link-desc
{
type
leafref
{
path
"
../../../
int-virtual-link-desc/id"
;
path
"
/nfv:nfv/nfv:vnfd/nfv:
int-virtual-link-desc/
nfv:
id"
;
}
description
"Reference of the internal VLD which this internal CPD
...
...
@@ -259,7 +259,7 @@ submodule etsi-nfv-vnf {
leaf
nicio-requirements
{
type
leafref
{
path
"
../../../
virtual-compute-desc/id"
;
path
"
/nfv:nfv/nfv:vnfd/nfv:
virtual-compute-desc/
nfv:
id"
;
}
description
"This references (couples) the CPD with any logical node I/O
...
...
@@ -1221,7 +1221,7 @@ submodule etsi-nfv-vnf {
Descriptor (CPD) connect. Either intVirtualLinkDesc or
intCpd shall be present."
;
type
leafref
{
path
"
../../
int-virtual-link-desc/id"
;
path
"
/nfv:nfv/nfv:vnfd/nfv:
int-virtual-link-desc/
nfv:
id"
;
}
}
...
...
@@ -1243,7 +1243,7 @@ submodule etsi-nfv-vnf {
leaf
nicio-requirements
{
type
leafref
{
path
"
../../
virtual-compute-desc/id"
;
path
"
/nfv:nfv/nfv:vnfd/nfv:
virtual-compute-desc/
nfv:
id"
;
}
description
"This references (couples) the CPD with any logical node I/O
...
...
@@ -1374,7 +1374,7 @@ submodule etsi-nfv-vnf {
leaf
id
{
type
leafref
{
path
"
../../../
int-virtual-link-desc/id"
;
path
"
/nfv:nfv/nfv:vnfd/nfv:
int-virtual-link-desc/
nfv:
id"
;
}
description
"Uniquely identifies a Vnf VLD."
;
...
...
@@ -1386,7 +1386,7 @@ submodule etsi-nfv-vnf {
leaf
flavour
{
type
leafref
{
path
"deref(../../../ext-cpd/int-virtual-link-desc)"
+
"/../flavour/id"
;
"/../
nfv:
flavour/
nfv:
id"
;
}
description
"Identifies a flavour within the VnfVirtualLinkDesc."
;
...
...
@@ -2713,7 +2713,7 @@ submodule etsi-nfv-vnf {
leaf-list
virtual-link-desc
{
type
leafref
{
path
"
../../
int-virtual-link-desc/id"
;
path
"
/nfv:nfv/nfv:vnfd/nfv:
int-virtual-link-desc/
nfv:
id"
;
}
description
"References to VnfVirtualLinkDesc that are part of this
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment