Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
S
SOL006
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
11
Issues
11
List
Board
Labels
Milestones
Merge Requests
11
Merge Requests
11
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
NFV - Network Functions Virtualisation
SOL006
Commits
aec728bd
Commit
aec728bd
authored
Mar 22, 2019
by
Mahesh Jethanandani
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into 'bug#186'
# Conflicts: # src/yang/etsi-nfv-vnf.yang
parents
d84e3787
ff2f13fa
Pipeline
#482
failed with stages
in 0 seconds
Changes
8
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
353 additions
and
123 deletions
+353
-123
.jenkins.sh
.jenkins.sh
+1
-1
nfv.xml
example-data/nfv.xml
+37
-5
run-test.sh
run-test.sh
+1
-1
etsi-nfv-common.yang
src/yang/etsi-nfv-common.yang
+57
-11
etsi-nfv-descriptors.yang
src/yang/etsi-nfv-descriptors.yang
+5
-5
etsi-nfv-ns.yang
src/yang/etsi-nfv-ns.yang
+60
-55
etsi-nfv-pnf.yang
src/yang/etsi-nfv-pnf.yang
+4
-4
etsi-nfv-vnf.yang
src/yang/etsi-nfv-vnf.yang
+188
-41
No files found.
.jenkins.sh
View file @
aec728bd
...
...
@@ -6,7 +6,7 @@
# https://forge.etsi.org/etsi-software-license
YANG_MODULES
=
"yang/yang/*"
OUTPUT
=
"etsi-nfv.html"
OUTPUT
=
"etsi-nfv
-descriptors
.html"
IMG_NAME
=
"sol006"
VERSION
=
latest
IMG
=
"
$IMG_NAME
:
$VERSION
"
...
...
example-data/nfv.xml
View file @
aec728bd
<nfv
xmlns=
"urn:etsi:
params:xml:ns:yang:etsi-nfv
"
>
<nfv
xmlns=
"urn:etsi:
nfv:yang:etsi-nfv-descriptors
"
>
<vnfd>
<id>
ASA
</id>
<provider>
My Company
</provider>
...
...
@@ -48,14 +48,26 @@
</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>
...
...
@@ -131,14 +143,26 @@
</sw-image-desc>
<ext-cpd>
<id>
left
</id>
<int-cpd>
<vdu-id>
router
</vdu-id>
<cpd>
left
</cpd>
</int-cpd>
<layer-protocol>
Ethernet
</layer-protocol>
</ext-cpd>
<ext-cpd>
<id>
management
</id>
<int-cpd>
<vdu-id>
router
</vdu-id>
<cpd>
management
</cpd>
</int-cpd>
<layer-protocol>
Ethernet
</layer-protocol>
</ext-cpd>
<ext-cpd>
<id>
right
</id>
<int-cpd>
<vdu-id>
router
</vdu-id>
<cpd>
right
</cpd>
</int-cpd>
<layer-protocol>
Ethernet
</layer-protocol>
</ext-cpd>
<df>
...
...
@@ -218,7 +242,9 @@
<virtual-link-desc>
<id>
fw2dpi
</id>
<connectivity-type>
<layer-protocol>
Ethernet
</layer-protocol>
<layer-protocol>
<protocol>
Ethernet
</protocol>
</layer-protocol>
</connectivity-type>
<df>
<id>
normal
</id>
...
...
@@ -231,7 +257,9 @@
<virtual-link-desc>
<id>
mgmt
</id>
<connectivity-type>
<layer-protocol>
IPv4
</layer-protocol>
<layer-protocol>
<protocol>
IPv4
</protocol>
</layer-protocol>
</connectivity-type>
<df>
<id>
normal
</id>
...
...
@@ -244,7 +272,9 @@
<virtual-link-desc>
<id>
r2fw
</id>
<connectivity-type>
<layer-protocol>
Ethernet
</layer-protocol>
<layer-protocol>
<protocol>
Ethernet
</protocol>
</layer-protocol>
</connectivity-type>
<df>
<id>
normal
</id>
...
...
@@ -467,7 +497,9 @@
<virtual-link-desc>
<id>
r2fw
</id>
<connectivity-type>
<layer-protocol>
IPv4
</layer-protocol>
<layer-protocol>
<protocol>
IPv4
</protocol>
</layer-protocol>
</connectivity-type>
<df>
<id>
r2fw
</id>
...
...
run-test.sh
View file @
aec728bd
...
...
@@ -10,7 +10,7 @@ cd src
echo
"Testing compilation"
CONFD_OPTS
=
"--fail-on-warnings"
CONFD_OPTS
=
""
confdc
-c
$CONFD_OPTS
-o
/opt/confd/etc/confd/etsi-nfv
.fxs etsi-nfv
.yang
confdc
-c
$CONFD_OPTS
-o
/opt/confd/etc/confd/etsi-nfv
-descriptors.fxs etsi-nfv-descriptors
.yang
echo
"Starting ConfD"
confd
...
...
src/yang/etsi-nfv-common.yang
View file @
aec728bd
submodule etsi-nfv-common {
yang-version 1.1;
belongs-to etsi-nfv {
belongs-to etsi-nfv
-descriptors
{
prefix nfv;
}
description
"Common data types for ETSI data models.";
revision 201
8-06-19
{
revision 201
9-03-18
{
description
"Initial revision
Common data structures to support VNFD and NSD according to:
ETSI GS NFV-IFA 014 Ed2
51v244
ETSI GS NFV-IFA 011 Ed2
51v243
";
ETSI GS NFV-IFA 014 Ed2
61v252
ETSI GS NFV-IFA 011 Ed2
61v254
";
}
/*
...
...
@@ -177,6 +177,46 @@ submodule etsi-nfv-common {
base cp-role;
}
identity checksum-algorithm {
description
"Identifies the algorithms supported for the purpose of
calculating the checksum.";
reference
"GS NFV IFA011: Section 7.1.6.10 Checksum information element.";
}
identity sha-224 {
base checksum-algorithm;
description
"SHA-224.";
reference
"GS NFV IFA011: Section 7.1.6.10 Checksum information element.";
}
identity sha-256 {
base checksum-algorithm;
description
"SHA-256.";
reference
"GS NFV IFA011: Section 7.1.6.10 Checksum information element.";
}
identity sha-384 {
base checksum-algorithm;
description
"SHA-384.";
reference
"GS NFV IFA011: Section 7.1.6.10 Checksum information element.";
}
identity sha-512 {
base checksum-algorithm;
description
"SHA-512.";
reference
"GS NFV IFA011: Section 7.1.6.10 Checksum information element.";
}
/*
* Typedefs
*/
...
...
@@ -253,14 +293,20 @@ submodule etsi-nfv-common {
grouping connectivity-type {
container connectivity-type {
leaf layer-protocol {
mandatory true;
type identityref {
base layer-protocol;
}
list layer-protocol {
key "protocol";
leaf protocol {
type identityref {
base layer-protocol;
}
}
description
"Identifies the protocol this VL gives access to (Ethernet,
MPLS, ODU2, IPV4, IPV6, Pseudo-Wire).";
"Identifies the protocols that the VL uses (Ethernet,
MPLS, ODU2, IPV4, IPV6, Pseudo-Wire). The top layer
protocol of the VL protocol stack shall always be provided.
The lower layer protocols may be included when there are
specific requirements on these layers.";
reference
"GS NFV IFA011: Section 7.1.7.3, ConnectivityType
information element.";
...
...
src/yang/etsi-nfv.yang
→
src/yang/etsi-nfv
-descriptors
.yang
View file @
aec728bd
module etsi-nfv {
module etsi-nfv
-descriptors
{
yang-version 1.1;
namespace "urn:etsi:
params:xml:ns:yang:etsi-nfv
";
namespace "urn:etsi:
nfv:yang:etsi-nfv-descriptors
";
prefix nfv;
include etsi-nfv-common;
...
...
@@ -14,11 +14,11 @@ module etsi-nfv {
description
"Network Function Virtualization Descriptors";
revision 201
8-06-13
{
revision 201
9-03-18
{
description
"Initial revision.
NSD and PNFD according to ETSI GS NFV-IFA 014 Ed2
51v244
VNFD according to ETSI GS NFV-IFA 011 Ed2
51v243
";
NSD and PNFD according to ETSI GS NFV-IFA 014 Ed2
61v252
VNFD according to ETSI GS NFV-IFA 011 Ed2
61v254
";
}
container nfv {
...
...
src/yang/etsi-nfv-ns.yang
View file @
aec728bd
submodule etsi-nfv-ns {
yang-version 1.1;
belongs-to etsi-nfv {
belongs-to etsi-nfv
-descriptors
{
prefix nfv;
}
...
...
@@ -11,14 +11,14 @@ submodule etsi-nfv-ns {
description
"Models for NS according to ETSI GS NFV-IFA 014.";
revision 201
7-01-20
{
revision 201
9-03-18
{
description
"Initial revision
Common data structure to support NSD according to:
ETSI GS NFV-IFA 01
1 Ed251v243
";
ETSI GS NFV-IFA 01
4 Ed261v252
";
reference
"ETSI GS NFV-IFA 01
1 Ed251v243
";
"ETSI GS NFV-IFA 01
4 Ed261v252
";
}
grouping resource-handle {
...
...
@@ -146,63 +146,66 @@ submodule etsi-nfv-ns {
"GS NFV IFA014: Section 6.2.3.2 Sapd information element";
}
leaf virtual-link-desc {
type leafref {
path "../../virtual-link-desc/id";
choice cpd-or-virtual-link {
leaf virtual-link-desc {
type leafref {
path "../../virtual-link-desc/id";
}
description
"References the descriptor of the NS VL instance to
which the SAP instantiated from this SAPD connects to.";
reference
"GS NFV IFA014: Section 6.2.3.2 Sapd information element";
}
description
"References the descriptor of the NS VL instance to
which the SAP instantiated from this SAPD connects to.";
reference
"GS NFV IFA014: Section 6.2.3.2 Sapd information element";
}
choice associated-cpd-id {
container vnf {
leaf vnfd-id {
mandatory true;
type leafref {
path "../../../../nfv:vnfd/nfv:id";
choice associated-cpd-id {
container vnf {
leaf vnfd-id {
mandatory true;
type leafref {
path "../../../../nfv:vnfd/nfv:id";
}
must "boolean(../../../vnfd-id[.=current()])";
}
must "boolean(../../../vnfd-id[.=current()])";
}
leaf ext-cpd-id {
mandatory true;
type leafref {
path "deref(../vnfd-id)/../nfv:ext-cpd/nfv:id";
leaf ext-cpd-id {
mandatory true;
type leafref {
path "deref(../vnfd-id)/../nfv:ext-cpd/nfv:id";
}
}
}
}
container pnf {
leaf pnfd-id {
mandatory true;
container pnf {
leaf pnfd-id {
mandatory true;
type leafref {
path "../../../../nfv:pnfd/nfv:id";
path "../../../../nfv:pnfd/nfv:id";
}
must "boolean(../pnfd-id[.=current()])";
}
must "boolean(../pnfd-id[.=current()])";
}
leaf ext-cpd-id {
mandatory true;
type leafref {
path "deref(../pnfd-id)/../nfv:ext-cpd/nfv:id";
leaf ext-cpd-id {
mandatory true;
type leafref {
path "deref(../pnfd-id)/../nfv:ext-cpd/nfv:id";
}
}
}
}
container ns {
leaf nsd-id {
mandatory true;
type leafref {
path "../../../../nfv:nsd/nfv:id";
container ns {
leaf nsd-id {
mandatory true;
type leafref {
path "../../../../nfv:nsd/nfv:id";
}
must "boolean(../nsd-id[.=current()])";
}
must "boolean(../nsd-id[.=current()])";
}
leaf ext-cpd-id {
mandatory true;
type leafref {
path "deref(../nsd-id)/../nfv:sapd/nfv:id";
leaf ext-cpd-id {
mandatory true;
type leafref {
path "deref(../nsd-id)/../nfv:sapd/nfv:id";
}
}
}
}
...
...
@@ -250,6 +253,7 @@ submodule etsi-nfv-ns {
}
container qos {
presence "VL QoS parameters";
description
"The QoS information element specifies quality of
service parameters applicable to a VL.";
...
...
@@ -492,7 +496,8 @@ submodule etsi-nfv-ns {
}
container ns {
leaf nsd-id {
must ". = deref(../../ns-profile-id)/../nsd-id" {
must ". = deref(../../nested-ns-profile-id)/" +
"../nsd-id" {
}
type leafref {
...
...
@@ -752,7 +757,7 @@ submodule etsi-nfv-ns {
}
leaf min-number-of-instances {
mandatory true
;
default 1
;
type uint16;
description
"Minimum number of instances of the VNF based on this
...
...
@@ -763,7 +768,7 @@ submodule etsi-nfv-ns {
}
leaf max-number-of-instances {
mandatory true
;
default 1
;
type uint16;
description
"Maximum number of instances of the VNF based on this
...
...
@@ -1176,7 +1181,7 @@ submodule etsi-nfv-ns {
}
leaf number-of-instances {
mandatory true
;
default 1
;
type uint32;
description
"Specifies the number of VNF instances required for
...
...
@@ -1236,7 +1241,7 @@ submodule etsi-nfv-ns {
}
leaf number-of-instances {
mandatory true
;
default 1
;
type uint32;
description
"Specifies the number of nested NS instances required
...
...
@@ -1342,7 +1347,7 @@ submodule etsi-nfv-ns {
}
leaf min-number-of-instances {
type uint16;
mandatory true
;
default 1
;
description
"Minimum number of nested NS instances based on the
referenced NSD that is permitted to exist for this
...
...
@@ -1353,7 +1358,7 @@ submodule etsi-nfv-ns {
}
leaf max-number-of-instances {
type uint16;
mandatory true
;
default 1
;
description
"Maximum number of nested NS instances based on the
referenced NSD that is permitted to exist for this
...
...
src/yang/etsi-nfv-pnf.yang
View file @
aec728bd
submodule etsi-nfv-pnf {
yang-version 1.1;
belongs-to etsi-nfv {
belongs-to etsi-nfv
-descriptors
{
prefix nfv;
}
...
...
@@ -12,15 +12,15 @@ submodule etsi-nfv-pnf {
description
"Models for PNFD according to GS NFV-IFA 014.";
revision 201
8-06-25
{
revision 201
9-03-18
{
description
"Initial revision.
Common data structure to support VNFD according to:
ETSI GS NFV-IFA 014 Ed2
51v244
";
ETSI GS NFV-IFA 014 Ed2
61v252
";
reference
"ETSI GS NFV-IFA 014 Ed2
51v244
";
"ETSI GS NFV-IFA 014 Ed2
61v252
";
}
grouping pnfd {
...
...
src/yang/etsi-nfv-vnf.yang
View file @
aec728bd
submodule etsi-nfv-vnf {
yang-version 1.1;
belongs-to etsi-nfv {
belongs-to etsi-nfv
-descriptors
{
prefix nfv;
}
...
...
@@ -16,15 +16,15 @@ submodule etsi-nfv-vnf {
description
"Models for VNFD according to GS NFV-IFA 011.";
revision 201
8-06-19
{
revision 201
9-03-18
{
description
"Initial revision.
Common data structure to support VNFD according to:
VNFD according to ETSI GS NFV-IFA 011 Ed2
51v243
";
VNFD according to ETSI GS NFV-IFA 011 Ed2
61v254
";
reference
"ETSI GS NFV-IFA 011 Ed2
51v243
";
"ETSI GS NFV-IFA 011 Ed2
61v254
";
}
grouping virtual-network-interface-requirements {
...
...
@@ -56,7 +56,7 @@ submodule etsi-nfv-vnf {
}
leaf support-mandatory {
mandatory true
;
default "false"
;
type boolean;
description
"Indicates whether fulfilling the constraint is
...
...
@@ -624,7 +624,7 @@ submodule etsi-nfv-vnf {
type uint16 {
range "1..max";
}
mandatory true
;
default 1
;
description
"Number of virtual CPUs.";
reference
...
...
@@ -739,7 +739,7 @@ submodule etsi-nfv-vnf {
enum "swap";
enum "ephemeral";
}
mandatory true
;
default "root"
;
description
"Type of virtualised storage resource (e.g. volume,
object).";
...
...
@@ -828,8 +828,28 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.6.5 SwImageDesc
information element.";
}
leaf checksum {
type string;
container checksum {
leaf algorithm {
type identityref {
base checksum-algorithm;
}
description
"Species the algorithm used to obtain the checksum
value.";
reference
"GS NFV IFA011: Section 7.1.6.10 ChecksumData
information element.";
}
leaf hash {
type string;
description
"Contains the result of applying the algorithm
indicated by the algorithm attribute to the data to
which this ChecksumData refers.";
reference
"GS NFV IFA011: Section 7.1.6.10 ChecksumData
information element.";
}
description
"The checksum of the software image file.";
reference
...
...
@@ -837,7 +857,7 @@ submodule etsi-nfv-vnf {
information element.";
}
leaf container-format {
mandatory true
;
default "bare"
;
type enumeration {
enum "aki" {
description
...
...
@@ -877,7 +897,7 @@ submodule etsi-nfv-vnf {
information element.";
}
leaf disk-format {
mandatory true
;
default "qcow2"
;
type enumeration {
enum "aki" {
description
...
...
@@ -975,7 +995,7 @@ submodule etsi-nfv-vnf {
information element.";
}
leaf image {
mandatory true
;
default "."
;
type inet:uri;
description
"This is a reference to the actual software image.
...
...
@@ -1042,6 +1062,7 @@ submodule etsi-nfv-vnf {
information element.";
}
container qos {
presence "VL QoS parameters";
description
"QoS of the VL.";
reference
...
...
@@ -1149,9 +1170,9 @@ submodule etsi-nfv-vnf {
}
}
leaf cpd {
type leafref {
path "deref(../vdu-id)/../int-cpd/id";
}
type leafref {
path "deref(../vdu-id)/../int-cpd/id";
}
}
}
}
...
...
@@ -1204,7 +1225,7 @@ submodule etsi-nfv-vnf {
}
leaf min-number-of-instances {
type uint16;
mandatory true
;
default 1
;
description
"Minimum number of instances of the VNFC based on this
VDU that is permitted to exist for this flavour.";
...
...
@@ -1214,15 +1235,17 @@ submodule etsi-nfv-vnf {
}
leaf max-number-of-instances {
type uint16;
mandatory true
;
default 1
;
must ". >= ../nfv:min-number-of-instances";
reference
"GS NFV IFA011: Section 7.1.8.3, VduProfile information
element.";
}
uses local-affinity-or-anti-affinity-rule;
list affinity-or-anti-affinity-group {
key "id";
description
"Identifier(s) of the affinity or anti-affinity
group(s) the VDU belongs to.";
...
...
@@ -1242,29 +1265,9 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.8.12, AffinityOrAntiAffinity
information element.";
}
leaf type {
type enumeration {
enum affinity;
enum anti-affinity;
}
description
"Specifies whether the rule is an affinity rule or an
anti-affinity rule.";
reference
"GS NFV IFA011: Section 7.1.8.12, AffinityOrAntiAffinity
information element.";
}
leaf scope {
type affinity-scope;
description
"Specifies the scope of the rule, possible values are
'NFVI-PoP', 'Zone', 'ZoneGroup', 'NFVI-node'";
reference
"GS NFV IFA011: Section 7.1.8.12, AffinityOrAntiAffinity
information element.";
}
}
}
list virtual-link-profile {
key "id flavour";
description
...
...
@@ -1618,7 +1621,7 @@ submodule etsi-nfv-vnf {
must ". >= ../../../../nfv:df/" +
"nfv:vdu-profile[id=current()/../nfv:id]/" +
"nfv:min-number-of-instances";
mandatory true
;
default 1
;
description
"Number of instances of VNFC based on this VDU to
deploy for this level.";
...
...
@@ -1803,6 +1806,7 @@ submodule etsi-nfv-vnf {
list parameter {
key "key";
leaf key {
type string;
}
...
...
@@ -2037,6 +2041,118 @@ submodule etsi-nfv-vnf {
AffinityOrAntiAffinityGroup information element";
}
}
list indicator {
key "id";
leaf id {
type string;
description
"Unique identifier.";
reference
"GS NFV IFA011: Section 7.1.11.2 VnfIndicator
information element";
}
leaf name {
type string;
description
"The human readable name of the VnfIndicator.";
reference
"GS NFV IFA011: Section 7.1.11.2 VnfIndicator
information element";
}
leaf indicator-value {
type string;
description
"Defines the allowed values or value ranges of this
indicator.";
reference
"GS NFV IFA011: Section 7.1.11.2 VnfIndicator
information element";
}
leaf source {
type enumeration {
enum vnf;
enum em;
enum both;
}
description
"Describe the source of the indicator. The possible
values are:
• VNF.
• EM.
• Both.
This tells the consumer where to send the subscription
request.";
reference
"GS NFV IFA011: Section 7.1.11.2 VnfIndicator
information element";
}
description
"Declares the VNF indicators that are supported by this
VNF (specific to this DF).";
reference
"GS NFV IFA011: Section 7.1.8.2 VnfDf information
element";
}
list supported-vnf-interfaces {
key "name";
leaf name {
type enumeration {
enum vnf-configuration;
enum vnf-indicator;
}
description
"Identifies an interface produced by the VNF. Valid
values:
- VNF_CONFIGURATION
- VNF_INDICATOR";
reference
"GS NFV IFA011: Section 7.1.8.16 VnfInterfaceDetails
information element";
}
leaf-list cpd-id {
type leafref {
path "../../../ext-cpd/id";
}
description
"References one or more CPDs from which to instantiate
external CPs through which interface endpoints on the
VNF side can be reached by the VNFM.";
reference
"GS NFV IFA011: Section 7.1.8.16 VnfInterfaceDetails
information element";
}
list interface-details {
key "key";
leaf key {
type string;
}
leaf value {
type string;
}
}
description
"Indicates which interfaces the VNF produces and provides