fix tosca template bugs
[modeling/etsicatalog.git] / catalog / pub / utils / toscaparser / testdata / vnf / vcpedpdk / vbng / Definitions / onap_dm.yaml
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbng/Definitions/onap_dm.yaml b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbng/Definitions/onap_dm.yaml
new file mode 100644 (file)
index 0000000..0a3faba
--- /dev/null
@@ -0,0 +1,827 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+#Artifact Types
+#Based on R2 Design-time Resource DM clean version v8
+artifact_types:
+  tosca.artifacts.nfv.SwImage:
+    derived_from: tosca.artifacts.Deployment.Image
+
+#Capabilities Type
+#Based on R2 Design-time Resource DM clean version v21
+capability_types:
+  tosca.capabilities.nfv.VirtualBindable:
+    derived_from: tosca.capabilities.Root
+  
+  tosca.capabilities.nfv.Metric:
+    derived_from: tosca.capabilities.Root
+  
+  tosca.capabilities.nfv.VirtualCompute:
+    derived_from: tosca.capabilities.Root
+    properties:
+      logical_node:
+        type: tosca.datatypes.nfv.LogicalNodeData
+        required: false
+      compute_requirements:
+        type: map
+        entry_schema:
+          type: string
+        required: false
+      requested_additional_capabilities:
+        type: map
+        entry_schema:
+           type: tosca.datatypes.nfv.RequestedAdditionalCapability
+        required: false
+      virtual_memory:
+        type: tosca.datatypes.nfv.VirtualMemory
+        required: true
+      virtual_cpu:
+        type: tosca.datatypes.nfv.VirtualCpu
+        required: true
+
+  tosca.capabilities.nfv.VirtualStorage:
+    derived_from: tosca.capabilities.Root
+
+  tosca.capabilities.nfv.VirtualLinkable:
+    derived_from: tosca.capabilities.Root
+  
+  tosca.capabilities.nfv.ExtVirtualLinkable:
+    derived_from: tosca.capabilities.Root
+
+#Data Types
+#Based on R2 Design-time Resource DM clean version v45
+data_types:
+  tosca.datatypes.nfv.L2AddressData:
+    derived_from: tosca.datatypes.Root
+    properties: 
+      mac_address_assignment:
+        type: boolean
+        required: true
+
+  tosca.datatypes.nfv.injectFile:
+    derived_from: tosca.datatypes.Root
+    properties: 
+      source_path:
+        type: string
+        required: true
+      dest_path:
+        type: string
+        required: true
+
+  tosca.datatypes.nfv.L3AddressData:
+    derived_from: tosca.datatypes.Root
+    properties: 
+      ip_address_assignment:
+        type: boolean
+        required: true   
+      floating_ip_activated:
+        type: boolean
+        required: true
+      ip_address_type:
+        type: string
+        required: false
+        constraints:
+          - valid_values: [ipv4, ipv6]
+      number_of_ip_address:
+        type: integer
+        required: false
+      fixed_ip_address:
+        type: list
+        entry_schema:
+          type: string
+        required: false
+
+  tosca.datatypes.nfv.AddressData:
+    derived_from: tosca.datatypes.Root
+    properties: 
+      address_type:
+        type: string
+        required: true
+        constraints:
+          - valid_values: [mac_address, ip_address]    
+      l2_address_data:
+        type: tosca.datatypes.nfv.L2AddressData # empty in "GS NFV IFA011 V0.7.3"
+        required: false
+      l3_address_data:
+        type: tosca.datatypes.nfv.L3AddressData
+        required: false 
+  
+  tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements:
+    derived_from: tosca.datatypes.Root
+    properties: 
+      name:
+        type: string
+        required: false   
+      description:
+        type: string
+        required: false
+      support_mandatory:
+        type: boolean
+        required: true
+      #TODO HPA
+      network_interface_requirements:
+        type: map
+        entry_schema:
+          type: string
+        required: true
+      nic_io_requirements:
+        type: tosca.datatypes.nfv.LogicalNodeData
+        required: false
+  
+  tosca.datatypes.nfv.ConnectivityType:
+    derived_from: tosca.datatypes.Root
+    properties: 
+      layer_protocol:
+        type: string
+        required: true
+        constraints:
+          - valid_values: [ethernet, mpls, odu2, ipv4, ipv6, pseudo_wire ]  
+      flow_pattern:
+        type: string
+        required: false
+        constraints: # not defined in IFA011 v2.4.1 and SOL001 v.6.0
+          - valid_values: [Line, Tree, Mesh]
+  
+  tosca.datatypes.nfv.RequestedAdditionalCapability:
+    derived_from: tosca.datatypes.Root
+    properties:
+      #name:
+        # key of containing map
+      support_mandatory:
+        type: boolean
+        required: true
+      min_requested_additional_capability_version:
+        type: string
+        required: false
+      preferred_requested_additional_capability_version:
+        type: string
+        required: false
+      requested_additional_capability_name:
+        type: string
+        required: true
+      target_performance_parameters:
+        type: map
+        entry_schema:
+          type: string
+        required: true     
+  
+  tosca.datatypes.nfv.VirtualMemory:
+      derived_from: tosca.datatypes.Root
+      properties:
+        virtual_mem_size:
+          type: scalar-unit.size # Number
+          required: true
+        virtual_mem_oversubscription_policy:
+          type: string
+          required: false
+        #TODO HPA
+        vdu_memory_requirements:
+          type: map
+          entry_schema:
+           type: string
+          required: false
+        numa_enabled:
+          type: boolean
+          required: false
+  
+  tosca.datatypes.nfv.VirtualCpu:
+    derived_from: tosca.datatypes.Root
+    properties:
+      cpu_architecture:
+        type: string
+        required: false
+      num_virtual_cpu:
+        type: integer
+        required: true
+      virtual_cpu_clock:
+        type: scalar-unit.frequency
+        required: false
+      virtual_cpu_oversubscription_policy:
+        type: string
+        required: false
+      #TODO HPA
+      vdu_cpu_requirements:
+        type: map
+        entry_schema:
+           type: string
+        required: false
+      virtual_cpu_pinning:
+        type: tosca.datatypes.nfv.VirtualCpuPinning
+        required: false
+  
+  tosca.datatypes.nfv.VirtualCpuPinning:
+    derived_from: tosca.datatypes.Root
+    properties:
+      cpu_pinning_policy:
+        type: string # CpuPinningPolicy
+        constraints:
+          - valid_values: [ static, dynamic ]
+        required: false
+      cpu_pinning_map:
+        type: map
+        entry_schema:
+          type: string
+        required: false
+  
+  tosca.datatypes.nfv.VnfcConfigurableProperties:
+    derived_from: tosca.datatypes.Root
+    properties:
+      additional_vnfc_configurable_properties:
+        type: map
+        entry_schema:
+          type: string
+        required: false
+  
+  tosca.datatypes.nfv.VduProfile:
+      derived_from: tosca.datatypes.Root
+      properties:
+        min_number_of_instances:
+          type: integer
+          required: true
+        max_number_of_instances:
+          type: integer
+          required: true
+        #localAffinityOrAntiAffinityRule:  # not defined in SOL001 v.6.0
+        #  type: tosca.datatype.nfv.LocalAffinityOrAntiAffinityRule
+        #  required: true
+        #affinityOrAntiAffinityGroupId: # not defined in SOL001 v.6.0
+        #  type: string
+        #  required: true
+        watchdog: #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0
+          type: string
+          required: true
+        vmBootUpTimeOut: #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0
+          type: integer
+          required: false
+  
+   
+  tosca.datatypes.nfv.VlProfile:
+      derived_from: tosca.datatypes.Root
+      properties:
+        max_bit_rate_requirements:
+           type: tosca.datatypes.nfv.LinkBitRateRequirements
+           required: true
+        min_bit_rate_requirements:
+           type: tosca.datatypes.nfv.LinkBitRateRequirements
+           required: true
+        qos:
+           type: tosca.datatypes.nfv.Qos
+           required: false
+        initiationParameters: #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0
+           type: map
+           entry_schema:
+             type: string
+           required: false
+        cidr: #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0
+           type: string
+           required: false
+        networkName:  #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0
+           type: string
+           required: false
+        startIp:  #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0
+           type: string
+           required: false
+        endIp:  #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0
+           type: string
+           required: false
+        gatewayIp:  #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0
+           type: string
+           required: false
+        segmentationId:  #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0
+           type: integer
+           required: false
+        physicalNetwork:  #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0
+           type: string
+           required: false
+        networkType:  #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0
+           type: string
+           required: false
+           constraints:
+             - valid_values: [VLAN, VXLAN]
+        dhcpEnabled:  # not defined in IFA011 v2.4.1 and SOL001 v.6.0
+           type: boolean
+           required: false
+        vlanTransparent:  #Align with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v.6.0
+           type: boolean
+           required: false
+  
+  tosca.datatypes.nfv.InstantiationLevel:
+      derived_from: tosca.datatypes.Root
+      properties:
+        description:
+          type: string
+          required: true
+        vdu_levels:
+          type: map # key: vduId
+          required: true
+          entry_schema:
+            type: tosca.datatypes.nfv.VduLevel
+        scale_info:
+          type: map # key: aspectId
+          required: false
+          entry_schema:
+            type: tosca.datatypes.nfv.ScaleInfo
+  
+  tosca.datatypes.nfv.VduLevel:
+      derived_from: tosca.datatypes.Root
+      properties:
+        number_of_instances:
+          type: integer
+          required: true
+  
+  tosca.datatypes.nfv.VnfLcmOperationsConfiguration: 
+    derived_from: tosca.datatypes.Root 
+    properties: 
+      instantiate: 
+        type: tosca.datatypes.nfv.VnfInstantiateOperationConfiguration 
+      scale:
+        type: tosca.datatypes.nfv.VnfScaleOperationConfiguration 
+      scale_to_level: 
+        type: tosca.datatypes.nfv.VnfScaleToLevelOperationConfiguration 
+      heal: 
+        type: tosca.datatypes.nfv.VnfHealOperationConfiguration
+      terminate:
+        type: tosca.datatypes.nfv.VnfTerminateOperationConfiguration
+      operate: 
+        type: tosca.datatypes.nfv.VnfOperateOperationConfiguration
+  
+  tosca.datatypes.nfv.VnfInstantiateOperationConfiguration:
+      derived_from: tosca.datatypes.Root
+      #properties:
+        #parameters:
+            #modeled as part of operation parameter list
+  
+  tosca.datatypes.nfv.VnfScaleOperationConfiguration:
+      derived_from: tosca.datatypes.Root
+      properties:
+        #parameters:
+           #modeled as part of the operation parameter list
+        scaling_by_more_than_one_step_supported:
+           type: boolean
+  
+  tosca.datatypes.nfv.VnfScaleToLevelOperationConfiguration:
+      derived_from: tosca.datatypes.Root
+      properties:
+        #parameters:
+           #modeled as part of the operation parameter list
+        arbitrary_target_levels_supported:
+           type: boolean
+  
+  tosca.datatypes.nfv.VnfHealOperationConfiguration:
+      derived_from: tosca.datatypes.Root
+      properties:
+        #parameters:
+           #modeled as part of the operation parameter list
+        causes:
+           type: list
+           entry_schema:
+             type: string
+  
+  tosca.datatypes.nfv.VnfTerminateOperationConfiguration:
+      derived_from: tosca.datatypes.Root
+      properties:
+        min_graceful_termination_timeout:
+           type: integer
+        max_recommended_graceful_termination_timeout:
+           type: integer
+  
+  tosca.datatypes.nfv.VnfOperateOperationConfiguration:
+    derived_from: tosca.datatypes.Root
+    properties:
+      min_graceful_termination_timeout:
+           type: integer
+      max_recommended_graceful_termination_timeout:
+           type: integer
+  
+  tosca.datatypes.nfv.ScaleInfo:
+    derived_from: tosca.datatypes.Root
+    properties:
+      scaleLevel:
+           type: integer
+           required: true
+  
+  tosca.datatypes.nfv.ScaleAspect:
+    derived_from: tosca.datatypes.Root
+    properties:
+      name:
+         type: string
+         required: true
+      description:
+         type: string
+         required: true
+      associated_group:
+         type: string #Identifier
+         required: false
+      max_scale_level:
+         type: integer #PositiveInteger
+         required: true
+  
+  tosca.datatypes.nfv.LinkBitRateRequirements:
+    derived_from: tosca.datatypes.Root
+    properties:
+      root:
+         type: integer
+         required: true
+      leaf:
+         type: integer
+         required: true
+  
+  tosca.datatypes.nfv.Qos:
+    derived_from: tosca.datatypes.Root
+    properties:
+      latency:
+         type: integer #Number [ms]
+         required: true
+      packet_delay_variation:
+         type: integer #Number [ms]
+         required: true
+      packet_loss_ratio:
+         type: float
+         constraints:
+           - in_range: [ 0.0, 1.0 ]
+         required: false
+  
+  tosca.datatypes.nfv.CpProtocolData:
+    derived_from: tosca.datatypes.Root
+    properties:
+      asscociated_layer_protocol:
+        type: string
+        constraints:
+          - valid_values: [ethernet, mpls, odu2, ipv4, ipv6, pseudo-wire ]
+        required: true
+      address_data:
+        type: tosca.datatypes.nfv.AddressData
+        required: false
+  
+  tosca.datatypes.nfv.VnfConfigurableProperties:
+    derived_from: tosca.datatypes.Root
+    properties:
+      is_autoscale_enabled:
+        type: boolean
+        required: false
+      is_autoheal_enabled:
+        type: boolean
+        required: false
+      additional_configurable_properties:
+        type: tosca.datatypes.nfv.VnfAdditionalConfigurableProperties
+        required: false
+  
+  tosca.datatypes.nfv.VnfAdditionalConfigurableProperties:
+    derived_from: tosca.datatypes.Root
+  
+  tosca.datatypes.nfv.VnfInfoModifiableAttributes:
+    derived_from: tosca.datatypes.Root
+    properties:
+      extensions:
+        type: tosca.datatypes.nfv.VnfInfoModifiableAttributesExtensions
+        required: false
+      metadata:
+        type: tosca.datatypes.nfv.VnfInfoModifiableAttributesMetadata
+        required: false
+  
+  tosca.datatypes.nfv.VnfInfoModifiableAttributesExtensions:
+    derived_from: tosca.datatypes.Root
+  
+  tosca.datatypes.nfv.VnfInfoModifiableAttributesMetadata:
+    derived_from: tosca.datatypes.Root
+  
+  tosca.datatypes.nfv.LogicalNodeData:
+    derived_from: tosca.datatypes.Root
+    properties:
+      #TODO HPA
+      logical_node_requirements:
+        type: map # not defined in SOL001 v.6.0
+        entry_schema:
+          type: string
+        required: false
+
+#Interface Types
+#Based on R2 Design-time Resource DM clean version v10
+interface_types:
+  tosca.interfaces.nfv.vnf.lifecycle.Nfv:
+    derived_from: tosca.interfaces.Root
+    instantiate:
+      description: Invoked upon receipt of an Instantiate VNF request
+    instantiate_start:
+      description: Invoked before instantiate
+    instantiate_end:
+      description: Invoked after instantiate
+    terminate:
+      description: Invoked upon receipt Terminate VNF request
+    terminate_start:
+      description: Invoked before terminate
+    terminate_end:
+      description: Invoked after terminate
+    modify_information:
+      description: Invoked upon receipt of a Modify VNF Information request
+    modify_information_start:
+      description: Invoked before modify_information
+    modify_information_end:
+      description: Invoked after modify_information
+    change_flavour:
+      description: Invoked upon receipt of a Change VNF Flavour request
+    change_flavour_start:
+      description: Invoked before change_flavour
+    change_flavour_end:
+      description: Invoked after change_flavour
+    change_external_connectivity:
+      description: Invoked upon receipt of a Change External VNF Connectivity request
+    change_external_connectivity_start:
+      description: Invoked before change_external_connectivity
+    change_external_connectivity_end:
+      description: Invoked after change_external_connectivity
+    operate:
+      description: Invoked upon receipt of an Operate VNF request
+    operate_start:
+      description: Invoked before operate
+    operate_end:
+      description: Invoked after operate
+    heal:
+      description: Invoked upon receipt of a Heal VNF request
+    heal_start:
+      description: Invoked before heal
+    heal_end:
+      description: Invoked after heal
+    scale:
+      description: Invoked upon receipt of a Scale VNF request
+    scale_start:
+      description: Invoked before scale
+    scale_end:
+      description: Invoked after scale 
+    scale_to_level:
+      description: Invoked upon receipt of a Scale VNF to Level request
+    scale_to_level_start:
+      description: Invoked before scale_to_level
+    scale_to_level_end:
+      description: Invoked after scale_to_level
+  #  indicator_changed:
+  #    description: On receiving a VNF indicator value change notification
+
+#Node Types
+#Based on R2 Design-time Resource DM clean version v36
+node_types:
+  tosca.nodes.nfv.Vdu.Compute:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        required: true
+      description:
+        type: string
+        required: true
+      boot_order:
+        type: list # explicit index (boot index) not necessary, contrary to IFA011
+        entry_schema:
+          type: string
+        required: false
+      nfvi_constraints:
+        type: list
+        entry_schema:
+          type: string
+        required: false
+      configurable_properties:
+        type: map
+        entry_schema:
+           type: tosca.datatypes.nfv.VnfcConfigurableProperties
+        required: true 
+      vdu_profile:
+        type: tosca.datatypes.nfv.VduProfile
+        required: true
+      inject_files: #Aligned with ONAP R2 IM. not defined in IFA011 v2.4.1 and SOL001 v0.6.0
+        #type: list
+        #entry_schema:
+        #TODO workaround of SDC bug
+        type: tosca.datatypes.nfv.injectFile
+        required: false
+      meta_data: #metadata attached to the VM or container
+        type: map
+        entry_schema:
+          type: string
+        required: false
+      user_data: #cloudinit userdata script support
+        type: string
+        required: false
+    #attributes: NOT DEFINED IN ONAP IM and SOL001
+      #private_address:
+      #  status: deprecated
+      #public_address:
+      #  status: deprecated
+      #networks:
+      #  status: deprecated
+      #ports:
+      #  status: deprecated
+    capabilities:
+      virtual_compute:
+        type: tosca.capabilities.nfv.VirtualCompute
+      virtual_binding:
+        type: tosca.capabilities.nfv.VirtualBindable
+        occurrences: [1, UNBOUNDED]
+      monitoring_parameter:
+        type: tosca.capabilities.nfv.Metric
+        occurrences: [0, UNBOUNDED]
+    requirements:
+      - virtual_storage:
+          capability: tosca.capabilities.nfv.VirtualStorage
+          relationship: tosca.relationships.nfv.Vdu.AttachedTo
+          node: tosca.nodes.nfv.Vdu.VirtualStorage
+          occurrences: [ 0, UNBOUNDED ]
+    #artifacts:
+    #  - sw_image:
+    #      file:
+    #      type: tosca.artifacts.nfv.SwImage
+  
+  tosca.nodes.nfv.Vdu.VirtualStorage:
+    derived_from: tosca.nodes.Root
+    properties:
+      #id:
+        # node name
+      type_of_storage:
+        type: string
+        constraints:
+          - valid_values: [volume, object, root, block]
+        required: true
+      size_of_storage:
+        type: scalar-unit.size
+        required: true
+      #TODO HPA
+      vdu_storage_requirements:
+        type: map
+        entry_schema:
+          type: string
+        required: false
+      rdma_enabled:
+        type: boolean
+        required: false
+    capabilities:
+      virtual_storage:
+        type: tosca.capabilities.nfv.VirtualStorage
+    #artifacts:
+    #  - sw_image:
+    #     file:
+    #     type: tosca.artifacts.Deployment.Image
+  
+  tosca.nodes.nfv.Cp:
+    derived_from: tosca.nodes.Root
+    properties:
+      layer_protocol:
+        type: list
+        entry_schema:
+          constraints:
+            - valid_values: [ethernet, mpls, odu2, ipv4, ipv6, pseudo_wire ]
+          type: string
+        required: true
+      role: #Name in ETSI NFV IFA011 v0.7.3 cpRole
+        type: string
+        constraints:
+          - valid_values: [ root, leaf ]
+        required: false
+      description:
+        type: string
+        required: false
+      protocol_data:
+        type: list
+        entry_schema:
+          type: tosca.datatypes.nfv.CpProtocolData
+        required: true
+      trunk_mode:
+        type: boolean
+        required: true
+      allowedAddressData: # Aligned with ONAP R2 Im.not defined in IFA011 v2.4.1 and SOL001 v0.6.0
+        type: tosca.datatypes.nfv.AddressData
+        required: false
+  
+  tosca.nodes.nfv.VduCp:
+    derived_from: tosca.nodes.nfv.Cp
+    properties:
+      bitrate_requirement:
+        type: integer
+        required: false
+      vnic_name: #  Aligned with ONAP R2 Im.not defined in IFA011 v2.4.1 and SOL001 v0.6.0
+        type: string
+        required: false
+      vnic_order: # Aligned with ONAP R2 Im. not defined in IFA011 v2.4.1 and SOL001 v0.6.0
+        type: integer
+        required: false
+      vnic_type: # Aligned with ONAP R2 Im. not defined in IFA011 v2.4.1 and SOL001 v0.6.0
+        type: string
+        constraints:
+            - valid_values: [normal, macvtap, direct, baremetal, direct-physical, virtio-forwarder]
+        required: false
+      virtual_network_interface_requirements:
+        type: list
+        entry_schema:
+          type: tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements
+        required: false
+      #order:
+      #  type: integer
+      #  required: false
+      #  constraints:
+      #    - greater_or_equal: 0
+    requirements:
+      - virtual_link:
+          capability: tosca.capabilities.nfv.VirtualLinkable
+          relationship: tosca.relationships.nfv.VirtualLinksTo
+          node: tosca.nodes.nfv.VnfVirtualLink   
+      - virtual_binding:
+          capability: tosca.capabilities.nfv.VirtualBindable
+          relationship: tosca.relationships.nfv.VirtualBindsTo
+          node: tosca.nodes.nfv.Vdu.Compute
+  
+  tosca.nodes.nfv.VnfVirtualLink:
+    derived_from: tosca.nodes.Root
+    properties:
+      connectivity_type:
+        type: tosca.datatypes.nfv.ConnectivityType
+        required: true
+      description:
+        type: string
+        required: false
+      test_access:
+        type: list
+        entry_schema:
+          type: string
+        required: false
+      vl_profile:
+        type: tosca.datatypes.nfv.VlProfile
+        required: true
+    capabilities:
+      monitoring_parameter:
+        type: tosca.capabilities.nfv.Metric
+        occurrences: [0, UNBOUNDED]
+      virtual_linkable:
+        type: tosca.capabilities.nfv.VirtualLinkable
+  
+  tosca.nodes.nfv.VNF:
+    derived_from: tosca.nodes.Root
+    properties:
+      descriptor_id: # instead of vnfd_id
+        type: string # GUID
+        required: true
+      descriptor_version: # instead of vnfd_version
+        type: string
+        required: true
+      provider: # instead of vnf_provider
+        type: string
+        required: true
+      product_name: # instead of vnf_product_name
+        type: string
+        required: true
+      software_version: # instead of vnf_software_version
+        type: string
+        required: true
+      product_info_name: # instead of vnf_product_info_name
+        type: string
+        required: false
+      product_info_description: # instead of vnf_product_info_description
+        type: string
+        required: false
+      vnfm_info:
+        type: list
+        entry_schema:
+          type: string
+        required: true
+      localization_languages:
+        type: list
+        entry_schema:
+          type: string
+        required: false
+      default_localization_language:
+        type: string
+        required: false
+      configurable_properties:
+        type: tosca.datatypes.nfv.VnfConfigurableProperties
+        required: false
+      modifiable_attributes:
+        type: tosca.datatypes.nfv.VnfInfoModifiableAttributes
+        required: false  # true in IFA011, but all of members are false
+      flavour_id:
+        type: string
+        required: true
+      flavour_description:
+        type: string
+        required: true
+    #capabilities:
+      # monitoring_parameter:
+        # modelled as ad hoc capabilities in the VNF node template
+    requirements:
+      - virtual_link:
+          capability: tosca.capabilities.nfv.VirtualLinkable
+          relationship: tosca.relationships.nfv.VirtualLinksTo
+          node: tosca.nodes.nfv.VnfVirtualLink
+          occurrences: [ 0, UNBOUNDED ]
+    interfaces:
+      Nfv:
+        type: tosca.interfaces.nfv.vnf.lifecycle.Nfv
+
+#Relationship Types
+#Based on R2 Design-time Resource DM clean version v4
+relationship_types:
+  tosca.relationships.nfv.VirtualBindsTo:
+    derived_from: tosca.relationships.DependsOn
+    valid_target_types: [ tosca.capabilities.nfv.VirtualBindable]
+  
+  tosca.relationships.nfv.VirtualLinksTo:
+    derived_from: tosca.relationships.DependsOn
+    valid_target_types: [ tosca.capabilities.nfv.VirtualLinkable]
+
+  tosca.relationships.nfv.Vdu.AttachedTo:
+    derived_from: tosca.relationships.DependsOn
+    valid_target_types: [ tosca.capabilities.nfv.VirtualStorage]