Adding script to tag and push images to a docker-registry

Change-Id: I1896d28a2a44b0c45c2d337614e0e39aec7b76e7
diff --git a/developer/README.md b/developer/README.md
new file mode 100644
index 0000000..16199f0
--- /dev/null
+++ b/developer/README.md
@@ -0,0 +1,8 @@
+# Developer Tools
+
+This directory contains a collections of scripts usefull for development.
+
+## Tag and Push Docker images to a remote registry
+
+The `tag_and_push.sh` script will read your local docker images starting with `xosproject`, tag and push them to a docker registry.
+Please use `bash tag_and_push.sh -h` for usage instructions.
\ No newline at end of file
diff --git a/developer/tag_and_push.sh b/developer/tag_and_push.sh
new file mode 100644
index 0000000..a76670c
--- /dev/null
+++ b/developer/tag_and_push.sh
@@ -0,0 +1,95 @@
+#!/usr/bin/env bash
+#
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+###########################################################
+#                                                         #
+# Tags and push all the local images to a docker-registry #
+#                                                         #
+###########################################################
+
+#
+# Displays the help menu.
+#
+display_help () {
+  echo "Usage: $0 {--push|--help} [docker-registry] [tag=candidate] " >&2
+  echo " "
+  echo "   -h, --help              Display this help message."
+  echo "   -r, --registry          Tags and push all the local docker images to <docker-registry>"
+  echo " "
+  echo "   docker-registry         The address of the registry"
+  echo "   tag                     The tag to be used"
+  echo " "
+  echo "Example usages:"
+  echo "   ./tag_and_push.sh -r 192.168.10.100:30500"
+  echo "   ./tag_and_push.sh -r 192.168.10.100:30500 devel"
+}
+
+#
+# Tag and push all the locally available docker images
+#
+tag_and_push () {
+  echo "Pushing images to $DOCKER_REGISTRY with tag $DOCKER_TAG"
+  echo " "
+
+  # reading docker images
+  DOCKER_IMAGES_STR=$(docker images --format="{{.Repository}} {{.Tag}}" --filter "dangling=false" | grep -v none | grep "^xosproject")
+  DOCKER_IMAGES=($DOCKER_IMAGES_STR)
+
+  # looping over docker images
+  IMAGELIST_LENGTH=${#DOCKER_IMAGES[@]}
+  while [ $IMAGELIST_LENGTH -gt 0 ]
+  do
+    IMAGE=${DOCKER_IMAGES[0]}:${DOCKER_IMAGES[1]}
+
+    docker tag $IMAGE $DOCKER_REGISTRY/$IMAGE
+    docker push $DOCKER_REGISTRY/$IMAGE
+
+    # removing the already tagged and pushed image
+    DOCKER_IMAGES=("${DOCKER_IMAGES[@]:2}")
+    IMAGELIST_LENGTH=${#DOCKER_IMAGES[@]}
+  done
+}
+
+#
+# Init
+#
+CLI_OPT=$1
+DOCKER_REGISTRY=$2
+DOCKER_TAG=${3:-"candidate"}
+
+while :
+do
+  case $CLI_OPT in
+    -r | --registry)
+        tag_and_push
+        exit 0
+        ;;
+    -h | --help)
+        display_help
+        exit 0
+        ;;
+    --) # End of all options
+        shift
+        break
+        ;;
+    *)
+        echo Error: Unknown option: $CLI_OPT >&2
+        echo " "
+        display_help
+        exit -1
+        ;;
+  esac
+done
\ No newline at end of file