etsi-nfv-ns.yang 51.3 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;
    }
  }

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
  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.";
      }
    }
  }
69

70
  grouping nsd {
71
72
73
74
75
76
77
78
79
    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";
    }
80

81
82
83
84
85
86
87
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
    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 {
122
        path "../../nsd/id";
123
      }
124
125
126
127
128
129
      description
        "References the NSD of a constituent nested NS.";
      reference
        "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
         information element";
    }
130

131
132
    leaf-list vnfd-id {
      type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
133
        path "/nfv:nfv/nfv:vnfd/nfv:id";
134
      }
135
136
137
138
139
140
      description
        "References the VNFD of a constituent VNF.";
      reference
        "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
         information element";
    }
141

142
143
    leaf-list pnfd-id {
      type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
144
        path "/nfv:nfv/nfv:pnfd/nfv:id";
145
      }
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
      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";
161

162
163
      leaf id {
        type string;
164
        description
165
          "Identifier of this Cpd information element.";
166
        reference
167
          "GS NFV IFA014: Section 6.6.3.1 Cpd information element";
168
169
      }

170
171
      leaf address-assignment {
        type boolean;
172
        description
173
174
175
176
177
178
          "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.";
179
        reference
180
181
          "GS NFV IFA014: Section 6.2.3.2 Sapd information element";
      }
182

183
184
185
186
187
      choice cpd-or-virtual-link {
        leaf virtual-link-desc {
          type leafref {
            path "../../virtual-link-desc/id";
          }
188
          description
189
190
            "References the descriptor of the NS VL instance to
             which the SAP instantiated from this SAPD connects to.";
191
192
          reference
            "GS NFV IFA014: Section 6.2.3.2 Sapd information element";
193
        }
194

195
196
197
198
199
        choice associated-cpd-id {
          container vnf {
            leaf vnfd-id {
              mandatory true;
              type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
200
                path "/nfv:nfv/nfv:vnfd/nfv:id";
201
              }
202
203
              must "boolean(../../../vnfd-id[.=current()])";
            }
204

205
206
207
            leaf ext-cpd-id {
              mandatory true;
              type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
208
                path "deref(../vnfd-id)/../nfv:ext-cpd/nfv:id";
209
210
              }
            }
211
          }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
212

213
214
215
216
          container pnf {
            leaf pnfd-id {
              mandatory true;
              type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
217
                path "/nfv:nfv/nfv:pnfd/nfv:id";
218
              }
219
220
              must "boolean(../pnfd-id[.=current()])";
            }
221

222
223
224
            leaf ext-cpd-id {
              mandatory true;
              type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
225
                path "deref(../pnfd-id)/../nfv:ext-cpd/nfv:id";
226
227
              }
            }
228
229
230
231
232
          }
          container ns {
            leaf nsd-id {
              mandatory true;
              type leafref {
233
                path "../../../../nsd/id";
234
              }
235
236
              must "boolean(../nsd-id[.=current()])";
            }
237

238
239
240
            leaf ext-cpd-id {
              mandatory true;
              type leafref {
241
                path "deref(../nsd-id)/../sapd/id";
242
243
244
245
              }
            }
          }
        }
246
      }
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
    }

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

266
267
268
      uses connectivity-type;

      list df {
269
        key "id";
270

271
        description
272
273
274
          "The VirtualLinkDf information element specifies
           properties for instantiating a VL according to a
           specific flavour.";
275
        reference
276
          "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
277
           information element";
278

279
280
        leaf id {
          type string;
281
          description
282
283
            "Identifies this VirtualLinkDf information element
             within a VLD.";
284
          reference
285
            "GS NFV IFA014: Section 6.5.4.2 VirtualLinkDf
286
             information element";
287
        }
288

289
290
        container qos {
          presence "VL QoS parameters";
291
          description
292
293
            "The QoS information element specifies quality of
             service parameters applicable to a VL.";
294
          reference
295
            "GS NFV IFA014: Section 6.5.4.2 VirtualLinkDf
296
297
             information element";

298
299
300
301
          leaf latency {
            mandatory true;
            type uint32;
            units "ms";
302
            description
303
              "Specifies the maximum latency in ms.";
304
            reference
305
306
              "GS NFV IFA014: Section 6.5.6.2 QoS information
               element";
307
308
          }

309
310
311
312
          leaf packet-delay-variation {
            mandatory true;
            type uint32;
            units "ms";
313
            description
314
              "Specifies the maximum jitter in ms.";
315
            reference
316
317
318
              "GS NFV IFA014: Section 6.5.6.2 QoS information
               element";
          }
319

320
321
322
323
          leaf packet-loss-ratio {
            type decimal64 {
              fraction-digits "2";
              range "0..1.00";
324
            }
325
326
327
328
329
            description
              "Specifies the maximum packet loss ratio.";
            reference
              "GS NFV IFA014: Section 6.5.6.2 QoS information
               element";
330
          }
331

332
333
          leaf priority {
            type uint32;
334
            description
335
336
              "Specifies the priority level in case of
               congestion on the underlying physical links.";
337
            reference
338
339
              "GS NFV IFA014: Section 6.5.6.2 QoS information
               element";
340
341
342
          }
        }

343
        leaf service-availability-level {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
344
          type uint32;
345
          description
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
346
347
348
349
350
351
352
353
            "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.";
354
          reference
355
            "GS NFV IFA014: Section 6.5.4.2 VirtualLinkDf
356
             information element";
357
        }
358
      }
359

360
361
362
363
364
      leaf test-access {
        type enumeration {
          enum none;
          enum passive-monitoring;
          enum active;
365
        }
366
367
368
369
370
        description
          "Specifies test access facilities expected on the VL.";
        reference
          "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
           information element";
371
      }
372

373
374
      leaf description {
        type string;
375
        description
376
377
          "Provides human-readable information on the purpose of
           the virtual link (e.g. VL for control plane traffic).";
378
        reference
379
          "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
380
           information element";
381
382
      }
    }
383

384
385
    list vnffgd {
      key "id";
386

387
388
389
390
391
392
393
394
395
396
397
398
399
400
      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
401
             element";
402
403
404
405
406
      }

      leaf-list vnf-profile-id {
        type leafref {
          path "../../df/vnf-profile/id";
407
        }
408
409
410
411
412
413
        description
          "References the VnfProfile of a constituent VNF.";
        reference
          "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
           element";
      }
414

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

426
427
428
      leaf-list nested-ns-profile-id {
        type leafref {
          path "../../df/ns-profile/id";
429
        }
430
431
432
433
434
435
        description
          "References the NsProfile of a nestedNS.";
        reference
          "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
           element";
      }
436

437
438
439
      leaf virtual-link-profile-id {
        type leafref {
          path "../../df/virtual-link-profile/id";
440
        }
441
442
443
444
445
446
447
        description
          "References the Virtual Link Profile of a constituent
             VL.";
        reference
          "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
           element";
      }
448

449
      list nfp-position-element {
450
        key "id";
451

Mahesh Jethanandani's avatar
Bug#253  
Mahesh Jethanandani committed
452
        min-elements 1;
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
453

454
455
        leaf id {
          type string;
456
457
458
459
460
461
462
          description
            "Identifier of this NfpPositionElemen information
             element. It uniquely identifies an
             NfpPositionElemen.";
          reference
            "GS NFV IFA014: Section 6.4.6.2 NfpPositionElement
                 information element";
463
        }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
464

465
466
467
468
469
470
471
472
473
474
        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";
                }
475
476
              }
            }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
477

478
479
480
481
482
483
484
            container pnf-profile {
              leaf pnf-profile-id {
                must ". = deref(../../pnfd-profile-id)" {
                }
                type leafref {
                  path "../../../../../../nsd/df/pnf-profile/id";
                }
485
486
              }
            }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
487

488
489
490
491
492
493
494
            container ns-profile {
              leaf ns-profile-id {
                must ". = deref(../../ns-profile-id)" {
                }
                type leafref {
                  path "../../../../../../nsd/df/ns-profile/id";
                }
495
496
              }
            }
497
498
499
500
501
            description
              "Reference to the profile of an NS constituent.";
            reference
              "GS NFV IFA014: Section 6.4.8
               CpdInConstituentElement information element";
502
503
          }

Mahesh Jethanandani's avatar
Bug#253  
Mahesh Jethanandani committed
504
505
506
507
508
509
510
511
          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";
                }
512
              }
Mahesh Jethanandani's avatar
Bug#253  
Mahesh Jethanandani committed
513
514
515
516
              leaf cpd-id {
                type leafref {
                  path "deref(../vnfd-id)/../nfv:ext-cpd/nfv:id";
                }
517
518
              }
            }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
519

520
521
522
523
524
            container pnf {
              leaf pnfd-id {
                must ". = deref(../../pnfd-profile-id)/../pnfd-id" {
                }
                type leafref {
Mahesh Jethanandani's avatar
Bug#253  
Mahesh Jethanandani committed
525
                  path "/nfv:nfv/nfv:pnfd/nfv:id";
526
                }
527
              }
Mahesh Jethanandani's avatar
Bug#253  
Mahesh Jethanandani committed
528
529
530
531
              leaf pnf-cpd-id {
                type leafref {
                  path "deref(../pnfd-id)/../nfv:ext-cpd/nfv:id";
                }
532
533
              }
            }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
534

535
536
537
            container ns {
              leaf nsd-id {
                must ". = deref(../../nested-ns-profile-id)/" +
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
538
                     "../nsd-id" {
539
540
541
542
543
                }

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

      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.
593
594
595
             The rule may be expressed as a criteria constructed out
             of atomic assertions linked by Boolean operators AND,
             OR and NOT.";
596
597
598
599
600
          reference
            "GS NFV IFA014: Section 6.4.3.2 Nfpd information
             element";
        }

601
        list position-desc {
602
603
          key "id";

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
604
          min-elements 1;
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
605

606
607
608
          leaf id {
            type string;
            description
609
              "Identifier of this NfpPositionDesc element.";
610
            reference
611
612
              "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
               information element";
613
614
          }

615
616
617
          leaf-list nfp-position-element-id {
            type leafref {
              path "../../../nfp-position-element/id";
618
            }
619
            description
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
620
              "Reference to one or a pair of CPDs or SAPDs.";
621
            reference
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
622
623
              "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
               information element";
624
          }
625

626
627
628
629
          leaf forwarding-behaviour {
            type identityref {
              base forwarding-behaviour;
            }
630
            description
631
632
633
634
635
636
637
638
639
640
              "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.";
641
            reference
642
643
              "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
               information element";
644
          }
645

646
647
648
649
650
651
652
653
654
          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";
655
          }
656
657
658
659
660
661
662
663
664

          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";
665
        }
666
667
668
669
670
        description
          "The network forwarding path associated to the VNFFG.";
        reference
          "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
           element";
671
      }
672
    }
673

674
675
676
    leaf-list autoscale-rule {
      type string;
    }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
677

678
679
680
    list lifecycle-management-script {
      key "event";
      leaf event {
681
682
        type string;
      }
683
684
      leaf script {
        type string;
685
      }
686
    }
687

688
689
690
691
692
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
    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";
718
        }
719
720
721
        description
          "Assurance parameter against which this flavour is being
           described.
722

723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
           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.";
        }
738
739
        key "id";
        description
740
          "VNF profile to be used for the NS flavour.";
741
        reference
742
          "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
743
744
745

        leaf id {
          type string;
746
          description
747
748
            "Identifier of this vnfProfile information element. It
             uniquely identifies a VnfProfile.";
749
          reference
750
751
            "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
             element";
752
753
        }

754
755
        leaf vnfd-id {
          mandatory true;
756
          type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
757
            path "/nfv:nfv/nfv:vnfd/nfv:id";
758
          }
759
          description
760
761
762
763
764
            "References a VNFD.";
          reference
            "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
             element";
        }
765

766
767
768
        leaf flavour-id {
          mandatory true;
          type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
769
            path "deref(../vnfd-id)/../nfv:df/nfv:id";
770
771
772
          }
          description
            "Identifies a flavour within the VNFD.";
773
          reference
774
775
            "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
             element";
776
777
        }

778
779
780
        leaf instantiation-level {
          mandatory true;
          type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
781
            path "deref(../flavour-id)/../nfv:instantiation-level/" +
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
782
                 "nfv:id";
783
          }
784
785
786
787
788
789
790
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
          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
816
        uses ns-local-affinity-or-anti-affinity-rule;
817

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
818
819
820
821
        leaf-list affinity-or-anti-affinity-group-id {
          type leafref {
            path "../../affinity-or-anti-affinity-group/id";
          }
822
          description
823
824
            "Identifier(s) of the affinity or anti-affinity
             group(s) the VnfProfile belongs to.";
825
          reference
826
827
828
            "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
             element";
        }
829

830
831
832
833
834
835
836
837
838
        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
839
               element";
840

841
          leaf virtual-link-profile-id {
842
            type leafref {
843
              path "../../../virtual-link-profile/id";
844
            }
845
            description
846
              "Reference an NS VL profile.";
847
            reference
848
849
              "GS NFV IFA014: Section 6.3.7.2, NsVirutalLinkConnectivity
               information element.";
850
851
          }

852
853
          list constituent-cpd-id {
            key "constituent-base-element-id";
854

855
            description
856
857
858
859
              "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.";
860
            reference
861
862
              "GS NFV IFA014: Section 6.3.7
               NsVirtualLinkConnectivity information element";
863

864
            leaf constituent-base-element-id {
865
              type leafref {
866
                path "../../../id";
867
              }
868
869
870
871
872
              description
                "Reference to the profile of an NS constituent.";
              reference
                "GS NFV IFA014: Section 6.4.8
                 CpdInConstituentElement information element";
873
874
            }

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

        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";
        }
904
      }
905

906
907
908
909
910
911
912
      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
913

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

924
925
        leaf pnfd-id {
          type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
926
            path "/nfv:nfv/nfv:pnfd/nfv:id";
927
          }
928
929
930
931
932
          description
            "References a PNFD.";
          reference
            "GS NFV IFA014: Section 6.3.6.2 PnfProfile information
             element";
933
        }
934

935
936
        list virtual-link-connectivity {
          key "virtual-link-profile-id";
937

938
939
940
941
942
943
944
          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";
945

946
          leaf virtual-link-profile-id {
947
            type leafref {
948
              path "../../../virtual-link-profile/id";
949
950
            }
            description
951
              "Reference an NS VL profile.";
952
            reference
953
954
              "GS NFV IFA014: Section 6.3.7.2, NsVirutalLinkConnectivity
               information element.";
955
956
          }

957
958
          list constituent-cpd-id {
            key "constituent-base-element-id";
959
960

            description
961
962
963
964
              "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.";
965
            reference
966
967
              "GS NFV IFA014: Section 6.3.7
               NsVirtualLinkConnectivity information element";
968

969
            leaf constituent-base-element-id {
970
              type leafref {
971
                path "../../../id";
972
              }
973
              description
974
                "Reference to the profile of an NS constituent.";
975
              reference
976
977
                "GS NFV IFA014: Section 6.4.8
                 CpdInConstituentElement information element";
978
979
            }

980
981
            leaf constituent-cpd-id {
              type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
982
                path "deref(../../../pnfd-id)/../nfv:ext-cpd/nfv:id";
983
              }
984
              description
985
986
987
                "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.";
988
              reference
989
990
                "GS NFV IFA014: Section 6.4.4.2 CpdPool information
                 element";
991
992
993
            }
          }
        }
994
      }
995

996
997
      list virtual-link-profile {
        key "id";
998

999
1000
1001
1002
1003
1004
1005
        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;
1006
          description
1007
1008
            "Uniquely identifies this VirtualLinkProfile
             information element.";
1009
          reference
1010
1011
1012
            "GS NFV IFA014: Section 6.3.2.2 VirtualLinkProfile
             information element";
        }
1013

1014
1015
1016
1017
        leaf virtual-link-desc-id {
          mandatory true;
          type leafref {
            path "../../../virtual-link-desc/id";
1018
          }
1019
1020
1021
1022
1023
1024
          description
            "Uniquely references a VLD.";
          reference
            "GS NFV IFA014: Section 6.3.2.2 VirtualLinkProfile
             information element";
        }
1025

1026
1027
1028
1029
        leaf flavour-id {
          mandatory true;
          type leafref {
            path "deref(../virtual-link-desc-id)/../df/id";
1030
          }
1031
1032
1033
1034
1035
1036
          description
            "Identifies a flavour within the VLD.";
          reference
            "GS NFV IFA014: Section 6.3.2.2 VirtualLinkProfile
             information element";
        }
1037

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1038
        uses ns-local-affinity-or-anti-affinity-rule;
1039

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1040
1041
1042
1043
        leaf-list affinity-or-anti-affinity-group-id {
          type leafref {
            path "../../affinity-or-anti-affinity-group/id";
          }
1044
1045
1046
1047
1048
1049
1050
1051
          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";
        }
1052

1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
        container max-bitrate-requirements {
          description