From 9ca642e4e04d5aec48e7619439e25505ac32b213 Mon Sep 17 00:00:00 2001 From: Andrey Kurilin Date: Tue, 24 Mar 2020 20:11:30 +0200 Subject: [PATCH] Update Docker image Change-Id: Id3ba48db92dc92b9be128a50ee4f560e621d1423 --- .zuul.d/zuul.yaml | 4 +- CHANGELOG.rst | 11 ++ Dockerfile | 42 ++----- etc/rally.bash_completion | 108 ------------------ .../ci/playbooks/run-rally-docker-check.yaml | 6 +- 5 files changed, 26 insertions(+), 145 deletions(-) delete mode 100644 etc/rally.bash_completion diff --git a/.zuul.d/zuul.yaml b/.zuul.d/zuul.yaml index 229d867c..c5b6cf49 100644 --- a/.zuul.d/zuul.yaml +++ b/.zuul.d/zuul.yaml @@ -18,7 +18,7 @@ - rally-tox-py36 - rally-tox-py37 - rally-dsvm-tox-functional - #- rally-docker-check + - rally-docker-check - rally-task-basic-with-existing-users: # use_existing_users key did not trigger proper ansible tasks voting: false @@ -77,7 +77,7 @@ - rally-tox-py36 - rally-tox-py37 - rally-dsvm-tox-functional - #- rally-docker-check + - rally-docker-check - rally-task-simple-job - rally-task-cinder #- rally-task-heat diff --git a/CHANGELOG.rst b/CHANGELOG.rst index dec1aa49..2502e99f 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -16,6 +16,17 @@ Changelog .. Release notes for existing releases are MUTABLE! If there is something that was missed or can be improved, feel free to change it! +[unreleased] +------------ + +Changed +~~~~~~~ + +* `docker image `_ is + switched to use `docker image `_ as + a base user that brings use python 3.6 and ubuntu bionic. + + [1.7.0] - 2020-12-25 -------------------- diff --git a/Dockerfile b/Dockerfile index d728c9b0..470b02b5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,36 +1,14 @@ -FROM ubuntu:16.04 +FROM xrally/xrally:3.0.0 -RUN sed -i s/^deb-src.*// /etc/apt/sources.list +# "rally" user (which is selected by-default) is owner of "/rally" directory, +# so there is no need to call chown or switch the user +COPY . /rally/xrally_opentstack +WORKDIR /rally/xrally_opentstack -RUN apt-get update && apt-get install --yes sudo python python-pip vim git-core && \ - pip install --upgrade pip && \ - useradd -u 65500 -m rally && \ - usermod -aG sudo rally && \ - echo "rally ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/00-rally-user - -COPY . /home/rally/source -COPY etc/motd /etc/motd -WORKDIR /home/rally/source - -# ensure that we have all system packages installed -RUN pip install bindep && apt-get install --yes $(bindep -b | tr '\n' ' ') - -RUN pip install . --constraint upper-constraints.txt && \ - pip install pymysql && \ - pip install psycopg2 && \ - mkdir /etc/rally && \ - echo "[database]" > /etc/rally/rally.conf && \ - echo "connection=sqlite:////home/rally/data/rally.db" >> /etc/rally/rally.conf -RUN echo '[ ! -z "$TERM" -a -r /etc/motd ] && cat /etc/motd' >> /etc/bash.bashrc -# Cleanup pip -RUN rm -rf /root/.cache/ +# to install package system-wide, we need to temporary switch to root user +USER root +# disabling cache since we do not expect to install other packages +RUN pip3 install -U setuptools --no-cache-dir && pip3 install . --no-cache-dir +# switch back to rally user for avoid permission conflicts USER rally -ENV HOME /home/rally -RUN mkdir -p /home/rally/data && rally db recreate - -# Docker volumes have specific behavior that allows this construction to work. -# Data generated during the image creation is copied to volume only when it's -# attached for the first time (volume initialization) -VOLUME ["/home/rally/data"] -ENTRYPOINT ["rally"] diff --git a/etc/rally.bash_completion b/etc/rally.bash_completion deleted file mode 100644 index fe1463b4..00000000 --- a/etc/rally.bash_completion +++ /dev/null @@ -1,108 +0,0 @@ -#!/bin/bash - -# Standalone _filedir() alternative. -# This exempts from dependence of bash completion routines -function _rally_filedir() -{ - test "${1}" \ - && COMPREPLY=( \ - $(compgen -f -- "${cur}" | grep -E "${1}") \ - $(compgen -o plusdirs -- "${cur}") ) \ - || COMPREPLY=( \ - $(compgen -o plusdirs -f -- "${cur}") \ - $(compgen -d -- "${cur}") ) -} - -_rally() -{ - declare -A SUBCOMMANDS - declare -A OPTS - - OPTS["db_create"]="" - OPTS["db_ensure"]="" - OPTS["db_recreate"]="" - OPTS["db_revision"]="" - OPTS["db_show"]="--creds" - OPTS["db_upgrade"]="" - OPTS["deployment_check"]="--deployment" - OPTS["deployment_config"]="--deployment" - OPTS["deployment_create"]="--name --fromenv --filename --no-use" - OPTS["deployment_destroy"]="--deployment" - OPTS["deployment_list"]="" - OPTS["deployment_recreate"]="--filename --deployment" - OPTS["deployment_show"]="--deployment" - OPTS["deployment_use"]="--deployment" - OPTS["env_check"]="--env --json --detailed" - OPTS["env_create"]="--name --description --extras --spec --json --no-use" - OPTS["env_delete"]="--env --force" - OPTS["env_destroy"]="--env --skip-cleanup --json --detailed" - OPTS["env_info"]="--env --json" - OPTS["env_list"]="--json" - OPTS["env_show"]="--env --json" - OPTS["env_use"]="--env --json" - OPTS["plugin_list"]="--name --platform --plugin-base" - OPTS["plugin_show"]="--name --platform" - OPTS["task_abort"]="--uuid --soft" - OPTS["task_delete"]="--force --uuid" - OPTS["task_detailed"]="--uuid --iterations-data" - OPTS["task_export"]="--uuid --type --to" - OPTS["task_import"]="--file --deployment --tag" - OPTS["task_list"]="--deployment --all-deployments --status --tag --uuids-only" - OPTS["task_report"]="--out --open --html --html-static --json --uuid" - OPTS["task_results"]="--uuid" - OPTS["task_sla-check"]="--uuid --json" - OPTS["task_sla_check"]="--uuid --json" - OPTS["task_start"]="--deployment --task --task-args --task-args-file --tag --no-use --abort-on-sla-failure" - OPTS["task_status"]="--uuid" - OPTS["task_trends"]="--out --open --tasks" - OPTS["task_use"]="--uuid" - OPTS["task_validate"]="--deployment --task --task-args --task-args-file" - OPTS["verify_add-verifier-ext"]="--id --source --version --extra-settings" - OPTS["verify_configure-verifier"]="--id --deployment-id --reconfigure --extend --override --show" - OPTS["verify_create-verifier"]="--name --type --platform --source --version --system-wide --extra-settings --no-use" - OPTS["verify_delete"]="--uuid" - OPTS["verify_delete-verifier"]="--id --deployment-id --force" - OPTS["verify_delete-verifier-ext"]="--id --name" - OPTS["verify_import"]="--id --deployment-id --file --run-args --no-use" - OPTS["verify_list"]="--id --deployment-id --tag --status" - OPTS["verify_list-plugins"]="--platform" - OPTS["verify_list-verifier-exts"]="--id" - OPTS["verify_list-verifier-tests"]="--id --pattern" - OPTS["verify_list-verifiers"]="--status" - OPTS["verify_report"]="--uuid --type --to --open" - OPTS["verify_rerun"]="--uuid --deployment-id --failed --tag --concurrency --detailed --no-use" - OPTS["verify_show"]="--uuid --sort-by --detailed" - OPTS["verify_show-verifier"]="--id" - OPTS["verify_start"]="--id --deployment-id --tag --pattern --concurrency --load-list --skip-list --xfail-list --detailed --no-use" - OPTS["verify_update-verifier"]="--id --update-venv --version --system-wide --no-system-wide" - OPTS["verify_use"]="--uuid" - OPTS["verify_use-verifier"]="--id" - - for OPT in ${!OPTS[*]} ; do - CMD=${OPT%%_*} - CMDSUB=${OPT#*_} - SUBCOMMANDS[${CMD}]+="${CMDSUB} " - done - - COMMANDS="${!SUBCOMMANDS[*]}" - COMPREPLY=() - - local cur="${COMP_WORDS[COMP_CWORD]}" - local prev="${COMP_WORDS[COMP_CWORD-1]}" - - if [[ $cur =~ ^(\.|\~|\/) ]] || [[ $prev =~ ^--out(|put-file)$ ]] ; then - _rally_filedir - elif [[ $prev =~ ^--(task|filename)$ ]] ; then - _rally_filedir "\.json|\.yaml|\.yml" - elif [ $COMP_CWORD == "1" ] ; then - COMPREPLY=($(compgen -W "$COMMANDS" -- ${cur})) - elif [ $COMP_CWORD == "2" ] ; then - COMPREPLY=($(compgen -W "${SUBCOMMANDS[${prev}]}" -- ${cur})) - else - COMMAND="${COMP_WORDS[1]}_${COMP_WORDS[2]}" - COMPREPLY=($(compgen -W "${OPTS[$COMMAND]}" -- ${cur})) - fi - return 0 -} - -complete -o filenames -F _rally rally diff --git a/tests/ci/playbooks/run-rally-docker-check.yaml b/tests/ci/playbooks/run-rally-docker-check.yaml index da80f275..851c230c 100644 --- a/tests/ci/playbooks/run-rally-docker-check.yaml +++ b/tests/ci/playbooks/run-rally-docker-check.yaml @@ -41,12 +41,12 @@ - name: Create an Environment become: True become_user: root - command: docker run -v rally_volume:/home/rally/data xrally/xrally-openstack env create --name "special_env_name" + command: docker run -v rally_volume:/home/rally/.rally xrally/xrally-openstack env create --name "special_env_name" - name: List all available environments become: True become_user: root - command: docker run -v rally_volume:/home/rally/data xrally/xrally-openstack env list + command: docker run -v rally_volume:/home/rally/.rally xrally/xrally-openstack env list register: env_list # Check availability of that environment (check that volume stores Rally database) @@ -58,4 +58,4 @@ become: True become_user: root # this plugin was added with rally-openstack 1.1.0 - command: docker run -v rally_volume:/home/rally/data xrally/xrally-openstack plugin show GnocchiMetric.list_metric + command: docker run -v rally_volume:/home/rally/.rally xrally/xrally-openstack plugin show GnocchiMetric.list_metric