#!/bin/sh
#
if [ -z "$1" ]; then
    echo Usage: $0 [REGISTRY]
    exit 1
fi

set -e
REGISTRY=$1
KUBLR_REPO="https://dl.kublr.com"
controlplane_VERSION="${controlplane_VERSION:-1.24.2}"
IMAGES_ARCHIVE="${KUBLR_REPO}/controlplane/${controlplane_VERSION%%-*}/kublr-controlplane-images-${controlplane_VERSION}.tar.gz"

if [[ ! -f "kublr-controlplane-images-${controlplane_VERSION}.tar.gz" ]]; then
    # Download artifacts from https://dl.kublr.com
    HTTP_RESPONSE=$(curl --silent --head --write-out "HTTPSTATUS:%{http_code}" -X GET ${IMAGES_ARCHIVE})
    HTTP_STATUS=$(echo "${HTTP_RESPONSE}" | tr -d '\n' | sed -e 's/.*HTTPSTATUS://')
    if [ ! "${HTTP_STATUS}" -eq "200"  ]; then
	echo "Error getting file with version ${controlplane_VERSION}. HTTP status ${HTTP_STATUS}, nothing to do, exit."
	exit 1;
    fi

    echo "Processing kublr-controlplane-images-${controlplane_VERSION}.tar.gz: "
    wget --show-progress=yes --progress=dot:giga --retry-connrefused ${IMAGES_ARCHIVE} -O kublr-controlplane-images-${controlplane_VERSION}.tar.gz

    if [[ ! -f "kublr-controlplane-images-${controlplane_VERSION}.tar.gz" ]]; then
	echo "No file download found!"
	exit 1;
    fi
fi

MD5SUM=$(md5sum kublr-controlplane-images-${controlplane_VERSION}.tar.gz)
if [[ "${MD5SUM}" != "3ead64e8f5fa6793c4bc0b31081bc715  kublr-controlplane-images-${controlplane_VERSION}.tar.gz" ]]; then
    echo "Wrong md5 checksum!"
    echo "md5 checksum must be 3ead64e8f5fa6793c4bc0b31081bc715 for kublr-controlplane-images-${controlplane_VERSION}.tar.gz"
    #exit 1;
fi


echo "Loading docker images..."
docker load --input kublr-controlplane-images-${controlplane_VERSION}.tar.gz
docker tag cr.kublr.com/alxrem/prometheus-logstash-exporter:0.7.0 ${REGISTRY}/alxrem/prometheus-logstash-exporter:0.7.0
docker push ${REGISTRY}/alxrem/prometheus-logstash-exporter:0.7.0
docker tag cr.kublr.com/autoscaling/addon-resizer:1.8.14 ${REGISTRY}/autoscaling/addon-resizer:1.8.14
docker push ${REGISTRY}/autoscaling/addon-resizer:1.8.14
docker tag cr.kublr.com/bitnami/bitnami-shell:10-debian-10-r446 ${REGISTRY}/bitnami/bitnami-shell:10-debian-10-r446
docker push ${REGISTRY}/bitnami/bitnami-shell:10-debian-10-r446
docker tag cr.kublr.com/bitnami/mongodb-exporter:0.11.2-debian-10-r327 ${REGISTRY}/bitnami/mongodb-exporter:0.11.2-debian-10-r327
docker push ${REGISTRY}/bitnami/mongodb-exporter:0.11.2-debian-10-r327
docker tag cr.kublr.com/bitnami/mongodb:4.2.21-debian-10-r3 ${REGISTRY}/bitnami/mongodb:4.2.21-debian-10-r3
docker push ${REGISTRY}/bitnami/mongodb:4.2.21-debian-10-r3
docker tag cr.kublr.com/bitnami/pgpool:4.2.5-debian-10-r27 ${REGISTRY}/bitnami/pgpool:4.2.5-debian-10-r27
docker push ${REGISTRY}/bitnami/pgpool:4.2.5-debian-10-r27
docker tag cr.kublr.com/bitnami/postgres-exporter:0.10.0-debian-10-r85 ${REGISTRY}/bitnami/postgres-exporter:0.10.0-debian-10-r85
docker push ${REGISTRY}/bitnami/postgres-exporter:0.10.0-debian-10-r85
docker tag cr.kublr.com/bitnami/postgresql-repmgr:11.13.0 ${REGISTRY}/bitnami/postgresql-repmgr:11.13.0
docker push ${REGISTRY}/bitnami/postgresql-repmgr:11.13.0
docker tag cr.kublr.com/calico/cni:v3.24.1 ${REGISTRY}/calico/cni:v3.24.1
docker push ${REGISTRY}/calico/cni:v3.24.1
docker tag cr.kublr.com/calico/kube-controllers:v3.24.1 ${REGISTRY}/calico/kube-controllers:v3.24.1
docker push ${REGISTRY}/calico/kube-controllers:v3.24.1
docker tag cr.kublr.com/calico/node:v3.24.1 ${REGISTRY}/calico/node:v3.24.1
docker push ${REGISTRY}/calico/node:v3.24.1
docker tag cr.kublr.com/coredns/coredns:v1.8.6 ${REGISTRY}/coredns/coredns:v1.8.6
docker push ${REGISTRY}/coredns/coredns:v1.8.6
docker tag cr.kublr.com/coreos/flannel:v0.15.1 ${REGISTRY}/coreos/flannel:v0.15.1
docker push ${REGISTRY}/coreos/flannel:v0.15.1
docker tag cr.kublr.com/cpa/cluster-proportional-autoscaler:1.8.4 ${REGISTRY}/cpa/cluster-proportional-autoscaler:1.8.4
docker push ${REGISTRY}/cpa/cluster-proportional-autoscaler:1.8.4
docker tag cr.kublr.com/defaultbackend-amd64:1.5 ${REGISTRY}/defaultbackend-amd64:1.5
docker push ${REGISTRY}/defaultbackend-amd64:1.5
docker tag cr.kublr.com/dns/k8s-dns-node-cache:1.21.1 ${REGISTRY}/dns/k8s-dns-node-cache:1.21.1
docker push ${REGISTRY}/dns/k8s-dns-node-cache:1.21.1
docker tag cr.kublr.com/elasticsearch/elasticsearch:7.10.2 ${REGISTRY}/elasticsearch/elasticsearch:7.10.2
docker push ${REGISTRY}/elasticsearch/elasticsearch:7.10.2
docker tag cr.kublr.com/etcd:3.5.5-0 ${REGISTRY}/etcd:3.5.5-0
docker push ${REGISTRY}/etcd:3.5.5-0
docker tag cr.kublr.com/fluent/fluent-bit:1.8.12-debug ${REGISTRY}/fluent/fluent-bit:1.8.12-debug
docker push ${REGISTRY}/fluent/fluent-bit:1.8.12-debug
docker tag cr.kublr.com/grafana/grafana:8.5.13 ${REGISTRY}/grafana/grafana:8.5.13
docker push ${REGISTRY}/grafana/grafana:8.5.13
docker tag cr.kublr.com/haproxy:2.6.4-alpine ${REGISTRY}/haproxy:2.6.4-alpine
docker push ${REGISTRY}/haproxy:2.6.4-alpine
docker tag cr.kublr.com/hello-world:linux ${REGISTRY}/hello-world:linux
docker push ${REGISTRY}/hello-world:linux
docker tag cr.kublr.com/ingress-nginx/controller:v1.3.0 ${REGISTRY}/ingress-nginx/controller:v1.3.0
docker push ${REGISTRY}/ingress-nginx/controller:v1.3.0
docker tag cr.kublr.com/jetstack/cert-manager-cainjector:v1.5.3 ${REGISTRY}/jetstack/cert-manager-cainjector:v1.5.3
docker push ${REGISTRY}/jetstack/cert-manager-cainjector:v1.5.3
docker tag cr.kublr.com/jetstack/cert-manager-controller:v1.5.3 ${REGISTRY}/jetstack/cert-manager-controller:v1.5.3
docker push ${REGISTRY}/jetstack/cert-manager-controller:v1.5.3
docker tag cr.kublr.com/jetstack/cert-manager-ctl:v1.5.3 ${REGISTRY}/jetstack/cert-manager-ctl:v1.5.3
docker push ${REGISTRY}/jetstack/cert-manager-ctl:v1.5.3
docker tag cr.kublr.com/jetstack/cert-manager-webhook:v1.5.3 ${REGISTRY}/jetstack/cert-manager-webhook:v1.5.3
docker push ${REGISTRY}/jetstack/cert-manager-webhook:v1.5.3
docker tag cr.kublr.com/kibana/kibana:7.10.2 ${REGISTRY}/kibana/kibana:7.10.2
docker push ${REGISTRY}/kibana/kibana:7.10.2
docker tag cr.kublr.com/kube-apiserver-amd64:v1.24.8 ${REGISTRY}/kube-apiserver-amd64:v1.24.8
docker push ${REGISTRY}/kube-apiserver-amd64:v1.24.8
docker tag cr.kublr.com/kube-controller-manager-amd64:v1.24.8 ${REGISTRY}/kube-controller-manager-amd64:v1.24.8
docker push ${REGISTRY}/kube-controller-manager-amd64:v1.24.8
docker tag cr.kublr.com/kube-proxy-amd64:v1.24.8 ${REGISTRY}/kube-proxy-amd64:v1.24.8
docker push ${REGISTRY}/kube-proxy-amd64:v1.24.8
docker tag cr.kublr.com/kube-scheduler-amd64:v1.24.8 ${REGISTRY}/kube-scheduler-amd64:v1.24.8
docker push ${REGISTRY}/kube-scheduler-amd64:v1.24.8
docker tag cr.kublr.com/kube-state-metrics/kube-state-metrics:v2.6.0 ${REGISTRY}/kube-state-metrics/kube-state-metrics:v2.6.0
docker push ${REGISTRY}/kube-state-metrics/kube-state-metrics:v2.6.0
docker tag cr.kublr.com/kubernetesui/dashboard:v2.4.0 ${REGISTRY}/kubernetesui/dashboard:v2.4.0
docker push ${REGISTRY}/kubernetesui/dashboard:v2.4.0
docker tag cr.kublr.com/kubernetesui/metrics-scraper:v1.0.7 ${REGISTRY}/kubernetesui/metrics-scraper:v1.0.7
docker push ${REGISTRY}/kubernetesui/metrics-scraper:v1.0.7
docker tag cr.kublr.com/kublr/backup-controller:1.24.2 ${REGISTRY}/kublr/backup-controller:1.24.2
docker push ${REGISTRY}/kublr/backup-controller:1.24.2
docker tag cr.kublr.com/kublr/base/addon-manager:9.1.7 ${REGISTRY}/kublr/base/addon-manager:9.1.7
docker push ${REGISTRY}/kublr/base/addon-manager:9.1.7
docker tag cr.kublr.com/kublr/base/alpine:3.16.2-10 ${REGISTRY}/kublr/base/alpine:3.16.2-10
docker push ${REGISTRY}/kublr/base/alpine:3.16.2-10
docker tag cr.kublr.com/kublr/base/keycloak:20.0.1-2 ${REGISTRY}/kublr/base/keycloak:20.0.1-2
docker push ${REGISTRY}/kublr/base/keycloak:20.0.1-2
docker tag cr.kublr.com/kublr/base/kubectl:20.25.1 ${REGISTRY}/kublr/base/kubectl:20.25.1
docker push ${REGISTRY}/kublr/base/kubectl:20.25.1
docker tag cr.kublr.com/kublr/cluster-controller:1.24.2 ${REGISTRY}/kublr/cluster-controller:1.24.2
docker push ${REGISTRY}/kublr/cluster-controller:1.24.2
docker tag cr.kublr.com/kublr/elasticsearch-sg:7.10.2-27 ${REGISTRY}/kublr/elasticsearch-sg:7.10.2-27
docker push ${REGISTRY}/kublr/elasticsearch-sg:7.10.2-27
docker tag cr.kublr.com/kublr/feature-controller:1.24.2 ${REGISTRY}/kublr/feature-controller:1.24.2
docker push ${REGISTRY}/kublr/feature-controller:1.24.2
docker tag cr.kublr.com/kublr/fluentbit-rabbitmq-plugin:1.1-2 ${REGISTRY}/kublr/fluentbit-rabbitmq-plugin:1.1-2
docker push ${REGISTRY}/kublr/fluentbit-rabbitmq-plugin:1.1-2
docker tag cr.kublr.com/kublr/fluentd:3.3.0 ${REGISTRY}/kublr/fluentd:3.3.0
docker push ${REGISTRY}/kublr/fluentd:3.3.0
docker tag cr.kublr.com/kublr/gen:1.24.2 ${REGISTRY}/kublr/gen:1.24.2
docker push ${REGISTRY}/kublr/gen:1.24.2
docker tag cr.kublr.com/kublr/ingress-default-backend:1.24.2 ${REGISTRY}/kublr/ingress-default-backend:1.24.2
docker push ${REGISTRY}/kublr/ingress-default-backend:1.24.2
docker tag cr.kublr.com/kublr/keycloak-init:1.24.2 ${REGISTRY}/kublr/keycloak-init:1.24.2
docker push ${REGISTRY}/kublr/keycloak-init:1.24.2
docker tag cr.kublr.com/kublr/kibana-sg:7.10.2-27 ${REGISTRY}/kublr/kibana-sg:7.10.2-27
docker push ${REGISTRY}/kublr/kibana-sg:7.10.2-27
docker tag cr.kublr.com/kublr/kublr-api:1.24.2 ${REGISTRY}/kublr/kublr-api:1.24.2
docker push ${REGISTRY}/kublr/kublr-api:1.24.2
docker tag cr.kublr.com/kublr/kublr-operator:1.24.2 ${REGISTRY}/kublr/kublr-operator:1.24.2
docker push ${REGISTRY}/kublr/kublr-operator:1.24.2
docker tag cr.kublr.com/kublr/kublr-shell:1.24.2 ${REGISTRY}/kublr/kublr-shell:1.24.2
docker push ${REGISTRY}/kublr/kublr-shell:1.24.2
docker tag cr.kublr.com/kublr/kublr-ui:1.24.2 ${REGISTRY}/kublr/kublr-ui:1.24.2
docker push ${REGISTRY}/kublr/kublr-ui:1.24.2
docker tag cr.kublr.com/kublr/kublr:1.24.2 ${REGISTRY}/kublr/kublr:1.24.2
docker push ${REGISTRY}/kublr/kublr:1.24.2
docker tag cr.kublr.com/kublr/logging-controller:1.24.2 ${REGISTRY}/kublr/logging-controller:1.24.2
docker push ${REGISTRY}/kublr/logging-controller:1.24.2
docker tag cr.kublr.com/kublr/logs-mover-app:1.24.2 ${REGISTRY}/kublr/logs-mover-app:1.24.2
docker push ${REGISTRY}/kublr/logs-mover-app:1.24.2
docker tag cr.kublr.com/kublr/logstash:7.10.2-27 ${REGISTRY}/kublr/logstash:7.10.2-27
docker push ${REGISTRY}/kublr/logstash:7.10.2-27
docker tag cr.kublr.com/kublr/monitoring-controller:1.24.2 ${REGISTRY}/kublr/monitoring-controller:1.24.2
docker push ${REGISTRY}/kublr/monitoring-controller:1.24.2
docker tag cr.kublr.com/kublr/searchguard-auth-proxy:1.24.2 ${REGISTRY}/kublr/searchguard-auth-proxy:1.24.2
docker push ${REGISTRY}/kublr/searchguard-auth-proxy:1.24.2
docker tag cr.kublr.com/kublr/sg_cert_generator:7.10.2-27 ${REGISTRY}/kublr/sg_cert_generator:7.10.2-27
docker push ${REGISTRY}/kublr/sg_cert_generator:7.10.2-27
docker tag cr.kublr.com/kublr/terraform-controller:1.24.2 ${REGISTRY}/kublr/terraform-controller:1.24.2
docker push ${REGISTRY}/kublr/terraform-controller:1.24.2
docker tag cr.kublr.com/metrics-server/metrics-server:v0.6.2 ${REGISTRY}/metrics-server/metrics-server:v0.6.2
docker push ${REGISTRY}/metrics-server/metrics-server:v0.6.2
docker tag cr.kublr.com/oauth2-proxy/oauth2-proxy:v7.1.3 ${REGISTRY}/oauth2-proxy/oauth2-proxy:v7.1.3
docker push ${REGISTRY}/oauth2-proxy/oauth2-proxy:v7.1.3
docker tag cr.kublr.com/pause-amd64:3.2 ${REGISTRY}/pause-amd64:3.2
docker push ${REGISTRY}/pause-amd64:3.2
docker tag cr.kublr.com/prom/alertmanager:v0.22.0 ${REGISTRY}/prom/alertmanager:v0.22.0
docker push ${REGISTRY}/prom/alertmanager:v0.22.0
docker tag cr.kublr.com/prom/prometheus:v2.37.1 ${REGISTRY}/prom/prometheus:v2.37.1
docker push ${REGISTRY}/prom/prometheus:v2.37.1
docker tag cr.kublr.com/prometheuscommunity/elasticsearch-exporter:v1.2.1 ${REGISTRY}/prometheuscommunity/elasticsearch-exporter:v1.2.1
docker push ${REGISTRY}/prometheuscommunity/elasticsearch-exporter:v1.2.1
docker tag cr.kublr.com/rabbitmq:3.9.5 ${REGISTRY}/rabbitmq:3.9.5
docker push ${REGISTRY}/rabbitmq:3.9.5
docker tag cr.kublr.com/rancher/local-path-provisioner:v0.0.23 ${REGISTRY}/rancher/local-path-provisioner:v0.0.23
docker push ${REGISTRY}/rancher/local-path-provisioner:v0.0.23
