# 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: Verify state of current RabbitMQ cluster
  kubernetes.core.k8s_info:
    api_version: rabbitmq.com/v1beta1
    kind: RabbitmqCluster
    name: "rabbitmq-{{ rabbitmq_cluster_name }}"
    namespace: openstack
  register: _rabbitmq_cluster

- name: Wait for confirmation if RabbitMQ cluster spec doesn't match
  when:
    - not rabbitmq_skip_spec_diff | bool
    - _rabbitmq_cluster.resources | length > 0
    - _rabbitmq_cluster.resources[0].spec != _rabbitmq_merged_spec
  vars:
    _rabbitmq_merged_spec: "{{ _rabbitmq_spec | combine(rabbitmq_spec, recursive=True) }}"
  block:
    - name: Print diff of RabbitMQ cluster spec
      ansible.utils.fact_diff:
        before: "{{ _rabbitmq_cluster.resources[0].spec }}"
        after: "{{ _rabbitmq_merged_spec }}"

    - name: Wait for confirmation of RabbitMQ cluster spec
      ansible.builtin.pause:

- name: Enable all feature flags for upgrade
  when:
    - _rabbitmq_cluster.resources | length > 0
    - _rabbitmq_cluster.resources[0].spec.image != _rabbitmq_merged_spec.image
  vars:
    _rabbitmq_merged_spec: "{{ _rabbitmq_spec | combine(rabbitmq_spec, recursive=True) }}"
  kubernetes.core.k8s_exec:
    namespace: openstack
    pod: "rabbitmq-{{ rabbitmq_cluster_name }}-server-0"
    command: rabbitmqctl enable_feature_flag all

- name: Deploy cluster
  kubernetes.core.k8s:
    state: present
    definition:
      apiVersion: rabbitmq.com/v1beta1
      kind: RabbitmqCluster
      metadata:
        name: "rabbitmq-{{ rabbitmq_cluster_name }}"
        namespace: openstack
      spec: "{{ _rabbitmq_spec | combine(rabbitmq_spec, recursive=True) }}"
    wait: true
    wait_timeout: 600
    wait_condition:
      type: ClusterAvailable
      status: "True"
