# 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: "../../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.kubernetes.docker_image('prefix') }}"
      tag: "{{ atmosphere_images['cluster_api_controller'] | vexxhost.kubernetes.docker_image('tag') }}"
    bootstrap-kubeadm/kubeadm-bootstrap-controller:
      repository: "{{ atmosphere_images['cluster_api_kubeadm_bootstrap_controller'] | vexxhost.kubernetes.docker_image('prefix') }}"
      tag: "{{ atmosphere_images['cluster_api_kubeadm_bootstrap_controller'] | vexxhost.kubernetes.docker_image('tag') }}"
    control-plane-kubeadm/kubeadm-control-plane-controller:
      repository: "{{ atmosphere_images['cluster_api_kubeadm_control_plane_controller'] | vexxhost.kubernetes.docker_image('prefix') }}"
      tag: "{{ atmosphere_images['cluster_api_kubeadm_control_plane_controller'] | vexxhost.kubernetes.docker_image('tag') }}"
    infrastructure-openstack/capi-openstack-controller:
      repository: "{{ atmosphere_images['cluster_api_openstack_controller'] | vexxhost.kubernetes.docker_image('prefix') }}"
      tag: "{{ atmosphere_images['cluster_api_openstack_controller'] | vexxhost.kubernetes.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
