promenade/tools/g2/lib/registry.sh

68 lines
2.1 KiB
Bash

registry_down() {
REGISTRY_ID=$(docker ps -qa -f name=registry)
if [ "x${REGISTRY_ID}" != "x" ]; then
log Removing docker registry
docker rm -fv ${REGISTRY_ID} &>> ${LOG_FILE}
fi
}
registry_list_images() {
FILES=$(find $(config_configuration) -type f -name '*.yaml')
HOSTNAME_REGEX='[a-zA-Z0-9][a-zA-Z0-9_-]{0,62}'
DOMAIN_NAME_REGEX="${HOSTNAME_REGEX}(\.${HOSTNAME_REGEX})*"
PORT_REGEX='[0-9]+'
NETLOC_REGEX="${DOMAIN_NAME_REGEX}(:${PORT_REGEX})?"
REPO_COMPONENT_REGEX='[a-zA-Z0-9][a-zA-Z0-9_-]{0,62}'
REPO_REGEX="${REPO_COMPONENT_REGEX}(/${REPO_COMPONENT_REGEX})*"
TAG_REGEX='[a-zA-Z0-9][a-zA-Z0-9.-]{0,127}'
cat ${FILES} \
| tr ' \t' '\n' | tr -s '\n' \
| grep -E "^(${NETLOC_REGEX}/)?${REPO_REGEX}:${TAG_REGEX}$" \
| sort -u \
| grep -v 'registry:5000'
}
registry_populate() {
log Validating local registry is populated
for image in $(registry_list_images); do
if ! docker pull localhost:5000/${image} &> /dev/null; then
log Loading image ${image} into local registry
docker pull ${image} &>> ${LOG_FILE}
docker tag ${image} localhost:5000/${image} &>> ${LOG_FILE}
docker push localhost:5000/${image} &>> ${LOG_FILE}
fi
done
}
registry_replace_references() {
FILES=${@}
for image in $(registry_list_images ${FILES}); do
sed -i "s;${image};registry:5000/${image};g" ${FILES}
done
}
registry_up() {
log Validating local registry is up
REGISTRY_ID=$(docker ps -qa -f name=registry)
RUNNING_REGISTRY_ID=$(docker ps -q -f name=registry)
if [ "x${RUNNING_REGISTRY_ID}" = "x" -a "x${REGISTRY_ID}" != "x" ]; then
log Removing stopped docker registry
docker rm -fv ${REGISTRY_ID} &>> ${LOG_FILE}
fi
if [ "x${REGISTRY_ID}" = "x" ]; then
log Starting docker registry
docker run -d \
-p 5000:5000 \
-e REGISTRY_HTTP_ADDR=0.0.0.0:5000 \
--restart=always \
--name registry \
-v $REGISTRY_DATA_DIR:/var/lib/registry \
registry:2 &>> ${LOG_FILE}
fi
}