CORD-616 some cleanup and clarification about registry tags
Change-Id: Ia8562b8b17c949fe135b8092fa370733629e039c
diff --git a/roles/head-node/files/commands/cord-registry b/roles/head-node/files/commands/cord-registry
new file mode 100755
index 0000000..c4faacb
--- /dev/null
+++ b/roles/head-node/files/commands/cord-registry
@@ -0,0 +1,94 @@
+#!/bin/bash
+#D Displays information about Docker images in the CORD POD registry
+
+PROG=$(echo $(basename $0) | sed -e 's/^cord-/cord /g')
+
+usage() {
+ echo "usage: $PROG [-r|--registry <registry] <sub-command> [options]"
+ echo " list display the Docker images in the registry"
+ echo " help this message"
+}
+
+usage_list() {
+ echo "usage $PROG list [--json|-j]"
+ echo " json display output as JSON object"
+ echo " help this message"
+}
+
+REG=docker-registry:5000
+while [ $# -gt 0 ]; do
+ case $1 in
+ -r|--registry)
+ shift
+ REG=$1
+ ;;
+ -*)
+ echo "Unknown option '$1'"
+ usage
+ exit 1
+ ;;
+ *)
+ break
+ ;;
+ esac
+ shift
+done
+
+COMMAND=$1; shift
+
+case $COMMAND in
+ list)
+ DO_JSON=0
+ while [ $# -gt 0 ]; do
+ case $1 in
+ json|--json|-j)
+ DO_JSON=1
+ ;;
+ help|--help|-h)
+ usage_list
+ exit 0
+ ;;
+ *)
+ >&2 echo "Unknown option '$1'"
+ usage_list
+ exit 1
+ ;;
+ esac
+ shift
+ done
+
+ if [ $DO_JSON -eq 1 ]; then
+ /bin/echo -n '{"registries":['
+ COMMA=
+ for i in $(curl -sSL http://$REG/v2/_catalog | jq '.repositories | .[]' | sed -e 's/"//g'); do
+ /bin/echo -n "$COMMA{\"registry\":\"${REG}/$i\",\"tags\":["
+ C2=
+ for t in $(curl -sSL http://$REG/v2/redis/tags/list | jq '.tags | .[]' | sed -e 's/"//g'); do
+ echo -n "${C2}\"$t\""
+ C2=","
+ done
+ /bin/echo -n "]}"
+ COMMA=","
+ done
+ echo -n "]}"
+ else
+ OUT=$(mktemp)
+ echo "REPOSITORY,TAG" > $OUT
+ for i in $(curl -sSL http://$REG/v2/_catalog | jq '.repositories | .[]' | sed -e 's/"//g'); do
+ for t in $(curl -sSL http://$REG/v2/redis/tags/list | jq '.tags | .[]' | sed -e 's/"//g'); do
+ /bin/echo -e "${REG}/$i,$t" >> $OUT
+ done
+ done
+ cat $OUT | column -s , -t
+ rm -f $OUT
+ fi
+ ;;
+ help)
+ usage
+ exit 0
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+esac