heat_template_version: pike

description: >
  This is a template which will fetch the ssh host public key.

parameters:
  server:
    description: ID of the node to apply this config to
    type: string
  deployment_actions:
    default: ['CREATE', 'UPDATE']
    type: comma_delimited_list
    description: >
      List of stack actions that will trigger any deployments in this
      templates. The actions will be an empty list of the server is in the
      toplevel DeploymentServerBlacklist parameter's value.

resources:
  SshHostPubKeyConfig:
    type: OS::Heat::SoftwareConfig
    properties:
      group: script
      outputs:
      - name: rsa
      - name: ecdsa
      - name: ed25519
      config: |
        #!/bin/sh -x
        test -e '/etc/ssh/ssh_host_rsa_key.pub' && cat /etc/ssh/ssh_host_rsa_key.pub > $heat_outputs_path.rsa
        test -e '/etc/ssh/ssh_host_ecdsa_key.pub' && cat /etc/ssh/ssh_host_ecdsa_key.pub > $heat_outputs_path.ecdsa
        test -e '/etc/ssh/ssh_host_ed25519_key.pub' && cat /etc/ssh/ssh_host_ed25519_key.pub > $heat_outputs_path.ed25519

  SshHostPubKeyDeployment:
    type: OS::Heat::SoftwareDeployment
    properties:
      config: {get_resource: SshHostPubKeyConfig}
      server: {get_param: server}
      actions: {get_param: deployment_actions}
      name: SshHostPubKeyDeployment


outputs:
  ecdsa:
    description: Host ssh public key (ecdsa)
    value:  {get_attr: [SshHostPubKeyDeployment, ecdsa]}
  rsa:
    description: Host ssh public key (rsa)
    value:  {get_attr: [SshHostPubKeyDeployment, rsa]}
  ed25519:
    description: Host ssh public key (ed25519)
    value:  {get_attr: [SshHostPubKeyDeployment, ed25519]}
