# Copyright (c) 2022 VEXXHOST, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

- hosts: localhost
  connection: local
  gather_facts: false
  no_log: "{{ molecule_no_log }}"
  vars:
    ssh_port: 22
    stack_name: "{{ lookup('env', 'STACK_NAME') | default('atmosphere', True) }}"
    identity_file: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}/id_rsa"
  tasks:
    - name: create stack
      openstack.cloud.stack:
        name: "{{ stack_name }}"
        template: heat/stack.yaml
      register: _os_stack

    - debug:
        msg: "{{ _os_stack.stack }}"

    - name: grab list of all ip addresses
      ansible.builtin.set_fact:
        key_pair: "{{ _os_stack.stack.outputs | json_query(key_query) | first }}"
        controller_ips: "{{ _os_stack.stack.outputs | community.general.json_query(controller_query) | first }}"
        storage_ips: "{{ _os_stack.stack.outputs | community.general.json_query(storage_query) | first }}"
        compute_ips: "{{ _os_stack.stack.outputs | community.general.json_query(compute_query) | first }}"
      vars:
        key_query: "[?output_key=='key_pair'].output_value"
        controller_query: "[?output_key=='controller_floating_ip_addresses'].output_value"
        storage_query: "[?output_key=='storage_floating_ip_addresses'].output_value"
        compute_query: "[?output_key=='compute_floating_ip_addresses'].output_value"

    - name: wait for systems to go up
      ansible.builtin.wait_for:
        port: "22"
        host: "{{ item }}"
        search_regex: SSH
        timeout: 60
      loop: "{{ controller_ips + storage_ips + compute_ips }}"

    - name: generate private key file
      ansible.builtin.copy:
        dest: "{{ identity_file }}"
        content: "{{ key_pair }}"
        mode: 0600

    - name: generate instance config file
      copy:
        content: "{{ instance_config | to_yaml }}"
        dest: "{{ molecule_instance_config }}"
      vars:
        base_instance_config: &instance_config
          user: "ubuntu"
          port: "{{ ssh_port }}"
          identity_file: "{{ identity_file }}"
        instance_config:
          - <<: *instance_config
            instance: "ctl1"
            address: "{{ controller_ips[0] }}"
          - <<: *instance_config
            instance: "ctl2"
            address: "{{ controller_ips[1] }}"
          - <<: *instance_config
            instance: "ctl3"
            address: "{{ controller_ips[2] }}"
          - <<: *instance_config
            instance: "nvme1"
            address: "{{ storage_ips[0] }}"
          - <<: *instance_config
            instance: "nvme2"
            address: "{{ storage_ips[1] }}"
          - <<: *instance_config
            instance: "nvme3"
            address: "{{ storage_ips[2] }}"
          - <<: *instance_config
            instance: "kvm1"
            address: "{{ compute_ips[0] }}"
          - <<: *instance_config
            instance: "kvm2"
            address: "{{ compute_ips[1] }}"
