etsi-nfv-vnf.yang 127 KB
Newer Older
          type leafref {
            path "../../../lcm-operations-coordination/coordination-action-name";
          }
          description
            "References to the names of coordination actions that can be
             invoked during the LCM operation indicated by the
             'vnfLcmOperation' attribute.

             The related coordination actions shall either be declared
             in the VnfLcmOperationCoordination information element
             in the same VNFD, or shall be well-known standardized
             coordination action name identifiers.";
          reference
            "GS NFV IFA011: Section 7.1.16.3 LcmCoordinationActionMapping
             information element";
        }
      }

      list monitoring-parameter {
        key "id";

        description
          "Defines the virtualised resources monitoring parameters
           on VNF level.";
        reference
          "GS NFV IFA011: Section 7.1.8.2 VnfDf information
           element";

        leaf id {
          type string;
          description
            "Unique identifier of the monitoring parameter.";
          reference
            "GS NFV IFA011: Section 7.1.11.3 MonitoringParameter
             information element";
        }
        uses monitoring-parameter;
      }

      list scaling-aspect {
        key "id";

        description
          "The scaling aspects supported by this DF of the VNF.
           scalingAspect shall be present if the VNF supports
           scaling.";
        reference
          "GS NFV IFA011: Section 7.1.8.2 VnfDf information
           element";

        leaf id {
          type string;
          description
            "Unique identifier of this aspect in the VNFD.";
          reference
            "GS NFV IFA011: Section 7.1.10.2 ScalingAspect
               information element";
        }

        leaf name {
          type string;
          description
            "Human readable name of the aspect.";
          reference
            "GS NFV IFA011: Section 7.1.10.2 ScalingAspect
             information element";
        }

        leaf description {
          type string;
          description
            "Human readable description of the aspect.";
          reference
            "GS NFV IFA011: Section 7.1.10.2 ScalingAspect
             information element";
        }

        leaf max-scale-level {
          type uint32 {
            range "1..max";
          description
            "The maximum scaleLevel for total number of scaling
             steps that can be applied w.r.t. this aspect. The
             value of this attribute corresponds to the number of
             scaling steps can be applied to this aspect when
             scaling it from the minimum scale level (i.e. 0) to the
             maximum scale level defined by this attribute.";
          reference
            "GS NFV IFA011: Section 7.1.10.2 ScalingAspect
             information element";
        }

        container aspect-delta-details {
          list deltas {
            key "id";
            min-elements 1;

            leaf id {
              type string;
              description
                "Identifier of this scaling delta.";
              reference
                "GS NFV IFA011: Section 7.1.10.4 ScalingDelta
                 information element";
            list vdu-delta {
                type leafref {
                  path "../../../../../../vdu/id";
                }
                  "Uniquely identifies a VDU.";
                  "GS NFV IFA011: Section 7.1.8.9 VduLevel
              leaf number-of-instances {
                type uint32 {
                  range "0..max";
                  "Number of instances of VNFC based on this VDU to
                   deploy for an instantiation level or for a
                   scaling delta. Shall be zero or greater.";
                  "GS NFV IFA011: Section 7.1.8.9 VduLevel
                   information element";
              }
              description
                "The number of VNFC instances based on particular
                 VDUs to be created or removed.";
              reference
                "GS NFV IFA011: Section 7.1.10.4 ScalingDelta
                 information element";
            }

            list virtual-link-bit-rate-delta {
              key "id";
              leaf id {
                type string;
                description
                  "Uniquely identifies a VnfVirtualLinkDesc.";
                reference
                  "GS NFV IFA011: Section 7.1.10.5
                   VirtualLinkBitRateLevel information element";
              }
              container bit-rate-requirements {
                leaf root {
                  type uint32;
                  units bits/sec;
                  mandatory true;
                    "Throughput requirement of the link (e.g.
                     bitrate of E-Line, root bitrate of E-Tree,
                     aggregate capacity of E-LAN).";
                    "GS NFV IFA011: Section 7.1.8.6
                     LinkBitrateRequirements information element";
                leaf leaf {
                  type uint32;
                  units bits/sec;
                    "Throughput requirement of leaf connections to
                     the link when applicable to the connectivity
                     type (e.g. for E-Tree and E-LAN branches).";
                    "GS NFV IFA011: Section 7.1.8.6
                     LinkBitrateRequirements information element";
                  "Bitrate requirements for an instantiation level
                   or bitrate delta for a scaling step.";
                  "GS NFV IFA011: Section 7.1.10.5
                   VirtualLinkBitRateLevel information element";
                "The bitrate to be added or removed to virtual links
                 created from particular virtual link descriptors.";
                "GS NFV IFA011: Section 7.1.10.4 ScalingDelta
                 information element";
            }

            list vip-cp-delta {
              key "id";
              description
                "Number of VIP CP instances based on a particular
                 VipCpd to be created or removed.";
              reference
                "GS NFV IFA011: Section 7.1.10.4, ScalingDelta information
                 element.";

              leaf id {
                type leafref {
                  path "../../../../../../vip-cpd/id";
                }
                description
                  "Uniquely references a VIP CPD.";
                reference
                  "GS NFV IFA011: Section 7.1.10.6, VipCpLevel information
                   element.";
              }

              leaf number-of-instances {
                type uint16;
                description
                  "Number of VIP CP instances based on the referenced
                   VipCpd to deploy for an instantiation level or for
                   a scaling delta. Shall be zero or greater.";
                reference
                  "GS NFV IFA011: Section 7.1.10.6, VipCpLevel information
                   element.";
              }
            }
            description
              "Declares different scaling deltas, each of which is
               applied for one or more scaling steps of this
               aspect.";
            reference
              "GS NFV IFA011: Section 7.1.10.3 AspectDeltaDetails
               information element";
          }
          leaf step-deltas {
            type leafref {
              path "../deltas/id";
              "Identifiers of the individual scaling deltas to be
               applied for the subsequent scaling steps of this
               aspect. The first entry in the array shall correspond
               to the first scaling step (between scale levels 0 to
               1) and the last entry in the array shall correspond
               to the last scaling step (between maxScaleLevel-1
               and maxScaleLevel).

               Each referenced scaling delta shall be declared in
               the 'deltas' attribute.";
              "GS NFV IFA011: Section 7.1.10.3 AspectDeltaDetails
               information element";
          }
          description
            "A specification of the deltas in terms of number of
             instances of VNFCs and virtual link bit rates that
             correspond to the scaling steps of this aspect. A
             cardinality of zero indicates that this mapping has to
             be specified in a lifecycle management script or be
             otherwise known to the VNFM. The information in this
             attribute, if provided, shall be consistent with the
             information provided in the 'InstantiationLevel'
             information element. If this attribute is provided, it
             shall be provided for all scaling aspects.";
          reference
            "GS NFV IFA011: Section 7.1.10.2 ScalingAspect
             information element";

      list dependencies {
        key "id";

        description
          "Specifies the order in which instances of the VNFCs
           have to be created.";
        reference
          "GS NFV IFA011: Section 7.1.8.2 VnfDf information element";

        leaf id {
          type string;
        }

        leaf primary-id {
          type leafref {
            path "../../vdu-profile/id";
          }
          description
            "References a VduProfile for describing dependencies
             between VNFCs in terms of primary entities.";
          reference
            "GS NFV IFA011: Section 7.1.8.19 Dependencies
             information element";
        }

        leaf secondary-id {
          type leafref {
            path "../../vdu-profile/id";
          }
          description
            "References a VduProfile for describing dependencies
             between VNFCs in terms of secondary entities.";
          reference
            "GS NFV IFA011: Section 7.1.8.19 Dependencies
             information element";
        }
      }
    }

    container configurable-properties {
      description
        "Describes the configurable properties of the VNF
         (e.g. related to auto scaling and auto healing).";
      reference
        "GS NFV IFA011: Section 7.1.2 VNFD information element";
      leaf is-auto-scalable-enabled {
        type boolean;
        description
          "It permits to enable (TRUE) / disable (FALSE) the
           auto-scaling functionality.";
          "GS NFV IFA011: Section 7.1.12 VnfConfigurableProperties
           information element";
      }
      leaf is-auto-heal-enabled {
        type boolean;
        description
          "It permits to enable (TRUE) / disable (FALSE) the
           auto-healing functionality.";
        reference
          "GS NFV IFA011: Section 7.1.12 VnfConfigurableProperties
           information element";
      }
      container vnfm-interface-info {
        leaf interface-name {
          type string {
            pattern 'vnf-[lcm|pm|fm]';
          }
          description
            "Identifies an interface produced by the VNFM.";
        }

        container details {
          container uri-components {
            leaf scheme {
              description
                "Corresponds to the scheme component of a URI, as
                 per IETF RFC 3986.";
              reference
                "RFC 3986: URI Generic Syntax.";
            }

            container authority {
              leaf userinfo {
                type string;
                description
                  "Corresponds to the userinfo field of the authority
                   component of a URI, as per IETF RFC 3986.

                   For HTTP and HTTPS URIs, the provisions in
                   sections 2.7.1 and 2.7.2 of IETF RFC 7230 apply,
                   respectively.";
                reference
                  "RFC 3986: URI Generic Syntax.";
              }

              leaf host {
                description
                  "Corresponds to the host field of the authority
                   component of a URI, as per IETF RFC 3986.";
                reference
                  "RFC 3986: URI Generic Syntax.";
              }

              leaf port {
                type inet:port-number;
                description
                  "Corresponds to the port field of the authority
                   component of a URI, as per IETF RFC 3986.";
                reference
                  "RFC 3986: URI Generic Syntax.";
              }
              description
                "Corresponds to the authority component of a URI,
                 as per IETF RFC 3986.";
              reference
                "RFC 3986: URI Generic Syntax.";
            }

            leaf path {
              type string;
              description
                "Corresponds to the path component of a URI, as per
                 IETF RFC 3986.";
              reference
                "RFC 3986: URI Generic Syntax.";
            }

            leaf query {
              type string;
              description
                "Corresponds to the query component of a URI, as per
                 IETF RFC 3986.";
              reference
                "RFC 3986: URI Generic Syntax.";
            }

            leaf fragment {
              type string;
              description
                "Corresponds to the fragment component of a URI, as per
                 IETF RFC 3986.";
              reference
                "RFC 3986: URI Generic Syntax.";
            }
            description
              "Provides components to build a Uniform Resource
               Identifier (URI) where to access the interface end
               point.";
          }

          leaf-list interface-specific-data {
            type string;
            description
              "Provides additional details that are specific to the
               type of interface considered.";
          }
          description
            "Provide additional data to access the interface
             endpoint (e.g. API URI prefix).";
        }

        leaf credentials {
          type string;
          description
            "Provides credential enabling access to the interface.";
        }
        description
          "Contains information enabling access to the NFV-MANO
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
           interfaces produced by the VNFM (e.g. URIs and
           credentials).";
        reference
          "GS NFV IFA011: Section 7.1.12 VnfConfigurableProperties
           information element";
      }

      container vnfm-oauth-server-info {
        description
          "Contains information to enable discovery of the
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
           authorization server protecting access to
           VNFM interfaces.";
        reference
          "GS NFV IFA011: Section 7.1.12 VnfConfigurableProperties
           information element";
      }

      container vnf-oauth-server-info {
        description
          "Contains information to enable discovery of the
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
           authorization server to validate the access tokens
           provided by the VNFM when the VNFM accesses the VNF
           interfaces, if that functionality (token introspection) is
           supported by the authorization server.";
        reference
          "GS NFV IFA011: Section 7.1.12 VnfConfigurableProperties
           information element";
      }

      list additional-configurable-property {
        key "key";

        leaf key {
          type string;
        leaf value {
          type string;
        description
          "It provides VNF specific configurable properties that can
           be modified using the ModifyVnfConfiguration operation.";
        reference
          "GS NFV IFA011: Section 7.1.12 VnfConfigurableProperties
           information element";
    }

    container modifiable-attributes {
      description
        "Describes the modifiable attributes of the VNF.";
      reference
        "GS NFV IFA011: Section 7.1.2 VNFD information element";
      leaf-list extension {
        type string;
        description
          "Additional VNF-specific attributes of VnfInfo that
           affect the lifecycle management of a VNF instance and
           that are writeable.

           For each VNF instance, these attributes are stored
           persistently by the VNFM and can be queried and
           modified through the VNFM.

           These attributes are intended to be consumed by the
           VNFM or by the lifecycle management scripts during the
           execution of VNF lifecycle management operations.

           Modifying these values has no direct effect on the VNF
           instance; however, modified values can be considered
           during subsequent VNF lifecycle management operations,
           which means that the modified values can indirectly
           affect the configuration of the VNF instance.";
          "GS NFV IFA011: Section 7.1.14 VnfInfoModifiableAttributes
           information element";
      }
      leaf-list metadata {
        type string;
        description
          "Additional VNF-specific attributes of VnfInfo that are
           writeable and that provide metadata describing the VNF
           instance.

           For each VNF instance, these attributes are stored
           persistently by the VNFM and can be queried and modified
           through the VNFM.

           These attributes are intended to provide information to
           functional blocks external to the VNFM and will not be
           used by the VNFM or the VNF lifecycle management
           scripts when executing lifecycle management operations.

           Modifying these attributes has no effect on the VNF
           instance. It only affects the attribute values stored by
           the VNFM.";
        reference
          "GS NFV IFA011: Section 7.1.14 VnfInfoModifiableAttributes
           information element";
      }
    }
    list lifecycle-management-script {
      key "id";
      description
        "Includes a list of events and corresponding management
         scripts performed for the VNF.";
      reference
        "GS NFV IFA011: Section 7.1.2 VNFD information element";
      leaf id {
        type string;
        description
          "A unique string that identfies the script in question.";
      }
      leaf-list event {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
        type union {
          type internal-lifecycle-management-script-event;
          type external-lifecycle-management-script-event;
        }
        description
          "Describes VNF lifecycle event(s) or an external stimulus
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
           detected on a VNFM reference point.

           If the event is of type 
           internal-lifecycle-management-script-event, then depending
           on whether the event is of type start-* or end-*, the
           script associated with the VNF LCM operation needs to be 
           executed before the event, or after the event,
           respectively.

           On the other hand, if the event is of type
           external-lifecycle-management-script-event, then the
           script associated with the event needs to be executed
           for the given VNF LCM operation.";
        reference
          "GS NFV IFA011: Section 7.1.13 LifeCycleManagementScript
           information element";
      }
      leaf-list lcm-transition-event {
        type string;
        description
          "Describes the transition VNF lifecycle event(s) that
           cannot be mapped to any of the enumerated values
           defined for the event attribute.";
        reference
          "GS NFV IFA011: Section 7.1.13 LifeCycleManagementScript
           information element";
      }
      leaf script {
        type string;
        description
          "Includes a VNF LCM script (e.g. written in a DSL as
           specified in requirement VNF_PACK.LCM.001) triggered to
           react to one of the events listed in the event
           attribute.";
        reference
          "GS NFV IFA011: Section 7.1.13 LifeCycleManagementScript
           information element";
      leaf script-dsl {
        type string;
        description
          "Defines the domain specific language (i.e. the type) of
           script that is provided. Types of scripts could include
           bash, python, etc.";
          "GS NFV IFA011: Section 7.1.13 LifeCycleManagementScript
           information element";
      }
      list script-input {
        key "key";
        leaf key {
          type string;
          description
            "Includes a VNF LCM script (e.g. written in a DSL as
             specified in requirement VNF_PACK.LCM.001) triggered to
             react to one of the events listed in the event
             attribute.

             The string value specified here is a path to a file in
             the VNF package.";
          reference
            "GS NFV IFA011: Section 7.1.13 LifeCycleManagementScript
             information element";
        }
        description
          "Array of KVP requirements with the key as the parameter
           name and the value as the parameter that need to be
           passed as an input to the script.";
        reference
          "GS NFV IFA011: Section 7.1.13 LifeCycleManagementScript
           information element";
    list element-group {
      key "id";
      description
        "Describes the associated elements of a VNFD for a certain
         purpose during VNF lifecycle management.

         Reason for deprecating this node - Information about which
         VDU and VLD are involved in scaling is better defined by
         ScalingDelta.";
      reference
        "GS NFV IFA011: Section 7.1.2 VNFD information element";

      leaf id {
        type string;
        description
          "Unique identifier of this group in the VNFD.";
          "GS NFV IFA011: Section 7.1.4 VnfdElementGroup
           information element";
      }
      leaf description {
        type string;
        description
          "Human readable description of the group.";
        reference
          "GS NFV IFA011: Section 7.1.4 VnfdElementGroup
           information element";
      }

      leaf-list vdu {
        type leafref {
          path "../../vdu/id";
        description
          "References to Vdus that are part of this group.";
        reference
          "GS NFV IFA011: Section 7.1.4 VnfdElementGroup
           information element";
      }

      leaf-list virtual-link-desc {
        type leafref {
Mahesh Jethanandani's avatar
Mahesh Jethanandani committed
          path "/nfv:nfv/nfv:vnfd/nfv:int-virtual-link-desc/nfv:id";
        description
          "References to VnfVirtualLinkDesc that are part of this
           group.";
        reference
          "GS NFV IFA011: Section 7.1.4 VnfdElementGroup
           information element";
    list indicator {
      key "id";
      description
        "Declares the VNF indicators that are supported by this
         VNF.";
      reference
        "GS NFV IFA011: Section 7.1.2 VNFD information element";

      leaf id {
        type string;
        description
          "Unique identifier";
          "GS NFV IFA011: Section 7.1.11.2 VnfdIndicator
           information element";
      }
      leaf name {
        type string;
        description
          "The human readable name of the VnfIndicator.";
        reference
          "GS NFV IFA011: Section 7.1.11.2 VnfdIndicator
           information element";
      leaf-list indicator-value {
        type string;
        description
          "Defines the allowed values or value ranges of this
           indicator.";
        reference
          "GS NFV IFA011: Section 7.1.11.2 VnfdIndicator
           information element";
      }

      leaf source {
        type enumeration {
          enum "vnf";
          enum "em";
          enum "both";
        }
        description
          "Describe the source of the indicator. The possible values
           are:
           • VNF.
           • EM.
           • Both.
           This tells the consumer where to send the subscription
           request.";
          "GS NFV IFA011: Section 7.1.11.2 VnfdIndicator
           information element";

    leaf-list auto-scale {
      type string;
      description
        "Rule that determines when a scaling action needs to be
         triggered on a VNF instance e.g. based on certain VNF
         indicator values or VNF indicator value changes or a
         combination of VNF indicator value(s) and monitoring
         parameter(s).";
      reference
        "GS NFV IFA011: Section 7.1.2 VNFD information element";
    }
      // IFA011ed332 defines the key as VersionSelector, which is
      // nothing but a combination of src-vnfd-id, dst-vnfd-id and
      // src-flavour-id. YANG cannot use a composite as a key, and
      // therefore the model breaks it out as three elements that
      // form the key.
      key "src-vnfd-id dst-vnfd-id src-flavour-id";

      leaf src-vnfd-id {
        type string;
        description
          "Identifier of the source VNFD and the source VNF
           package. Either the srcVnfdId or the dstVnfdId shall be
           equal to the vnfdId of the VNFD containing this version
           selector.";
        reference
          "GS NFV IFA011: Section 7.1.15.3 VersionSelector
           information element";
      }

      leaf dst-vnfd-id {
        type string;
        description
          "Identifier of the destination VNFD and the destination
           VNF package. Either the srcVnfdId or the dstVnfdId shall
           be equal to the vnfdId of the VNFD containing this version
           selector.";
        reference
          "GS NFV IFA011: Section 7.1.15.3 VersionSelector
           information element";
      }

      leaf src-flavour-id {
        type string;
        description
          "Identifier of the deployment flavour in the source VNF
           package for which this modification applies. It is up to
           protocol design stage to decide whether there is further
           optimization potential to apply one modification for
           multiple srcFlavourIds.";
        reference
          "GS NFV IFA011: Section 7.1.15.3 VersionSelector
           information element";
      }

      leaf additional-params-id {
        type leafref {
          path "../../df/lcm-operations-configuration/" +
               "change-current-vnf-package-op-config/id";
        }
        description
          "References the ChangeCurrentVnfPackageOpConfig information
           element that defines the valid additional parameters for
           the change.";
        reference
          "GS NFV IFA011: Section 7.1.15.2 VnfPackageChangeInfo
           information element";
      }

      leaf-list modification-qualifier {
        type enumeration {
          enum "up";
          enum "down";
          enum "vnf-upgrade";
          enum "vnf-update";
          enum "vnf-downgrade";
        }
        description
          "When present, it specifies the type of modification
           resulting from transitioning from srcVnfdId to dstVnfdId.
           • UP:indicating that the destination VNF version is newer
                  than the source version,
           • DOWN:indicating that the destination VNF version is
                    older than the source version.

           When provided, UP and DOWN values shall always be
           supported as the first value. In addition, a vendor may
           specify additional values and provide such values to
           qualify further the change between the two versions such
           as VNF_UPGRADE, VNF_UPDATE, VNF_DOWNGRADE, etc.";
        reference
          "GS NFV IFA011: Section 7.1.15.2 VnfPackageChangeInfo
           information element";
      }

      leaf-list additional-modification-description {
        type string;
        description
          "A VNF provider may define additional information to
           qualify further the change between the two versions,
           such as 'VNF upgrade', 'VNF update', 'VNF downgrade',
           etc.";
        reference
          "GS NFV IFA011: Section 7.1.15.2 VnfPackageChangeInfo
           information element";
      }

      list component-mapping {
        key "type";

        leaf type {
          type string;
          description
            "The type of component or property. Possible values
             differentiate whether changes concern to some VNF
             component (e.g., VDU, internal VLD, etc.) or property
             (e.g., a Scaling Aspect, etc.).";
          reference
            "GS NFV IFA011: Section 7.1.15.4 ComponentMapping
             information element";
        }

        leaf source-desc-id {
          type string;
          description
            "Identifier of the component or property in the source
             VNFD.";
          reference
            "GS NFV IFA011: Section 7.1.15.4 ComponentMapping
             information element";
        }

        leaf dst-desc-id {
          type string;
          description
            "Identifier of the component or property in the
             destination VNFD.";
          reference
            "GS NFV IFA011: Section 7.1.15.4 ComponentMapping
             information element";
        }

        leaf description {
          type string;
          description
            "Human readable description of the component changes.";
          reference
            "GS NFV IFA011: Section 7.1.15.4 ComponentMapping
             information element";
        }

        description
          "Mapping information related to identifiers of components in
           source VNFD and destination VNFD that concern to the change
           process.";
        reference
          "GS NFV IFA011: Section 7.1.15.2 VnfPackageChangeInfo
           information element";
      }

      leaf lcm-script-id {
        type leafref {
          path "../../lifecycle-management-script/id";
        }
        description
          "Reference to a lifecycle management script that is executed
           as part of this 'change current VNF Package' process.";
        reference
          "GS NFV IFA011: Section 7.1.15.2 VnfPackageChangeInfo
           information element";
      }

      leaf coordination-action-name {
          path "../../lcm-operations-coordination/coordination-action-name";
          "Reference to applicable VNF LCM operation coordination actions
           that can be invoked during a VNF package change as defined by
           the 'selector' attribute.";
        reference
          "GS NFV IFA011: Section 7.1.15.2 VnfPackageChangeInfo
           information element";
      }

      leaf dst-flavour-id {
        type leafref {
          path "../../df/id";
        }
        description
          "Identifies the deployment flavour in the destination VNF
           package for which this change applies. The flavour ID is
           defined in the destination VNF package.";
        reference
          "GS NFV IFA011: Section 7.1.15.2 VnfPackageChangeInfo
           information element";
      }
      description
        "Information used for performing the change of the current
         VNF Package. More than one VNF Package Change Info construct
         is possible to cater the possibility that changes of the
         current VNF Package can be performed for different source
         VNFDs.";
      reference
        "GS NFV IFA011: Section 7.1.2 VNFD information element";
    }

    list lcm-operations-coordination {
      key "coordination-action-name";
      leaf coordination-action-name {
        type string;
        description
          "Identifies the specific VNF LCM operation coordination
           action.Shall be unique within the scope of VNFD";
        reference
          "GS NFV IFA011: Section 7.1.16.2 VnfLcmOperationCoordination
           information element";
      }

      leaf description {
        type string;
        description
          "Human readable description of the coordination action.";
        reference
          "GS NFV IFA011: Section 7.1.16.2 VnfLcmOperationCoordination
           information element";
      }

      leaf endpoint-type {
        type enumeration {
          enum "mgmt";
          enum "vnf";