# Copyright (c) 2016-2017 Dell Inc, or its subsidiaries.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
heat_template_version: pike

description: >
  Openstack Cinder Dell EMC ScaleIO backend

parameters:
  CinderEnableScaleIOBackend:
    type: boolean
    default: true
  CinderScaleIOBackendName:
    type: string
    default: 'tripleo_scaleio'
  CinderScaleIOSanIp:
    type: string
    default: ''
  CinderScaleIOSanLogin:
    type: string
    default: ''
  CinderScaleIOSanPassword:
    type: string
    default: ''
    hidden: true
  CinderScaleIORestServerPort:
    type: number
    default: 443
  CinderScaleIOVerifyServerCertificate:
    type: boolean
    default: false
  CinderScaleIOServerCertificatePath:
    type: string
    default: ''
  CinderScaleIOProtectionDomainId:
    type: string
    default: ''
  CinderScaleIOProtectionDomainName:
    type: string
    default: ''
  CinderScaleIOStoragePoolId:
    type: string
    default: ''
  CinderScaleIOStoragePoolName:
    type: string
    default: ''
  CinderScaleIOStoragePools:
    type: string
    default: ''
  CinderScaleIORoundVolumeCapacity:
    type: boolean
    default: true
  CinderScaleIOUnmapVolumeBeforeDeletion:
    type: boolean
    default: false
  CinderScaleIOMaxOverSubscriptionRatio:
    type: string
    default: ''
  CinderScaleIOSanThinProvision:
    type: boolean
    default: true
  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: {}
    type: json
    description: Mapping of service endpoint -> protocol. Typically set
                 via parameter_defaults in the resource registry.

outputs:
  role_data:
    description: Role data for the Cinder Dell EMC ScaleIO backend.
    value:
      service_name: cinder_backend_scaleio
      config_settings:
        tripleo::profile::base::cinder::volume::cinder_enable_scaleio_backend: {get_param: CinderEnableScaleIOBackend}
        cinder::backend::scaleio::volume_backend_name: {get_param: CinderScaleIOBackendName}
        cinder::backend::scaleio::sio_login: {get_param: CinderScaleIOSanLogin}
        cinder::backend::scaleio::sio_password: {get_param: CinderScaleIOSanPassword}
        cinder::backend::scaleio::sio_server_hostname: {get_param: CinderScaleIOSanIp}
        cinder::backend::scaleio::sio_server_port: {get_param: CinderScaleIORestServerPort}
        cinder::backend::scaleio::sio_verify_server_certificate: {get_param: CinderScaleIOVerifyServerCertificate}
        cinder::backend::scaleio::sio_server_certificate_path: {get_param: CinderScaleIOServerCertificatePath}
        cinder::backend::scaleio::sio_protection_domain_name: {get_param: CinderScaleIOProtectionDomainName}
        cinder::backend::scaleio::sio_protection_domain_id: {get_param: CinderScaleIOProtectionDomainId}
        cinder::backend::scaleio::sio_storage_pool_id: {get_param: CinderScaleIOStoragePoolId}
        cinder::backend::scaleio::sio_storage_pool_name: {get_param: CinderScaleIOStoragePoolName}
        cinder::backend::scaleio::sio_storage_pools: {get_param: CinderScaleIOStoragePools}
        cinder::backend::scaleio::sio_round_volume_capacity: {get_param: CinderScaleIORoundVolumeCapacity}
        cinder::backend::scaleio::sio_unmap_volume_before_deletion: {get_param: CinderScaleIOUnmapVolumeBeforeDeletion}
        cinder::backend::scaleio::sio_max_over_subscription_ratio: {get_param: CinderScaleIOMaxOverSubscriptionRatio}
        cinder::backend::scaleio::sio_thin_provision: {get_param: CinderScaleIOSanThinProvision}
