diff options
author | Patrice Buriez <patrice.buriez@intel.com> | 2018-08-28 17:45:03 +0200 |
---|---|---|
committer | Patrice Buriez <patrice.buriez@intel.com> | 2018-09-04 17:27:25 +0000 |
commit | 1f0f973e791962c2282f9f564769a14152d12a25 (patch) | |
tree | 27dcba8fa3317e9b90de23dbe5ce513c0181e5b0 | |
parent | 00f9e63336b0af1e11dc4048e74cba0fb690e906 (diff) |
Fix CLI argument handling in nsb_setup.sh
CLI argument $1 was used for both admin-openrc file with OpenStack
credentials and Yardstick Docker image, so obviously one of them would
be wrong, and NSB setup would fail at some point.
Historically, admin-openrc could be supplied as CLI argument $1, but
change https://gerrit.opnfv.org/gerrit/56493 broke it, which means
specifying Yardstick Docker image as CLI argument never worked.
This fix implements support for the following CLI options:
-o openrc Specify admin-openrc file with OpenStack credentials
-i image Specify Yardstick Docker image
-h Provide usage information
For backward compatibility reasons, admin-openrc file can be supplied
either with the -o option, or as a CLI argument.
JIRA: YARDSTICK-1137
Change-Id: I3e9904970560468c24b21738203bc67b7591f9e4
Signed-off-by: Patrice Buriez <patrice.buriez@intel.com>
-rwxr-xr-x | nsb_setup.sh | 77 |
1 files changed, 67 insertions, 10 deletions
diff --git a/nsb_setup.sh b/nsb_setup.sh index 1f5344980..335db8dd2 100755 --- a/nsb_setup.sh +++ b/nsb_setup.sh @@ -13,14 +13,78 @@ # See the License for the specific language governing permissions and # limitations under the License. +usage() +{ + cat <<EOF + +Yardstick NSB setup script. + +Usage: $0 [-h] [[-o] admin-openrc-for-openstack] [-i yardstick-docker-image] + +Options: + -h Show this message and exit + -o openrc Specify admin-openrc file with OpenStack credentials + Defaults to none + -i image Specify Yardstick Docker image, e.g. opnfv/yardstick:stable + Default value provided by ansible/nsb_setup.yml + See https://hub.docker.com/r/opnfv/yardstick/tags/ + +EOF +} + +OPTSTR=':ho:i:' +openrc= +image= + +# For backward compatibility reasons, accept openrc both as an argument +# and as the -o option. Hence these two loops. +while [ $# -ge 1 ]; do + OPTIND=1 + while getopts ${OPTSTR} OPT; do + case $OPT in + h) + usage + exit 0 + ;; + o) + openrc=${OPTARG} + ;; + i) + image=${OPTARG} + ;; + :) + usage + echo "ERROR: Missing value for -${OPTARG} option" + exit 1 + ;; + *) + usage + echo "ERROR: Invalid -${OPTARG} option" + exit 1 + ;; + esac + done + + if [ ${OPTIND} -eq 1 ]; then + openrc=$1 + shift + else + shift $((OPTIND - 1)) + fi +done + # OPENRC handling has to be first due no_proxy -if [ $# -eq 1 ]; then - OPENRC=$(readlink -f -- "$1") +if [ -n "${openrc}" ]; then + OPENRC=$(readlink -f -- "${openrc}") extra_args="${extra_args} -e openrc_file=${OPENRC}" source "${OPENRC}" CONTROLLER_IP=$(echo ${OS_AUTH_URL} | sed -ne "s#http://\([0-9a-zA-Z.\-]*\):*[0-9]*/.*#\1#p") fi +if [ -n "${image}" ]; then + extra_args="${extra_args} -e yardstick_docker_image=${image}" +fi + env_http_proxy=$(sed -ne "s/^http_proxy=[\"\']\(.*\)[\"\']/\1/p" /etc/environment) if [[ -z ${http_proxy} ]] && [[ ! -z ${env_http_proxy} ]]; then export http_proxy=${env_http_proxy} @@ -67,16 +131,9 @@ pip install ansible==2.5.5 shade==1.22.2 docker-py==1.10.6 ANSIBLE_SCRIPTS="ansible" -if [[ -n ${1} ]]; then - yardstick_docker_image="-e yardstick_docker_image=${1}" -else - yardstick_docker_image="" -fi - -# no quotes for yardstick_docker_image so when empty it is removed as whitespace cd ${ANSIBLE_SCRIPTS} &&\ ansible-playbook \ -e img_property="nsb" \ - ${yardstick_docker_image} \ -e YARD_IMG_ARCH='amd64' ${extra_args}\ -i install-inventory.ini nsb_setup.yml + |