#!/bin/bash -e REGISTRY=$DCP_DEV_REGISTRY_INTERNAL STARLINGX_REGISTRY=starlingx.xyz STARLINGX_REGISTRY_MIRROR=$STX_REGISTRY_MIRROR_INTERNAL function check_image() { local reg="$1" local img=`echo $2 | cut -d':' -f 1` local tag=`echo $2 | cut -d':' -f 2` if echo $tag | grep latest; then return 1 #always sync it fi curl --silent $reg/v2/$img/tags/list | grep -q -w \"$tag\" } function sync_img_from_stx() { local img=$1 echo "sync: $STARLINGX_REGISTRY/$img ..." if check_image $STARLINGX_REGISTRY $img; then docker pull $STARLINGX_REGISTRY_MIRROR/$img docker tag $STARLINGX_REGISTRY_MIRROR/$img $REGISTRY/$img docker push $REGISTRY/$img else echo "Cannot find $img on $STARLINGX_REGISTRY" fi } function sync_img_from_docker_io() { local img=$1 echo "sync: docker.io/$img ..." if docker pull $img; then docker tag $img $REGISTRY/$img docker push $REGISTRY/$img else sync_img_from_stx $img fi } function sync_images() { local _img local reg local img while read _img; do reg=`echo $_img | cut -d '/' -f 1` img=`echo $_img | cut -d '/' -f 2-` echo -n "check img: $img ..." if check_image $REGISTRY $img; then echo "OK" continue fi echo if [ "$reg" = "docker.io" ]; then sync_img_from_docker_io $img else sync_img_from_stx $img fi done } curl --silent http://starlingx.xyz/stx.2.0.docker_images.txt | sync_images curl --silent http://starlingx.xyz/latest_docker_images.txt | sync_images