heat_template_version: 2015-04-30

description: Configure hieradata for Cinder Netapp configuration

parameters:
  server:
    description: ID of the controller node to apply this config to
    type: string

  # Config specific parameters, to be provided via parameter_defaults
  CinderEnableNetappBackend:
    type: boolean
    default: true
  CinderNetappBackendName:
    type: string
    default: 'tripleo_netapp'
  CinderNetappLogin:
    type: string
  CinderNetappPassword:
    type: string
  CinderNetappServerHostname:
    type: string
  CinderNetappServerPort:
    type: string
    default: '80'
  CinderNetappSizeMultiplier:
    type: string
    default: '1.2'
  CinderNetappStorageFamily:
    type: string
    default: 'ontap_cluster'
  CinderNetappStorageProtocol:
    type: string
    default: 'nfs'
  CinderNetappTransportType:
    type: string
    default: 'http'
  CinderNetappVfiler:
    type: string
    default: ''
  CinderNetappVolumeList:
    type: string
    default: ''
  CinderNetappVserver:
    type: string
    default: ''
  CinderNetappPartnerBackendName:
    type: string
    default: ''
  CinderNetappNfsShares:
    type: string
    default: ''
  CinderNetappNfsSharesConfig:
    type: string
    default: '/etc/cinder/shares.conf'
  CinderNetappNfsMountOptions:
    type: string
    default: ''
  CinderNetappCopyOffloadToolPath:
    type: string
    default: ''
  CinderNetappControllerIps:
    type: string
    default: ''
  CinderNetappSaPassword:
    type: string
    default: ''
  CinderNetappStoragePools:
    type: string
    default: ''
  CinderNetappEseriesHostType:
    type: string
    default: 'linux_dm_mp'
  CinderNetappWebservicePath:
    type: string
    default: '/devmgr/v2'

resources:
  CinderNetappConfig:
    type: OS::Heat::StructuredConfig
    properties:
      group: os-apply-config
      config:
        hiera:
          datafiles:
            cinder_netapp_data:
              mapped_data:
                cinder_enable_netapp_backend: {get_input: EnableNetappBackend}
                cinder::backend::netapp::title: {get_input: NetappBackendName}
                cinder::backend::netapp::netapp_login: {get_input: NetappLogin}
                cinder::backend::netapp::netapp_password: {get_input: NetappPassword}
                cinder::backend::netapp::netapp_server_hostname: {get_input: NetappServerHostname}
                cinder::backend::netapp::netapp_server_port: {get_input: NetappServerPort}
                cinder::backend::netapp::netapp_size_multiplier: {get_input: NetappSizeMultiplier}
                cinder::backend::netapp::netapp_storage_family: {get_input: NetappStorageFamily}
                cinder::backend::netapp::netapp_storage_protocol: {get_input: NetappStorageProtocol}
                cinder::backend::netapp::netapp_transport_type: {get_input: NetappTransportType}
                cinder::backend::netapp::netapp_vfiler: {get_input: NetappVfiler}
                cinder::backend::netapp::netapp_volume_list: {get_input: NetappVolumeList}
                cinder::backend::netapp::netapp_vserver: {get_input: NetappVserver}
                cinder::backend::netapp::netapp_partner_backend_name: {get_input: NetappPartnerBackendName}
                cinder::backend::netapp::nfs_shares: {get_input: NetappNfsShares}
                cinder::backend::netapp::nfs_shares_config: {get_input: NetappNfsSharesConfig}
                cinder::backend::netapp::nfs_mount_options: {get_input: NetappNfsMountOptions}
                cinder::backend::netapp::netapp_copyoffload_tool_path: {get_input: NetappCopyOffloadToolPath}
                cinder::backend::netapp::netapp_controller_ips: {get_input: NetappControllerIps}
                cinder::backend::netapp::netapp_sa_password: {get_input: NetappSaPassword}
                cinder::backend::netapp::netapp_storage_pools: {get_input: NetappStoragePools}
                cinder::backend::netapp::netapp_eseries_host_type: {get_input: NetappEseriesHostType}
                cinder::backend::netapp::netapp_webservice_path: {get_input: NetappWebservicePath}

  CinderNetappDeployment:
    type: OS::Heat::StructuredDeployment
    properties:
      config: {get_resource: CinderNetappConfig}
      server: {get_param: server}
      input_values:
        EnableNetappBackend: {get_param: CinderEnableNetappBackend}
        NetappBackendName: {get_param: CinderNetappBackendName}
        NetappLogin: {get_param: CinderNetappLogin}
        NetappPassword: {get_param: CinderNetappPassword}
        NetappServerHostname: {get_param: CinderNetappServerHostname}
        NetappServerPort: {get_param: CinderNetappServerPort}
        NetappSizeMultiplier: {get_param: CinderNetappSizeMultiplier}
        NetappStorageFamily: {get_param: CinderNetappStorageFamily}
        NetappStorageProtocol: {get_param: CinderNetappStorageProtocol}
        NetappTransportType: {get_param: CinderNetappTransportType}
        NetappVfiler: {get_param: CinderNetappVfiler}
        NetappVolumeList: {get_param: CinderNetappVolumeList}
        NetappVserver: {get_param: CinderNetappVserver}
        NetappPartnerBackendName: {get_param: CinderNetappPartnerBackendName}
        NetappNfsShares: {get_param: CinderNetappNfsShares}
        NetappNfsSharesConfig: {get_param: CinderNetappNfsSharesConfig}
        NetappNfsMountOptions: {get_param: CinderNetappNfsMountOptions}
        NetappCopyOffloadToolPath: {get_param: CinderNetappCopyOffloadToolPath}
        NetappControllerIps: {get_param: CinderNetappControllerIps}
        NetappSaPassword: {get_param: CinderNetappSaPassword}
        NetappStoragePools: {get_param: CinderNetappStoragePools}
        NetappEseriesHostType: {get_param: CinderNetappEseriesHostType}
        NetappWebservicePath: {get_param: CinderNetappWebservicePath}

outputs:
  deploy_stdout:
    description: Deployment reference, used to trigger puppet apply on changes
    value: {get_attr: [CinderNetappDeployment, deploy_stdout]}