heat_template_version: wallaby

description: >
  Configure libvirt-guests

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
  EndpointMap:
    default: {}
    description: Mapping of service endpoint -> protocol. Typically set
                 via parameter_defaults in the resource registry.
    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
  ContainerNovaLibvirtConfigImage:
    description: The container image to use for the nova_libvirt config_volume
    type: string
  NovaResumeGuestsStateOnHostBoot:
    default: false
    description: Whether to start running instance on compute host reboot
    type: boolean
    tags:
      - role_specific
  NovaResumeGuestsShutdownTimeout:
    default: 300
    description: Number of seconds we're willing to wait for a guest to
                 shut down. If this is 0, then there is no time out (use
                 with caution, as guests might not respond to a shutdown
                 request). The default value is 300 seconds (5 minutes).
    type: string
    tags:
      - role_specific

resources:
  RoleParametersValue:
    type: OS::Heat::Value
    properties:
      type: json
      value:
        map_replace:
          - map_replace:
            - tripleo::profile::base::nova::compute::libvirt_guests::enabled: NovaResumeGuestsStateOnHostBoot
              nova::compute::libvirt_guests::shutdown_timeout: NovaResumeGuestsShutdownTimeout
            - values: {get_param: [RoleParameters]}
          - values:
              NovaResumeGuestsStateOnHostBoot: {get_param: NovaResumeGuestsStateOnHostBoot}
              NovaResumeGuestsShutdownTimeout: {get_param: NovaResumeGuestsShutdownTimeout}

outputs:
  role_data:
    description: Role data for libvirt-guests
    value:
      service_name: nova_libvirt_guests
      config_settings: {get_attr: [RoleParametersValue, value]}
      puppet_config:
        config_volume: nova_libvirt
        puppet_tags: libvirtd_config,nova_config,file,libvirt_tls_password
        step_config: |
          include tripleo::profile::base::nova::compute::libvirt_guests
        config_image: {get_param: ContainerNovaLibvirtConfigImage}