# 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.

- import_playbook: vexxhost.atmosphere.generate_secrets
  vars:
    secrets_path: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}/secrets.yml"

- 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] }}"