heat_template_version: rocky

description: Openstack Cinder Netapp backend

parameters:
  ServiceData:
    default: {}
    description: Dictionary packing service data
    type: json
  ServiceNetMap:
    default: {}
    description: Mapping of service_name -> network name. Typically set
                 via parameter_defaults in the resource registry.  This
                 mapping overrides those in ServiceNetMapDefaults.
    type: json
  DefaultPasswords:
    default: {}
    type: json
  RoleName:
    default: ''
    description: Role name on which the service is applied
    type: string
  RoleParameters:
    default: {}
    description: Parameters specific to the role
    type: json
  EndpointMap:
    default: {}
    description: Mapping of service endpoint -> protocol. Typically set
                 via parameter_defaults in the resource registry.
    type: json
  CinderEnableNetappBackend:
    type: boolean
    default: true
  CinderNetappBackendName:
    type: string
    default: 'tripleo_netapp'
  CinderNetappAvailabilityZone:
    default: ''
    description: >
      The availability zone of the NetApp Cinder backend.
      When set, it overrides the default CinderStorageAvailabilityZone.
    type: string
  CinderNetappLogin:
    type: string
  CinderNetappPassword:
    type: string
    hidden: true
  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: ''
    hidden: true
  CinderNetappPoolNameSearchPattern:
    default: '(.+)'
    description: >
      Regular expression that will be applied to the names of FlexVol volumes
      in the Netapp backend that represent pools in Cinder. It may be used
      to restrict provisioning to the specified FlexVol volumes.
    type: string
  CinderNetappHostType:
    type: string
    default: ''
  CinderNetappWebservicePath:
    type: string
    default: '/devmgr/v2'
  CinderNetappNasSecureFileOperations:
    type: string
    default: 'false'
  CinderNetappNasSecureFilePermissions:
    type: string
    default: 'false'
  # DEPRECATED options for compatibility with older versions
  CinderNetappStoragePools:
    type: string
    default: ''

outputs:
  role_data:
    description: Role data for the Cinder NetApp backend.
    value:
      service_name: cinder_backend_netapp
      config_settings:
        map_merge:
          - tripleo::profile::base::cinder::volume::cinder_enable_netapp_backend: {get_param: CinderEnableNetappBackend}
            cinder::backend::netapp::volume_backend_name: {get_param: CinderNetappBackendName}
            cinder::backend::netapp::netapp_login: {get_param: CinderNetappLogin}
            cinder::backend::netapp::netapp_password: {get_param: CinderNetappPassword}
            cinder::backend::netapp::netapp_server_hostname: {get_param: CinderNetappServerHostname}
            cinder::backend::netapp::netapp_server_port: {get_param: CinderNetappServerPort}
            cinder::backend::netapp::netapp_size_multiplier: {get_param: CinderNetappSizeMultiplier}
            cinder::backend::netapp::netapp_storage_family: {get_param: CinderNetappStorageFamily}
            cinder::backend::netapp::netapp_storage_protocol: {get_param: CinderNetappStorageProtocol}
            cinder::backend::netapp::netapp_transport_type: {get_param: CinderNetappTransportType}
            cinder::backend::netapp::netapp_vfiler: {get_param: CinderNetappVfiler}
            cinder::backend::netapp::netapp_volume_list: {get_param: CinderNetappVolumeList}
            cinder::backend::netapp::netapp_vserver: {get_param: CinderNetappVserver}
            cinder::backend::netapp::netapp_partner_backend_name: {get_param: CinderNetappPartnerBackendName}
            cinder::backend::netapp::nfs_shares: {get_param: CinderNetappNfsShares}
            cinder::backend::netapp::nfs_shares_config: {get_param: CinderNetappNfsSharesConfig}
            cinder::backend::netapp::nfs_mount_options: {get_param: CinderNetappNfsMountOptions}
            cinder::backend::netapp::netapp_copyoffload_tool_path: {get_param: CinderNetappCopyOffloadToolPath}
            cinder::backend::netapp::netapp_controller_ips: {get_param: CinderNetappControllerIps}
            cinder::backend::netapp::netapp_sa_password: {get_param: CinderNetappSaPassword}
            cinder::backend::netapp::netapp_host_type: {get_param: CinderNetappHostType}
            cinder::backend::netapp::netapp_webservice_path: {get_param: CinderNetappWebservicePath}
            cinder::backend::netapp::nas_secure_file_operations: {get_param: CinderNetappNasSecureFileOperations}
            cinder::backend::netapp::nas_secure_file_permissions: {get_param: CinderNetappNasSecureFilePermissions}
            cinder::backend::netapp::netapp_pool_name_search_pattern: {get_param: CinderNetappPoolNameSearchPattern}
          -
            if:
            - {equals : [{get_param: CinderNetappAvailabilityZone}, '']}
            - {}
            - cinder::backend::netapp::backend_availability_zone: {get_param: CinderNetappAvailabilityZone}
