# 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: Deploy cluster
  kubernetes.core.k8s:
    state: present
    definition:
      apiVersion: rabbitmq.com/v1beta1
      kind: RabbitmqCluster
      metadata:
        name: "rabbitmq-{{ rabbitmq_cluster_name }}"
        namespace: openstack
      spec:
        image: "{{ atmosphere_images['rabbitmq_server'] | vexxhost.atmosphere.docker_image('ref') }}"
        affinity:
          nodeAffinity:
            requiredDuringSchedulingIgnoredDuringExecution:
              nodeSelectorTerms:
                - matchExpressions:
                    - key: openstack-control-plane
                      operator: In
                      values:
                        - enabled
        rabbitmq:
          additionalConfig: |
            vm_memory_high_watermark.relative = 0.9
        resources:
          limits:
            cpu: "1"
            memory: 2Gi
          requests:
            cpu: 500m
            memory: 1Gi
        terminationGracePeriodSeconds: 15
    wait: true
    wait_timeout: 600
    wait_condition:
      type: ClusterAvailable
      status: "True"
