# Copyright (c) 2023 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.

magnum_helm_release_name: magnum
magnum_helm_chart_path: "{{ role_path }}/../../charts/magnum/"
magnum_helm_chart_ref: /usr/local/src/magnum

magnum_helm_release_namespace: openstack
magnum_helm_values: {}

# List of annotations to apply to the Ingress
magnum_ingress_annotations: {}
magnum_registry_ingress_annotations: {}

# URL for the clusterctl binary
magnum_clusterctl_url: https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.3.3/clusterctl-linux-amd64
magnum_clusterctl_config_file: /etc/clusterctl.yaml
magnum_clusterctl_config:
  images:
    cluster-api/cluster-api-controller:
      repository: "{{ atmosphere_images['cluster_api_controller'] | vexxhost.atmosphere.docker_image('prefix') }}"
      tag: "{{ atmosphere_images['cluster_api_controller'] | vexxhost.atmosphere.docker_image('tag') }}"
    bootstrap-kubeadm/kubeadm-bootstrap-controller:
      repository: "{{ atmosphere_images['cluster_api_kubeadm_bootstrap_controller'] | vexxhost.atmosphere.docker_image('prefix') }}"
      tag: "{{ atmosphere_images['cluster_api_kubeadm_bootstrap_controller'] | vexxhost.atmosphere.docker_image('tag') }}"
    control-plane-kubeadm/kubeadm-control-plane-controller:
      repository: "{{ atmosphere_images['cluster_api_kubeadm_control_plane_controller'] | vexxhost.atmosphere.docker_image('prefix') }}"
      tag: "{{ atmosphere_images['cluster_api_kubeadm_control_plane_controller'] | vexxhost.atmosphere.docker_image('tag') }}"
    infrastructure-openstack/capi-openstack-controller:
      repository: "{{ atmosphere_images['cluster_api_openstack_controller'] | vexxhost.atmosphere.docker_image('prefix') }}"
      tag: "{{ atmosphere_images['cluster_api_openstack_controller'] | vexxhost.atmosphere.docker_image('tag') }}"

# List of images to load into OpenStack for Magnum
magnum_image_container_format: bare
magnum_image_disk_format: raw
magnum_images:
  - name: ubuntu-2004-v1.23.13
    url: https://object-storage.public.mtl1.vexxhost.net/swift/v1/a91f106f55e64246babde7402c21b87a/magnum-capi/ubuntu-2004-v1.23.13.qcow2
    distro: ubuntu-focal
  - name: ubuntu-2004-v1.24.7
    url: https://object-storage.public.mtl1.vexxhost.net/swift/v1/a91f106f55e64246babde7402c21b87a/magnum-capi/ubuntu-2004-v1.24.7.qcow2
    distro: ubuntu-focal
  - name: ubuntu-2004-v1.25.3
    url: https://object-storage.public.mtl1.vexxhost.net/swift/v1/a91f106f55e64246babde7402c21b87a/magnum-capi/ubuntu-2004-v1.25.3.qcow2
    distro: ubuntu-focal
