module: etsi-nfv-vnfd
  +--rw vnfd!
     +--rw id?                              string
     +--rw provider                         string
     +--rw product-name                     string
     +--rw software-version                 string
     +--rw version                          string
     +--rw product-info-name?               string
     +--rw product-info-description?        string
     +--rw vnfm-info*                       string
     +--rw localization-language?           string
     +--rw default-localization-language?   string
     +--rw vdu* [id]
     |  +--rw id                         string
     |  +--rw name                       string
     |  +--rw description?               string
     |  +--rw int-cpd* [id]
     |  |  +--rw int-virtual-link-desc?                   -> ../../../int-virtual-link-desc/id
     |  |  +--rw bitrate-requirement?                     uint64
     |  |  +--rw virtual-network-interface-requirement* [name]
     |  |  |  +--rw name                              string
     |  |  |  +--rw description?                      string
     |  |  |  +--rw support-mandatory?                boolean
     |  |  |  +--rw network-interface-requirements* [key]
     |  |  |     +--rw key      string
     |  |  |     +--rw value?   string
     |  |  +--rw nicio-requirements?                      -> ../../../virtual-compute-desc/id
     |  |  +--rw order*                                   uint32
     |  |  +--rw id                                       string
     |  |  +--rw layer-protocol*                          identityref
     |  |  +--rw role?                                    identityref
     |  |  +--rw description?                             string
     |  |  +--rw protocol* [associated-layer-protocol]
     |  |  |  +--rw associated-layer-protocol    identityref
     |  |  |  +--rw address-data* [type]
     |  |  |     +--rw type               identityref
     |  |  |     +--rw l2-address-data
     |  |  |     |  +--rw mac-address-assignment    boolean
     |  |  |     +--rw l3-address-data
     |  |  |        +--rw ip-address-assignment     boolean
     |  |  |        +--rw floating-ip-activated     boolean
     |  |  |        +--rw ip-address-type?          enumeration
     |  |  |        +--rw number-of-ip-addresses?   uint32
     |  |  +--rw trunk-mode?                              boolean
     |  |  +--rw security-group-rule-id?                  -> ../../../security-group-rule/id
     |  +--rw virtual-compute-desc?      -> ../../virtual-compute-desc/id
     |  +--rw virtual-storage-desc*      -> ../../virtual-storage-desc/id
     |  +--rw boot-order* [key]
     |  |  +--rw key      uint32
     |  |  +--rw value?   -> ../../virtual-storage-desc
     |  +--rw sw-image-desc?             -> ../../sw-image-desc/id
     |  +--rw nfvi-constraint*           string
     |  +--rw monitoring-parameter* [id]
     |  |  +--rw id                    string
     |  |  +--rw name?                 string
     |  |  +--rw performance-metric?   string
     |  |  +--rw collection-period?    uint64
     |  +--rw configurable-properties* [key]
     |  |  +--rw key      string
     |  |  +--rw value?   string
     |  +--rw boot-data?                 string
     +--rw virtual-compute-desc* [id]
     |  +--rw id                               string
     |  +--rw logical-node* [id]
     |  |  +--rw id                    string
     |  |  +--rw requirement-detail* [key]
     |  |     +--rw key      string
     |  |     +--rw value?   string
     |  +--rw request-additional-capability* [name]
     |  |  +--rw name                             string
     |  |  +--rw support-mandatory?               boolean
     |  |  +--rw min-version?                     string
     |  |  +--rw preferred-version?               string
     |  |  +--rw target-performance-parameters* [key]
     |  |     +--rw key      string
     |  |     +--rw value?   string
     |  +--rw compute-requirements?            string
     |  +--rw virtual-memory
     |  |  +--rw size?                       decimal64
     |  |  +--rw over-subscription-policy?   string
     |  |  +--rw vdu-mem-requirements* [key]
     |  |  |  +--rw key      string
     |  |  |  +--rw value?   string
     |  |  +--rw numa-enabled?               boolean
     |  +--rw virtual-cpu
     |     +--rw cpu-architecture?          string
     |     +--rw num-virtual-cpu?           uint16
     |     +--rw clock?                     uint32
     |     +--rw oversubscription-policy?   string
     |     +--rw vdu-cpu-requirements* [key]
     |     |  +--rw key      string
     |     |  +--rw value?   string
     |     +--rw pinning!
     |        +--rw policy?   enumeration
     |        +--rw rule* [key]
     |           +--rw key      string
     |           +--rw value?   string
     +--rw virtual-storage-desc* [id]
     |  +--rw id                          string
     |  +--rw type-of-storage?            identityref
     |  +--rw size-of-storage?            uint64
     |  +--rw vdu-storage-requirements* [key]
     |  |  +--rw key      string
     |  |  +--rw value?   string
     |  +--rw rdma-enabled?               boolean
     |  +--rw sw-image-desc?              -> ../../sw-image-desc/id
     +--rw sw-image-desc* [id]
     |  +--rw id                                      string
     |  +--rw name                                    string
     |  +--rw version                                 string
     |  +--rw checksum
     |  |  +--rw algorithm    identityref
     |  |  +--rw hash         string
     |  +--rw container-format?                       enumeration
     |  +--rw disk-format?                            enumeration
     |  +--rw min-disk                                uint64
     |  +--rw min-ram?                                decimal64
     |  +--rw size                                    uint64
     |  +--rw image?                                  inet:uri
     |  +--rw operating-system?                       string
     |  +--rw supported-virtualization-environment*   string
     +--rw int-virtual-link-desc* [id]
     |  +--rw id                       string
     |  +--rw flavour* [id]
     |  |  +--rw id     string
     |  |  +--rw qos!
     |  |     +--rw latency                   uint32
     |  |     +--rw packet-delay-variation    uint32
     |  |     +--rw packet-loss-ratio?        decimal64
     |  +--rw connectivity-type
     |  |  +--rw layer-protocol*   identityref
     |  |  +--rw flow-pattern?     flow-pattern
     |  +--rw test-access*             string
     |  +--rw description?             string
     |  +--rw monitoring-parameters* [id]
     |     +--rw id                    string
     |     +--rw name?                 string
     |     +--rw performance-metric?   string
     |     +--rw collection-period?    uint64
     +--rw security-group-rule* [id]
     |  +--rw id                string
     |  +--rw description?      string
     |  +--rw direction?        enumeration
     |  +--rw ether-type?       enumeration
     |  +--rw protocol?         enumeration
     |  +--rw port-range-min?   uint16
     |  +--rw port-range-max?   uint16
     +--rw ext-cpd* [id]
     |  +--rw (cp-connection)?
     |  |  +--:(int-virtual-link-desc)
     |  |  |  +--rw int-virtual-link-desc?             -> ../../int-virtual-link-desc/id
     |  |  +--:(int-cpd)
     |  |     +--rw int-cpd
     |  |        +--rw vdu-id?   -> ../../../vdu/id
     |  |        +--rw cpd?      -> deref(../vdu-id)/../int-cpd/id
     |  +--rw virtual-network-interface-requirement* [name]
     |  |  +--rw name                              string
     |  |  +--rw description?                      string
     |  |  +--rw support-mandatory?                boolean
     |  |  +--rw network-interface-requirements* [key]
     |  |     +--rw key      string
     |  |     +--rw value?   string
     |  +--rw nicio-requirements?                      -> ../../virtual-compute-desc/id
     |  +--rw id                                       string
     |  +--rw layer-protocol*                          identityref
     |  +--rw role?                                    identityref
     |  +--rw description?                             string
     |  +--rw protocol* [associated-layer-protocol]
     |  |  +--rw associated-layer-protocol    identityref
     |  |  +--rw address-data* [type]
     |  |     +--rw type               identityref
     |  |     +--rw l2-address-data
     |  |     |  +--rw mac-address-assignment    boolean
     |  |     +--rw l3-address-data
     |  |        +--rw ip-address-assignment     boolean
     |  |        +--rw floating-ip-activated     boolean
     |  |        +--rw ip-address-type?          enumeration
     |  |        +--rw number-of-ip-addresses?   uint32
     |  +--rw trunk-mode?                              boolean
     |  +--rw security-group-rule-id?                  -> ../../security-group-rule/id
     +--rw df* [id]
     |  +--rw id                                 string
     |  +--rw description?                       string
     |  +--rw vdu-profile* [id]
     |  |  +--rw id                                      -> ../../../vdu/id
     |  |  +--rw min-number-of-instances?                uint16
     |  |  +--rw max-number-of-instances?                uint16
     |  |  +--rw local-affinity-or-anti-affinity-rule* [affinity-type affinity-scope]
     |  |  |  +--rw affinity-type     affinity-type
     |  |  |  +--rw affinity-scope    affinity-scope
     |  |  +--rw affinity-or-anti-affinity-group* [id]
     |  |     +--rw id    -> ../../../affinity-or-anti-affinity-group/id
     |  +--rw virtual-link-profile* [id flavour]
     |  |  +--rw id                                      -> ../../../int-virtual-link-desc/id
     |  |  +--rw flavour                                 -> deref(../../../ext-cpd/int-virtual-link-desc)/../flavour/id
     |  |  +--rw local-affinity-or-anti-affinity-rule* [affinity-type affinity-scope]
     |  |  |  +--rw affinity-type     affinity-type
     |  |  |  +--rw affinity-scope    affinity-scope
     |  |  +--rw affinity-or-anti-affinity-group* [id]
     |  |  |  +--rw id    -> ../../../affinity-or-anti-affinity-group/id
     |  |  +--rw max-bit-rate-requirements
     |  |  |  +--rw root    uint32
     |  |  |  +--rw leaf?   uint32
     |  |  +--rw min-bit-rate-requirements
     |  |  |  +--rw root    uint32
     |  |  |  +--rw leaf?   uint32
     |  |  +--rw virtual-link-protocol-data
     |  |     +--rw associated-layer-protocol?   identityref
     |  |     +--rw l2-protocol-data
     |  |     |  +--rw name?               string
     |  |     |  +--rw network-type?       enumeration
     |  |     |  +--rw vlan-transparent?   boolean
     |  |     |  +--rw mtu?                uint16
     |  |     +--rw l3-protocol-data
     |  |        +--rw name?                  string
     |  |        +--rw ip-version?            enumeration
     |  |        +--rw cidr?                  string
     |  |        +--rw ip-allocation-pools*   string
     |  |        +--rw gateway-ip?            inet:ip-address
     |  |        +--rw dhcp-enabled?          boolean
     |  |        +--rw ipv6-address-mode?     enumeration
     |  +--rw instantiation-level* [id]
     |  |  +--rw id              string
     |  |  +--rw description?    string
     |  |  +--rw vdu-level* [vdu-id]
     |  |  |  +--rw vdu-id                 -> ../../../../vdu/id
     |  |  |  +--rw number-of-instances?   uint16
     |  |  +--rw scaling-info* [scaling-aspect-id]
     |  |     +--rw scaling-aspect-id    -> ../../../scaling-aspect/id
     |  |     +--rw scale-level?         uint32
     |  +--rw default-instantiation-level?       -> ../instantiation-level/id
     |  +--rw supported-operation*               identityref
     |  +--rw lcm-operations-configuration
     |  |  +--rw instantiate-vnf-op-config
     |  |  |  +--rw parameter* [key]
     |  |  |     +--rw key      string
     |  |  |     +--rw value?   string
     |  |  +--rw scale-vnf-op-config
     |  |  |  +--rw parameter* [key]
     |  |  |  |  +--rw key      string
     |  |  |  |  +--rw value?   string
     |  |  |  +--rw scaling-by-more-than-one-step-supported?   boolean
     |  |  +--rw scale-vnf-to-level-op-config
     |  |  |  +--rw parameter* [key]
     |  |  |  |  +--rw key      string
     |  |  |  |  +--rw value?   string
     |  |  |  +--rw arbitrary-target-levels-supported?   boolean
     |  |  +--rw heal-vnf-op-config
     |  |  |  +--rw parameter* [key]
     |  |  |  |  +--rw key      string
     |  |  |  |  +--rw value?   string
     |  |  |  +--rw cause*       string
     |  |  +--rw terminate-vnf-op-config
     |  |  |  +--rw min-graceful-termination?               yang:timeticks
     |  |  |  +--rw max-recommended-graceful-termination?   yang:timeticks
     |  |  |  +--rw parameter* [key]
     |  |  |     +--rw key      string
     |  |  |     +--rw value?   string
     |  |  +--rw operate-vnf-op-config
     |  |  |  +--rw min-graceful-stop-timeout?               yang:timeticks
     |  |  |  +--rw max-recommended-graceful-stop-timeout?   yang:timeticks
     |  |  |  +--rw parameter* [key]
     |  |  |     +--rw key      string
     |  |  |     +--rw value?   string
     |  |  +--rw change-vnf-flavour-op-config
     |  |  |  +--rw parameter* [key]
     |  |  |     +--rw key      string
     |  |  |     +--rw value?   string
     |  |  +--rw change-ext-vnf-connectivity-op-config
     |  |     +--rw parameter* [key]
     |  |        +--rw key      string
     |  |        +--rw value?   string
     |  +--rw affinity-or-anti-affinity-group* [id]
     |  |  +--rw id       string
     |  |  +--rw type     affinity-type
     |  |  +--rw scope    affinity-scope
     |  +--rw indicator* [id]
     |  |  +--rw id                 string
     |  |  +--rw name?              string
     |  |  +--rw indicator-value?   string
     |  |  +--rw source?            enumeration
     |  +--rw supported-vnf-interfaces* [name]
     |  |  +--rw name                 enumeration
     |  |  +--rw cpd-id*              -> ../../../ext-cpd/id
     |  |  +--rw interface-details* [key]
     |  |     +--rw key      string
     |  |     +--rw value?   string
     |  +--rw monitoring-parameter* [id]
     |  |  +--rw id                    string
     |  |  +--rw name?                 string
     |  |  +--rw performance-metric?   string
     |  |  +--rw collection-period?    uint64
     |  +--rw scaling-aspect* [id]
     |     +--rw id                      string
     |     +--rw name?                   string
     |     +--rw description?            string
     |     +--rw max-scale-level?        uint32
     |     +--rw aspect-delta-details
     |        +--rw deltas* [id]
     |        |  +--rw id                             string
     |        |  +--rw vdu-delta* [id]
     |        |  |  +--rw id                     -> ../../../../../../vdu/id
     |        |  |  +--rw number-of-instances?   uint32
     |        |  +--rw virtual-link-bit-rate-delta* [id]
     |        |     +--rw id                       string
     |        |     +--rw bit-rate-requirements
     |        |        +--rw root    uint32
     |        |        +--rw leaf?   uint32
     |        +--rw step-deltas?   -> ../deltas/id
     +--rw configurable-properties
     |  +--rw is-auto-scalable-enabled?           boolean
     |  +--rw is-auto-heal-enabled?               boolean
     |  +--rw additional-configurable-property* [key]
     |     +--rw key      string
     |     +--rw value?   string
     +--rw modifiable-attributes
     |  +--rw extension*   string
     |  +--rw metadata*    string
     +--rw lifecycle-management-script* [id]
     |  +--rw id                      string
     |  +--rw event*                  internal-lifecycle-management-script-event
     |  +--rw lcm-transition-event*   string
     |  +--rw script?                 string
     |  +--rw script-dsl?             string
     |  +--rw script-input* [key]
     |     +--rw key      string
     |     +--rw value?   string
     +--rw element-group* [id]
     |  +--rw id                   string
     |  +--rw description?         string
     |  +--rw vdu*                 -> ../../vdu/id
     |  +--rw virtual-link-desc*   -> ../../int-virtual-link-desc/id
     +--rw indicator* [id]
     |  +--rw id                 string
     |  +--rw name?              string
     |  +--rw indicator-value*   string
     |  +--rw source?            enumeration
     +--rw auto-scale*                      string
