description: examples/scale_map_hot.yaml
heat_template_version: '2014-10-16'
resources:
  ComputeUser:
    properties:
      Policies:
      - get_param: ComputeAccessPolicy
    type: AWS::IAM::User
  GlobalAccessPolicy:
    type: OS::Heat::AccessPolicy
  NovaCompute0:
    metadata:
      os-collect-config:
        cfn:
          access_key_id:
            get_resource: NovaCompute0Key
          path: NovaCompute0Config.Metadata
          secret_access_key:
            get_attr:
            - NovaCompute0Key
            - SecretAccessKey
          stack_name:
            get_param: AWS::StackName
    properties:
      image:
        get_param: ComputeImage
    type: OS::Nova::Server
  NovaCompute0CompletionCondition:
    depends_on: notcompute
    properties:
      Count: '1'
      Handle:
        get_resource: NovaCompute0CompletionHandle
      Timeout: '1800'
    type: AWS::CloudFormation::WaitCondition
  NovaCompute0CompletionHandle:
    type: AWS::CloudFormation::WaitConditionHandle
  NovaCompute0Config:
    metadata:
      completion-handle:
        get_resource: NovaCompute0CompletionHandle
      hosts:
        list_join:
        - '

          '
        - - list_join:
            - ' '
            - - get_attr:
                - NovaCompute0
                - networks
                - ctlplane
                - 0
              - get_attr:
                - NovaCompute0
                - show
                - name
              - list_join:
                - .
                - - get_attr:
                    - NovaCompute0
                    - show
                    - name
                  - local
          - list_join:
            - ' '
            - - get_attr:
                - NovaCompute1
                - networks
                - ctlplane
                - 0
              - get_attr:
                - NovaCompute1
                - show
                - name
              - list_join:
                - .
                - - get_attr:
                    - NovaCompute1
                    - show
                    - name
                  - local
          - list_join:
            - ' '
            - - get_attr:
                - NovaCompute2
                - networks
                - ctlplane
                - 0
              - get_attr:
                - NovaCompute2
                - show
                - name
              - list_join:
                - .
                - - get_attr:
                    - NovaCompute2
                    - show
                    - name
                  - local
      os-collect-config:
        cfn:
          access_key_id:
            get_resource: NovaCompute0Key
          path: NovaCompute0Config.Metadata
          secret_access_key:
            get_attr:
            - NovaCompute0Key
            - SecretAccessKey
          stack_name:
            get_param: AWS::StackName
    type: AWS::AutoScaling::LaunchConfiguration
  NovaCompute0Key:
    properties:
      UserName:
        get_param: ComputeUser
    type: AWS::IAM::AccessKey
  NovaCompute1:
    metadata:
      os-collect-config:
        cfn:
          access_key_id:
            get_resource: NovaCompute1Key
          path: NovaCompute1Config.Metadata
          secret_access_key:
            get_attr:
            - NovaCompute1Key
            - SecretAccessKey
          stack_name:
            get_param: AWS::StackName
    properties:
      image:
        get_param: ComputeImage
    type: OS::Nova::Server
  NovaCompute1CompletionCondition:
    depends_on: notcompute
    properties:
      Count: '1'
      Handle:
        get_resource: NovaCompute1CompletionHandle
      Timeout: '1800'
    type: AWS::CloudFormation::WaitCondition
  NovaCompute1CompletionHandle:
    type: AWS::CloudFormation::WaitConditionHandle
  NovaCompute1Config:
    metadata:
      completion-handle:
        get_resource: NovaCompute1CompletionHandle
      hosts:
        list_join:
        - '

          '
        - - list_join:
            - ' '
            - - get_attr:
                - NovaCompute0
                - networks
                - ctlplane
                - 0
              - get_attr:
                - NovaCompute0
                - show
                - name
              - list_join:
                - .
                - - get_attr:
                    - NovaCompute0
                    - show
                    - name
                  - local
          - list_join:
            - ' '
            - - get_attr:
                - NovaCompute1
                - networks
                - ctlplane
                - 0
              - get_attr:
                - NovaCompute1
                - show
                - name
              - list_join:
                - .
                - - get_attr:
                    - NovaCompute1
                    - show
                    - name
                  - local
          - list_join:
            - ' '
            - - get_attr:
                - NovaCompute2
                - networks
                - ctlplane
                - 0
              - get_attr:
                - NovaCompute2
                - show
                - name
              - list_join:
                - .
                - - get_attr:
                    - NovaCompute2
                    - show
                    - name
                  - local
      os-collect-config:
        cfn:
          access_key_id:
            get_resource: NovaCompute1Key
          path: NovaCompute1Config.Metadata
          secret_access_key:
            get_attr:
            - NovaCompute1Key
            - SecretAccessKey
          stack_name:
            get_param: AWS::StackName
    type: AWS::AutoScaling::LaunchConfiguration
  NovaCompute1Key:
    properties:
      UserName:
        get_param: ComputeUser
    type: AWS::IAM::AccessKey
  NovaCompute2:
    metadata:
      os-collect-config:
        cfn:
          access_key_id:
            get_resource: NovaCompute2Key
          path: NovaCompute2Config.Metadata
          secret_access_key:
            get_attr:
            - NovaCompute2Key
            - SecretAccessKey
          stack_name:
            get_param: AWS::StackName
    properties:
      image:
        get_param: ComputeImage
    type: OS::Nova::Server
  NovaCompute2CompletionCondition:
    depends_on: notcompute
    properties:
      Count: '1'
      Handle:
        get_resource: NovaCompute2CompletionHandle
      Timeout: '1800'
    type: AWS::CloudFormation::WaitCondition
  NovaCompute2CompletionHandle:
    type: AWS::CloudFormation::WaitConditionHandle
  NovaCompute2Config:
    metadata:
      completion-handle:
        get_resource: NovaCompute2CompletionHandle
      hosts:
        list_join:
        - '

          '
        - - list_join:
            - ' '
            - - get_attr:
                - NovaCompute0
                - networks
                - ctlplane
                - 0
              - get_attr:
                - NovaCompute0
                - show
                - name
              - list_join:
                - .
                - - get_attr:
                    - NovaCompute0
                    - show
                    - name
                  - local
          - list_join:
            - ' '
            - - get_attr:
                - NovaCompute1
                - networks
                - ctlplane
                - 0
              - get_attr:
                - NovaCompute1
                - show
                - name
              - list_join:
                - .
                - - get_attr:
                    - NovaCompute1
                    - show
                    - name
                  - local
          - list_join:
            - ' '
            - - get_attr:
                - NovaCompute2
                - networks
                - ctlplane
                - 0
              - get_attr:
                - NovaCompute2
                - show
                - name
              - list_join:
                - .
                - - get_attr:
                    - NovaCompute2
                    - show
                    - name
                  - local
      os-collect-config:
        cfn:
          access_key_id:
            get_resource: NovaCompute2Key
          path: NovaCompute2Config.Metadata
          secret_access_key:
            get_attr:
            - NovaCompute2Key
            - SecretAccessKey
          stack_name:
            get_param: AWS::StackName
    type: AWS::AutoScaling::LaunchConfiguration
  NovaCompute2Key:
    properties:
      UserName:
        get_param: ComputeUser
    type: AWS::IAM::AccessKey
