heat_template_version: 2013-05-23
description: 'Common Block Storage Configuration'
parameters:
  BlockStorageImage:
    type: string
    default: overcloud-cinder-volume
  OvercloudBlockStorageFlavor:
    description: Flavor for block storage nodes to request when deploying.
    type: string
    constraints:
      - custom_constraint: nova.flavor
  BlockStorageExtraConfig:
    default: {}
    description: |
      Controller specific configuration to inject into the cluster. Same
      structure as ExtraConfig.
    type: json
resources:
  BlockStorage0:
    type: OS::Nova::Server
    properties:
      image:
        {get_param: BlockStorageImage}
      flavor: {get_param: OvercloudBlockStorageFlavor}
      key_name: {get_param: KeyName}
      user_data_format: SOFTWARE_CONFIG
  BlockStorage0AllNodesDeployment:
    depends_on: [BlockStorage0Deployment,BlockStorage0PassthroughSpecific]
    type: OS::Heat::StructuredDeployment
    properties:
      signal_transport: {get_param: DefaultSignalTransport}
      config: {get_resource: allNodesConfig}
      server: {get_resource: BlockStorage0}
  BlockStorage0Deployment:
    type: OS::Heat::StructuredDeployment
    properties:
      server: {get_resource: BlockStorage0}
      config: {get_resource: BlockStorageConfig}
      input_values:
        controller_virtual_ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
        cinder_dsn: {"Fn::Join": ['', ['mysql://cinder:unset@', {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} , '/cinder']]}
      signal_transport: NO_SIGNAL
  BlockStorage0Passthrough:
    type: OS::Heat::StructuredDeployment
    properties:
      config: {get_resource: BlockStoragePassthrough}
      server: {get_resource: BlockStorage0}
      signal_transport: NO_SIGNAL
      input_values:
        passthrough_config: {get_param: ExtraConfig}
  BlockStorage0PassthroughSpecific:
    depends_on: [BlockStorage0Passthrough]
    type: OS::Heat::StructuredDeployment
    properties:
      config: {get_resource: BlockStoragePassthroughSpecific}
      server: {get_resource: BlockStorage0}
      signal_transport: NO_SIGNAL
      input_values:
        passthrough_config_specific: {get_param: BlockStorageExtraConfig}
  BlockStorageConfig:
    type: OS::Heat::StructuredConfig
    properties:
      group: os-apply-config
      config:
        admin-password: {get_param: AdminPassword}
        keystone:
          host: {get_input: controller_virtual_ip}
        cinder:
          db: {get_input: cinder_dsn}
          volume_size_mb:
            get_param: CinderLVMLoopDeviceSize
          service-password:
            get_param: CinderPassword
          iscsi-helper:
            get_param: CinderISCSIHelper
        rabbit:
          host: {get_input: controller_virtual_ip}
          username: {get_param: RabbitUserName}
          password: {get_param: RabbitPassword}
        glance:
          host: {get_input: controller_virtual_ip}
          port: {get_param: GlancePort}
  BlockStoragePassthrough:
    type: OS::Heat::StructuredConfig
    properties:
      group: os-apply-config
      config: {get_input: passthrough_config}
  BlockStoragePassthroughSpecific:
    type: OS::Heat::StructuredConfig
    properties:
      group: os-apply-config
      config: {get_input: passthrough_config_specific}
