4 * Copyright 2016-2017 RIFT.IO Inc
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
23 namespace "urn:etsi:osm:yang:nsd";
38 import ietf-inet-types {
44 "Update model to support projects.";
49 "Initial revision. This YANG file defines
50 the Network Service Descriptor (NSD)";
52 "Derived from earlier versions of base YANG files";
55 grouping nsd-constituent-vnfd {
56 list constituent-vnfd {
58 "List of VNFDs that are part of this
61 key "member-vnf-index";
63 leaf member-vnf-index {
65 "Identifier/index for the VNFD. This separate id
66 is required to ensure that multiple VNFs can be
73 "Identifier for the VNFD.";
75 path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id";
79 leaf start-by-default {
81 "VNFD is started as part of the NS instantiation";
93 uses nsd-base:nsd-vld-common;
95 list vnfd-connection-point-ref {
97 "A list of references to connection points.";
98 key "member-vnf-index-ref vnfd-connection-point-ref";
100 leaf member-vnf-index-ref {
101 description "Reference to member-vnf within constituent-vnfds";
103 path "../../../constituent-vnfd/member-vnf-index";
107 leaf vnfd-connection-point-ref {
108 description "A reference to a connection point name";
110 path "/vnfd:vnfd-catalog/vnfd:vnfd" +
111 "[vnfd:id = current()/../vnfd-id-ref]/" +
112 "vnfd:connection-point/vnfd:name";
118 "A reference to a VNFD";
120 path "../../../constituent-vnfd" +
121 "[member-vnf-index = current()/../member-vnf-index-ref]" +
127 description "IP address of the connection point";
128 type inet:ip-address;
135 grouping nsd-vnf-dependency {
136 list vnf-dependency {
138 "List of VNF dependencies.";
140 leaf vnf-source-ref {
142 path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id";
145 leaf vnf-depends-on-ref {
147 "Reference to VNF that sorce VNF depends.";
149 path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id";
155 grouping nsd-placement-groups {
156 list placement-groups {
157 description "List of placement groups at NS level";
160 uses manotypes:placement-group-info;
164 "List of VNFDs that are part of this placement group";
166 key "member-vnf-index-ref";
168 leaf member-vnf-index-ref {
169 description "Member VNF index of this member VNF";
171 path "../../../constituent-vnfd/member-vnf-index";
177 "Identifier for the VNFD.";
179 path "../../../constituent-vnfd" +
180 "[member-vnf-index = current()/../member-vnf-index-ref]" +
188 grouping nsd-monitoring-param {
190 list monitoring-param {
193 uses nsd-base:monitoring-param-common;
195 list vnfd-monitoring-param {
196 description "A list of VNFD monitoring params";
197 key "member-vnf-index-ref vnfd-monitoring-param-ref";
201 "A reference to a VNFD. This is a leafref";
204 path "../../../constituent-vnfd" +
205 "[member-vnf-index = current()/../member-vnf-index-ref]" +
210 leaf vnfd-monitoring-param-ref {
211 description "A reference to the VNFD monitoring param";
213 path "/vnfd:vnfd-catalog/vnfd:vnfd"
214 + "[vnfd:id = current()/../vnfd-id-ref]"
215 + "/vnfd:monitoring-param/vnfd:id";
219 leaf member-vnf-index-ref {
221 "Mandatory reference to member-vnf within constituent-vnfds";
223 path "../../../constituent-vnfd/member-vnf-index";
230 container nsd-catalog {
232 leaf schema-version {
233 description "Schema version for the NSD. If unspecified, it assumes v3.0";
241 uses nsd-base:nsd-descriptor-common;
245 uses nsd-constituent-vnfd;
247 uses nsd-placement-groups;
249 uses nsd-vnf-dependency;
251 uses nsd-monitoring-param;