heat_template_version: 2015-04-30

description: HOT creates Nimbus MSP VMT stack under MobiSupport Tenant

parameters:
  vmt_name_0:
    type: string
    label: MSP VMT server names
    description: name of the MSP VMT instances
#  vmt_image_name:
#    type: string
#    label: MSP VMT image name
#    description: MSP VMT image name
  vmt_flavor_name:
    type: string
    label: MSP VMT flavor name
    description: MSP VMT flavor name
#  availability_zone_0:
#    type: string
#    label: MSP VMT availability zones
#    description: MSP VMT availability zones
  sec_grp_msp_id:
    type: string
    label: security group id
    description: the id of security group
  vmt_oam_protected_ip_0:
    type: string
    label: MSP VMT OAM IP Addresses
    description: MSP VMT OAM IP Addresses
  oam_protected_net_name:
    type: string
    label: MSP VMT OAM net name
    description: MSP VMT OAM net name
  vmt_block_device_names:
    type: comma_delimited_list
    label: MSP VMT Block Device Names
    description: MSP VMT Block Device Names
  vmt_volume_name_0:
    type: string
    label: Mobisupport MSP VMT Cinder Volume names
    description: Mobisupport MSP VMT Cinder Volume names
  vmt_volume_name_1:
    type: string
    label: Mobisupport MSP VMT Cinder Volume names
    description: Mobisupport MSP VMT Cinder Volume names
  vmt_volume_size_0:
    type: number
    label: Mobisupport MSP VMT Cinder Volume sizes
    description: Mobisupport MSP VMT Cinder Volume sizes
  vmt_volume_size_1:
    type: number
    label: Mobisupport MSP VMT Cinder Volume sizes
    description: Mobisupport MSP VMT Cinder Volume sizes
  vmt_volume_image_name_0:
    type: string
    label: Mobisupport MSP VMT VDA Cinder Volume image name
    description: Mobisupport MSP VMT VDA Cinder Volume image name
  vmt_volume_image_name_1:
    type: string
    label: Mobisupport MSP VMT VDB Cinder Volume image name
    description: Mobisupport MSP VMT VDB Cinder Volume image name
  cinder_delete_on_termination_true:
    type: boolean
    description: delete cinder volume upon instances termination
  cinder_delete_on_termination_false:
    type: boolean
    description: keep cinder volume upon instances termination
  vnf_id:
    type: string
    label: MSP VMT VNF ID
    description: MSP VMT VNF ID
  vf_module_id:
    type: string
    description:  Unique ID for this VF Module instance

resources:
################ Cinder Volumes ##############################
  vmt_volume_0:
    type: OS::Cinder::Volume
    properties:
      name: {get_param: vmt_volume_name_0}
      size: {get_param: vmt_volume_size_0}
      image: {get_param: vmt_volume_image_name_0}

  vmt_volume_1:
    type: OS::Cinder::Volume
    properties:
      name: {get_param: vmt_volume_name_1}
      size: {get_param: vmt_volume_size_1}
      image: {get_param: vmt_volume_image_name_1}

################ Ports ##############################
  vmt_oam_protected_0_port:
    type: OS::Neutron::Port
    properties:
      network: {get_param: oam_protected_net_name}
      fixed_ips: [{"ip_address": {get_param: vmt_oam_protected_ip_0}}]
      security_groups: [{get_param: sec_grp_msp_id}]
      replacement_policy: AUTO

################### Servers #########################
  vmt_zrdm5bpxmc02vmt_0:
    type: OS::Nova::Server
    properties:
      name: {get_param: vmt_name_0}
#      image: {get_param:  vmt_image_name}
      flavor: {get_param: vmt_flavor_name}
#      availability_zone: {get_param: availability_zone_0}
      block_device_mapping_v2: 
        - device_name: {get_param: [vmt_block_device_names, 0]}
          volume_id: {get_resource: vmt_volume_0}
          delete_on_termination: {get_param: cinder_delete_on_termination_true}
          boot_index: 0
        - device_name: {get_param: [vmt_block_device_names, 1]}
          volume_id: {get_resource: vmt_volume_1}
          delete_on_termination: {get_param: cinder_delete_on_termination_true}
          boot_index: -1
      networks:
        - port: {get_resource: vmt_oam_protected_0_port}
      config_drive: "True"
      user_data_format: RAW
      user_data:
        get_file: user_data_zrdm5bpxmc02vmt001.txt

      metadata:
        vnf_id: {get_param: vnf_id}
        vf_module_id {get_param: vf_module_id}
        "evacuation_policy": "Evacuation"