From f0532d88072253ca9c5902f4cefcde61f8b0d787 Mon Sep 17 00:00:00 2001 From: Bryan Sullivan Date: Tue, 6 Feb 2018 20:49:10 -0500 Subject: Fix anteater issue with use of /tmp JIRA: MODELS-2 Change-Id: Ia24b89710633191066a89c70b981486e71d6a5fd Signed-off-by: Bryan Sullivan --- tests/utils/osclient.sh | 156 +++++++++++++++++++++--------------------------- 1 file changed, 68 insertions(+), 88 deletions(-) diff --git a/tests/utils/osclient.sh b/tests/utils/osclient.sh index eab5b90..839aa29 100644 --- a/tests/utils/osclient.sh +++ b/tests/utils/osclient.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2017 AT&T Intellectual Property, Inc +# Copyright 2017-2018 AT&T Intellectual Property, Inc # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,58 +13,56 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# What this is: Setup script for OpenStack Clients (OSC) running in -# an Unbuntu Xenial docker container. You can use this script to isolate the -# OSC from your host, so that the OSC and related install pre-reqs do not -# pollute your host environment. You can then then modify your tests scripts on -# your host and run them using the OSC container rather than moving the test -# scripts to DevStack or an OpenStack installation (see below). You can also -# attach to the OSC container. Enter "sudo docker attach osclient" then hit enter -# twice and you will be in the container as root (there are no other users). -# Once in the container, you can "source /tmp/osclient/admin-openrc.sh" and use -# any OSC commands you want. -# -# Status: this is a work in progress, under test. -# -# How to use: -# 1) Obtain the credential script for your OpenStack installation by logging -# into the OpenStack Dashboard and downloading the OpenStack RD file from -# Project -> Access & Security -> API Access -# 2) Edit the *-openrc.sh file: -# * remove the following lines: -# echo "Please enter your OpenStack Password for project $OS_TENANT_NAME as user $OS_USERNAME: " -# read -sr OS_PASSWORD_INPUT -# * replace $OS_PASSWORD_INPUT with the password -# 3) execute this command: $ bash osclient.sh setup [branch] -# * setup: install the OpenStack CLI clients in a container on the host. -# * location of the *-openrc.sh file you edited in step 2 -# * branch: git repo branch to install (e.g. stable/newton) OPTIONAL; if you want the master branch, -# do not include this parameter -# * Example: -# If the admin-openrc.sh file is in the same directory as osclient.sh and you want to use stable/newton: -# $ bash osclient.sh setup admin-openrc.sh stable/newton -# If the admin-openrc.sh file is in a different directory and you want to use master: -# $ bash osclient.sh setup ~/Downloads/admin-openrc.sh -# -# Once the Docker container has been created and is running, you can run your scripts -# $ bash osclient.sh run -# * run: run a command in the container -# * : command to run, in quotes e.g. -# bash osclient.sh run 'openstack service list' -# bash osclient.sh run 'bash mytest.sh' -# To run tests in the container: -# 1) Copy the tests to the shared folder for the container (/tmp/osclient) -# 2) Run your tests; for example, if you want to run Copper tests: -# $ bash ~/git/models/tests/utils/osclient.sh run "bash /tmp/osclient/copper/tests/network_bridging.sh" -# $ bash ~/git/models/tests/utils/osclient.sh run "bash /tmp/osclient/copper/tests/network_bridging-clean.sh" -# 3) Due to a (?) Docker quirk, you need to remove and re-copy the tests each time you change them, e.g. as you edit the tests during development -# $ rm -rf /tmp/osclient/copper/tests/; cp -R ~/git/copper/tests/ /tmp/osclient/copper/tests/ -# -# To stop and then remove the Docker container -# $ bash osclient.sh clean -# * clean: remove the osclient container and shared folder -# Note: you may have to run as sudo in order to delete the files in /tmp/osclient - +#.What this is: Setup script for OpenStack Clients (OSC) running in +#.an Unbuntu Xenial docker container. You can use this script to isolate the +#.OSC from your host, so that the OSC and related install pre-reqs do not +#.pollute your host environment. You can then then modify your tests scripts on +#.your host and run them using the OSC container rather than moving the test +#.scripts to DevStack or an OpenStack installation (see below). You can also +#.attach to the OSC container. Enter "sudo docker attach osclient" then hit enter +#.twice and you will be in the container as root (there are no other users). +#.Once in the container, you can "source ~/admin-openrc.sh" and use +#.any OSC commands you want. +#. +#.Status: this is a work in progress, under test. +#. +#.How to use: +#. 1) Obtain the credential script for your OpenStack installation by logging +#. into the OpenStack Dashboard and downloading the OpenStack RD file from +#. Project -> Access & Security -> API Access +#. 2) Edit the *-openrc.sh file: +#. * remove the following lines: +#. echo "Please enter your OpenStack Password for project $OS_TENANT_NAME as user $OS_USERNAME: " +#. read -sr OS_PASSWORD_INPUT +#. * replace $OS_PASSWORD_INPUT with the password +#. 3) execute this command: $ bash osclient.sh setup [branch] +#. * setup: install the OpenStack CLI clients in a container on the host. +#. * location of the *-openrc.sh file you edited in step 2 +#. * branch: git repo branch to install (e.g. stable/newton) OPTIONAL; if you want the master branch, +#. do not include this parameter +#. * Example: +#. If the admin-openrc.sh file is in the same directory as osclient.sh and you want to use stable/newton: +#. $ bash osclient.sh setup admin-openrc.sh stable/newton +#. If the admin-openrc.sh file is in a different directory and you want to use master: +#. $ bash osclient.sh setup ~/Downloads/admin-openrc.sh +#. +#.Once the Docker container has been created and is running, you can run your scripts +#. $ bash osclient.sh run +#. * run: run a command in the container +#. * : command to run, in quotes e.g. +#. bash osclient.sh run 'openstack service list' +#. bash osclient.sh run 'bash mytest.sh' +#.To run tests in the container: +#. 1) Copy the tests to the shared folder for the container (/home/ubuntu) +#. 2) Run your tests; for example, if you want to run Copper tests: +#. $ bash ~/git/models/tests/utils/osclient.sh run "bash copper/tests/network_bridging.sh" +#. $ bash ~/git/models/tests/utils/osclient.sh run "bash copper/tests/network_bridging-clean.sh" +#. 3) Due to a (?) Docker quirk, you need to remove and re-copy the tests each time you change them, e.g. as you edit the tests during development +#. $ rm -rf ~/tmp/osclient/copper/tests/; cp -R ~/git/copper/tests/ ~/tmp/osclient/copper/tests/ +#. +#.To stop and then remove the Docker container +#. $ bash osclient.sh clean +#. * clean: remove the osclient container and shared folder trap 'fail' ERR @@ -103,10 +101,10 @@ function create_container() { # xenial is needed for python 3.5 sudo docker pull ubuntu:xenial sudo service docker start - sudo docker run -i -t -d -v /tmp/osclient/:/tmp/osclient --name osclient \ + sudo docker run -i -t -d -v ~/tmp/osclient/:/home/ubuntu/ --name osclient \ ubuntu:xenial /bin/bash - sudo docker exec osclient /bin/bash /tmp/osclient/osclient-setup.sh \ - setup /tmp/osclient/admin-openrc.sh $branch + sudo docker exec osclient /bin/bash osclient-setup.sh \ + setup admin-openrc.sh $branch else # Centos echo "Centos-based install" @@ -122,10 +120,10 @@ EOF # xenial is needed for python 3.5 sudo service docker start sudo docker pull ubuntu:xenial - sudo docker run -i -t -d -v /tmp/osclient/:/tmp/osclient --name osclient \ + sudo docker run -i -t -d -v ~/tmp/osclient/:/home/ubuntu/ --name osclient \ ubuntu:xenial /bin/bash - sudo docker exec osclient /bin/bash /tmp/osclient/osclient-setup.sh setup \ - /tmp/osclient/admin-openrc.sh $branch + sudo docker exec osclient /bin/bash osclient-setup.sh setup \ + admin-openrc.sh $branch fi } @@ -150,7 +148,7 @@ function setup () { apt-get install -y libffi-dev apt-get install -y libssl-dev - cd /tmp/osclient + cd ~ echo "$0: $(date) Upgrage pip" pip install --upgrade pip @@ -181,47 +179,29 @@ case "$1" in setup $openrc $branch else echo "$0: $(date) Setup shared virtual folder and save $1 script there" - if [[ ! -d /tmp/osclient ]]; then mkdir /tmp/osclient; fi - cp $0 /tmp/osclient/osclient-setup.sh - cp $openrc /tmp/osclient/admin-openrc.sh - chmod 755 /tmp/osclient/*.sh + if [[ ! -d ~/tmp/osclient ]]; then mkdir ~/tmp/osclient; fi + cp $0 ~/tmp/osclient/osclient-setup.sh + cp $openrc ~/tmp/osclient/admin-openrc.sh + chmod 755 ~/tmp/osclient/*.sh create_container fi pass ;; run) - cat >/tmp/osclient/command.sh <~/tmp/osclient/command.sh < [branch]" -echo " : OpenStack CLI env setup script (e.g." -echo " admin-openrc.sh), obtained from the OpenStack Dashboard via" -echo " Project->Access->Security->API. It's also recommended that you set the" -echo " OpenStack password explicitly in that script rather than take the" -echo " default which will prompt you on every command you pass to the container." -echo " For example, if the admin-openrc.sh file is in the same directory as " -echo " osclient.sh and you want to use stable/newton:" -echo " $ bash osclient.sh setup admin-openrc.sh stable/newton" -echo " branch: git repo branch to install (e.g. stable/newton)" -echo " run: run a command in the container" -echo " $ bash osclient.sh run " -echo " : command to run, in quotes e.g." -echo " bash osclient.sh run 'openstack service list'" -echo " bash osclient.sh run 'bash mytest.sh'" -echo " clean: remove the osclient container and shared folder" -echo " $ bash osclient.sh clean" -fail + grep '#. ' $0 + ;; esac -- cgit 1.2.3-korg