heat_template_version: rocky

description: Configure Red Hat Subscription Management.

parameters:
  RoleNetIpMap:
    default: {}
    type: json
  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: {}
    description: Mapping of service endpoint -> protocol. Typically set
                 via parameter_defaults in the resource registry.
    type: json
  RhsmVars:
    default: {}
    description: Hash of ansible-role-redhat-subscription variables
                 used to configure RHSM.
    # The parameters contains sensible data like activation key or password.
    hidden: true
    tags:
      - role_specific
    type: json

resources:
  # Merging role-specific parameters (RoleParameters) with the default parameters.
  # RoleParameters will have the precedence over the default parameters.
  RoleParametersValue:
    type: OS::Heat::Value
    properties:
      type: json
      value:
        map_replace:
          - map_replace:
            - vars: RhsmVars
            - values: {get_param: [RoleParameters]}
          - values:
              RhsmVars: {get_param: RhsmVars}

outputs:
  role_data:
    description: Role data for the RHSM service.
    value:
      service_name: rhsm
      host_prep_tasks:
        - name: Red Hat Subscription Management configuration during deployment
          import_role:
            name: redhat-subscription
          vars: {get_attr: [RoleParametersValue, value, vars]}
      scale_tasks:
        - name: Red Hat Subscription Management configuration during scale-down
          tags: down
          when: step|int == 1
          import_role:
            name: redhat-subscription
            tasks_from: unregister
      upgrade_tasks:
        - name: Red Hat Subscription Management configuration
          import_role:
            name: redhat-subscription
          vars:
            map_merge:
              - {get_attr: [RoleParametersValue, value, vars]}
              # Force only rhsm_repos content to be enabled.
              - rhsm_repos_purge: True
              - rhsm_force_register: True
          when: step|int == 0
