etsi-nfv-ns.yang 48.7 KB
Newer Older
1
submodule etsi-nfv-ns {
2
  yang-version 1.1;
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
3
  belongs-to etsi-nfv-descriptors {
4
5
6
    prefix nfv;
  }

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
7
  include etsi-nfv-common;
8
9
10
  include etsi-nfv-vnf;
  include etsi-nfv-pnf;

11
12
13
  description
    "Models for NS according to ETSI GS NFV-IFA 014.";

Mahesh Jethanandani's avatar
Bug#251    
Mahesh Jethanandani committed
14
15
16
17
18
19
20
21
  revision 2019-10-01 {
    description
      "Version 2.7.1.

       Common data structures to support VNFD and NSD according to:
       ETSI GS NFV-IFA 014 Ed271v264
       ETSI GS NFV-IFA 011 Ed271v264";
  }
22
  revision 2019-04-25 {
23
24
    description
      "Initial revision
25
       Common data structure to support NSD according to:
26
       ETSI GS NFV-IFA 014 Ed261v252";
27

28
    reference
29
      "ETSI GS NFV-IFA 014 Ed261v252";
30
31
32
33
34
35
  }

  grouping resource-handle {
    leaf vim-id {
      type string;
    }
36
    leaf resource-provider-id {
37
38
39
40
41
42
43
      type string;
    }
    leaf resource-id {
      type string;
    }
  }

44

45
  grouping nsd {
46
47
48
49
50
51
52
53
54
    leaf id {
      type string;
      description
        "Identifier of this NSD information element. It Globally
         uniquely identifies an instance of the NSD.";
      reference
        "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
         information element";
    }
55

56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
    leaf designer {
      type string;
      description
        "Identifies the designer of the NSD.";
      reference
        "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
         information element";
    }

    leaf version {
      type string;
      description
        "Identifies the version of the NSD.";
      reference
        "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
         information element";
    }

    leaf name {
      type string;
      description
        "Provides the human readable name of the NSD.";
      reference
        "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
         information element";
    }

    leaf invariant-id {
      type string;
      description
        "Identifies an NSD in a version independent manner. This
         attribute is invariant across versions of the network
         service descriptor.";
      reference
        "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
         information element";
    }

    leaf-list nested-nsd-id {
      must ". != ../id";
      type leafref {
97
        path "../../nsd/id";
98
      }
99
100
101
102
103
104
      description
        "References the NSD of a constituent nested NS.";
      reference
        "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
         information element";
    }
105

106
107
    leaf-list vnfd-id {
      type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
108
        path "/nfv:nfv/nfv:vnfd/nfv:id";
109
      }
110
111
112
113
114
115
      description
        "References the VNFD of a constituent VNF.";
      reference
        "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
         information element";
    }
116

117
118
    leaf-list pnfd-id {
      type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
119
        path "/nfv:nfv/nfv:pnfd/nfv:id";
120
      }
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
      description
        "References the PNFD of a constituent PNF.";
      reference
        "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
         information element";
    }

    list sapd {
      key "id";
      description
        "Provides the descriptor of a service access point of the
         network service.";
      reference
        "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
         information element";
136

137
138
      leaf id {
        type string;
139
        description
140
          "Identifier of this Cpd information element.";
141
        reference
142
          "GS NFV IFA014: Section 6.6.3.1 Cpd information element";
143
144
      }

145
146
      leaf address-assignment {
        type boolean;
147
        description
148
149
150
151
152
153
          "Specify whether the SAP address assignment is under the
           responsibility of management and orchestration functions
           or not. If it is set to True, management and
           orchestration functions are responsible for assigning
           addresses to the access points instantiated from this
           SAPD.";
154
        reference
155
156
          "GS NFV IFA014: Section 6.2.3.2 Sapd information element";
      }
157

158
159
160
161
162
      choice cpd-or-virtual-link {
        leaf virtual-link-desc {
          type leafref {
            path "../../virtual-link-desc/id";
          }
163
          description
164
165
            "References the descriptor of the NS VL instance to
             which the SAP instantiated from this SAPD connects to.";
166
167
          reference
            "GS NFV IFA014: Section 6.2.3.2 Sapd information element";
168
        }
169

170
171
172
173
174
        choice associated-cpd-id {
          container vnf {
            leaf vnfd-id {
              mandatory true;
              type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
175
                path "/nfv:nfv/nfv:vnfd/nfv:id";
176
              }
177
178
              must "boolean(../../../vnfd-id[.=current()])";
            }
179

180
181
182
            leaf ext-cpd-id {
              mandatory true;
              type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
183
                path "deref(../vnfd-id)/../nfv:ext-cpd/nfv:id";
184
185
              }
            }
186
          }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
187

188
189
190
191
          container pnf {
            leaf pnfd-id {
              mandatory true;
              type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
192
                path "/nfv:nfv/nfv:pnfd/nfv:id";
193
              }
194
195
              must "boolean(../pnfd-id[.=current()])";
            }
196

197
198
199
            leaf ext-cpd-id {
              mandatory true;
              type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
200
                path "deref(../pnfd-id)/../nfv:ext-cpd/nfv:id";
201
202
              }
            }
203
204
205
206
207
          }
          container ns {
            leaf nsd-id {
              mandatory true;
              type leafref {
208
                path "../../../../nsd/id";
209
              }
210
211
              must "boolean(../nsd-id[.=current()])";
            }
212

213
214
215
            leaf ext-cpd-id {
              mandatory true;
              type leafref {
216
                path "deref(../nsd-id)/../sapd/id";
217
218
219
220
              }
            }
          }
        }
221
      }
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
    }

    list virtual-link-desc {
      key "id";
      description
        "Provides the constituent VLDs.";
      reference
        "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
         information element";
      leaf id {
        type string;
        description
          "Identifier of the NsVirtualLinkDesc information element.
           It uniquely identifies a VLD.";
        reference
          "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
           information element";
      }
240

241
242
243
      uses connectivity-type;

      list df {
244
        key "id";
245

246
        description
247
248
249
          "The VirtualLinkDf information element specifies
           properties for instantiating a VL according to a
           specific flavour.";
250
        reference
251
          "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
252
           information element";
253

254
255
        leaf id {
          type string;
256
          description
257
258
            "Identifies this VirtualLinkDf information element
             within a VLD.";
259
          reference
260
            "GS NFV IFA014: Section 6.5.4.2 VirtualLinkDf
261
             information element";
262
        }
263

264
265
        container qos {
          presence "VL QoS parameters";
266
          description
267
268
            "The QoS information element specifies quality of
             service parameters applicable to a VL.";
269
          reference
270
            "GS NFV IFA014: Section 6.5.4.2 VirtualLinkDf
271
272
             information element";

273
274
275
276
          leaf latency {
            mandatory true;
            type uint32;
            units "ms";
277
            description
278
              "Specifies the maximum latency in ms.";
279
            reference
280
281
              "GS NFV IFA014: Section 6.5.6.2 QoS information
               element";
282
283
          }

284
285
286
287
          leaf packet-delay-variation {
            mandatory true;
            type uint32;
            units "ms";
288
            description
289
              "Specifies the maximum jitter in ms.";
290
            reference
291
292
293
              "GS NFV IFA014: Section 6.5.6.2 QoS information
               element";
          }
294

295
296
297
298
          leaf packet-loss-ratio {
            type decimal64 {
              fraction-digits "2";
              range "0..1.00";
299
            }
300
301
302
303
304
            description
              "Specifies the maximum packet loss ratio.";
            reference
              "GS NFV IFA014: Section 6.5.6.2 QoS information
               element";
305
          }
306

307
308
          leaf priority {
            type uint32;
309
            description
310
311
              "Specifies the priority level in case of
               congestion on the underlying physical links.";
312
            reference
313
314
              "GS NFV IFA014: Section 6.5.6.2 QoS information
               element";
315
316
317
          }
        }

318
        leaf service-availability-level {
319
          type enumeration {
320
321
322
            enum "level-1";
            enum "level-2";
            enum "level-3";
323
          }
324
          description
325
326
327
328
329
            "Specifies one of the three levels defined in ETSI
             ETSI GS NFV-REL 001 [i.5]
               * Level 1.
               * Level 2.
               * Level 3.";
330
          reference
331
            "GS NFV IFA014: Section 6.5.4.2 VirtualLinkDf
332
             information element";
333
        }
334
      }
335

336
337
338
339
340
      leaf test-access {
        type enumeration {
          enum none;
          enum passive-monitoring;
          enum active;
341
        }
342
343
344
345
346
        description
          "Specifies test access facilities expected on the VL.";
        reference
          "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
           information element";
347
      }
348

349
350
      leaf description {
        type string;
351
        description
352
353
          "Provides human-readable information on the purpose of
           the virtual link (e.g. VL for control plane traffic).";
354
        reference
355
          "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
356
           information element";
357
      }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
358
359
360
      uses security-parameters {
	status deprecated;
      }
361
    }
362

363
364
    list vnffgd {
      key "id";
365

366
367
368
369
370
371
372
373
374
375
376
377
378
379
      description
        "Provides the descriptors of the applicable forwarding
         graphs.";
      reference
        "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
         information element";

      leaf id {
        type string;
        description
          "Identifier of this Vnffgd information element. It
           uniquely identifies a VNFFGD.";
        reference
          "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
380
             element";
381
382
383
384
385
      }

      leaf-list vnf-profile-id {
        type leafref {
          path "../../df/vnf-profile/id";
386
        }
387
388
389
390
391
392
        description
          "References the VnfProfile of a constituent VNF.";
        reference
          "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
           element";
      }
393

394
395
396
      leaf-list pnf-profile-id {
        type leafref {
          path "../../df/pnf-profile/id";
397
        }
398
399
400
401
402
403
        description
          "References the PnfProfile of a constituent PNF.";
        reference
          "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
           element";
      }
404

405
406
407
      leaf-list nested-ns-profile-id {
        type leafref {
          path "../../df/ns-profile/id";
408
        }
409
410
411
412
413
414
        description
          "References the NsProfile of a nestedNS.";
        reference
          "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
           element";
      }
415

416
417
418
      leaf virtual-link-profile-id {
        type leafref {
          path "../../df/virtual-link-profile/id";
419
        }
420
421
422
423
424
425
426
        description
          "References the Virtual Link Profile of a constituent
             VL.";
        reference
          "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
           element";
      }
427

428
      list nfp-position-element {
429
        key "id";
430

Mahesh Jethanandani's avatar
Bug#253    
Mahesh Jethanandani committed
431
        min-elements 1;
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
432

433
434
        leaf id {
          type string;
435
436
437
438
439
440
441
          description
            "Identifier of this NfpPositionElemen information
             element. It uniquely identifies an
             NfpPositionElemen.";
          reference
            "GS NFV IFA014: Section 6.4.6.2 NfpPositionElement
                 information element";
442
        }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
443

444
445
446
447
448
449
450
451
452
453
        container desc {
          choice constituent-base-element-id {
            mandatory "true";
            container vnf-profile {
              leaf vnf-profile-id {
                must ". = deref(../../vnfd-profile-id)" {
                }
                type leafref {
                  path "../../../../../../nsd/df/vnf-profile/id";
                }
454
455
              }
            }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
456

457
458
459
460
461
462
463
            container pnf-profile {
              leaf pnf-profile-id {
                must ". = deref(../../pnfd-profile-id)" {
                }
                type leafref {
                  path "../../../../../../nsd/df/pnf-profile/id";
                }
464
465
              }
            }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
466

467
468
469
470
471
472
473
            container ns-profile {
              leaf ns-profile-id {
                must ". = deref(../../ns-profile-id)" {
                }
                type leafref {
                  path "../../../../../../nsd/df/ns-profile/id";
                }
474
475
              }
            }
476
477
478
479
480
            description
              "Reference to the profile of an NS constituent.";
            reference
              "GS NFV IFA014: Section 6.4.8
               CpdInConstituentElement information element";
481
482
          }

Mahesh Jethanandani's avatar
Bug#253    
Mahesh Jethanandani committed
483
484
485
486
487
488
489
490
          choice constituent-cpd-id {
            container vnf {
              leaf vnfd-id {
                must ". = deref(../../vnfd-profile-id)/../vnfd-id" {
                }
                type leafref {
                  path "/nfv:nfv/nfv:vnfd/nfv:id";
                }
491
              }
Mahesh Jethanandani's avatar
Bug#253    
Mahesh Jethanandani committed
492
493
494
495
              leaf cpd-id {
                type leafref {
                  path "deref(../vnfd-id)/../nfv:ext-cpd/nfv:id";
                }
496
497
              }
            }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
498

499
500
501
502
503
            container pnf {
              leaf pnfd-id {
                must ". = deref(../../pnfd-profile-id)/../pnfd-id" {
                }
                type leafref {
Mahesh Jethanandani's avatar
Bug#253    
Mahesh Jethanandani committed
504
                  path "/nfv:nfv/nfv:pnfd/nfv:id";
505
                }
506
              }
Mahesh Jethanandani's avatar
Bug#253    
Mahesh Jethanandani committed
507
508
509
510
              leaf pnf-cpd-id {
                type leafref {
                  path "deref(../pnfd-id)/../nfv:ext-cpd/nfv:id";
                }
511
512
              }
            }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
513

514
515
516
            container ns {
              leaf nsd-id {
                must ". = deref(../../nested-ns-profile-id)/" +
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
517
                     "../nsd-id" {
518
519
520
521
522
                }

                type leafref {
                  path "../../../../../../nsd/id";
                }
523
              }
524
525
526
527
              leaf sap-cpd-id {
                type leafref {
                  path "deref(../nsd-id)/../sapd/id";
                }
528
529
              }
            }
530
531
532
533
534
535
536
537
            description
              "References the VNF external CPD for a given
               VnfProfile, or the PNF external CPD for a given
               PnfProfile, or a NS SAPD for a given NsProfile
               identified by the constituentBaseElementId.";
            reference
              "GS NFV IFA014: Section 6.4.8.2
               CpdInConstituentElement information element";
538
539
          }
          description
Mahesh Jethanandani's avatar
Bug#253    
Mahesh Jethanandani committed
540
            "Specifies a CPD or SAPD in the context of a profile
541
             of an NS constituent element.";
542
          reference
543
544
            "GS NFV IFA014: Section 6.4.6.2 NfpPositionElement
             information element";
545
546
        }
        description
547
548
549
          "One or a pair of CPDs or SAPDs. These descriptors
           shall be members of the CpdPool associated to the
           parent VNFFG.";
550
        reference
551
552
          "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
           information element";
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
      }

      list nfpd {
        key "id";

        leaf id {
          type string;
          description
            "Identifies this nfpd information element within a
             VNFFGD.";
          reference
            "GS NFV IFA014: Section 6.4.3.2 Nfpd information
             element";
        }

        leaf rule {
          type string;
          description
            "Provides an NFP classification and selection rule.
572
573
574
             The rule may be expressed as a criteria constructed out
             of atomic assertions linked by Boolean operators AND,
             OR and NOT.";
575
576
577
578
579
          reference
            "GS NFV IFA014: Section 6.4.3.2 Nfpd information
             element";
        }

580
        list position-desc {
581
582
          key "id";

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
583
584
	  min-elements 1;

585
586
587
          leaf id {
            type string;
            description
588
              "Identifier of this NfpPositionDesc element.";
589
            reference
590
591
              "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
               information element";
592
593
          }

594
595
596
          leaf-list nfp-position-element-id {
            type leafref {
              path "../../../nfp-position-element/id";
597
            }
598
            description
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
599
              "Reference to one or a pair of CPDs or SAPDs.";
600
            reference
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
601
602
              "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
               information element";
603
          }
604

605
606
607
608
          leaf forwarding-behaviour {
            type identityref {
              base forwarding-behaviour;
            }
609
            description
610
611
612
613
614
615
616
617
618
619
              "Identifies a rule to apply to forward traffic to CP or
               SAP instances corresponding to the referenced CPD(s)
               and SAPD(s). The minimum list of rules to be supported
               shall include:
               • ALL = Traffic flows shall be forwarded simultaneously
                 to all CP or SAP instances created from the
                 referenced CP profile(s).
               • LB = Traffic flows shall be forwarded to one CP or SAP
                 instance created from the referenced CP profile(s)
                 selected based on a load-balancing algorithm.";
620
            reference
621
622
              "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
               information element";
623
          }
624

625
626
627
628
629
630
631
632
633
          leaf forwarding-behavior-input-parameters {
            type string;
            description
              "Provides input parameters to configure the forwarding
               behaviour (e.g. identifies a load balancing
               algorithm).";
            reference
              "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
               information element";
634
          }
635
636
637
638
639
640
641
642
643

          description
            "Describes a position in the NFP in terms of one or more
             CPDs and SAPDs and rules for distributing the traffic
             among CP and SAP instances created from these CPDs
             and SAPDs.";
          reference
            "GS NFV IFA014: Section 6.4.3.2 Nfpd information
             element";
644
        }
645
646
647
648
649
        description
          "The network forwarding path associated to the VNFFG.";
        reference
          "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
           element";
650
      }
651
    }
652

653
654
655
    leaf-list autoscale-rule {
      type string;
    }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
656

657
658
659
    list lifecycle-management-script {
      key "event";
      leaf event {
660
661
        type string;
      }
662
663
      leaf script {
        type string;
664
      }
665
    }
666

667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
    list df {
      min-elements 1;
      must "default-instantiation-level or " +
           "count(ns-instantiation-level) = 1" {
        error-message
          "default-instantiation-level must be present if there " +
          "multiple instantion-level";
        reference
          "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
      }

      key "id";
      description
        "Identifies a DF within the scope of an NSD.";
      reference
        "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
         information element";

      leaf id {
        type string;
        description
          "Identifies this NsDf information element. It identifies
           a NS DF within the NSD.";
        reference
          "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
      }

      leaf flavour-key {
        type leafref {
          path "../monitored-info/id";
697
        }
698
699
700
        description
          "Assurance parameter against which this flavour is being
           described.
701

702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
           The key can be a combination of multiple assurance
           parameters with a logical relationship between them.
           The parameters should be present as a monitoredInfo
           attribute in the NSD.";
        reference
          "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
      }

      list vnf-profile {
        must "min-number-of-instances <= max-number-of-instances";
        must "boolean(../../vnfd-id[.=current()/vnfd-id])" {
          error-message "VNFDs in the profile has to be listed as a " +
                        "dependency of the network service " +
                        "descriptor.";
        }
717
718
        key "id";
        description
719
          "VNF profile to be used for the NS flavour.";
720
        reference
721
          "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
722
723
724

        leaf id {
          type string;
725
          description
726
727
            "Identifier of this vnfProfile information element. It
             uniquely identifies a VnfProfile.";
728
          reference
729
730
            "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
             element";
731
732
        }

733
734
        leaf vnfd-id {
          mandatory true;
735
          type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
736
            path "/nfv:nfv/nfv:vnfd/nfv:id";
737
          }
738
          description
739
740
741
742
743
            "References a VNFD.";
          reference
            "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
             element";
        }
744

745
746
747
        leaf flavour-id {
          mandatory true;
          type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
748
            path "deref(../vnfd-id)/../nfv:df/nfv:id";
749
750
751
          }
          description
            "Identifies a flavour within the VNFD.";
752
          reference
753
754
            "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
             element";
755
756
        }

757
758
759
        leaf instantiation-level {
          mandatory true;
          type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
760
761
            path "deref(../flavour-id)/../nfv:instantiation-level/" +
	         "nfv:id";
762
          }
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
          description
            "Identifier of the instantiation level of the VNF DF
             to be used for instantiation. If not present, the
             default instantiation level as declared in the VNFD
             shall be used.";
          reference
            "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
             element";
        }

        leaf min-number-of-instances {
          default 1;
          type uint16;
          description
            "Minimum number of instances of the VNF based on this
             VNFD that is permitted to exist for this VnfProfile.";
          reference
            "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
             element";
        }

        leaf max-number-of-instances {
          default 1;
          type uint16;
          description
            "Maximum number of instances of the VNF based on this
             VNFD that is permitted to exist for this VnfProfile.";
          reference
            "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
             element";
        }

        uses local-affinity-or-anti-affinity-rule;

        list affinity-or-anti-affinity-group {
798
          key "id";
799

800
          description
801
802
            "Identifier(s) of the affinity or anti-affinity
             group(s) the VnfProfile belongs to.";
803
          reference
804
805
            "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
             element";
806
807
808

          leaf id {
            type leafref {
809
              path "../../../affinity-or-anti-affinity-group/id";
810
811
            }
          }
812
        }
813

814
815
816
817
818
819
820
821
822
        list virtual-link-connectivity {
          key "virtual-link-profile-id";

          description
            "Defines the connection information of the VNF, it
             contains connection relationship between a VNF
             connection point and a NS Virtual Link.";
          reference
            "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
823
               element";
824

825
          leaf virtual-link-profile-id {
826
            type leafref {
827
              path "../../../virtual-link-profile/id";
828
            }
829
            description
830
              "Reference an NS VL profile.";
831
            reference
832
833
              "GS NFV IFA014: Section 6.3.7.2, NsVirutalLinkConnectivity
               information element.";
834
835
          }

836
837
          list constituent-cpd-id {
            key "constituent-base-element-id";
838

839
            description
840
841
842
843
              "Describes a connection point on a VNF/PNF or a SAP
               which connects to virtual links instantiated from
               the profile identified in the virtualLinkProfileId
               attribute.";
844
            reference
845
846
              "GS NFV IFA014: Section 6.3.7
               NsVirtualLinkConnectivity information element";
847

848
            leaf constituent-base-element-id {
849
              type leafref {
850
                path "../../../id";
851
              }
852
853
854
855
856
              description
                "Reference to the profile of an NS constituent.";
              reference
                "GS NFV IFA014: Section 6.4.8
                 CpdInConstituentElement information element";
857
858
            }

859
            leaf constituent-cpd-id {
860
              type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
861
                path "deref(../../../vnfd-id)/../nfv:ext-cpd/nfv:id";
862
              }
863
              description
864
865
866
                "A reference to the descriptor of a connection point
                 attached to one of the constituent VNFs and PNFs or to
                 the descriptor of a NS SAP.";
867
              reference
868
869
                "GS NFV IFA014: Section 6.4.4.2 CpdPool information
                 element";
870
            }
871
872
873
          }
        }
      }
874

875
876
877
878
879
880
881
      list pnf-profile {
        key "id";
        must "boolean(../../pnfd-id[.=current()/pnfd-id])" {
          error-message "PNFDs in the profile has to be listed as a " +
                        "dependency of the network service " +
                        "descriptor.";
        }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
882

883
884
885
886
887
888
889
890
891
        leaf id {
          type string;
          description
            "Identifier of this PnfProfile information element.
             It uniquely identifies a PnfProfile.";
          reference
            "GS NFV IFA014: Section 6.3.6.2 PnfProfile information
             element";
        }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
892

893
894
        leaf pnfd-id {
          type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
895
            path "/nfv:nfv/nfv:pnfd/nfv:id";
896
          }
897
898
899
900
901
          description
            "References a PNFD.";
          reference
            "GS NFV IFA014: Section 6.3.6.2 PnfProfile information
             element";
902
        }
903

904
905
        list virtual-link-connectivity {
          key "virtual-link-profile-id";
906

907
908
909
910
911
912
913
          description
            "Defines the connection information of the PNF, it
             contains connection relationship between a PNF
             connection point and a NS Virtual Link.";
          reference
            "GS NFV IFA014: Section 6.3.6.2 PnfProfile information
             element";
914

915
          leaf virtual-link-profile-id {
916
            type leafref {
917
              path "../../../virtual-link-profile/id";
918
919
            }
            description
920
              "Reference an NS VL profile.";
921
            reference
922
923
              "GS NFV IFA014: Section 6.3.7.2, NsVirutalLinkConnectivity
               information element.";
924
925
          }

926
927
          list constituent-cpd-id {
            key "constituent-base-element-id";
928
929

            description
930
931
932
933
              "Describes a connection point on a VNF/PNF or a SAP
               which connects to virtual links instantiated from
               the profile identified in the virtualLinkProfileId
               attribute.";
934
            reference
935
936
              "GS NFV IFA014: Section 6.3.7
               NsVirtualLinkConnectivity information element";
937

938
            leaf constituent-base-element-id {
939
              type leafref {
940
                path "../../../id";
941
              }
942
              description
943
                "Reference to the profile of an NS constituent.";
944
              reference
945
946
                "GS NFV IFA014: Section 6.4.8
                 CpdInConstituentElement information element";
947
948
            }

949
950
            leaf constituent-cpd-id {
              type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
951
                path "deref(../../../pnfd-id)/../nfv:ext-cpd/nfv:id";
952
              }
953
              description
954
955
956
                "A reference to the descriptor of a connection point
                 attached to one of the constituent VNFs and PNFs or to
                 the descriptor of a NS SAP.";
957
              reference
958
959
                "GS NFV IFA014: Section 6.4.4.2 CpdPool information
                 element";
960
961
962
            }
          }
        }
963
      }
964

965
966
      list virtual-link-profile {
        key "id";
967

968
969
970
971
972
973
974
        description
          "VL profile to be used for the NS flavour.";
        reference
          "GS NFV IFA014: Section 6.3.2.2 NsDf information element";

        leaf id {
          type string;
975
          description
976
977
            "Uniquely identifies this VirtualLinkProfile
             information element.";
978
          reference
979
980
981
            "GS NFV IFA014: Section 6.3.2.2 VirtualLinkProfile
             information element";
        }
982

983
984
985
986
        leaf virtual-link-desc-id {
          mandatory true;
          type leafref {
            path "../../../virtual-link-desc/id";
987
          }
988
989
990
991
992
993
          description
            "Uniquely references a VLD.";
          reference
            "GS NFV IFA014: Section 6.3.2.2 VirtualLinkProfile
             information element";
        }
994

995
996
997
998
        leaf flavour-id {
          mandatory true;
          type leafref {
            path "deref(../virtual-link-desc-id)/../df/id";
999
          }
1000
1001
1002
1003
1004
1005
          description
            "Identifies a flavour within the VLD.";
          reference
            "GS NFV IFA014: Section 6.3.2.2 VirtualLinkProfile
             information element";
        }
1006

1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
        uses local-affinity-or-anti-affinity-rule;

        list affinity-or-anti-affinity-group {
          key "id";

          description
            "Identifies an affinity or anti-affinity group the
             VLs instantiated according to the VlProfile belong
             to.";
          reference
            "GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile
             information element";

          leaf id {
1021
            type leafref {
1022
              path "../../../affinity-or-anti-affinity-group/id";
1023
1024
            }
          }
1025
        }
1026

1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
        container max-bitrate-requirements {
          description
            "Specifies the maximum bitrate requirements for a VL
             instantiated according to this profile.";
          reference
            "GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile
             information element";
          uses link-bitrate-requirements;
        }
        container min-bitrate-requirements {
          description
            "Specifies the minimum bitrate requirements for a VL
             instantiated according to this profile.";
          reference
            "GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile
             information element";
          uses link-bitrate-requirements;
        }
      }
1046

1047
1048
      list scaling-aspect {
        key "id";
1049

1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
        description
          "The scaling aspects supported by this DF of the NS.";
        reference
          "GS NFV IFA014: Section 6.3.2.2 NsDf information element";

        leaf id {
          type string;
          description
            "Identifier of this NsScalingAspect information element.
             It uniquely identifies the NS scaling aspect in an
             NSD.";
          reference
            "GS NFV IFA014: Section 6.7.2.2 NsScalingAspect
             information element";
1064
1065
        }

1066
1067
1068
1069
1070
1071
1072
1073
1074
        leaf name {
          type string;
          description
            "Provides a human readable name of the NS scaling
             aspect.";
          reference
            "GS NFV IFA014: Section 6.7.2.2 NsScalingAspect
             information element";
        }
1075

1076
1077
        leaf description {
          type string;
1078
          description
1079
1080
            "Provides a human readable description of the NS
             scaling aspect.";
1081
          reference
1082
1083
1084
            "GS NFV IFA014: Section 6.7.2.2 NsScalingAspect
             information element";
        }
1085

1086
1087
1088
        leaf scaling-level {
          type leafref {
            path "../../ns-instantiation-level/id";
1089
          }
1090
1091
1092
1093
1094
1095
1096
          description
            "Describes the details of an NS level.";
          reference
            "GS NFV IFA014: Section 6.7.2.2 NsScalingAspect
             information element";
        }
      }
1097

1098
1099
      list affinity-or-anti-affinity-group {
        key "id";
1100

1101
1102
1103
1104
1105
1106
1107
1108
1109
        description
          "Specifies affinity or anti-affinity relationship
           applicable between the VNF instances created using
           different VNFDs, the Virtual Link instances created
           using different NsVirtualLinkDescs or the nested NS
           instances created using different NSDs in the same
           affinity or anti-affinity group.";
        reference
          "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
1110

1111
1112
1113
1114
1115
1116
1117
1118
        leaf id {
          type string;
          description
            "Identifier of Identifier of this
             AffinityOrAntiAffinityGroup information element.";
          reference
            "GS NFV IFA014: Section 6.3.5.2 AffinityOrAntiAffinity
             information element";
1119
1120
        }

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1121
        leaf type {
1122
1123
1124
1125
1126
1127
1128
1129
1130
          mandatory true;
          type affinity-type;
          descript