diff options
Diffstat (limited to 'utils/test/testapi')
-rw-r--r-- | utils/test/testapi/deployment/deploy.py | 40 | ||||
-rw-r--r-- | utils/test/testapi/deployment/docker-compose.yml.template | 15 | ||||
-rw-r--r-- | utils/test/testapi/opts/deploy.py | 55 | ||||
-rw-r--r-- | utils/test/testapi/tools/watchdog/docker_watch.sh | 165 |
4 files changed, 55 insertions, 220 deletions
diff --git a/utils/test/testapi/deployment/deploy.py b/utils/test/testapi/deployment/deploy.py deleted file mode 100644 index 6433fa6b2..000000000 --- a/utils/test/testapi/deployment/deploy.py +++ /dev/null @@ -1,40 +0,0 @@ -import argparse -import os - -from jinja2 import Environment, FileSystemLoader - -env = Environment(loader=FileSystemLoader('./')) -docker_compose_yml = './docker-compose.yml' -docker_compose_template = './docker-compose.yml.template' - - -def render_docker_compose(port, base_url): - vars = { - "expose_port": port, - "base_url": base_url, - } - template = env.get_template(docker_compose_template) - yml = template.render(vars=vars) - - with open(docker_compose_yml, 'w') as f: - f.write(yml) - f.close() - - -def main(args): - render_docker_compose(args.expose_port, args.base_url) - os.system('docker-compose -f {} up -d'.format(docker_compose_yml)) - - -if __name__ == '__main__': - parser = argparse.ArgumentParser(description='Backup MongoDBs') - parser.add_argument('-p', '--expose-port', - type=int, - required=False, - default=8000, - help='testapi exposed port') - parser.add_argument('-l', '--base-url', - type=str, - required=True, - help='testapi exposed base-url') - main(parser.parse_args()) diff --git a/utils/test/testapi/deployment/docker-compose.yml.template b/utils/test/testapi/deployment/docker-compose.yml.template deleted file mode 100644 index cd684048e..000000000 --- a/utils/test/testapi/deployment/docker-compose.yml.template +++ /dev/null @@ -1,15 +0,0 @@ -version: '2' -services: - mongo: - image: mongo:3.2.1 - container_name: opnfv-mongo - testapi: - image: opnfv/testapi:latest - container_name: opnfv-testapi - environment: - - mongodb_url=mongodb://mongo:27017/ - - base_url={{ vars.base_url }} - ports: - - "{{ vars.expose_port }}:8000" - links: - - mongo diff --git a/utils/test/testapi/opts/deploy.py b/utils/test/testapi/opts/deploy.py new file mode 100644 index 000000000..f58690c5d --- /dev/null +++ b/utils/test/testapi/opts/deploy.py @@ -0,0 +1,55 @@ +import argparse +import os + +from jinja2 import Environment + +DOCKER_COMPOSE_FILE = './docker-compose.yml' +DOCKER_COMPOSE_TEMPLATE = """ +version: '2' +services: + mongo: + image: mongo:3.2.1 + container_name: opnfv-mongo + testapi: + image: opnfv/testapi:latest + container_name: opnfv-testapi + environment: + - mongodb_url=mongodb://mongo:27017/ + - base_url={{ vars.testapi_base_url }} + ports: + - "{{ vars.testapi_port }}:8000" + links: + - mongo +""" + + +def render_docker_compose(testapi_port, testapi_base_url): + vars = { + "testapi_port": testapi_port, + "testapi_base_url": testapi_base_url, + } + + yml = Environment().from_string(DOCKER_COMPOSE_TEMPLATE).render(vars=vars) + + with open(DOCKER_COMPOSE_FILE, 'w') as f: + f.write(yml) + f.close() + + +def main(args): + render_docker_compose(args.testapi_port, args.testapi_base_url) + os.system('docker-compose -f {} up -d'.format(DOCKER_COMPOSE_FILE)) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Backup MongoDBs') + parser.add_argument('-tp', '--testapi-port', + type=int, + required=False, + default=8000, + help='testapi exposed port') + parser.add_argument('-tl', '--testapi-base-url', + type=str, + required=True, + help='testapi exposed base-url') + main(parser.parse_args()) diff --git a/utils/test/testapi/tools/watchdog/docker_watch.sh b/utils/test/testapi/tools/watchdog/docker_watch.sh deleted file mode 100644 index f1d8946b6..000000000 --- a/utils/test/testapi/tools/watchdog/docker_watch.sh +++ /dev/null @@ -1,165 +0,0 @@ -# * -# 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. * - -# This script checks if deployments are working or and then -# starts the specified containers in case one of the containers -# crash. The only solution is restarting docker as of now. - -#!/bin/bash - -## List of modules -modules=(testapi reporting) - -## Ports of the modules -declare -A ports=( ["testapi"]="8082" ["reporting"]="8084") - -## Urls to check if the modules are deployed or not ? -declare -A urls=( ["testapi"]="http://testresults.opnfv.org/test/" \ - ["reporting"]="http://testresults.opnfv.org/reporting/index.html") - -### Functions related to checking. - -function is_deploying() { - xml=$(curl -m10 "https://build.opnfv.org/ci/job/${1}-automate-master/lastBuild/api/xml?depth=1") - building=$(grep -oPm1 "(?<=<building>)[^<]+" <<< "$xml") - if [[ $building == "false" ]] - then - false - else - true - fi -} - -function get_docker_status() { - status=$(service docker status | sed -n 3p | cut -d ' ' -f5) - echo -e "Docker status: $status" - if [ $status = "active" ] - then - true - else - false - fi -} - -function check_connectivity() { - echo "Checking $1 connection : $2" - cmd=`curl --head -m10 --request GET ${2} | grep '200 OK' > /dev/null` - rc=$? - if [[ $rc == 0 ]]; then - true - else - false - fi -} - -function check_modules() { - echo -e "Checking modules" - failed_modules=() - for module in "${modules[@]}" - do - if is_deploying $module; then - continue - fi - if ! check_connectivity $module "${urls[$module]}"; then - echo -e "$module failed" - failed_modules+=($module) - fi - done - if [ ! -z "$failed_modules" ]; then - echo -e "Failed Modules: $failed_modules" - false - else - echo -e "All modules working good" - exit 0 - fi -} - -### Functions related fixes. - -function restart_docker_fix() { - echo -e "Running restart_docker_fix" - service docker restart - start_containers_fix "${modules[@]}" -} - -function docker_proxy_fix() { - echo -e "Running docker_proxy_fix" - fix_modules=("${@}") - for module in "${fix_modules[@]}" - do - echo -e "Kill docker proxy and restart containers" - pid=$(netstat -nlp | grep :${ports[$module]} | awk '{print $7}' | cut -d'/' -f1) - echo $pid - if [ ! -z "$pid" ]; then - kill $pid - start_container_fix $module - fi - done -} - -function start_containers_fix() { - start_modules=("${@}") - for module in "${start_modules[@]}" - do - start_container_fix $module - done -} - -function start_container_fix() { - echo -e "Starting a container $module" - sudo docker stop $module - sudo docker start $module - sleep 5 - if ! check_connectivity $module "${urls[$module]}"; then - echo -e "Starting an old container $module_old" - sudo docker stop $module - sudo docker start $module"_old" - sleep 5 - fi -} - -### Main Flow - -echo -e -echo -e "WatchDog Started" -echo -e -echo -e `date "+%Y-%m-%d %H:%M:%S.%N"` -echo -e - -## If the problem is related to docker daemon - -if ! get_docker_status; then - restart_docker_fix - if ! check_modules; then - echo -e "Watchdog failed while restart_docker_fix" - fi - exit -fi - -## If the problem is related to docker proxy - -if ! check_modules; then - docker_proxy_fix "${failed_modules[@]}" -fi - -## If any other problem : restart docker - -if ! check_modules; then - restart_docker_fix -fi - -## If nothing works out - -if ! check_modules; then - echo -e "Watchdog failed" -fi - -sudo docker ps -sudo docker images
\ No newline at end of file |