diff options
-rwxr-xr-x | utils/calculate_version.sh | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/utils/calculate_version.sh b/utils/calculate_version.sh new file mode 100755 index 000000000..aac212d55 --- /dev/null +++ b/utils/calculate_version.sh @@ -0,0 +1,131 @@ +#!/bin/bash + +# +# Authors: +# Jose Lausuch <jose.lausuch@ericsson.com> +# Fatih Degirmenci <fatih.degirmenci@ericsson.com> +# +# Calculates and generates the version tag for the OPNFV objects: +# - Docker images +# - ISOs +# - Artifcats +# + +info () { + logger -s -t "Calculate_version.info" "$*" +} + + +error () { + logger -s -t "Calculate_version.error" "$*" + exit 1 +} + + +#Functions which calculate the version +function docker_version() { + docker_image=$1 + url_repo="https://registry.hub.docker.com/v2/repositories/${docker_image}/" + url_tag="https://registry.hub.docker.com/v2/repositories/${docker_image}/tags/" + status=$(curl -s --head -w %{http_code} ${url_repo} -o /dev/null) + if [ "${status}" != "200" ]; then + error "Cannot access ${url_repo}. Does the image ${docker_image} exist?" + fi + tag_json=$(curl $url_tag 2>/dev/null | python -mjson.tool | grep ${BASE_VERSION} | head -1) + #e.g. tag_json= "name": "brahmaputra.0.2", + if [ "${tag_json}" == "" ]; then + error "The Docker Image ${docker_image} does not have a TAG with base version ${BASE_VERSION}" + fi + tag=$(echo $tag_json | awk '{print $2}' | sed 's/\,//' | sed 's/\"//g') + #e.g.: tag=brahmaputra.0.2 + tag_current_version=$(echo $tag | sed 's/.*\.//') + tag_new_version=$(($tag_current_version+1)) + #e.g.: tag=brahmaputra.0.3 + echo ${BASE_VERSION}.${tag_new_version} +} + + +function artifact_version() { + # To be done + echo "" +} + + +STORAGE_TYPES=(docker artifactrepo) +TYPE="" +NAME="" + + +usage="Calculates the version text of one of the following objects. + +usage: + bash $(basename "$0") [-h|--help] -t|--type docker|artifactrepo -n|--name <object_name> + +where: + -h|--help show this help text + -t|--type specify the storage location + -n|--name name of the repository/object + +examples: + $(basename "$0") -t docker -n opnfv/functest + $(basename "$0") -t artifactrepo -n fuel" + + + + +# Parse parameters +while [[ $# > 0 ]] + do + key="$1" + case $key in + -h|--help) + echo "$usage" + exit 0 + shift + ;; + -t|--type) + TYPE="$2" + shift + ;; + -n|--name) + NAME="$2" + shift + ;; + *) + error "unknown option $1" + exit 1 + ;; + esac + shift # past argument or value +done + +if [ -z "$BASE_VERSION" ]; then + error "Base version must be specified as environment variable. Ex.: export BASE_VERSION='brahmaputra.0'" +fi + +if [ "${TYPE}" == "" ]; then + error "Please specify the type of object to get the version from. $usage" +fi + +if [ "${NAME}" == "" ]; then + error "Please specify the name for the given storage type. $usage" +fi + +not_in=1 +for i in "${STORAGE_TYPES[@]}"; do + if [[ "${TYPE}" == "$i" ]]; then + not_in=0 + fi +done +if [ ${not_in} == 1 ]; then + error "Unknown type: ${TYPE}. Available storage types are: [${STORAGE_TYPES[@]}]" +fi + + +#info "Calculating version for object '${TYPE}' with arguments '${INFO}'..." +if [ "${TYPE}" == "docker" ]; then + docker_version $NAME + +elif [ "${TYPE}" == "artifactrepo" ]; then + artifact_version $NAME +fi |