4 * Copyright 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:project-nsd";
31 prefix "project-vnfd";
45 "Initial revision. This YANG file defines
46 the Network Service Descriptor (NSD)
49 "Derived from earlier versions of base YANG files";
53 grouping nsd-constituent-vnfd {
54 list constituent-vnfd {
56 "List of VNFDs that are part of this
59 key "member-vnf-index";
61 leaf member-vnf-index {
63 "Identifier/index for the VNFD. This separate id
64 is required to ensure that multiple VNFs can be
71 "Identifier for the VNFD.";
73 path "/osm-project:project[osm-project:name = current()/../../../../osm-project:name]" +
74 "/project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
78 leaf start-by-default {
80 "VNFD is started as part of the NS instantiation";
87 grouping nsr-nsd-constituent-vnfd {
88 list constituent-vnfd {
90 "List of VNFDs that are part of this
93 key "member-vnf-index";
95 leaf member-vnf-index {
97 "Identifier/index for the VNFD. This separate id
98 is required to ensure that multiple VNFs can be
105 "Identifier for the VNFD.";
107 path "/osm-project:project[osm-project:name = current()/../../../../../osm-project:name]" +
108 "/project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
112 leaf start-by-default {
114 "VNFD is started as part of the NS instantiation";
126 uses nsd-base:nsd-vld-common;
128 list vnfd-connection-point-ref {
130 "A list of references to connection points.";
131 key "member-vnf-index-ref vnfd-connection-point-ref";
133 leaf member-vnf-index-ref {
134 description "Reference to member-vnf within constituent-vnfds";
136 path "../../../constituent-vnfd/member-vnf-index";
142 "A reference to a vnfd. This is a
144 ../../constituent-vnfd
145 + [id = current()/../id-ref]
147 NOTE: An issue with confd is preventing the
148 use of xpath. Seems to be an issue with leafref
149 to leafref, whose target is in a different module.
150 Once that is resolved this will switched to use
154 path "../../../constituent-vnfd[member-vnf-index = current()/../member-vnf-index-ref]/vnfd-id-ref";
158 leaf vnfd-connection-point-ref {
159 description "A reference to a connection point name";
161 path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd" +
162 "[project-vnfd:id = current()/../vnfd-id-ref]/" +
163 "project-vnfd:connection-point/project-vnfd:name";
170 grouping nsr-nsd-vld {
175 uses nsd-base:nsd-vld-common;
177 list vnfd-connection-point-ref {
179 "A list of references to connection points.";
180 key "member-vnf-index-ref vnfd-connection-point-ref";
182 leaf member-vnf-index-ref {
183 description "Reference to member-vnf within constituent-vnfds";
186 path "../../../constituent-vnfd/member-vnf-index";
192 "A reference to a vnfd. This is a
194 ../../nsd:constituent-vnfd
195 + [nsd:id = current()/../nsd:id-ref]
197 NOTE: An issue with confd is preventing the
198 use of xpath. Seems to be an issue with leafref
199 to leafref, whose target is in a different module.
200 Once that is resolved this will switched to use
205 leaf vnfd-connection-point-ref {
206 description "A reference to a connection point name";
208 path "../../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd" +
209 "[project-vnfd:id = current()/../vnfd-id-ref]/" +
210 "project-vnfd:connection-point/project-vnfd:name";
217 grouping nsd-vnf-dependency {
218 list vnf-dependency {
220 "List of VNF dependencies.";
222 leaf vnf-source-ref {
224 path "../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
227 leaf vnf-depends-on-ref {
229 "Reference to VNF that sorce VNF depends.";
231 path "../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
237 grouping nsr-nsd-vnf-dependency {
238 list vnf-dependency {
240 "List of VNF dependencies.";
242 leaf vnf-source-ref {
244 path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
247 leaf vnf-depends-on-ref {
249 "Reference to VNF that sorce VNF depends.";
251 path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
257 grouping nsd-placement-groups {
258 list placement-groups {
259 description "List of placement groups at NS level";
262 uses manotypes:placement-group-info;
266 "List of VNFDs that are part of this placement group";
268 key "member-vnf-index-ref";
270 leaf member-vnf-index-ref {
271 description "member VNF index of this member VNF";
273 path "../../../constituent-vnfd/member-vnf-index";
279 "Identifier for the VNFD.";
281 path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
288 grouping nsr-nsd-placement-groups {
289 list placement-groups {
290 description "List of placement groups at NS level";
293 uses manotypes:placement-group-info;
297 "List of VNFDs that are part of this placement group";
299 key "member-vnf-index-ref";
301 leaf member-vnf-index-ref {
302 description "member VNF index of this member VNF";
304 path "../../../constituent-vnfd/member-vnf-index";
310 "Identifier for the VNFD.";
312 path "../../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
319 grouping nsd-monitoring-param {
321 list monitoring-param {
324 uses nsd-base:monitoring-param-common;
326 list vnfd-monitoring-param {
327 description "A list of VNFD monitoring params";
328 key "member-vnf-index-ref vnfd-monitoring-param-ref";
332 "A reference to a vnfd. This is a
334 ../../../../nsd:constituent-vnfd
335 + [nsd:id = current()/../nsd:id-ref]
337 NOTE: An issue with confd is preventing the
338 use of xpath. Seems to be an issue with leafref
339 to leafref, whose target is in a different module.
340 Once that is resolved this will switched to use
344 path "../../../constituent-vnfd" +
345 "[member-vnf-index = current()/../member-vnf-index-ref]" +
350 leaf vnfd-monitoring-param-ref {
351 description "A reference to the VNFD monitoring param";
353 path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd"
354 + "[project-vnfd:id = current()/../vnfd-id-ref]"
355 + "/project-vnfd:monitoring-param/project-vnfd:id";
359 leaf member-vnf-index-ref {
361 "Optional reference to member-vnf within constituent-vnfds";
363 path "../../../constituent-vnfd/member-vnf-index";
370 grouping nsr-nsd-monitoring-param {
371 list monitoring-param {
374 uses nsd-base:monitoring-param-common;
376 list vnfd-monitoring-param {
377 description "A list of VNFD monitoring params";
378 key "member-vnf-index-ref vnfd-monitoring-param-ref";
382 "A reference to a vnfd. This is a
384 ../../../../nsd:constituent-vnfd
385 + [nsd:id = current()/../nsd:id-ref]
387 NOTE: An issue with confd is preventing the
388 use of xpath. Seems to be an issue with leafref
389 to leafref, whose target is in a different module.
390 Once that is resolved this will switched to use
396 leaf vnfd-monitoring-param-ref {
397 description "A reference to the VNFD monitoring param";
399 path "../../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd"
400 + "[project-vnfd:id = current()/../vnfd-id-ref]"
401 + "/project-vnfd:monitoring-param/project-vnfd:id";
405 leaf member-vnf-index-ref {
407 "Optional reference to member-vnf within constituent-vnfds";
409 path "../../../constituent-vnfd/member-vnf-index";
416 grouping nsd-descriptor {
417 uses nsd-base:nsd-descriptor-common;
421 uses nsd-constituent-vnfd;
423 uses nsd-placement-groups;
425 uses nsd-vnf-dependency;
427 uses nsd-monitoring-param;
430 augment "/osm-project:project" {
431 container nsd-catalog {