Skip to content
SOL002SOL003VNFLifecycleManagement_def.yaml 48.8 KiB
Newer Older
# Copyright (c) ETSI 2017.
# https://forge.etsi.org/etsi-forge-copyright-notice.txt

definitions:
  AffectedVirtualLink:
    #SOL003 Location: 5.5.3.14
    description: >
      This type provides information about added, deleted, modified and
      temporary VLs.
    type: object
    required:
      - id
      - virtualLinkDescId
      - changeType
      - networkResource
    properties:
      id: 
        description: >
          Identifier of the virtual link instance, identifying the applicable
          "vnfVirtualLinkResourceInfo" entry in the "VnfInstance" data type.
        $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnf"
      virtualLinkDescId:
        description: >
          Identifier of the related VLD in the VNFD.
        $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd"
      changeType:
        description: >
          Signals the type of change. Permitted values:
          * ADDED
          * REMOVED
          * MODIFIED
          * TEMPORARY
          * LINK_PORT_ADDED
          * LINK_PORT_REMOVED
          For a temporary resource, an AffectedVirtualLink structure exists as
          long as the temporary resource exists.
        type: string
        enum:
          - ADDED
          - REMOVED
          - MODIFIED
          - TEMPORARY
          - LINK_PORT_ADDED
          - LINK_PORT_REMOVED
      networkResource:
        description: >
          Reference to the VirtualNetwork resource. Detailed information is
          (for new and modified resources) or has been (for removed
          resources) available from the VIM.
        $ref: "#/definitions/ResourceHandle"

  AffectedVirtualStorage:
    #SOL003 Location: 5.5.3.15
    description: >
      This type provides information about added, deleted, modified and
      temporary virtual storage resources.
    type: object
    required:
      - id
      - virtualStorageDescId
      - changeType
      - storageResource
    properties:
      id:
        description: >
          Identifier of the storage instance, identifying the applicable
          "virtualStorageResourceInfo" entry in the "VnfInstance" data type.
        $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnf"
      virtualStorageDescId:
        description: >
          Identifier of the related VirtualStorage descriptor in the VNFD.
        $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd"
      changeType:
        description: >
          Signals the type of change. Permitted values:
          * ADDED
          * REMOVED
          * MODIFIED
          * TEMPORARY
          For a temporary resource, an AffectedVirtualStorage structure exists
          as long as the temporary resource exists.
        type: string
        enum:
          - ADDED
          - REMOVED
          - MODIFIED
          - TEMPORARY
      storageResource:
        description: >
          Reference to the VirtualStorage resource. Detailed information is 
          (for new and modified resources) or has been (for removed
          resources) available from the VIM.
        $ref: "#/definitions/ResourceHandle"

  AffectedVnfc:
    description: >
      This type provides information about added, deleted, modified and
      temporary VNFCs.  
    type: object
    required:
      - id
      - vduId
      - changeType
      - computeResource
    properties:
      id:
        description: >
          Identifier of the Vnfc instance, identifying the applicable
          "vnfcResourceInfo" entry in the "VnfInstance" data type.
        $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnf"
      vduId:
        description: >
          Identifier of the related VDU in the VNFD.
        $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd"
      changeType:
        description: >
          Signals the type of change. Permitted values:
          * ADDED
          * REMOVED
          * MODIFIED
          * TEMPORARY
          For a temporary resource, an AffectedVnfc structure exists as long
          as the temporary resource exists.
        type: string
        enum:
          - ADDED
          - REMOVED
          - MODIFIED
          - TEMPORARY
      computeResource:
        description: >
          Reference to the VirtualCompute resource. Detailed information is
          (for new and modified resources) or has been (for removed
          resources) available from the VIM.
        $ref: "#/definitions/ResourceHandle"
      addedStorageResourceIds:
        description: >
          References to VirtualStorage resources that have been added. Each
          value refers to a VirtualStorageResourceInfo item in the
          VnfInstance that was added to the VNFC. It shall be provided if at
          least one storage resource was added to the VNFC.
        $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnf"

  CreateVnfRequest:
    #SOL003 location: 5.5.2.3
    type: object
    required:
      - vnfdId
    properties:
      vnfdId:
        description: >
          Identifier that identifies the VNFD which defines the VNF instance to
          be created.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      vnfInstanceName:
        description: >
          Human-readable name of the VNF instance to be created.
        type: string
      vnfInstanceDescription:
        description: >
          Human-readable description of the VNF instance to be created.
        type: string

  DynamicNetworkAddressData:
    description: >
      This type represents a network address that is requested to be assigned.
    type: object
    required:
      - numIpAddresses
    properties:
      macAddress:
        description: >
          MAC address. Shall not be present if numIPAddresses > 1. If it is not
          present, it will be chosen by the VIM.
        type: string
        #TODO: Can we describe the syntax of this (Table 4.4.2.2-1)?
      numIpAddresses:
        description: >
          Number of IP addresses to assign dynamically. Shall be greater than
          zero.
        type: integer
        format: uint32
      subnetId:
        description: >
          Subnet defined by the identifier of the subnet resource in the VIM.
          In case this attribute is present, an IP addresses from that subnet
          will be assigned; otherwise, IP addresses not bound to a subnet
          will be assigned.
          At most one of "subnetId" and "subnetIpRanges" shall be present.
        $ref: "SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/IdentifierInVim"
      subnetIpRanges: 
        description: >
          Subnet defined as one or more IP address ranges. In case this
          attribute is present, IP addresses from one of the ranges will be
          assigned; otherwise, IP addresses not bound to a subnet will be
          assigned.
          At most one of "subnetId" and "subnetIpRanges" shall be present.
        type: array
        items:
          type: object
          properties: 
            minIpAddress: 
              description: >
                Lowest IP address belonging to the range.
              type: string
              #TODO: Can we describe the syntax of this (Table 4.4.2.2-1)?
            maxIpAddress: 
              description: >
                Highest IP address belonging to the range.
              type: string
              #TODO: Can we describe the syntax of this (Table 4.4.2.2-1)?

  ExtLinkPort:
    description: >
      This type represents a link port of an external VL, i.e. a port providing
      connectivity for the VNF to an NS VL.
    type: object
    required:
      - id
      - resourceHandle
    properties:
      id:
        description: >
          Identifier of this link port as provided by the entity that has
          created the link port.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      resourceHandle:
        description: >
          Reference to the virtualised network resource realizing this link
          port.
        $ref: "SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/ResourceHandle"
      cpInstanceId:
        description: >
          Identifier of the external CP of the VNF to be connected to this link
          port. There shall be at most one link port associated with any
          external connection point instance. The value refers to an
          "extCpInfo" item in the VnfInstance.
        $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnf"

  ExtManagedVirtualLinkData:
    #SOL003 location: 4.4.1.12
    type: object
    required:
      - id
      - virtualLinkDescId
      - resourceId
    properties:
      id:
        description: >
          The identifier of the externally-managed internal VL instance.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      virtualLinkDescId:
        description: >
          The identifier of the VLD in the VNFD for this VL.
        $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd"
      vimConnectionId:
        description: >
          Identifier of the VIM connection to manage this resource. This
          attribute shall only be supported and present if VNF-related
          resource management in direct mode is applicable.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      resourceProviderId:
        description: >
          Identifies the entity responsible for the management of this
          resource. This attribute shall only be supported and present if
          VNF-related resource management in indirect mode is applicable. The
          identification scheme is outside the scope of the present document.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      resourceId:
        description: >
          The identifier of the resource in the scope of the VIM or the
          resource provider.
        $ref: "#/definitions/IdentifierInVim"

  ExtVirtualLinkInfo:
    type: object
    required:
      - id
      - resourceHandle
    properties:
      id:
        description: >
          Identifier of the external VL and the related external VL information
          instance.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      resourceHandle:
        description: >
          Reference to the resource realizing this VL.
        $ref: "SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/ResourceHandle"
      linkPorts:
        description: >
          Link ports of this VL.
          type: array
          items:
            $ref: "#/definitions/ExtLinkPort"
296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000

  ExtVirtualLinkData:
    #SOL003 location: 4.4.1.11
    description: >
      This type represents an external VL.
    type: object
    required:
      - id
      - resourceId
      - extCps
    properties: 
      id: 
        description: >
          The identifier of the external VL instance.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      vimConnectionId:
        description: >
          Identifier of the VIM connection to manage this resource. This
          attribute shall only be supported and present if VNF-related
          resource management in direct mode is applicable.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      resourceProviderId: 
        description: >
          Identifies the entity responsible for the management of this
          resource. This attribute shall only be supported and present
          if VNF-related resource management in indirect mode is applicable.
          The identification scheme is outside the scope of the present
          document.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      resourceId: 
        description: >
          The identifier of the resource in the scope of the VIM or the
          resource provider.
        $ref: "#/definitions/IdentifierInVim"
      extCps:
        description: >
          External CPs of the VNF to be connected to this external VL.
        type: array
        items: 
          $ref: "#/definitions/VnfExtCpData"

  FixedNetworkAddressData:
    #SOL003 location: 4.4.1.8
    description: >
      This type represents a network address that is requested to be assigned.
    type: object
    properties: 
      macAddress: 
        description: >
          MAC address. If it is not present, it will be chosen by the VIM.
          At least one of "macAddress" and "ipAddress" shall be present.
        type: string
        #TODO: Is it possible to describe the scheme of this? (Table 4.4.2.2-1)
      ipAddress:
        description: >
          IP address. If it is not present, no IP address will be assigned.
          At least one of "macAddress" and "ipAddress" shall be present.
        type: string
            #TODO: Can we describe the syntax of this (Table 4.4.2.2-1)?
      subnetId:
        description: >
          Identifier of the subnet in the VIM. This attribute may be present
          if the "ipAddress" attribute is present, and shall be absent
          otherwise.
        $ref: "#/definitions/IdentifierInVim"

  IdentifierInVim:
    description: >
      An identifier maintained by the VIM or other resource provider. It is
      expected to be unique within the VIM instance.
    type: string

  LccnLinks:
    description: >
      This type represents the links to resources that a notification can
      contain.
    type: object
    required: 
      - vnfInstance
      - subscription
    properties: 
      vnfInstance:
        description: >
          Link to the resource representing the VNF instance to which the
          notified change applies.
        $ref: "#/definitions/Link"
      subscription:
        description: >
          Link to the related subscription.
        $ref: "#/definitions/Link"
      vnfLcmOpOcc:
        description: >
          Link to the VNF lifecycle management operation occurrence that this
          notification is related to. Shall be present if there is a related
          lifecycle operation occurrence.
        $ref: "#/definitions/Link"

  LccnSubscription:
    description: >
      This type represents a subscription related to notifications about VNF
      lifecycle changes.
    type: object
    required:
      - id
      - callbackUri
      - _links
    properties:
      id:
        description: >
          Identifier of this subscription resource.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      filter:
        description: >
          Filter settings for this subscription, to define the subset of all
          notifications this subscription relates to. A particular
          notification is sent to the subscriber if the filter matches, or if
          there is no filter.
        $ref: "#/definitions/LifecycleChangeNotificationsFilter"
      callbackUri:
        description: >
          The URI of the endpoint to send the notification to.
        $ref: "SOL002SOL003_def.yaml#/definitions/Uri"
      _links:
        description: >
          Links to resources related to this resource.
        type: object
        required:
          - self
        properties:
          self:
            description: >
              URI of this resource.
            $ref: "SOL002SOL003_def.yaml#/definitions/Uri"

  LccnSubscriptionRequest:
    description: >
      This type represents a subscription request related to notifications
      about VNF lifecycle changes.
    type: object
    required:
      - callbackUri
    properties:
      filter: 
        description: >
          Filter settings for this subscription, to define the subset of all
          notifications this subscription relates to. A particular
          notification is sent to the subscriber if the filter matches, or if
          there is no filter.
        $ref: "#/definitions/LifecycleChangeNotificationsFilter"
      callbackUri:
        description: >
          The URI of the endpoint to send the notification to.
        $ref: "SOL002SOL003_def.yaml#/definitions/Uri"
      authentication:
        description: >
          Authentication parameters to configure the use of Authorization when
          sending notifications corresponding to this subscription, as defined
          in clause 4.5.3.4.
          This attribute shall only be present if the subscriber requires
          authorization of notifications.
        $ref: "#/definitions/SubscriptionAuthentication"

  LcmOperationStateType:
    description: >
      Value | Description
      ------|------------
      STARTING | The LCM operation is starting.
      PROCESSING | The LCM operation is currently in execution.
      COMPLETED | he LCM operation has been completed successfully.
      FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed.
      FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed.
      ROLLING_BACK | The LCM operation is currently being rolled back.
      ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.
    type: string
    enum:
      - STARTING
      - PROCESSING
      - COMPLETED
      - FAILED_TEMP
      - FAILED
      - ROLLING_BACK
      - ROLLED_BACK

  LcmOperationType:
    description: >
      Value | Description
      ------|------------
      INSTANTIATE | Represents the "Instantiate VNF" LCM operation.   
      SCALE | Represents the "Scale VNF" LCM operation.
      SCALE_TO_LEVEL | Represents the "Scale VNF to Level" LCM operation.
      CHANGE_FLAVOUR | Represents the "Change VNF Flavour" LCM operation.
      TERMINATE | Represents the "Terminate VNF" LCM operation.
      HEAL | Represents the "Heal VNF" LCM operation.
      OPERATE | Represents the "Operate VNF" LCM operation.
      CHANGE_EXT_CONN | Represents the "Change external VNF connectivity" LCM operation.
      MODIFY_INFO | Represents the "Modify VNF Information" LCM operation.     
    type: string
    enum:
      - INSTANTIATE
      - SCALE
      - SCALE_TO_LEVEL
      - CHANGE_FLAVOUR
      - TERMINATE
      - HEAL
      - OPERATE
      - CHANGE_EXT_CONN
      - MODIFY_INFO      

  LifecycleChangeNotificationsFilter:
    description: >
      This type represents a subscription filter related to notifications
      about VNF lifecycle changes.
      At a particular nesting level in the filter structure, the following
      applies: All attributes shall match in order for the filter to match
      (logical "and" between different filter attributes). If an attribute is
      an array, the attribute shall match if at least one of the values in
      the array matches (logical "or" between the values of one filter
      attribute).
    type: object
    properties:
      vnfInstanceSubscriptionFilter:
        description: >
          Filter criteria to select VNF instances about which to notify.
        $ref: "#/definitions/VnfInstanceSubscriptionFilter"
      notificationTypes:
        description: >
          Match particular notification types.
          Permitted values:
          * VnfLcmOperationOccurrenceNotification
          * VnfIdentifierCreationNotification
          * VnfIdentifierDeletionNotification
          The permitted values of the "notificationTypes" attribute are
          spelled exactly as the names of the notification types to
          facilitate automated code generation systems.
        type: string
        enum:
          - VnfLcmOperationOccurrenceNotification
          - VnfIdentifierCreationNotification
          - VnfIdentifierDeletionNotification
      operationTypes:
        description: >
          Match particular VNF lifecycle operation types for the notification
          of type VnfLcmOperationOccurrenceNotification.
          May be present if the "notificationTypes" attribute contains the
          value "VnfLcmOperationOccurrenceNotification", and shall be absent
          otherwise.
        type: array
        items: 
          $ref: "#/definitions/LcmOperationType"
      operationStates:
        description: >
          Match particular LCM operation state values as reported in
          notifications of type VnfLcmOperationOccurrenceNotification.
          May be present if the "notificationTypes" attribute contains the
          value "VnfLcmOperationOccurrenceNotification", and shall be absent
          otherwise.
        type: array
        items: 
          $ref: "#/definitions/LcmOperationStateType"

  Link:
    description: >
      This type represents a link to a resource.
    type: object
    required:
      - href
    properties:
      href:
        description: >
          URI of the referenced resource.
        type: string
        format: url

  ResourceHandle:
    required:
      - vimConnectionId
      - resourceId
    type: object
    description: >
      This type represents the information that allows addressing a virtualised
      resource that is used by a VNF instance. Information about the resource
      is available from the VIM.
    properties:
      vimConnectionId:
        description: >
          Identifier of the VIM connection to manage the resource. This
          attribute shall only be supported and present if VNF-related resource
          management in direct mode is applicable. The applicable
          "VimConnectionInfo" structure, which is referenced by
          vimConnectionId, can be obtained from the "vimConnectionInfo"
          attribute of the "VnfInstance" structure.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      resourceProviderId:
        description: >
          Identifier of the entity responsible for the management of the
          resource. This attribute shall only be supported and present when
          VNF-related resource management in indirect mode is applicable. The
          identification scheme is outside the scope of the present document.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      resourceId:
        description: >
          Identifier of the resource in the scope of the VIM or the resource
          provider.
        $ref: "#/definitions/IdentifierInVim"
      vimLevelResourceType:
        description: >
          Type of the resource in the scope of the VIM or the resource
          provider.
        type: string
        #TODO: Note of Table 4.4.1.7-1

  ScaleInfo:
    required:
      - aspectId
      - scaleLevel
    type: object
    properties:
      aspectId:
        description: >
          Identifier of the scaling aspect.
        $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd"
      scaleLevel:
        description: >
          Indicates the scale level. The minimum value shall be 0 and the
          maximum value shall be <= maxScaleLevel as described in the VNFD.
        type: integer

  ScaleVnfRequest:
    type: object
    required:
      - type
      - aspectId
    properties:
      type:
        description: >
          Indicates the type of the scale operation requested.
          Permitted values:
          * SCALE_OUT: adding additional VNFC instances to the VNF to increase
            capacity
          * SCALE_IN: removing VNFC instances from the VNF in order to release
            unused capacity.
        type: string
        enum: 
          - SCALE_OUT
          - SCALE_IN
      aspectId:
        description: >
          Identifier of the scaling aspect.
        $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd"
      numberOfSteps:
        description: >
          Number of scaling steps to be executed as part of this Scale VNF
          operation. It shall be a positive number and the default value
          shall be 1.
        type: integer
        default: 1
      additionalParams:
        description: >
          Additional parameters passed by the NFVO as input to the scaling
          process, specific to the VNF being scaled, as declared in the VNFD
          as part of "ScaleVnfOpConfig".
        $ref: "SOL002SOL003_def.yaml#/definitions/KeyValuePairs"

  ScaleVnfToLevelRequest:
    description: >
      This type represents request parameters for the "Scale VNF to Level"
      operation.
    type: object
    properties:
      instantiationLevelId:
        description: > 
          Identifier of the target instantiation level of the current
          deployment flavour to which the VNF is requested to be scaled.
          Either the instantiationLevelId attribute or the scaleInfo attribute
          shall be included.
        $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd"
      scaleInfo:
        description: >
          For each scaling aspect of the current deployment flavour, indicates
          the target scale level to which the VNF is to be scaled.
          Either the instantiationLevelId attribute or the scaleInfo attribute
          shall be included.
        type: array
        items:
          $ref: "#/definitions/ScaleInfo"
      additionalParams:
        description: >
          Additional parameters passed by the NFVO as input to the scaling
          process, specific to the VNF being scaled, as declared in the
          VNFD as part of "ScaleVnfToLevelOpConfig".
        $ref: "SOL002SOL003_def.yaml#/definitions/KeyValuePairs"

  StopType:
    description: >
      * FORCEFUL: The VNFM will stop the VNF immediately after accepting the
        request.
      * GRACEFUL: The VNFM will first arrange to take the VNF out of service
        after accepting the request. Once that operation is successful or once
        the timer value specified in the "gracefulStopTimeout" attribute
        expires, the VNFM will stop the VNF.
    type: string
    enum:
      - FORCEFUL
      - GRACEFUL

  Version:
    description: >
      A Version.
    type: string

  SubscriptionAuthentication:
    type: object
    required: 
      - authType
    properties: 
      authType:
        description: >
          Defines the type of Authentication / Authorization to use when
          sending a notification. 
          Permitted values:
          * BASIC: In every POST request that sends a notification, use
            HTTP Basic authentication with the client credentials.
          * OAUTH2_CLIENT_CREDENTIALS: In every POST request that sends a
            notification, use an OAuth 2.0 Bearer token, obtained using the
            client credentials grant type.
        type: string
        enum:
          - BASIC
          - OAUTH2_CLIENT_CREDENTIALS
      paramsBasic:
        description: >
          Parameters for authentication/authorization using BASIC.
          Shall be present if authType is "BASIC" and the contained
          information has not been provisioned out of band.
          Shall be absent otherwise.
        type: object
        properties:
          userName:
            description: >
              Username to be used in HTTP Basic authentication. Shall be
              present if it has not been provisioned out of band.
            type: string
          password:
            description: >
              Password to be used in HTTP Basic authentication. Shall be
              present if it has not been provisioned out of band.
            type: string
      paramsOauth2ClientCredentials:
        description: >
          Parameters for authentication/authorization using
          OAUTH2_CLIENT_CREDENTIALS.
          Shall be present if authType is "OAUTH2_CLIENT_CREDENTIALS" and the
          contained information has not been provisioned out of band.
          Shall be absent otherwise.
        type: object
        properties:
          clientId:
            description: >
              Client identifier to be used in the access token request of the
              OAuth 2.0 client credentials grant type. 
              Shall be present if it has not been provisioned out of band.
              The clientId and clientPassword passed in a subscription shall
              not be the same as the clientId and clientPassword that are used
              to obtain authorization for API requests. Client credentials may
              differ between subscriptions. The value of clientPassword should
              be generated by a random process.
            type: string
          clientPassword:
            description: >
              Client password to be used in the access token request of the
              OAuth 2.0 client credentials grant type. 
              Shall be present if it has not been provisioned out of band.
              The clientId and clientPassword passed in a subscription shall
              not be the same as the clientId and clientPassword that are used
              to obtain authorization for API requests. Client credentials may
              differ between subscriptions. The value of clientPassword should
              be generated by a random process.
            type: string
          tokenEndpoint:
            description: >
              The token endpoint from which the access token can be obtained.
              Shall be present if it has not been provisioned out of band.
            $ref: "#/definitions/Version"

  VimConnectionInfo:
    type: object
    required:
      - id
      - vimType
    properties:
      id:
        description: >
          The identifier of the VIM Connection. This identifier is managed by
          the NFVO.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      vimId:
        description: >
          The identifier of the VIM instance. This identifier is managed by
          the NFVO.
          Shall be present to address additional information about the VIM if
          such information has been configured into the VNFM by means outside
          the scope of the present document, and should be absent otherwise.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      vimType:
        description: >
          Discriminator for the different types of the VIM information. The
          value of this attribute determines the structure of the
          "interfaceInfo" and "accessInfo" attributes, based on the type of the
          VIM. The set of permitted values is expected to change over time as
          new types or versions of VIMs become available.
          The ETSI NFV registry of VIM-related information provides access to
          information about VimConnectionInfo definitions for various VIM
          types. The structure of the registry is defined in Annex C of SOL003.
        type: string
      interfaceInfo:
        description: >
          Information about the interface or interfaces to the VIM, if
          applicable, such as the URI of an interface endpoint to
          communicate with the VIM. The applicable keys are dependent on the
          content of vimType.
          Alternatively, such information may have been configured into the
          VNFM and bound to the vimId.
        $ref: "SOL002SOL003_def.yaml#/definitions/KeyValuePairs"
      accessInfo:
        description: >
          Authentication credentials for accessing the VIM, and other
          access-related information such as tenants or infrastructure
          resource groups (see note). The applicable keys are dependent on the
          content of vimType.
          If the VimConnectionInfo structure is part of an HTTP response
          payload body, sensitive attributes that are children of this attributes
          (such as passwords) shall not be included.
        $ref: "SOL002SOL003_def.yaml#/definitions/KeyValuePairs"
      extra:
        description: >
          VIM type specific additional information. The applicable structure,
          and whether or not this attribute is available, is dependent on the
          content of vimType.
        $ref: "SOL002SOL003_def.yaml#/definitions/KeyValuePairs"
        
  VnfExtCpData:
    #SOL003 location: 4.4.1.10
    description: >
      This type represents an external CP.
    type: object
    required: 
      - cpdId
    properties: 
      cpdId:
        description: >
          The identifier of the CPD in the VNFD.
        $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd"
      fixedAddresses:
        description: >
          List of (fixed) network addresses that need to be configured on the
          CP. This attribute shall be present if fixed addresses need to be
          configured.
        type: array
        items:
          $ref: "#/definitions/FixedNetworkAddressData"
      dynamicAddresses:
        description: >
          List of network addresses to be assigned dynamically. This attribute
          shall be present if dynamic addresses need to be configured.
        type: array
        items:
          $ref: "#/definitions/DynamicNetworkAddressData"

  VnfIdentifierCreationNotification:
    description: >
      This type represents a VNF identifier creation notification, which
      informs the receiver of the creation of a new VNF instance resource and
      the associated VNF instance identifier.
    type: object
    required: 
      - id
      - notificationType
      - timeStamp
      - vnfInstanceId
      - _links
    properties:
      id:
        description: >
          Identifier of the VNF instance.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      notificationType:
        description: >
          Discriminator for the different notification types. Shall be set to
          "VnfIdentifierCreationNotification" for this notification type.
        type: string
        enum:
          - VnfIdentifierCreationNotification
      vnfInstanceName:
        description: >
          Discriminator for the different notification types. Shall be set to
          "VnfIdentifierCreationNotification" for this notification type.
        type: string
        enum:
          - VnfIdentifierCreationNotification
      subscriptionId:
        description: >
          Identifier of the subscription that this notification relates to.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      timeStamp:
        description: >
          Date-time of the generation of the notification.
        $ref: "SOL002SOL003_def.yaml#/definitions/DateTime"
      vnfInstanceId:
        description: >
          The created VNF instance identifier.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      _links:
        description: >
          Links to resources related to this notification.
        $ref: "#/definitions/LccnLinks"

  VnfIdentifierDeletionNotification:
    description: >
      This type represents a VNF identifier deletion notification, which
      informs the receiver of the deletion of a new VNF instance resource and
      the associated VNF instance identifier.
    type: object
    required: 
      - id
      - notificationType
      - timeStamp
      - vnfInstanceId
      - _links
    properties:
      id:
        description: >
          Identifier of this notification. If a notification is sent multiple
          times due to multiple subscriptions, the "id" attribute of all these
          notifications shall have the same value.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      notificationType:
        description: >
          Discriminator for the different notification types. Shall be set to
          "VnfIdentifierDeletionNotification" for this notification type.
        type: string
        enum:
          - VnfIdentifierDeletionNotification
      subscriptionId:
        description: >
          Identifier of the subscription that this notification relates to.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      timeStamp:
        description: >
          Date-time of the generation of the notification.
        $ref: "SOL002SOL003_def.yaml#/definitions/DateTime"
      vnfInstanceId:
        description: >
          The deleted VNF instance identifier.
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      _links:
        description: >
          Links to resources related to this notification.
        $ref: "#/definitions/LccnLinks"

  VnfInfoModifications:
    #SOL003 location: 5.5.2.12
    description: >
      This type represents attribute modifications for an
      "Individual VNF instance" resource, i.e. modifications to a resource
      representation based on the "VnfInstance" data type. The attributes of
      "VnfInstance" that can be modified according to the provisions in
      clause 5.5.2.2 are included in the "VnfInfoModifications" data type.
    type: object
    properties:
      vnfInstanceName:
        description: >
          New value of the "vnfInstanceName" attribute in "VnfInstance", or
          "null" to remove the attribute.      
        type: string
      vnfInstanceDescription:
        description: >
          New value of the "vnfInstanceDescription" attribute in
          "VnfInstance", or "null" to remove the attribute.  
        type: string
      onboardedVnfPkgInfoId:
        description: >
          New value of the "onboardedVnfPkgInfoId" attribute in "VnfInstance".
          The value "null" is not permitted.  
        $ref: "SOL002SOL003_def.yaml#/definitions/Identifier"
      vnfConfigurableProperties:
        description: >
          Modifications of the "vnfConfigurableProperties" attribute in
          "VnfInstance". If present, these modifications shall be applied
          according to the rules of JSON Merge PATCH (see IETF RFC 7396).
        $ref: "SOL002SOL003_def.yaml#/definitions/KeyValuePairs"
      metadata:
        description: >
          Modifications of the "metadata" attribute in "VnfInstance". If
          present, these modifications shall be applied according to the rules
          of JSON Merge PATCH (see IETF RFC 7396).
        $ref: "SOL002SOL003_def.yaml#/definitions/KeyValuePairs"
      extensions:
        description: >
          Modifications of the "extensions" attribute in "VnfInstance". If
          present, these modifications shall be applied according to the rules
          of JSON Merge PATCH (see IETF RFC 7396).
        $ref: "SOL002SOL003_def.yaml#/definitions/KeyValuePairs"
      vimConnectionInfo:
        description: >
          New content of certain entries in the "vimConnectionInfo" attribute