#!/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.19.0}"
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 ${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}" != "e89aadb23069eae96b4488e8ccd4383d  kublr-controlplane-images-${controlplane_VERSION}.tar.gz" ]]; then
    echo "Wrong md5 checksum!"
    echo "md5 checksum must be e89aadb23069eae96b4488e8ccd4383d 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/addon-resizer:1.8.7 ${REGISTRY}/addon-resizer:1.8.7
docker push ${REGISTRY}/addon-resizer:1.8.7
docker tag cr.kublr.com/alxrem/prometheus-logstash-exporter:latest ${REGISTRY}/alxrem/prometheus-logstash-exporter:latest
docker push ${REGISTRY}/alxrem/prometheus-logstash-exporter:latest
docker tag cr.kublr.com/calico/cni:v3.14.1 ${REGISTRY}/calico/cni:v3.14.1
docker push ${REGISTRY}/calico/cni:v3.14.1
docker tag cr.kublr.com/calico/node:v3.14.1 ${REGISTRY}/calico/node:v3.14.1
docker push ${REGISTRY}/calico/node:v3.14.1
docker tag cr.kublr.com/calico/pod2daemon-flexvol:v3.14.1 ${REGISTRY}/calico/pod2daemon-flexvol:v3.14.1
docker push ${REGISTRY}/calico/pod2daemon-flexvol:v3.14.1
docker tag cr.kublr.com/cluster-proportional-autoscaler-amd64:1.7.1 ${REGISTRY}/cluster-proportional-autoscaler-amd64:1.7.1
docker push ${REGISTRY}/cluster-proportional-autoscaler-amd64:1.7.1
docker tag cr.kublr.com/coredns:1.6.7 ${REGISTRY}/coredns:1.6.7
docker push ${REGISTRY}/coredns:1.6.7
docker tag cr.kublr.com/coreos/flannel:v0.12.0 ${REGISTRY}/coreos/flannel:v0.12.0
docker push ${REGISTRY}/coreos/flannel:v0.12.0
docker tag cr.kublr.com/coreos/kube-state-metrics:v1.8.0 ${REGISTRY}/coreos/kube-state-metrics:v1.8.0
docker push ${REGISTRY}/coreos/kube-state-metrics:v1.8.0
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/elasticsearch/elasticsearch-oss:6.8.4 ${REGISTRY}/elasticsearch/elasticsearch-oss:6.8.4
docker push ${REGISTRY}/elasticsearch/elasticsearch-oss:6.8.4
docker tag cr.kublr.com/etcd:3.4.3 ${REGISTRY}/etcd:3.4.3
docker push ${REGISTRY}/etcd:3.4.3
docker tag cr.kublr.com/grafana/grafana:6.5.1 ${REGISTRY}/grafana/grafana:6.5.1
docker push ${REGISTRY}/grafana/grafana:6.5.1
docker tag cr.kublr.com/haproxy:1.9-alpine ${REGISTRY}/haproxy:1.9-alpine
docker push ${REGISTRY}/haproxy:1.9-alpine
docker tag cr.kublr.com/hyperkube-amd64:v1.17.4 ${REGISTRY}/hyperkube-amd64:v1.17.4
docker push ${REGISTRY}/hyperkube-amd64:v1.17.4
docker tag cr.kublr.com/hyperkube-amd64:v1.18.6 ${REGISTRY}/hyperkube-amd64:v1.18.6
docker push ${REGISTRY}/hyperkube-amd64:v1.18.6
docker tag cr.kublr.com/jboss/keycloak:10.0.0 ${REGISTRY}/jboss/keycloak:10.0.0
docker push ${REGISTRY}/jboss/keycloak:10.0.0
docker tag cr.kublr.com/jetstack/cert-manager-cainjector:v0.14.2 ${REGISTRY}/jetstack/cert-manager-cainjector:v0.14.2
docker push ${REGISTRY}/jetstack/cert-manager-cainjector:v0.14.2
docker tag cr.kublr.com/jetstack/cert-manager-controller:v0.14.2 ${REGISTRY}/jetstack/cert-manager-controller:v0.14.2
docker push ${REGISTRY}/jetstack/cert-manager-controller:v0.14.2
docker tag cr.kublr.com/jetstack/cert-manager-webhook:v0.14.2 ${REGISTRY}/jetstack/cert-manager-webhook:v0.14.2
docker push ${REGISTRY}/jetstack/cert-manager-webhook:v0.14.2
docker tag cr.kublr.com/justwatch/elasticsearch_exporter:1.0.4rc1 ${REGISTRY}/justwatch/elasticsearch_exporter:1.0.4rc1
docker push ${REGISTRY}/justwatch/elasticsearch_exporter:1.0.4rc1
docker tag cr.kublr.com/k8s-dns-node-cache:1.15.10 ${REGISTRY}/k8s-dns-node-cache:1.15.10
docker push ${REGISTRY}/k8s-dns-node-cache:1.15.10
docker tag cr.kublr.com/kbudde/rabbitmq-exporter:v1.0-beta ${REGISTRY}/kbudde/rabbitmq-exporter:v1.0-beta
docker push ${REGISTRY}/kbudde/rabbitmq-exporter:v1.0-beta
docker tag cr.kublr.com/keycloak/keycloak-gatekeeper:10.0.0 ${REGISTRY}/keycloak/keycloak-gatekeeper:10.0.0
docker push ${REGISTRY}/keycloak/keycloak-gatekeeper:10.0.0
docker tag cr.kublr.com/kibana/kibana-oss:6.8.4 ${REGISTRY}/kibana/kibana-oss:6.8.4
docker push ${REGISTRY}/kibana/kibana-oss:6.8.4
docker tag cr.kublr.com/kube-addon-manager:v9.0.2 ${REGISTRY}/kube-addon-manager:v9.0.2
docker push ${REGISTRY}/kube-addon-manager:v9.0.2
docker tag cr.kublr.com/kube-apiserver-amd64:v1.18.6 ${REGISTRY}/kube-apiserver-amd64:v1.18.6
docker push ${REGISTRY}/kube-apiserver-amd64:v1.18.6
docker tag cr.kublr.com/kube-controller-manager-amd64:v1.18.6 ${REGISTRY}/kube-controller-manager-amd64:v1.18.6
docker push ${REGISTRY}/kube-controller-manager-amd64:v1.18.6
docker tag cr.kublr.com/kube-proxy-amd64:v1.18.6 ${REGISTRY}/kube-proxy-amd64:v1.18.6
docker push ${REGISTRY}/kube-proxy-amd64:v1.18.6
docker tag cr.kublr.com/kube-scheduler-amd64:v1.18.6 ${REGISTRY}/kube-scheduler-amd64:v1.18.6
docker push ${REGISTRY}/kube-scheduler-amd64:v1.18.6
docker tag cr.kublr.com/kubedb/mongo:4.1.7-v3 ${REGISTRY}/kubedb/mongo:4.1.7-v3
docker push ${REGISTRY}/kubedb/mongo:4.1.7-v3
docker tag cr.kublr.com/kubedb/mongodb-init:0.3.0 ${REGISTRY}/kubedb/mongodb-init:0.3.0
docker push ${REGISTRY}/kubedb/mongodb-init:0.3.0
docker tag cr.kublr.com/kubedb/operator:v0.14.0-alpha.2 ${REGISTRY}/kubedb/operator:v0.14.0-alpha.2
docker push ${REGISTRY}/kubedb/operator:v0.14.0-alpha.2
docker tag cr.kublr.com/kubedb/postgres:11.2 ${REGISTRY}/kubedb/postgres:11.2
docker push ${REGISTRY}/kubedb/postgres:11.2
docker tag cr.kublr.com/kubernetes-helm/tiller:v2.14.3 ${REGISTRY}/kubernetes-helm/tiller:v2.14.3
docker push ${REGISTRY}/kubernetes-helm/tiller:v2.14.3
docker tag cr.kublr.com/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0 ${REGISTRY}/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0
docker push ${REGISTRY}/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0
docker tag cr.kublr.com/kubernetesui/dashboard:v2.0.0-rc7 ${REGISTRY}/kubernetesui/dashboard:v2.0.0-rc7
docker push ${REGISTRY}/kubernetesui/dashboard:v2.0.0-rc7
docker tag cr.kublr.com/kubernetesui/metrics-scraper:v1.0.4 ${REGISTRY}/kubernetesui/metrics-scraper:v1.0.4
docker push ${REGISTRY}/kubernetesui/metrics-scraper:v1.0.4
docker tag cr.kublr.com/kublr/alpine-plus:3.11 ${REGISTRY}/kublr/alpine-plus:3.11
docker push ${REGISTRY}/kublr/alpine-plus:3.11
docker tag cr.kublr.com/kublr/alpine-plus:3.11-1 ${REGISTRY}/kublr/alpine-plus:3.11-1
docker push ${REGISTRY}/kublr/alpine-plus:3.11-1
docker tag cr.kublr.com/kublr/backup-controller:1.19.0-29 ${REGISTRY}/kublr/backup-controller:1.19.0-29
docker push ${REGISTRY}/kublr/backup-controller:1.19.0-29
docker tag cr.kublr.com/kublr/cert-updater:1.19.0-14 ${REGISTRY}/kublr/cert-updater:1.19.0-14
docker push ${REGISTRY}/kublr/cert-updater:1.19.0-14
docker tag cr.kublr.com/kublr/cluster-controller:1.19.0-42 ${REGISTRY}/kublr/cluster-controller:1.19.0-42
docker push ${REGISTRY}/kublr/cluster-controller:1.19.0-42
docker tag cr.kublr.com/kublr/curator:5.8.1 ${REGISTRY}/kublr/curator:5.8.1
docker push ${REGISTRY}/kublr/curator:5.8.1
docker tag cr.kublr.com/kublr/elasticsearch-sg-oss:6.8.4-13 ${REGISTRY}/kublr/elasticsearch-sg-oss:6.8.4-13
docker push ${REGISTRY}/kublr/elasticsearch-sg-oss:6.8.4-13
docker tag cr.kublr.com/kublr/feature-controller:1.19.0-35 ${REGISTRY}/kublr/feature-controller:1.19.0-35
docker push ${REGISTRY}/kublr/feature-controller:1.19.0-35
docker tag cr.kublr.com/kublr/fluentd:2.7.1 ${REGISTRY}/kublr/fluentd:2.7.1
docker push ${REGISTRY}/kublr/fluentd:2.7.1
docker tag cr.kublr.com/kublr/gen:1.19.0-23 ${REGISTRY}/kublr/gen:1.19.0-23
docker push ${REGISTRY}/kublr/gen:1.19.0-23
docker tag cr.kublr.com/kublr/ingress-default-backend:1.19.0-82 ${REGISTRY}/kublr/ingress-default-backend:1.19.0-82
docker push ${REGISTRY}/kublr/ingress-default-backend:1.19.0-82
docker tag cr.kublr.com/kublr/k8s-dashboard-auth-proxy:v1.0 ${REGISTRY}/kublr/k8s-dashboard-auth-proxy:v1.0
docker push ${REGISTRY}/kublr/k8s-dashboard-auth-proxy:v1.0
docker tag cr.kublr.com/kublr/keycloak-init:10.0.0-67 ${REGISTRY}/kublr/keycloak-init:10.0.0-67
docker push ${REGISTRY}/kublr/keycloak-init:10.0.0-67
docker tag cr.kublr.com/kublr/keycloak-login-theme:1.19.0-67 ${REGISTRY}/kublr/keycloak-login-theme:1.19.0-67
docker push ${REGISTRY}/kublr/keycloak-login-theme:1.19.0-67
docker tag cr.kublr.com/kublr/kibana-sg-oss:6.8.4-13 ${REGISTRY}/kublr/kibana-sg-oss:6.8.4-13
docker push ${REGISTRY}/kublr/kibana-sg-oss:6.8.4-13
docker tag cr.kublr.com/kublr/kublr-api:1.19.0-41 ${REGISTRY}/kublr/kublr-api:1.19.0-41
docker push ${REGISTRY}/kublr/kublr-api:1.19.0-41
docker tag cr.kublr.com/kublr/kublr-operator:1.19.0-33 ${REGISTRY}/kublr/kublr-operator:1.19.0-33
docker push ${REGISTRY}/kublr/kublr-operator:1.19.0-33
docker tag cr.kublr.com/kublr/kublr-shell:1.19.0-28 ${REGISTRY}/kublr/kublr-shell:1.19.0-28
docker push ${REGISTRY}/kublr/kublr-shell:1.19.0-28
docker tag cr.kublr.com/kublr/kublr-ui:1.19.0-67 ${REGISTRY}/kublr/kublr-ui:1.19.0-67
docker push ${REGISTRY}/kublr/kublr-ui:1.19.0-67
docker tag cr.kublr.com/kublr/kublr:1.19.0 ${REGISTRY}/kublr/kublr:1.19.0
docker push ${REGISTRY}/kublr/kublr:1.19.0
docker tag cr.kublr.com/kublr/logging-controller:1.19.0-35 ${REGISTRY}/kublr/logging-controller:1.19.0-35
docker push ${REGISTRY}/kublr/logging-controller:1.19.0-35
docker tag cr.kublr.com/kublr/logs-mover-app:1.19.0-35 ${REGISTRY}/kublr/logs-mover-app:1.19.0-35
docker push ${REGISTRY}/kublr/logs-mover-app:1.19.0-35
docker tag cr.kublr.com/kublr/monitoring-controller:1.19.0-31 ${REGISTRY}/kublr/monitoring-controller:1.19.0-31
docker push ${REGISTRY}/kublr/monitoring-controller:1.19.0-31
docker tag cr.kublr.com/kublr/searchguard-auth-proxy:1.19.0-35 ${REGISTRY}/kublr/searchguard-auth-proxy:1.19.0-35
docker push ${REGISTRY}/kublr/searchguard-auth-proxy:1.19.0-35
docker tag cr.kublr.com/kublr/sg_cert_generator:6.8.4-13 ${REGISTRY}/kublr/sg_cert_generator:6.8.4-13
docker push ${REGISTRY}/kublr/sg_cert_generator:6.8.4-13
docker tag cr.kublr.com/kublr/terraform-controller:1.19.0-29 ${REGISTRY}/kublr/terraform-controller:1.19.0-29
docker push ${REGISTRY}/kublr/terraform-controller:1.19.0-29
docker tag cr.kublr.com/logstash/logstash-oss:6.8.4 ${REGISTRY}/logstash/logstash-oss:6.8.4
docker push ${REGISTRY}/logstash/logstash-oss:6.8.4
docker tag cr.kublr.com/metrics-server-amd64:v0.3.6 ${REGISTRY}/metrics-server-amd64:v0.3.6
docker push ${REGISTRY}/metrics-server-amd64:v0.3.6
docker tag cr.kublr.com/nginxinc/nginx-unprivileged:1.17-alpine ${REGISTRY}/nginxinc/nginx-unprivileged:1.17-alpine
docker push ${REGISTRY}/nginxinc/nginx-unprivileged:1.17-alpine
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.19.0 ${REGISTRY}/prom/alertmanager:v0.19.0
docker push ${REGISTRY}/prom/alertmanager:v0.19.0
docker tag cr.kublr.com/prom/prometheus:v2.13.0 ${REGISTRY}/prom/prometheus:v2.13.0
docker push ${REGISTRY}/prom/prometheus:v2.13.0
docker tag cr.kublr.com/rabbitmq:3.8.3 ${REGISTRY}/rabbitmq:3.8.3
docker push ${REGISTRY}/rabbitmq:3.8.3
docker tag cr.kublr.com/rancher/local-path-provisioner:v0.0.12 ${REGISTRY}/rancher/local-path-provisioner:v0.0.12
docker push ${REGISTRY}/rancher/local-path-provisioner:v0.0.12
