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

- name: Suspend project
  hosts: controllers
  become: true
  gather_facts: false
  vars_prompt:
    - name: project_name
      prompt: "Project name"
      private: false
  tasks:
    - name: Disable the project
      run_once: true
      openstack.cloud.project:
        cloud: atmosphere
        name: "{{ project_name }}"
        enabled: false
      register: _project

    - name: Get list of regions with compute service
      changed_when: false
      run_once: true
      ansible.builtin.shell: |
        set -o posix
        source /etc/profile.d/atmosphere.sh
        openstack endpoint list \
          --service compute \
          --interface public \
          --column Region \
          --format value
      args:
        executable: /bin/bash
      environment:
        OS_CLOUD: atmosphere
      register: _regions

    - name: Get list of VMs in the project in each region
      changed_when: false
      run_once: true
      ansible.builtin.shell: |
        set -o posix
        source /etc/profile.d/atmosphere.sh
        openstack server list \
          --no-name-lookup \
          --project "{{ project_name }}" \
          --status ACTIVE \
          --column ID \
          --format value
      args:
        executable: /bin/bash
      environment:
        OS_AUTH_URL: "https://{{ openstack_helm_endpoints_keystone_api_host }}"
        OS_USERNAME: "admin-{{ openstack_helm_endpoints_region_name }}"
        OS_PASSWORD: "{{ openstack_helm_endpoints_keystone_admin_password }}"
        OS_PROJECT_NAME: admin
        OS_USER_DOMAIN_NAME: Default
        OS_PROJECT_DOMAIN_NAME: Default
        OS_REGION_NAME: "{{ item }}"
      register: _servers
      loop: "{{ _regions.stdout_lines }}"

    - name: Suspend VMs in each region
      run_once: true
      ansible.builtin.shell: |
        set -o posix
        source /etc/profile.d/atmosphere.sh
        openstack server suspend {{ item.1 }}
      args:
        executable: /bin/bash
      environment:
        OS_AUTH_URL: "https://{{ openstack_helm_endpoints_keystone_api_host }}"
        OS_USERNAME: "admin-{{ openstack_helm_endpoints_region_name }}"
        OS_PASSWORD: "{{ openstack_helm_endpoints_keystone_admin_password }}"
        OS_PROJECT_NAME: admin
        OS_USER_DOMAIN_NAME: Default
        OS_PROJECT_DOMAIN_NAME: Default
        OS_REGION_NAME: "{{ item.0.item }}"
      with_subelements:
        - "{{ _servers.results }}"
        - stdout_lines
      loop_control:
        label: "{{ item.0.item }}/{{ item.1 }}"
