tosca.datatypes.Root:
  description: The TOSCA root Data Type all other TOSCA base Data Types derive from

integer:
  derived_from: tosca.datatypes.Root

string:
  derived_from: tosca.datatypes.Root

boolean:
  derived_from: tosca.datatypes.Root

float:
  derived_from: tosca.datatypes.Root

list:
  derived_from: tosca.datatypes.Root

map:
  derived_from: tosca.datatypes.Root

json:
  derived_from: tosca.datatypes.Root

scalar-unit:
  derived_from: tosca.datatypes.Root

scalar-unit.size:
  derived_from: scalar-unit

scalar-unit.time:
  derived_from: scalar-unit

scalar-unit.frequency:
  derived_from: scalar-unit

  
tosca.datatypes.Credential: 
  derived_from: tosca.datatypes.Root
  properties: 
    protocol: 
      type: string
      required: false
    token_type: 
      type: string
      default: password
    token: 
      type: string
    keys:
      type: map
      required: false
      entry_schema:
        type: string
    user:
      type: string
      required: false

tosca.datatypes.TimeInterval: 
  derived_from: tosca.datatypes.Root
  properties:
    start_time: 
      type: timestamp
      required: true
    end_time: 
      type: timestamp
      required: true

tosca.datatypes.network.NetworkInfo:
  derived_from: tosca.datatypes.Root
  properties:  
    network_name: 
      type: string
    network_id: 
      type: string
    addresses:
      type: list
      entry_schema:
        type: string

tosca.datatypes.network.PortInfo: 
  derived_from: tosca.datatypes.Root
  properties:  
    port_name: 
      type: string
    port_id: 
      type: string
    network_id: 
      type: string
    mac_address: 
      type: string
    addresses:
      type: list
      entry_schema:
        type: string

tosca.datatypes.network.PortDef:
  derived_from: integer
  constraints: 
    - in_range: [ 1, 65535 ]

tosca.datatypes.network.PortSpec: 
  derived_from: tosca.datatypes.Root
  properties:  
    protocol: 
      type: string
      required: true
      default: tcp
      constraints:
        - valid_values: [ udp, tcp, igmp ]
    target:  
      type: tosca.datatypes.network.PortDef
    target_range:
      type: range 
      constraints:
        - in_range: [ 1, 65535 ]
    source:
      type: tosca.datatypes.network.PortDef
    source_range:
      type: range
      constraints:
        - in_range: [ 1, 65535 ]

###################new Data Types Onboarding Integration##########################

org.openecomp.datatypes.heat.network.AddressPair:
  derived_from: tosca.datatypes.Root
  description: MAC/IP address pairs
  properties:
    mac_address:
      type: string
      description: MAC address
      required: false
      status: SUPPORTED
    ip_address:
      type: string
      description: IP address
      required: false
      status: SUPPORTED

org.openecomp.datatypes.heat.network.subnet.HostRoute:
  derived_from: tosca.datatypes.Root
  description: Host route info for the subnet
  properties:
    destination:
      type: string
      description: The destination for static route
      required: false
      status: SUPPORTED
    nexthop:
      type: string
      description: The next hop for the destination
      required: false
      status: SUPPORTED
      
org.openecomp.datatypes.heat.network.AllocationPool:
  derived_from: tosca.datatypes.Root
  description: The start and end addresses for the allocation pool
  properties:
    start:
      type: string
      description: Start address for the allocation pool
      required: false
      status: SUPPORTED
    end:
      type: string
      description: End address for the allocation pool
      required: false
      status: SUPPORTED

org.openecomp.datatypes.heat.network.neutron.Subnet:
  derived_from: tosca.datatypes.Root
  description: A subnet represents an IP address block that can be used for assigning IP addresses to virtual instances
  properties:
    tenant_id:
      type: string
      description: The ID of the tenant who owns the network
      required: false
      status: SUPPORTED
    enable_dhcp:
      type: boolean
      description: Set to true if DHCP is enabled and false if DHCP is disabled
      required: false
      default: true
      status: SUPPORTED
    ipv6_address_mode:
      type: string
      description: IPv6 address mode
      required: false
      status: SUPPORTED
      constraints:
      - valid_values:
        - dhcpv6-stateful
        - dhcpv6-stateless
        - slaac
    ipv6_ra_mode:
      type: string
      description: IPv6 RA (Router Advertisement) mode
      required: false
      status: SUPPORTED
      constraints:
      - valid_values:
        - dhcpv6-stateful
        - dhcpv6-stateless
        - slaac
    value_specs:
      type: map
      description: Extra parameters to include in the request
      required: false
      default: {
        }
      status: SUPPORTED
      entry_schema:
        type: string
    allocation_pools:
       type: list
       description: The start and end addresses for the allocation pools
       required: false
       status: SUPPORTED
       entry_schema:
         type: org.openecomp.datatypes.heat.network.AllocationPool
    subnetpool:
      type: string
      description: The name or ID of the subnet pool
      required: false
      status: SUPPORTED
    dns_nameservers:
      type: list
      description: A specified set of DNS name servers to be used
      required: false
      default: [
        ]
      status: SUPPORTED
      entry_schema:
        type: string     
    host_routes:
      type: list
      description: The gateway IP address
      required: false
      status: SUPPORTED
      entry_schema:
        type: org.openecomp.datatypes.heat.network.subnet.HostRoute
    ip_version:
      type: integer
      description: The gateway IP address
      required: false
      default: 4
      status: SUPPORTED
      constraints:
      - valid_values:
        - 4
        - 6
    name:
      type: string
      description: The name of the subnet
      required: false
      status: SUPPORTED
    prefixlen:
      type: integer
      description: Prefix length for subnet allocation from subnet pool
      required: false
      status: SUPPORTED
      constraints:
      - greater_or_equal: 0
    cidr:
      type: string
      description: The CIDR
      required: false
      status: SUPPORTED
    gateway_ip:
      type: string
      description: The gateway IP address
      required: false
      status: SUPPORTED

org.openecomp.datatypes.heat.novaServer.network.PortExtraProperties:
  derived_from: tosca.datatypes.Root
  description: Nova server network expand properties for port
  properties:
    port_security_enabled:
      type: boolean
      description: Flag to enable/disable port security on the port
      required: false
      status: SUPPORTED
    mac_address:
      type: string
      description: MAC address to give to this port
      required: false
      status: SUPPORTED
    admin_state_up:
      type: boolean
      description: The administrative state of this port
      required: false
      default: true
      status: SUPPORTED
    qos_policy:
      type: string
      description: The name or ID of QoS policy to attach to this port
      required: false
      status: SUPPORTED
    allowed_address_pairs:
      type: list
      description: Additional MAC/IP address pairs allowed to pass through the port
      required: false
      status: SUPPORTED
      entry_schema:
        type: org.openecomp.datatypes.heat.network.AddressPair
    binding:vnic_type:
      type: string
      description: The vnic type to be bound on the neutron port
      required: false
      status: SUPPORTED
      constraints:
      - valid_values:
        - macvtap
        - direct
        - normal
    value_specs:
      type: map
      description: Extra parameters to include in the request
      required: false
      default: {
        }
      status: SUPPORTED
      entry_schema:
        type: string

org.openecomp.datatypes.heat.novaServer.network.AddressInfo:
  derived_from: tosca.datatypes.network.NetworkInfo
  description: Network addresses with corresponding port id
  properties:
    port_id:
      type: string
      description: Port id
      required: false
      status: SUPPORTED

org.openecomp.datatypes.heat.neutron.port.FixedIps:
  derived_from: tosca.datatypes.Root
  description: subnet/ip_address
  properties:
    subnet:
      type: string
      description: Subnet in which to allocate the IP address for this port
      required: false
      status: SUPPORTED
    ip_address:
      type: string
      description: IP address desired in the subnet for this port
      required: false
      status: SUPPORTED

org.openecomp.datatypes.heat.FileInfo:
  derived_from: tosca.datatypes.Root
  description: Heat File Info
  properties:
    file:
      type: string
      description: The required URI string (relative or absolute) which can be used to locate the file
      required: true
      status: SUPPORTED
    file_type:
      type: string
      description: The type of the file
      required: true
      status: SUPPORTED
      constraints:
      - valid_values:
        - base
        - env
        - volume
        - network

org.openecomp.datatypes.heat.contrail.network.rule.PortPairs:
    derived_from: tosca.datatypes.Root
    description: source and destination port pairs
    properties:
      start_port:
        type: string
        description: Start port
        required: false
        status: SUPPORTED
      end_port:
        type: string
        description: End port
        required: false
        status: SUPPORTED

org.openecomp.datatypes.heat.contrail.network.rule.Rule:
    derived_from: tosca.datatypes.Root
    description: policy rule
    properties:
      src_ports:
        type: list
        description: Source ports
        required: false
        status: SUPPORTED
        entry_schema:
          type: org.openecomp.datatypes.heat.contrail.network.rule.PortPairs
      protocol:
        type: string
        description: Protocol
        required: false
        status: SUPPORTED
      dst_addresses:
        type: list
        description: Destination addresses
        required: false
        status: SUPPORTED
        entry_schema:
          type: org.openecomp.datatypes.heat.contrail.network.rule.VirtualNetwork
      apply_service:
        type: string
        description: Service to apply
        required: false
        status: SUPPORTED
      dst_ports:
        type: list
        description: Destination ports
        required: false
        status: SUPPORTED
        entry_schema:
          type: org.openecomp.datatypes.heat.contrail.network.rule.PortPairs
      src_addresses:
        type: list
        description: Source addresses
        required: false
        status: SUPPORTED
        entry_schema:
          type: org.openecomp.datatypes.heat.contrail.network.rule.VirtualNetwork
      direction:
        type: string
        description: Direction
        required: false
        status: SUPPORTED

org.openecomp.datatypes.heat.contrail.network.rule.RuleList:
    derived_from: tosca.datatypes.Root
    description: list of policy rules
    properties:
      policy_rule:
        type: list
        description: Contrail network rule
        required: false
        status: SUPPORTED
        entry_schema:
          type: org.openecomp.datatypes.heat.contrail.network.rule.Rule

org.openecomp.datatypes.heat.contrail.network.rule.VirtualNetwork:
    derived_from: tosca.datatypes.Root
    description: source and destination addresses
    properties:
      virtual_network:
        type: string
        description: Virtual network
        required: false
        status: SUPPORTED

org.openecomp.datatypes.heat.network.neutron.SecurityRules.Rule:
    derived_from: tosca.datatypes.Root
    description: Rules Pairs
    properties:
      remote_group_id:
        type: string
        description: The remote group ID to be associated with this security group rule
        required: false
        status: SUPPORTED
      protocol:
        type: string
        description: The protocol that is matched by the security group rule
        required: false
        status: SUPPORTED
        constraints:
        - valid_values:
          - tcp
          - udp
          - icmp
      ethertype:
        type: string
        description: Ethertype of the traffic
        required: false
        default: IPv4
        status: SUPPORTED
        constraints:
        - valid_values:
          - IPv4
          - IPv6
      port_range_max:
        type: integer
        description: 'The maximum port number in the range that is matched by the
          security group rule. '
        required: false
        status: SUPPORTED
        constraints:
        - in_range:
          - 0
          - 65535
      remote_ip_prefix:
        type: string
        description: The remote IP prefix (CIDR) to be associated with this security group rule
        required: false
        status: SUPPORTED
      remote_mode:
        type: string
        description: Whether to specify a remote group or a remote IP prefix
        required: false
        default: remote_ip_prefix
        status: SUPPORTED
        constraints:
        - valid_values:
          - remote_ip_prefix
          - remote_group_id
      direction:
        type: string
        description: The direction in which the security group rule is applied
        required: false
        default: ingress
        status: SUPPORTED
        constraints:
        - valid_values:
          - egress
          - ingress
      port_range_min:
        type: integer
        description: The minimum port number in the range that is matched by the security group rule.
        required: false
        status: SUPPORTED
        constraints:
        - in_range:
          - 0
          - 65535

org.openecomp.datatypes.heat.substitution.SubstitutionFiltering:
    derived_from: tosca.datatypes.Root
    description: Substitution Filter
    properties:
      substitute_service_template:
        type: string
        description: Substitute Service Template
        required: true
        status: SUPPORTED
      index_value:
        type: integer
        description: Index value of the substitution service template runtime instance
        required: false
        default: 0
        status: SUPPORTED
        constraints:
        - greater_or_equal: 0
      count:
        type: string
        description: Count
        required: false
        default: 1
        status: SUPPORTED
      scaling_enabled:
        type: boolean
        description: Indicates whether service scaling is enabled
        required: false
        default: true
        status: SUPPORTED
      mandatory:
        type: boolean
        description: Mandatory
        required: false
        default: true
        status: SUPPORTED

org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.RefDataSequence:
    derived_from: tosca.datatypes.Root
    description: network policy refs data sequence
    properties:
      network_policy_refs_data_sequence_major:
        type: integer
        description: Network Policy ref data sequence Major
        required: false
        status: SUPPORTED
      network_policy_refs_data_sequence_minor:
        type: integer
        description: Network Policy ref data sequence Minor
        required: false
        status: SUPPORTED

org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.RefData:
    derived_from: tosca.datatypes.Root
    description: network policy refs data
    properties:
      network_policy_refs_data_sequence:
        type: org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.RefDataSequence
        description: Network Policy ref data sequence
        required: false
        status: SUPPORTED

org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.ref.data.IpamSubnet:
    derived_from: tosca.datatypes.Root
    description: Network Ipam Ref Data Subnet
    properties:
      network_ipam_refs_data_ipam_subnets_subnet_ip_prefix_len:
        type: string
        description: Network ipam refs data ipam subnets ip prefix len
        required: false
        status: SUPPORTED
      network_ipam_refs_data_ipam_subnets_subnet_ip_prefix:
        type: string
        description: Network ipam refs data ipam subnets ip prefix
        required: false
        status: SUPPORTED

org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.ref.data.IpamSubnetList:
    derived_from: tosca.datatypes.Root
    description: Network Ipam Ref Data Subnet List
    properties:
      network_ipam_refs_data_ipam_subnets_subnet:
        type: org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.ref.data.IpamSubnet
        description: Network ipam refs data ipam subnets
        required: false
        status: SUPPORTED
      network_ipam_refs_data_ipam_subnets_addr_from_start:
        type: string
        description: Network ipam refs data ipam subnets addr from start
        required: false
        status: SUPPORTED

org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.IpamRefData:
    derived_from: tosca.datatypes.Root
    description: Network Ipam Ref Data
    properties:
      network_ipam_refs_data_ipam_subnets:
        type: list
        description: Network ipam refs data ipam subnets
        required: false
        status: SUPPORTED
        entry_schema:
          type: org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.ref.data.IpamSubnetList

org.openecomp.datatypes.heat.contrailV2.network.rule.SrcVirtualNetwork:
    derived_from: tosca.datatypes.Root
    description: source addresses
    properties:
      network_policy_entries_policy_rule_src_addresses_virtual_network:
        type: string
        description: Source addresses Virtual network
        required: false
        status: SUPPORTED

org.openecomp.datatypes.heat.contrailV2.network.rule.DstVirtualNetwork:
    derived_from: tosca.datatypes.Root
    description: destination addresses
    properties:
      network_policy_entries_policy_rule_dst_addresses_virtual_network:
        type: string
        description: Destination addresses Virtual network
        required: false
        status: SUPPORTED

org.openecomp.datatypes.heat.contrailV2.network.rule.DstPortPairs:
    derived_from: tosca.datatypes.Root
    description: destination port pairs
    properties:
      network_policy_entries_policy_rule_dst_ports_start_port:
        type: string
        description: Start port
        required: false
        status: SUPPORTED
      network_policy_entries_policy_rule_dst_ports_end_port:
        type: string
        description: End port
        required: false
        status: SUPPORTED

org.openecomp.datatypes.heat.contrailV2.network.rule.SrcPortPairs:
    derived_from: tosca.datatypes.Root
    description: source port pairs
    properties:
      network_policy_entries_policy_rule_src_ports_start_port:
        type: string
        description: Start port
        required: false
        status: SUPPORTED
      network_policy_entries_policy_rule_src_ports_end_port:
        type: string
        description: End port
        required: false
        status: SUPPORTED

org.openecomp.datatypes.heat.contrailV2.network.rule.ActionList:
    derived_from: tosca.datatypes.Root
    description: Action List
    properties:
      network_policy_entries_policy_rule_action_list_simple_action:
        type: string
        description: Simple Action
        required: false
        status: SUPPORTED
      network_policy_entries_policy_rule_action_list_apply_service:
        type: list
        description: Apply Service
        required: false
        status: SUPPORTED
        entry_schema:
          type: string

org.openecomp.datatypes.heat.contrailV2.network.rule.Rule:
    derived_from: tosca.datatypes.Root
    description: policy rule
    properties:
      network_policy_entries_policy_rule_dst_addresses:
        type: list
        description: Destination addresses
        required: false
        status: SUPPORTED
        entry_schema:
          type: org.openecomp.datatypes.heat.contrailV2.network.rule.DstVirtualNetwork
      network_policy_entries_policy_rule_dst_ports:
        type: list
        description: Destination ports
        required: false
        status: SUPPORTED
        entry_schema:
          type: org.openecomp.datatypes.heat.contrailV2.network.rule.DstPortPairs
      network_policy_entries_policy_rule_protocol:
        type: string
        description: Protocol
        required: false
        status: SUPPORTED
      network_policy_entries_policy_rule_src_addresses:
        type: list
        description: Source addresses
        required: false
        status: SUPPORTED
        entry_schema:
          type: org.openecomp.datatypes.heat.contrailV2.network.rule.SrcVirtualNetwork
      network_policy_entries_policy_rule_direction:
        type: string
        description: Direction
        required: false
        status: SUPPORTED
      network_policy_entries_policy_rule_src_ports:
        type: list
        description: Source ports
        required: false
        status: SUPPORTED
        entry_schema:
          type: org.openecomp.datatypes.heat.contrailV2.network.rule.SrcPortPairs
      network_policy_entries_policy_rule_action_list:
        type: org.openecomp.datatypes.heat.contrailV2.network.rule.ActionList
        description: Action list
        required: false
        status: SUPPORTED

org.openecomp.datatypes.heat.contrailV2.network.rule.RuleList:
    derived_from: tosca.datatypes.Root
    description: list of policy rules
    properties:
      network_policy_entries_policy_rule:
        type: list
        description: Contrail network rule
        required: false
        status: SUPPORTED
        entry_schema:
          type: org.openecomp.datatypes.heat.contrailV2.network.rule.Rule

org.openecomp.datatypes.heat.network.contrail.port.StaticRoute:
    derived_from: tosca.datatypes.Root
    description: static route
    properties:
      prefix:
        type: string
        description: Route prefix
        required: false
        status: SUPPORTED
      next_hop:
        type: string
        description: Next hop
        required: false
        status: SUPPORTED
      next_hop_type:
        type: string
        description: Next hop type
        required: false
        status: SUPPORTED

org.openecomp.datatypes.heat.network.contrail.AddressPair:
    derived_from: tosca.datatypes.Root
    description: Address Pair
    properties:
      address_mode:
        type: string
        description: Address mode active-active or active-standy
        required: false
        status: SUPPORTED
        constraints:
        - valid_values:
          - active-active
          - active-standby
      prefix:
        type: string
        description: IP address prefix
        required: false
        status: SUPPORTED
      mac_address:
        type: string
        description: Mac address
        required: false
        status: SUPPORTED

org.openecomp.datatypes.heat.network.contrail.InterfaceData:
    derived_from: tosca.datatypes.Root
    description: Interface Data
    properties:
      static_routes:
        type: list
        description: An ordered list of static routes to be added to this interface
        required: false
        status: SUPPORTED
        entry_schema:
          type: org.openecomp.datatypes.heat.network.contrail.port.StaticRoute
      virtual_network:
        type: string
        description: Virtual Network for this interface
        required: true
        status: SUPPORTED
      allowed_address_pairs:
        type: list
        description: List of allowed address pair for this interface
        required: false
        status: SUPPORTED
        entry_schema:
          type: org.openecomp.datatypes.heat.network.contrail.AddressPair
      ip_address:
        type: string
        description: IP for this interface
        required: false
        status: SUPPORTED

org.openecomp.datatypes.heat.contrailV2.virtual.machine.interface.Properties:
    derived_from: tosca.datatypes.Root
    description: Virtual Machine Interface Properties.
    properties:
      virtual_machine_interface_properties_service_interface_type:
        type: string
        description: Service Interface Type.
        required: false
        status: SUPPORTED

org.openecomp.datatypes.Root:
  derived_from: tosca.datatypes.Root
  description: >
    The ECOMP root Data Type all other Data Types derive from
  properties:
    supplemental_data:
      type: map
      entry_schema:
        description: > 
           A placeholder for missing properties that would be included in future ecomp model versions.
           fromat <key>:<value>
        type: string

org.openecomp.datatypes.AssignmentRequirements:
  derived_from: org.openecomp.datatypes.Root
  properties:
    is_required:
      description: |
        "true" indicates that assignment is required
      type: boolean
      default: false
      required: true
    count:
      description: number of assignments required
      type: integer
      required: false    
      
org.openecomp.datatypes.network.SubnetAssignments:
  derived_from: org.openecomp.datatypes.Root
  properties:
    ip_network_address_plan:
      type: string
      required: false
      description: Reference to EIPAM, VLAN or other address plan ID used to assign subnets to this network 
    dhcp_enabled:
      type: boolean
      required: false
      description: \"true\" indicates the network has 1 or more policies
    ip_version:
      type: integer
      constraints:
        - valid_values: [4,6]
      required: true
      description: The IP version of the subnet
    cidr_mask:
      type: integer
      required: true
      description: The default subnet CIDR mask 
    min_subnets_count:
      type: integer
      default: 1
      required: true
      description: Quantity of subnets that must be initially assigned

org.openecomp.datatypes.network.IPv4SubnetAssignments:
  derived_from: org.openecomp.datatypes.network.SubnetAssignments
  properties:
    use_ipv4:
      type: boolean
      required: true
      description: Indicates IPv4 subnet assignments

org.openecomp.datatypes.network.IPv6SubnetAssignments:
  derived_from: org.openecomp.datatypes.network.SubnetAssignments
  properties:
    use_ipv6:
      type: boolean
      required: true
      description: Indicates IPv6 subnet assignments

org.openecomp.datatypes.network.NetworkAssignments:
  derived_from: org.openecomp.datatypes.Root
  properties:
    ecomp_generated_network_assignment:
      type: boolean
      required: true
      default: false
      description: >
        \"true\" indicates that the network assignments will be auto-generated by ECOMP
        \"false\" indicates operator-supplied Network assignments file upload is required (e.g. VID will present prompt to operator to upload operator-supplied Network assignments file).
    is_shared_network:
      type: boolean
      required: true
      description: \"true\" means this network is shared by multiple Openstack tenants
    is_external_network:
      type: boolean
      required: true
      default: false
      description: >
        \"true\" means this Contrail external network
    ipv4_subnet_default_assignment:
      type: org.openecomp.datatypes.network.IPv4SubnetAssignments
      required: true
      description: IPv4 defualt subnet assignments
    ipv6_subnet_default_assignment:
      type: org.openecomp.datatypes.network.IPv6SubnetAssignments
      required: true
      description: IPv6 defualt subnet assignments

org.openecomp.datatypes.network.ProviderNetwork:
  derived_from: org.openecomp.datatypes.Root
  properties:
    is_provider_network:
      type: boolean
      required: true
      description: \"true\" indicates that this a Neutron provider type of network 
    physical_network_name:
      type: string
      required: false
      constraints:
        - valid_values: ["Physnet41", "Physnet42", "Physnet43", "Physnet44", "Physnet21", "Physnet22"]
      description: >
        Identifies the NUMA processor cluster to which this physical network interface belongs.
        NUMA instance correlates to the first digit of the Physical Network Name suffix (e.g. \"01\" = NUMA 0, \"11\" = NUMA 1)
    numa:
      type: string
      required: false
      constraints:
        - valid_values: ["NUMA 0", "NUMA 1"]
      description: >
        PNIC instance within the NUMA processor cluster
        PNIC Instance correlates to the second digit of the Physical Network Name suffix (e.g. "01" = PNIC 1, "02" = "PNIC 2)
    pnic_instance:
      type: integer
      required: false
      description: PNIC instance within the NUMA processor cluster

org.openecomp.datatypes.network.NetworkFlows:
  derived_from: org.openecomp.datatypes.Root
  properties:
    is_network_policy:
      type: boolean
      required: false
      default: false
      description: \"true\" indicates the network has 1 or more policies
    network_policy:
      type: string
      required: false
      description: "Identifies the specific Cloud network policy that must be applied to this network (source: from Policy Manager)."
    is_bound_to_vpn:
      type: boolean
      required: false
      default: false
      description: \"true\" indicates the network has 1 or more vpn bindings
    vpn_binding:
      type: string
      required: false
      description: "Identifies the specific VPN Binding entry in A&AI that must be applied when creating this network (source: A&AI)"

org.openecomp.datatypes.network.VlanRequirements:
  derived_from: org.openecomp.datatypes.Root
  properties:
    vlan_range_plan:
      type: string
      required: true
      description: reference to a vlan range plan
    vlan_type:
      type: string
      required: true
      constraints:
        - valid_values: ["c-tag", "s-tag"]
      description: identifies the vlan type (e.g., c-tag)
    vlan_count:
      type: integer
      required: true
      description: identifies the number of vlan tags to assign to the CP from the plan

org.openecomp.datatypes.network.IpRequirements:
  derived_from: org.openecomp.datatypes.Root
  properties:
    ip_version:
      type: integer
      required: true
      constraints:
        - valid_values:
          - 4
          - 6
    ip_count:
      description: identifies the number of ip address to assign to the CP from the plan
      type: integer
      required: false
    floating_ip_count:
      type: integer
      required: false
    subnet_role:
      type: string
      required: false
    assingment_method:
      type: string
      required: true
      constraints:
        - valid_values:
          - fixed
          - dhcp
    dhcp_enabled:
      type: boolean
      required: false
    ip_count_required:
      description: identifies the number of ip address to assign to the CP from the plan
      type: org.openecomp.datatypes.AssignmentRequirements
      required: false
    floating_ip_count_required:
      type: org.openecomp.datatypes.AssignmentRequirements
      required: false 

org.openecomp.datatypes.network.MacAssignments:
  derived_from: org.openecomp.datatypes.Root
  properties:
    mac_range_plan:
      type: string
      required: true
      description: reference to a MAC address range plan
    mac_count:
      type: integer
      required: true
      description: identifies the number of MAC addresses to assign to the CP from the plan

org.openecomp.datatypes.EcompHoming:
  derived_from: org.openecomp.datatypes.Root
  properties:
    ecomp_selected_instance_node_target:
      type: boolean
      required: true
      default: false
      description: >
        \"true\" indicates that the target deployment node for this instance will be auto-selected by ECOMP
        \"false\" indicates operator-supplied instance target deployment node required (e.g. VID will present a prompt to operator and collect the
        operator-selected target node for the deployment of this Network instance).
    homing_policy:
      type: string
      required: false
      description: Referenc to a service level homing policy that ECOMP will use for instance deployment target node
    instance_node_target:
      type: string
      required: false
      description: Instance target deployment node

org.openecomp.datatypes.EcompNaming:
  derived_from: org.openecomp.datatypes.Root
  properties:
    ecomp_generated_naming:
      type: boolean
      required: true
      default: true
      description: >
        \"true\" indicates that the name for the instance will be auto-generated by ECOMP.
        \"false\" indicates operator-supplied name required (e.g. VID will present prompt to operator and collect the operator-supplied instance name).
    naming_policy:
      type: string
      required: false
      description: Referenc to naming policy that ECOMP will use when the name is auto-generated

org.openecomp.datatypes.network.MacRequirements:
  derived_from: org.openecomp.datatypes.Root
  properties:
    mac_range_plan:
      description: reference to a MAC address range plan
      type: string
      required: false
    mac_count:
      description: identifies the number of MAC addresses to assign to the CP from the plan
      type: integer
      required: false
    mac_count_required:
      description: identifies the number of MAC addresses to assign to the CP from the plan
      type: org.openecomp.datatypes.AssignmentRequirements

org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairIp:
  derived_from: tosca.datatypes.Root
  description: Virtual Machine Sub Interface Address Pair IP.
  properties:
    ip_prefix:
      type: string
      description: IP Prefix.
      required: false
      status: SUPPORTED
    ip_prefix_len:
      type: integer
      description: IP Prefix Len.
      required: false
      status: SUPPORTED

org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.MacAddress:
  derived_from: tosca.datatypes.Root
  description: Virtual Machine Sub Interface Mac Address.
  properties:
    mac_address:
      type: list
      description: Mac Addresses List.
      required: false
      status: SUPPORTED
      entry_schema:
        type: string

org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.Properties:
  derived_from: tosca.datatypes.Root
  description: Virtual Machine Sub Interface VLAN Properties.
  properties:
    sub_interface_vlan_tag:
      type: string
      description: Sub Interface VLAN Tag.
      required: false
      status: SUPPORTED

org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPair:
  derived_from: tosca.datatypes.Root
  description: Virtual Machine Sub Interface Address Pair.
  properties:
    address_mode:
      type: string
      description: Address Mode.
      required: false
      status: SUPPORTED
    ip:
      type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairIp
      description: IP.
      required: false
      status: SUPPORTED
    mac:
      type: string
      description: Mac.
      required: false
      status: SUPPORTED

org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs:
  derived_from: tosca.datatypes.Root
  description: Virtual Machine Sub Interface Address Pairs.
  properties:
    allowed_address_pair:
      type: list
      description: Addresses pair List.
      required: false
      status: SUPPORTED
      entry_schema:
        type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPair

org.openecomp.datatypes.Naming:
  derived_from: org.openecomp.datatypes.Root
  properties:
      ecomp_generated_naming:
        description: |
          "true" indicates that the name for the instance will be auto-generated by ECOMP. "false" indicates operator-supplied name required (e.g. VID will present prompt to operator and collect the operator-supplied instance name).
        type: boolean
        default: true
        required: true
      naming_policy:
        description: Reference to naming policy that ECOMP will use when the name is auto-generated
        type: string
        required: false
      instance_name:
        description: indicates operator-supplied name required (e.g. VID will present prompt to operator and collect the operator-supplied instance name).
        type: string
        required: false