etsi-nfv-ns.yang 51.4 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
Mahesh Jethanandani committed
14
15
16
17
18
19
20
21
  revision 2020-02-11 {
    description
      "Version 3.3.1

       Common data structures to support NSD according to:
       ETSI GS NFV-IFA 014 Ed341v333.";
  }

Mahesh Jethanandani's avatar
Bug#251  
Mahesh Jethanandani committed
22
23
24
25
  revision 2019-10-01 {
    description
      "Version 2.7.1.

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
26
27
       Common data structures to support NSD according to:
       ETSI GS NFV-IFA 014 Ed271v264.";
Mahesh Jethanandani's avatar
Bug#251  
Mahesh Jethanandani committed
28
  }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
29

30
  revision 2019-04-25 {
31
32
    description
      "Initial revision
33
       Common data structure to support NSD according to:
34
       ETSI GS NFV-IFA 014 Ed261v252";
35

36
    reference
37
      "ETSI GS NFV-IFA 014 Ed261v252";
38
39
40
41
42
43
  }

  grouping resource-handle {
    leaf vim-id {
      type string;
    }
44
    leaf resource-provider-id {
45
46
47
48
49
50
51
      type string;
    }
    leaf resource-id {
      type string;
    }
  }

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
  grouping ns-local-affinity-or-anti-affinity-rule {
    list local-affinity-or-anti-affinity-rule {
      key "type scope";

      leaf type {
        type affinity-type;
        description
          "Specifies whether the rule is an affinity rule or an
           anti-affinity rule.";
        reference
          "GS NFV IFA014: Section 6.3.8.2,
           LocalAffinityOrAntiAffinityRule 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 IFA014: Section 6.3.8.2,
           LocalAffinityOrAntiAffinityRule information element.";
      }
    }
  }
77

78
  grouping nsd {
79
80
81
82
83
84
85
86
87
    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";
    }
88

89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
    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 {
130
        path "../../nsd/id";
131
      }
132
133
134
135
136
137
      description
        "References the NSD of a constituent nested NS.";
      reference
        "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
         information element";
    }
138

139
140
    leaf-list vnfd-id {
      type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
141
        path "/nfv:nfv/nfv:vnfd/nfv:id";
142
      }
143
144
145
146
147
148
      description
        "References the VNFD of a constituent VNF.";
      reference
        "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
         information element";
    }
149

150
151
    leaf-list pnfd-id {
      type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
152
        path "/nfv:nfv/nfv:pnfd/nfv:id";
153
      }
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
      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";
169

170
171
      leaf id {
        type string;
172
        description
173
          "Identifier of this Cpd information element.";
174
        reference
175
          "GS NFV IFA014: Section 6.6.3.1 Cpd information element";
176
177
      }

178
179
      leaf address-assignment {
        type boolean;
180
        description
181
182
183
184
185
186
          "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.";
187
        reference
188
189
          "GS NFV IFA014: Section 6.2.3.2 Sapd information element";
      }
190

191
192
193
194
195
      choice cpd-or-virtual-link {
        leaf virtual-link-desc {
          type leafref {
            path "../../virtual-link-desc/id";
          }
196
          description
197
198
            "References the descriptor of the NS VL instance to
             which the SAP instantiated from this SAPD connects to.";
199
200
          reference
            "GS NFV IFA014: Section 6.2.3.2 Sapd information element";
201
        }
202

203
204
205
206
207
        choice associated-cpd-id {
          container vnf {
            leaf vnfd-id {
              mandatory true;
              type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
208
                path "/nfv:nfv/nfv:vnfd/nfv:id";
209
              }
210
211
              must "boolean(../../../vnfd-id[.=current()])";
            }
212

213
214
215
            leaf ext-cpd-id {
              mandatory true;
              type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
216
                path "deref(../vnfd-id)/../nfv:ext-cpd/nfv:id";
217
218
              }
            }
219
          }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
220

221
222
223
224
          container pnf {
            leaf pnfd-id {
              mandatory true;
              type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
225
                path "/nfv:nfv/nfv:pnfd/nfv:id";
226
              }
227
228
              must "boolean(../pnfd-id[.=current()])";
            }
229

230
231
232
            leaf ext-cpd-id {
              mandatory true;
              type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
233
                path "deref(../pnfd-id)/../nfv:ext-cpd/nfv:id";
234
235
              }
            }
236
237
238
239
240
          }
          container ns {
            leaf nsd-id {
              mandatory true;
              type leafref {
241
                path "../../../../nsd/id";
242
              }
243
244
              must "boolean(../nsd-id[.=current()])";
            }
245

246
247
248
            leaf ext-cpd-id {
              mandatory true;
              type leafref {
249
                path "deref(../nsd-id)/../sapd/id";
250
251
252
253
              }
            }
          }
        }
254
      }
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
    }

    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";
      }
273

274
275
276
      uses connectivity-type;

      list df {
277
        key "id";
278

279
        description
280
281
282
          "The VirtualLinkDf information element specifies
           properties for instantiating a VL according to a
           specific flavour.";
283
        reference
284
          "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
285
           information element";
286

287
288
        leaf id {
          type string;
289
          description
290
291
            "Identifies this VirtualLinkDf information element
             within a VLD.";
292
          reference
293
            "GS NFV IFA014: Section 6.5.4.2 VirtualLinkDf
294
             information element";
295
        }
296

297
298
        container qos {
          presence "VL QoS parameters";
299
          description
300
301
            "The QoS information element specifies quality of
             service parameters applicable to a VL.";
302
          reference
303
            "GS NFV IFA014: Section 6.5.4.2 VirtualLinkDf
304
305
             information element";

306
307
308
309
          leaf latency {
            mandatory true;
            type uint32;
            units "ms";
310
            description
311
              "Specifies the maximum latency in ms.";
312
            reference
313
314
              "GS NFV IFA014: Section 6.5.6.2 QoS information
               element";
315
316
          }

317
318
319
320
          leaf packet-delay-variation {
            mandatory true;
            type uint32;
            units "ms";
321
            description
322
              "Specifies the maximum jitter in ms.";
323
            reference
324
325
326
              "GS NFV IFA014: Section 6.5.6.2 QoS information
               element";
          }
327

328
329
330
331
          leaf packet-loss-ratio {
            type decimal64 {
              fraction-digits "2";
              range "0..1.00";
332
            }
333
334
335
336
337
            description
              "Specifies the maximum packet loss ratio.";
            reference
              "GS NFV IFA014: Section 6.5.6.2 QoS information
               element";
338
          }
339

340
341
          leaf priority {
            type uint32;
342
            description
343
344
              "Specifies the priority level in case of
               congestion on the underlying physical links.";
345
            reference
346
347
              "GS NFV IFA014: Section 6.5.6.2 QoS information
               element";
348
349
350
          }
        }

351
        leaf service-availability-level {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
352
          type uint32;
353
          description
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
354
355
356
357
358
359
360
361
            "If present, specifies the service availability level
             for the VL instance created from this DF.

             THE FOLLOWING STATEMENT IS SUBJECT TO CHANGE:

             Either the serviceAvailabilityLevel attribute of NS DF
             or the serviceAvailabilityLevel attribute of the VL DF
             may be provided, but not both.";
362
          reference
363
            "GS NFV IFA014: Section 6.5.4.2 VirtualLinkDf
364
             information element";
365
        }
366
      }
367

368
369
370
371
372
      leaf test-access {
        type enumeration {
          enum none;
          enum passive-monitoring;
          enum active;
373
        }
374
375
376
377
378
        description
          "Specifies test access facilities expected on the VL.";
        reference
          "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
           information element";
379
      }
380

381
382
      leaf description {
        type string;
383
        description
384
385
          "Provides human-readable information on the purpose of
           the virtual link (e.g. VL for control plane traffic).";
386
        reference
387
          "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
388
           information element";
389
390
      }
    }
391

392
393
    list vnffgd {
      key "id";
394

395
396
397
398
399
400
401
402
403
404
405
406
407
408
      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
409
             element";
410
411
412
413
414
      }

      leaf-list vnf-profile-id {
        type leafref {
          path "../../df/vnf-profile/id";
415
        }
416
417
418
419
420
421
        description
          "References the VnfProfile of a constituent VNF.";
        reference
          "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
           element";
      }
422

423
424
425
      leaf-list pnf-profile-id {
        type leafref {
          path "../../df/pnf-profile/id";
426
        }
427
428
429
430
431
432
        description
          "References the PnfProfile of a constituent PNF.";
        reference
          "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
           element";
      }
433

434
435
436
      leaf-list nested-ns-profile-id {
        type leafref {
          path "../../df/ns-profile/id";
437
        }
438
439
440
441
442
443
        description
          "References the NsProfile of a nestedNS.";
        reference
          "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
           element";
      }
444

445
446
447
      leaf virtual-link-profile-id {
        type leafref {
          path "../../df/virtual-link-profile/id";
448
        }
449
450
451
452
453
454
455
        description
          "References the Virtual Link Profile of a constituent
             VL.";
        reference
          "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
           element";
      }
456

457
      list nfp-position-element {
458
        key "id";
459

Mahesh Jethanandani's avatar
Bug#253  
Mahesh Jethanandani committed
460
        min-elements 1;
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
461

462
463
        leaf id {
          type string;
464
465
466
467
468
469
470
          description
            "Identifier of this NfpPositionElemen information
             element. It uniquely identifies an
             NfpPositionElemen.";
          reference
            "GS NFV IFA014: Section 6.4.6.2 NfpPositionElement
                 information element";
471
        }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
472

473
474
475
476
477
478
479
480
481
482
        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";
                }
483
484
              }
            }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
485

486
487
488
489
490
491
492
            container pnf-profile {
              leaf pnf-profile-id {
                must ". = deref(../../pnfd-profile-id)" {
                }
                type leafref {
                  path "../../../../../../nsd/df/pnf-profile/id";
                }
493
494
              }
            }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
495

496
497
498
499
500
501
502
            container ns-profile {
              leaf ns-profile-id {
                must ". = deref(../../ns-profile-id)" {
                }
                type leafref {
                  path "../../../../../../nsd/df/ns-profile/id";
                }
503
504
              }
            }
505
506
507
508
509
            description
              "Reference to the profile of an NS constituent.";
            reference
              "GS NFV IFA014: Section 6.4.8
               CpdInConstituentElement information element";
510
511
          }

Mahesh Jethanandani's avatar
Bug#253  
Mahesh Jethanandani committed
512
513
514
515
516
517
518
519
          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";
                }
520
              }
Mahesh Jethanandani's avatar
Bug#253  
Mahesh Jethanandani committed
521
522
523
524
              leaf cpd-id {
                type leafref {
                  path "deref(../vnfd-id)/../nfv:ext-cpd/nfv:id";
                }
525
526
              }
            }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
527

528
529
530
531
532
            container pnf {
              leaf pnfd-id {
                must ". = deref(../../pnfd-profile-id)/../pnfd-id" {
                }
                type leafref {
Mahesh Jethanandani's avatar
Bug#253  
Mahesh Jethanandani committed
533
                  path "/nfv:nfv/nfv:pnfd/nfv:id";
534
                }
535
              }
Mahesh Jethanandani's avatar
Bug#253  
Mahesh Jethanandani committed
536
537
538
539
              leaf pnf-cpd-id {
                type leafref {
                  path "deref(../pnfd-id)/../nfv:ext-cpd/nfv:id";
                }
540
541
              }
            }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
542

543
544
545
            container ns {
              leaf nsd-id {
                must ". = deref(../../nested-ns-profile-id)/" +
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
546
                     "../nsd-id" {
547
548
549
550
551
                }

                type leafref {
                  path "../../../../../../nsd/id";
                }
552
              }
553
554
555
556
              leaf sap-cpd-id {
                type leafref {
                  path "deref(../nsd-id)/../sapd/id";
                }
557
558
              }
            }
559
560
561
562
563
564
565
566
            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";
567
568
          }
          description
Mahesh Jethanandani's avatar
Bug#253  
Mahesh Jethanandani committed
569
            "Specifies a CPD or SAPD in the context of a profile
570
             of an NS constituent element.";
571
          reference
572
573
            "GS NFV IFA014: Section 6.4.6.2 NfpPositionElement
             information element";
574
575
        }
        description
576
577
578
          "One or a pair of CPDs or SAPDs. These descriptors
           shall be members of the CpdPool associated to the
           parent VNFFG.";
579
        reference
580
581
          "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
           information element";
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
      }

      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.
601
602
603
             The rule may be expressed as a criteria constructed out
             of atomic assertions linked by Boolean operators AND,
             OR and NOT.";
604
605
606
607
608
          reference
            "GS NFV IFA014: Section 6.4.3.2 Nfpd information
             element";
        }

609
        list position-desc {
610
611
          key "id";

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
612
          min-elements 1;
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
613

614
615
616
          leaf id {
            type string;
            description
617
              "Identifier of this NfpPositionDesc element.";
618
            reference
619
620
              "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
               information element";
621
622
          }

623
624
625
          leaf-list nfp-position-element-id {
            type leafref {
              path "../../../nfp-position-element/id";
626
            }
627
            description
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
628
              "Reference to one or a pair of CPDs or SAPDs.";
629
            reference
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
630
631
              "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
               information element";
632
          }
633

634
635
636
637
          leaf forwarding-behaviour {
            type identityref {
              base forwarding-behaviour;
            }
638
            description
639
640
641
642
643
644
645
646
647
648
              "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.";
649
            reference
650
651
              "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
               information element";
652
          }
653

654
655
656
657
658
659
660
661
662
          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";
663
          }
664
665
666
667
668
669
670
671
672

          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";
673
        }
674
675
676
677
678
        description
          "The network forwarding path associated to the VNFFG.";
        reference
          "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
           element";
679
      }
680
    }
681

682
683
684
    leaf-list autoscale-rule {
      type string;
    }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
685

686
687
688
    list lifecycle-management-script {
      key "event";
      leaf event {
689
690
        type string;
      }
691
692
      leaf script {
        type string;
693
      }
694
    }
695

696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
    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";
726
        }
727
728
729
        description
          "Assurance parameter against which this flavour is being
           described.
730

731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
           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.";
        }
746
747
        key "id";
        description
748
          "VNF profile to be used for the NS flavour.";
749
        reference
750
          "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
751
752
753

        leaf id {
          type string;
754
          description
755
756
            "Identifier of this vnfProfile information element. It
             uniquely identifies a VnfProfile.";
757
          reference
758
759
            "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
             element";
760
761
        }

762
763
        leaf vnfd-id {
          mandatory true;
764
          type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
765
            path "/nfv:nfv/nfv:vnfd/nfv:id";
766
          }
767
          description
768
769
770
771
772
            "References a VNFD.";
          reference
            "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
             element";
        }
773

774
775
776
        leaf flavour-id {
          mandatory true;
          type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
777
            path "deref(../vnfd-id)/../nfv:df/nfv:id";
778
779
780
          }
          description
            "Identifies a flavour within the VNFD.";
781
          reference
782
783
            "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
             element";
784
785
        }

786
787
788
        leaf instantiation-level {
          mandatory true;
          type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
789
            path "deref(../flavour-id)/../nfv:instantiation-level/" +
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
790
                 "nfv:id";
791
          }
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
          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";
        }

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
824
        uses ns-local-affinity-or-anti-affinity-rule;
825

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
826
827
828
829
        leaf-list affinity-or-anti-affinity-group-id {
          type leafref {
            path "../../affinity-or-anti-affinity-group/id";
          }
830
          description
831
832
            "Identifier(s) of the affinity or anti-affinity
             group(s) the VnfProfile belongs to.";
833
          reference
834
835
836
            "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
             element";
        }
837

838
839
840
841
842
843
844
845
846
        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
847
               element";
848

849
          leaf virtual-link-profile-id {
850
            type leafref {
851
              path "../../../virtual-link-profile/id";
852
            }
853
            description
854
              "Reference an NS VL profile.";
855
            reference
856
857
              "GS NFV IFA014: Section 6.3.7.2, NsVirutalLinkConnectivity
               information element.";
858
859
          }

860
861
          list constituent-cpd-id {
            key "constituent-base-element-id";
862

863
            description
864
865
866
867
              "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.";
868
            reference
869
870
              "GS NFV IFA014: Section 6.3.7
               NsVirtualLinkConnectivity information element";
871

872
            leaf constituent-base-element-id {
873
              type leafref {
874
                path "../../../id";
875
              }
876
877
878
879
880
              description
                "Reference to the profile of an NS constituent.";
              reference
                "GS NFV IFA014: Section 6.4.8
                 CpdInConstituentElement information element";
881
882
            }

883
            leaf constituent-cpd-id {
884
              type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
885
                path "deref(../../../vnfd-id)/../nfv:ext-cpd/nfv:id";
886
              }
887
              description
888
889
890
                "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.";
891
              reference
892
893
                "GS NFV IFA014: Section 6.4.4.2 CpdPool information
                 element";
894
            }
895
896
          }
        }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911

        leaf service-availability-level {
          must "not(../../service-availability-level)";
          type uint32;
          description
            "If present, specifies the service availability level for
             the VNF instance created from this profile.

             Either the serviceAvailabilityLevel attribute of NS DF
             or the serviceAvailabilityLevel attribute of the
             VnfProfile may be provided, but not both.";
          reference
            "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
               element";
        }
912
      }
913

914
915
916
917
918
919
920
      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
921

922
923
924
925
926
927
928
929
930
        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
931

932
933
        leaf pnfd-id {
          type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
934
            path "/nfv:nfv/nfv:pnfd/nfv:id";
935
          }
936
937
938
939
940
          description
            "References a PNFD.";
          reference
            "GS NFV IFA014: Section 6.3.6.2 PnfProfile information
             element";
941
        }
942

943
944
        list virtual-link-connectivity {
          key "virtual-link-profile-id";
945

946
947
948
949
950
951
952
          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";
953

954
          leaf virtual-link-profile-id {
955
            type leafref {
956
              path "../../../virtual-link-profile/id";
957
958
            }
            description
959
              "Reference an NS VL profile.";
960
            reference
961
962
              "GS NFV IFA014: Section 6.3.7.2, NsVirutalLinkConnectivity
               information element.";
963
964
          }

965
966
          list constituent-cpd-id {
            key "constituent-base-element-id";
967
968

            description
969
970
971
972
              "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.";
973
            reference
974
975
              "GS NFV IFA014: Section 6.3.7
               NsVirtualLinkConnectivity information element";
976

977
            leaf constituent-base-element-id {
978
              type leafref {
979
                path "../../../id";
980
              }
981
              description
982
                "Reference to the profile of an NS constituent.";
983
              reference
984
985
                "GS NFV IFA014: Section 6.4.8
                 CpdInConstituentElement information element";
986
987
            }

988
989
            leaf constituent-cpd-id {
              type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
990
                path "deref(../../../pnfd-id)/../nfv:ext-cpd/nfv:id";
991
              }
992
              description
993
994
995
                "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.";
996
              reference
997
998
                "GS NFV IFA014: Section 6.4.4.2 CpdPool information
                 element";
999
1000
1001
            }
          }
        }
1002
      }
1003

1004
1005
      list virtual-link-profile {
        key "id";
1006

1007
1008
1009
1010
1011
1012
1013
        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;
1014
          description
1015
1016
            "Uniquely identifies this VirtualLinkProfile
             information element.";
1017
          reference
1018
1019
1020
            "GS NFV IFA014: Section 6.3.2.2 VirtualLinkProfile
             information element";
        }
1021

1022
1023
1024
1025
        leaf virtual-link-desc-id {
          mandatory true;
          type leafref {
            path "../../../virtual-link-desc/id";
1026
          }
1027
1028
1029
1030
1031
1032
          description
            "Uniquely references a VLD.";
          reference
            "GS NFV IFA014: Section 6.3.2.2 VirtualLinkProfile
             information element";
        }
1033

1034
1035
1036
1037
        leaf flavour-id {
          mandatory true;
          type leafref {
            path "deref(../virtual-link-desc-id)/../df/id";
1038
          }
1039
1040
1041
1042
1043
1044
          description
            "Identifies a flavour within the VLD.";
          reference
            "GS NFV IFA014: Section 6.3.2.2 VirtualLinkProfile
             information element";
        }
1045

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1046
        uses ns-local-affinity-or-anti-affinity-rule;
1047

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1048
1049
1050
1051
        leaf-list affinity-or-anti-affinity-group-id {
          type leafref {
            path "../../affinity-or-anti-affinity-group/id";
          }
1052
1053
1054
1055
1056