etsi-nfv-ns.yang 50.8 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.";

14
  revision 2020-06-10 {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
15
    description
16
      "Version 3.3.1.
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
17

18
       NSD according to ETSI GS NFV-IFA 014 Release 3.";
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
19 20
  }

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

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

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

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

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

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
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
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
69
           'NFVI-PoP', 'NFVI-node' network-link-and-node etc.";
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
70 71 72 73 74 75
        reference
          "GS NFV IFA014: Section 6.3.8.2,
           LocalAffinityOrAntiAffinityRule information element.";
      }
    }
  }
76

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

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

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

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

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

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

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

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

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

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

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

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

273 274 275
      uses connectivity-type;

      list df {
276
        key "id";
277

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

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

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

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

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

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

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

350
        leaf service-availability-level {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
351
          type uint32;
352
          description
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
353 354 355 356 357 358 359 360
            "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.";
361
          reference
362
            "GS NFV IFA014: Section 6.5.4.2 VirtualLinkDf
363
             information element";
364
        }
365
      }
366

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

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

391 392
    list vnffgd {
      key "id";
393

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

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

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

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

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

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

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
459
        min-elements 1;
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
460

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

472 473 474 475 476 477 478 479 480 481
        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";
                }
482 483
              }
            }
484

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

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

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

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

542 543 544
            container ns {
              leaf nsd-id {
                must ". = deref(../../nested-ns-profile-id)/" +
545
                     "../nsd-id" {
546 547 548 549 550
                }

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

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

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

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

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

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

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

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

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

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

685 686 687
    list lifecycle-management-script {
      key "event";
      leaf event {
688 689
        type string;
      }
690 691
      leaf script {
        type string;
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 718 719 720 721 722 723 724
    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";
725
        }
726 727 728
        description
          "Assurance parameter against which this flavour is being
           described.
729

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

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

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

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

785 786 787
        leaf instantiation-level {
          mandatory true;
          type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
788
            path "deref(../flavour-id)/../nfv:instantiation-level/" +
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
789
                 "nfv:id";
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 816 817 818 819 820 821 822
          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
823
        uses ns-local-affinity-or-anti-affinity-rule;
824

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

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

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

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

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

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

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

        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";
        }
911
      }
912

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1047 1048 1049 1050
        leaf-list affinity-or-anti-affinity-group-id {
          type leafref {
            path "../../affinity-or-anti-affinity-group/id";
          }
1051 1052 1053 1054 1055 1056 1057 1058
          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";
        }
1059

1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078
        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;
        }
      }
1079

1080 1081
      list scaling-aspect {
        key "id";
1082

1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096
        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";
1097 1098
        }

1099 1100 1101 1102 1103 1104 1105 1106 1107
        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";
        }
1108

1109 1110
        leaf description {
          type string;
1111
          description
1112 1113
            "Provides a human readable description of the NS
             scaling aspect.";
1114
          reference
1115 1116 1117
            "GS NFV IFA014: Section 6.7.2.2 NsScalingAspect
             information element";
        }
1118

1119 1120 1121
        leaf scaling-level {
          type leafref {
            path "../../ns-instantiation-level/id";
1122
          }
1123 1124 1125 1126 1127 1128 1129
          description
            "Describes the details of an NS level.";
          reference
            "GS NFV IFA014: Section 6.7.2.2 NsScalingAspect
             information element";
        }
      }
1130

1131 1132
      list affinity-or-anti-affinity-group {
        key "id";
1133

1134 1135 1136 1137 1138 1139 1140 1141 1142
        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";
1143

1144 1145 1146 1147 1148 1149 1150 1151
        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";
1152 1153
        }

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1154
        leaf type {
1155 1156 1157 1158 1159 1160 1161 1162 1163
          mandatory true;
          type affinity-type;
          description
            "Specifies the type of relationship that the members of
             the group have: 'affinity' or 'anti-affinity.'";
          reference
            "GS NFV IFA014: Section 6.3.5.2 AffinityOrAntiAffinity
             information element";
        }
1164

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1165
        leaf scope {
1166 1167
          mandatory true;
          type affinity-scope;
1168
          description
1169
            "Specifies the scope of the affinity or anti-affinity
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1170 1171
             relationship e.g. a NFVI node, an NFVI PoP,
             network-link-and-node etc.";
1172
          reference
1173 1174 1175 1176
            "GS NFV IFA014: Section 6.3.5.2 AffinityOrAntiAffinity
             information element";
        }
      }
1177

1178 1179 1180
      list ns-instantiation-level {
        min-elements 1;
        key "id";
1181

1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222
        description
          "Describes the details of an NS level.";
        reference
          "GS NFV IFA014: Section 6.3.2.2 NsDf information element
           GS NFV IFA014: Section 6.7.2.2 NsScaling information
           element";

        leaf id {
          type string;
          description
            "Identifier of this NsLevel information element. It
             uniquely identifies an NS level within the DF.";
          reference
            "GS NFV IFA014: Section 6.3.9.2 NsLevel information
             element";
        }

        leaf description {
          type string;
          description
            "Human readable description of the NS level.";
          reference
            "GS NFV IFA014: Section 6.3.9.2 NsLevel information
             element";
        }

        list vnf-to-level-mapping {
          key "vnf-profile-id";

          description
            "Specifies the profile of the VNFs involved in this NS
             level and, for each of them, the required number of
             instances.";
          reference
            "GS NFV IFA014: Section 6.3.9.2 NsLevel information
             element";

          leaf vnf-profile-id {
            type leafref {
              path "../../../vnf-profile/id";
            }
1223
            description
1224 1225
              "Identifies the profile to be used for a VNF
               involved in an NS level.";
1226
            reference
1227
              "GS NFV IFA014: Section 6.7.4.2 VnfToLevelMapping
1228
               information element";
1229 1230
          }

1231 1232 1233
          leaf number-of-instances {
            default 1;
            type uint32;
1234
            description
1235 1236
              "Specifies the number of VNF instances required for
               an NS level.";
1237
            reference
1238
              "GS NFV IFA014: Section 6.7.4.2 VnfToLevelMapping
1239
               information element";
1240 1241 1242
          }
        }

1243 1244
        list virtual-link-to-level-mapping {
          key "virtual-link-profile-id";
1245 1246

          description
1247 1248
            "Specifies the profile of the VLs involved in this NS
             level and, for each of them, the needed bandwidth.";
1249
          reference
1250
            "GS NFV IFA014: Section 6.3.9.2 NsLevel information
1251 1252
             element";

1253 1254 1255 1256
          leaf virtual-link-profile-id {
            type leafref {
              path "../../../virtual-link-profile/id";
            }
1257
            description
1258 1259
              "Identifies the profile to be used for a VL involved
               in an NS level.";
1260
            reference
1261 1262
              "GS NFV IFA014: Section 6.7.5.2
               VirtualLinkToLevelMapping information element";
1263 1264
          }

1265 1266 1267 1268 1269
          uses link-bitrate-requirements;
        }

        list ns-to-level-mapping {
          key "ns-profile-id";
1270

1271 1272 1273 1274 1275 1276 1277
          description
            "Specifies the profile of the nested NSs involved in
             this NS level and, for each of them, the required
             number of instances.";
          reference
            "GS NFV IFA014: Section 6.3.9.2 NsLevel information
             element";
1278

1279 1280 1281 1282
          leaf ns-profile-id {
            type leafref {
              path "../../../ns-profile/id";
            }
1283
            description
1284 1285
              "Identifies the profile to be used for a nested NS
               involved in the NS level.";
1286
            reference
1287
              "GS NFV IFA014: Section 6.7.6.2 NsToLevel information
1288
               element";
1289 1290
          }

1291 1292 1293
          leaf number-of-instances {
            default 1;
            type uint32;
1294
            description
1295 1296
              "Specifies the number of nested NS instances required
               for the NS scale level.";
1297
            reference
1298
              "GS NFV IFA014: Section 6.7.6.2 NsToLevel information
1299
               element";
1300 1301
          }
        }
1302

1303 1304 1305 1306
        must "(count(vnf-to-level-mapping) + " +
             "count(virtual-link-to-level-mapping) + " +
             "count(ns-to-level-mapping)) > 0" {
          error-message
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1307
            "At least one attribute between " +
1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319
            "vnf-to-level-mapping, " +
            "virtual-link-to-level-mapping and " +
            "ns-to-level-mapping shall be present.";
          description
            "At least one attribute between vnfToLevelMapping,
             vlirtualLinkToLevelMapping and nsToLevelMapping shall
             be present.";
          reference
            "GS NFV IFA014: Section 6.3.9.2 NsLevel information
             element";
        }
      }
1320

1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331
      leaf default-instantiation-level {
        type leafref {
          path "../ns-instantiation-level/id";
        }
        description
          "Identifies the NS level which represents the default NS
           instantiation level for this DF. It shall be present if
           there are multiple 'nsIinstantiationLevel' entries.";
        reference
          "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
      }
1332

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344
      container ns-lcm-additional-params {
        container instantiate {
          list params {
            key "key";

            leaf key {
              type string;
            }

            leaf value {
              type string;
            }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1345
            description
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365
              "Array of KVP requirements for additional parameters
               of NS to be passed when invoking the Instantiate Ns
               operation.";
            reference
              "GS NFV IFA014: Section 6.2.10.3
               InstantiateNsAdditionalParams information element";
          }
        }

        container scale {
          list params {
            key "key";

            leaf key {
              type string;
            }

            leaf value {
              type string;
            }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1366
            description
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386
              "Array of KVP requirements for additional parameters
               of NS to be passed when invoking the Scale Ns
               operation.";
            reference
              "GS NFV IFA014: Section 6.2.10.4
               ScaleNsAdditionalParams information element";
          }
        }

        container heal {
          list params {
            key "key";

            leaf key {
              type string;
            }

            leaf value {
              type string;
            }
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1387
            description
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1388 1389 1390 1391 1392 1393 1394 1395 1396 1397
              "Array of KVP requirements for additional parameters
               of NS to be passed when invoking the Heal Ns
               operation.";
            reference
              "GS NFV IFA014: Section 6.2.10.5
               HealNsAdditionalParams information element";
          }
        }
      }

1398 1399 1400 1401 1402 1403 1404 1405
      list ns-profile {
        must "min-number-of-instances <= max-number-of-instances" {
          error-message
            "min-number-of-instances has to be less than or equal" +
            "max-number-of-instances.";
        }
        must "boolean(../../nested-nsd-id[.=current()/nsd-id])" {
          error-message
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1406
            "PNFDs in the profile has to be listed as a " +
1407 1408 1409 1410
            "dependency of the network service " +
            "descriptor.";
        }
        key "id";
1411

1412 1413 1414 1415
        description
          "Specifies a NS Profile supported by this NS DF.";
        reference
          "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
1416

1417 1418 1419 1420 1421 1422 1423 1424
        leaf id {
          type string;
          description
            "Identifies an NS profile.";
          reference
            "GS NFV IFA014: Section 6.3.11.2 NsProfile information
             element";
        }
1425

1426 1427 1428
        leaf nsd-id {
          mandatory true;
          type leafref {
1429
            path "../../../../nsd/id";
1430
          }
1431 1432 1433 1434 1435 1436 1437
          description
            "Identifies the NSD applicable to NS instantiated
             according to this profile.";
          reference
            "GS NFV IFA014: Section 6.3.11.2 NsProfile information
             element";
        }
1438

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1439
        leaf ns-df-id {
1440 1441 1442
          mandatory true;
          type leafref {
            path "deref(../nsd-id)/../df/id";
1443
          }
1444 1445 1446 1447 1448 1449
          description
            "Identifies the applicable network service DF within
             the scope of the NSD.";
          reference
            "GS NFV IFA014: Section 6.3.11.2 NsProfile information
             element";
1450 1451
        }

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1452
        leaf instantiation-level-id {
1453
          mandatory true;
1454
          type leafref {
1455
            path "deref(../ns-df-id)/../ns-instantiation-level/id";
1456
          }
1457
          description
1458 1459 1460 1461
            "Identifies the NS level within the referenced NS DF to
             be used in the context of the parent NS instantiation.
             If not present, the default NS instantiation level as
             declared in the referenced NSD shall be used.";
1462
          reference
1463 1464
            "GS NFV IFA014: Section 6.3.11.2 NsProfile information
             element";
1465 1466
        }

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1467
        leaf min-number-of-instances {
1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478
          type uint16;
          default 1;
          description
            "Minimum number of nested NS instances based on the
             referenced NSD that is permitted to exist for this
             NsProfile.";
          reference
            "GS NFV IFA014: Section 6.3.11.2 NsProfile information
             element";
        }

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1479
        leaf max-number-of-instances {
1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490
          type uint16;
          default 1;
          description
            "Maximum number of nested NS instances based on the
             referenced NSD that is permitted to exist for this
             NsProfile.";
          reference
            "GS NFV IFA014: Section 6.3.11.2 NsProfile information
             element";
        }

Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
1491 1492 1493 1494
        leaf-list affinity-or-anti-affinity-group-id {
          type leafref {
            path "../../affinity-or-anti-affinity-group/id";
          }
1495
          description
1496 1497
            "Identifies an affinity or anti-affinity group the NSs
             created according to this NsProfile belongs to.";
1498
          reference
1499 1500 1501 1502 1503 1504 1505 1506
            "GS NFV IFA014: Section 6.3.11.2 NsProfile information
             element";
        }

        list virtual-link-connectivity {
          key "virtual-link-profile-id";

          leaf virtual-link-profile-id {
1507
            type leafref {
1508
              path "../../../virtual-link-profile/id";
1509
            }
1510
            description
1511
              "Reference an NS VL profile.";
1512
            reference
1513 1514
              "GS NFV IFA014: Section 6.3.7.2, NsVirutalLinkConnectivity
               information element.";
1515
          }
1516

1517 1518
          list constituent-cpd-id {
            key "constituent-base-element-id";
1519

1520
            description
1521 1522 1523 1524
              "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.";
1525
            reference
1526 1527
              "GS NFV IFA014: Section 6.3.7
               NsVirtualLinkConnectivity information element";
1528

1529
            leaf constituent-base-element-id {
1530
              type leafref {
1531
                path "../../../id";
1532
              }
1533 1534 1535 1536 1537
              description
                "Reference to the profile of an NS constituent.";
              reference
                "GS NFV IFA014: Section 6.4.8
                 CpdInConstituentElement information element";
1538
            }