blob: e0ac7f3c7f76367eb68277a5179d1f95bc9d8a05 [file] [log] [blame]
/*
*
* Copyright 2017 RIFT.IO Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*
*/
module project-nsd
{
namespace "urn:etsi:osm:yang:project-nsd";
prefix "project-nsd";
import mano-types {
prefix "manotypes";
}
import project-vnfd {
prefix "project-vnfd";
}
import nsd-base {
prefix "nsd-base";
}
import osm-project {
prefix "osm-project";
}
revision 2017-02-28 {
description
"Initial revision. This YANG file defines
the Network Service Descriptor (NSD)
under projects";
reference
"Derived from earlier versions of base YANG files";
}
grouping nsd-constituent-vnfd {
list constituent-vnfd {
description
"List of VNFDs that are part of this
network service.";
key "member-vnf-index";
leaf member-vnf-index {
description
"Identifier/index for the VNFD. This separate id
is required to ensure that multiple VNFs can be
part of single NS";
type string;
}
leaf vnfd-id-ref {
description
"Identifier for the VNFD.";
type leafref {
path "/osm-project:project[osm-project:name = current()/../../../../osm-project:name]" +
"/project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
}
}
leaf start-by-default {
description
"VNFD is started as part of the NS instantiation";
type boolean;
default true;
}
}
}
grouping nsr-nsd-constituent-vnfd {
list constituent-vnfd {
description
"List of VNFDs that are part of this
network service.";
key "member-vnf-index";
leaf member-vnf-index {
description
"Identifier/index for the VNFD. This separate id
is required to ensure that multiple VNFs can be
part of single NS";
type string;
}
leaf vnfd-id-ref {
description
"Identifier for the VNFD.";
type leafref {
path "/osm-project:project[osm-project:name = current()/../../../../../osm-project:name]" +
"/project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
}
}
leaf start-by-default {
description
"VNFD is started as part of the NS instantiation";
type boolean;
default true;
}
}
}
grouping nsd-vld {
list vld {
key "id";
uses nsd-base:nsd-vld-common;
list vnfd-connection-point-ref {
description
"A list of references to connection points.";
key "member-vnf-index-ref vnfd-connection-point-ref";
leaf member-vnf-index-ref {
description "Reference to member-vnf within constituent-vnfds";
type leafref {
path "../../../constituent-vnfd/member-vnf-index";
}
}
leaf vnfd-id-ref {
description
"A reference to a vnfd. This is a
leafref to path:
../../constituent-vnfd
+ [id = current()/../id-ref]
+ /vnfd-id-ref
NOTE: An issue with confd is preventing the
use of xpath. Seems to be an issue with leafref
to leafref, whose target is in a different module.
Once that is resolved this will switched to use
leafref";
//type string;
type leafref {
path "../../../constituent-vnfd[member-vnf-index = current()/../member-vnf-index-ref]/vnfd-id-ref";
}
}
leaf vnfd-connection-point-ref {
description "A reference to a connection point name";
type leafref {
path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd" +
"[project-vnfd:id = current()/../vnfd-id-ref]/" +
"project-vnfd:connection-point/project-vnfd:name";
}
}
}
}
}
grouping nsr-nsd-vld {
list vld {
key "id";
uses nsd-base:nsd-vld-common;
list vnfd-connection-point-ref {
description
"A list of references to connection points.";
key "member-vnf-index-ref vnfd-connection-point-ref";
leaf member-vnf-index-ref {
description "Reference to member-vnf within constituent-vnfds";
type leafref {
path "../../../constituent-vnfd/member-vnf-index";
}
}
leaf vnfd-id-ref {
description
"A reference to a vnfd. This is a
leafref to path:
../../nsd:constituent-vnfd
+ [nsd:id = current()/../nsd:id-ref]
+ /nsd:vnfd-id-ref
NOTE: An issue with confd is preventing the
use of xpath. Seems to be an issue with leafref
to leafref, whose target is in a different module.
Once that is resolved this will switched to use
leafref";
type string;
}
leaf vnfd-connection-point-ref {
description "A reference to a connection point name";
type leafref {
path "../../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd" +
"[project-vnfd:id = current()/../vnfd-id-ref]/" +
"project-vnfd:connection-point/project-vnfd:name";
}
}
}
}
}
grouping nsd-vnf-dependency {
list vnf-dependency {
description
"List of VNF dependencies.";
key vnf-source-ref;
leaf vnf-source-ref {
type leafref {
path "../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
}
}
leaf vnf-depends-on-ref {
description
"Reference to VNF that sorce VNF depends.";
type leafref {
path "../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
}
}
}
}
grouping nsr-nsd-vnf-dependency {
list vnf-dependency {
description
"List of VNF dependencies.";
key vnf-source-ref;
leaf vnf-source-ref {
type leafref {
path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
}
}
leaf vnf-depends-on-ref {
description
"Reference to VNF that sorce VNF depends.";
type leafref {
path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
}
}
}
}
grouping nsd-placement-groups {
list placement-groups {
description "List of placement groups at NS level";
key "name";
uses manotypes:placement-group-info;
list member-vnfd {
description
"List of VNFDs that are part of this placement group";
key "member-vnf-index-ref";
leaf member-vnf-index-ref {
description "member VNF index of this member VNF";
type leafref {
path "../../../constituent-vnfd/member-vnf-index";
}
}
leaf vnfd-id-ref {
description
"Identifier for the VNFD.";
type leafref {
path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
}
}
}
}
}
grouping nsr-nsd-placement-groups {
list placement-groups {
description "List of placement groups at NS level";
key "name";
uses manotypes:placement-group-info;
list member-vnfd {
description
"List of VNFDs that are part of this placement group";
key "member-vnf-index-ref";
leaf member-vnf-index-ref {
description "member VNF index of this member VNF";
type leafref {
path "../../../constituent-vnfd/member-vnf-index";
}
}
leaf vnfd-id-ref {
description
"Identifier for the VNFD.";
type leafref {
path "../../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
}
}
}
}
}
grouping nsd-monitoring-param {
list monitoring-param {
key "id";
uses nsd-base:monitoring-param-common;
list vnfd-monitoring-param {
description "A list of VNFD monitoring params";
key "member-vnf-index-ref vnfd-monitoring-param-ref";
leaf vnfd-id-ref {
description
"A reference to a vnfd. This is a
leafref to path:
../../../../nsd:constituent-vnfd
+ [nsd:id = current()/../nsd:id-ref]
+ /nsd:vnfd-id-ref
NOTE: An issue with confd is preventing the
use of xpath. Seems to be an issue with leafref
to leafref, whose target is in a different module.
Once that is resolved this will switched to use
leafref";
type leafref {
path "../../../constituent-vnfd" +
"[member-vnf-index = current()/../member-vnf-index-ref]" +
"/vnfd-id-ref";
}
}
leaf vnfd-monitoring-param-ref {
description "A reference to the VNFD monitoring param";
type leafref {
path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd"
+ "[project-vnfd:id = current()/../vnfd-id-ref]"
+ "/project-vnfd:monitoring-param/project-vnfd:id";
}
}
leaf member-vnf-index-ref {
description
"Optional reference to member-vnf within constituent-vnfds";
type leafref {
path "../../../constituent-vnfd/member-vnf-index";
}
}
}
}
}
grouping nsr-nsd-monitoring-param {
list monitoring-param {
key "id";
uses nsd-base:monitoring-param-common;
list vnfd-monitoring-param {
description "A list of VNFD monitoring params";
key "member-vnf-index-ref vnfd-monitoring-param-ref";
leaf vnfd-id-ref {
description
"A reference to a vnfd. This is a
leafref to path:
../../../../nsd:constituent-vnfd
+ [nsd:id = current()/../nsd:id-ref]
+ /nsd:vnfd-id-ref
NOTE: An issue with confd is preventing the
use of xpath. Seems to be an issue with leafref
to leafref, whose target is in a different module.
Once that is resolved this will switched to use
leafref";
type string;
}
leaf vnfd-monitoring-param-ref {
description "A reference to the VNFD monitoring param";
type leafref {
path "../../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd"
+ "[project-vnfd:id = current()/../vnfd-id-ref]"
+ "/project-vnfd:monitoring-param/project-vnfd:id";
}
}
leaf member-vnf-index-ref {
description
"Optional reference to member-vnf within constituent-vnfds";
type leafref {
path "../../../constituent-vnfd/member-vnf-index";
}
}
}
}
}
grouping nsd-descriptor {
uses nsd-base:nsd-descriptor-common;
uses nsd-vld;
uses nsd-constituent-vnfd;
uses nsd-placement-groups;
uses nsd-vnf-dependency;
uses nsd-monitoring-param;
}
augment "/osm-project:project" {
container nsd-catalog {
list nsd {
key id;
uses nsd-descriptor;
}
}
}
}