From fb8a5145df74d44bdc700854e6921062e8ae3aa5 Mon Sep 17 00:00:00 2001 From: David Moreau Simard Date: Tue, 19 Nov 2019 17:46:19 -0500 Subject: [PATCH] Update ARA ARA's master branch now has static site generation, so we can move away from the stable branch and get the new reports. In the mean time ARA upstream has moved to github, so this updates the references for the -devel job. Depends-On: https://review.opendev.org/c/openstack/project-config/+/793530 Change-Id: I008b35562994f1205a4f66e53f93b9885a6b8754 --- playbooks/install-ansible.yaml | 4 +-- playbooks/roles/install-ansible/README.rst | 16 ++++++---- .../roles/install-ansible/defaults/main.yaml | 15 +++++---- .../install-ansible/tasks/install_ara.yaml | 8 +---- playbooks/zuul/run-base-post.yaml | 31 +++++++------------ testinfra/test_bridge.py | 4 +-- zuul.d/system-config-run.yaml | 7 ++--- 7 files changed, 35 insertions(+), 50 deletions(-) diff --git a/playbooks/install-ansible.yaml b/playbooks/install-ansible.yaml index 4739bf24bb..6666841462 100644 --- a/playbooks/install-ansible.yaml +++ b/playbooks/install-ansible.yaml @@ -21,6 +21,6 @@ # NOTE(ianw): At 2018-12, ARA is only enabled during gate # testing jobs as we decide if or how to store data on # production bridge.o.o - install_ansible_ara_name: '{{ bridge_ara_name | default("ara") }}' - install_ansible_ara_version: '{{ bridge_ara_version | default("0.16.4") }}' + install_ansible_ara_name: '{{ bridge_ara_name | default("ara[server]") }}' + install_ansible_ara_version: '{{ bridge_ara_version | default("latest") }}' - root-keys diff --git a/playbooks/roles/install-ansible/README.rst b/playbooks/roles/install-ansible/README.rst index 304e87a0fb..0caadb15c1 100644 --- a/playbooks/roles/install-ansible/README.rst +++ b/playbooks/roles/install-ansible/README.rst @@ -44,7 +44,7 @@ Install and configure Ansible on a host via pip Whether or not to install the ARA Records Ansible callback plugin .. zuul:rolevar:: install_ansible_ara_name - :default: ara + :default: ara[server] The name of the ARA package to install. To install from alternative sources, this can be a URL for a remote package. @@ -59,13 +59,17 @@ Install and configure Ansible on a host via pip package and hence the latest version is always installed. .. zuul:rolevar:: install_ansible_ara_config - :default: {"database": "sqlite:////var/cache/ansible/ara.sqlite"} - A dictionary of key-value pairs to be added to the ARA - configuration file + A dictionary of configuration keys and their values for ARA's Ansible plugins. - *database*: Connection string for the database (ex: mysql+pymysql://ara:password@localhost/ara) + Default configuration keys: + + - ``api_client: offline`` (can be ``http`` for sending to remote API servers) + - ``api_server: http://127.0.0.1:8000`` (has no effect when using offline) + - ``api_username: null`` (if required, an API username) + - ``api_password: null`` (if required, an API password) + - ``api_timeout: 30`` (the timeout on http requests) For a list of available configuration options, see the `ARA documentation`_ -.. _ARA documentation: https://ara.readthedocs.io/en/stable/configuration.html +.. _ARA documentation: https://ara.readthedocs.io/en/latest/ara-plugin-configuration.html diff --git a/playbooks/roles/install-ansible/defaults/main.yaml b/playbooks/roles/install-ansible/defaults/main.yaml index 8f0d0d3528..a26df830ce 100644 --- a/playbooks/roles/install-ansible/defaults/main.yaml +++ b/playbooks/roles/install-ansible/defaults/main.yaml @@ -1,12 +1,11 @@ # Whether or not to install ARA install_ansible_ara_enable: false -# See available configuration options in the ARA docs: -# https://ara.readthedocs.io/en/stable/configuration.html -# Note that this may be set in the private host vars when using mysql so we can -# keep the credentials secret. +# See available configuration options for the callback in the ARA docs: +# https://ara.readthedocs.io/en/latest/ara-plugin-configuration.html install_ansible_ara_config: - # Connection string for ARA - # https://ara.readthedocs.io/en/stable/configuration.html#ara-database - # Ex: mysql+pymysql://ara:password@localhost/ara - database: "sqlite:////var/cache/ansible/ara.sqlite" + api_client: offline +# api_server: http://127.0.0.1:8000 +# api_username: null +# api_password: null +# api_timeout: 30 diff --git a/playbooks/roles/install-ansible/tasks/install_ara.yaml b/playbooks/roles/install-ansible/tasks/install_ara.yaml index 08bc34ee17..ae9dd875ac 100644 --- a/playbooks/roles/install-ansible/tasks/install_ara.yaml +++ b/playbooks/roles/install-ansible/tasks/install_ara.yaml @@ -1,9 +1,3 @@ -- name: Install pymysql for ara - pip: - name: pymysql - state: present - when: '"pymysql" in install_ansible_ara_config["database"]' - # If ansible_install_ansible_ara_version is not defined it should be "latest" - name: Set ara default version to latest set_fact: @@ -27,7 +21,7 @@ - name: Install ARA pip: - name: '{{ install_ansible_ara_name | default("ara") }}' + name: '{{ install_ansible_ara_name | default("ara[server]") }}' version: '{{ _install_ansible_ara_version | default(omit) }}' state: '{{ _install_ansible_ara_state | default(omit) }}' diff --git a/playbooks/zuul/run-base-post.yaml b/playbooks/zuul/run-base-post.yaml index ae4161a83b..699fd47a6d 100644 --- a/playbooks/zuul/run-base-post.yaml +++ b/playbooks/zuul/run-base-post.yaml @@ -50,27 +50,18 @@ recurse: yes become: yes - - name: Ensure ARA log directories exist - file: - path: "{{ item }}" - state: directory - with_items: - - "{{ ansible_user_dir }}/zuul-output/logs/ara-report" + - name: Generate ARA static report + command: ara-manage generate /root/.ara/static + become: yes - - name: Copy ARA database into report dir - copy: - remote_src: true - src: /var/cache/ansible/ara.sqlite - dest: "{{ ansible_user_dir }}/zuul-output/logs/ara-report/ara.sqlite" - - - name: Create ARA report - include_role: - name: ara-report - vars: - ara_database_path: "{{ ansible_user_dir }}/zuul-output/logs/ara-report/ara.sqlite" - ara_report_path: "{{ ansible_user_dir }}/zuul-output/logs/ara-report/" - ara_report_type: html - ara_report_artifact_prefix: 'bridge.openstack.org/' + - name: Collect testing ARA results + synchronize: + dest: "{{ log_dir }}/ara-report" + mode: pull + src: "/root/.ara/static/" + verify_host: true + become: yes + ignore_errors: true - name: Collect ansible configuration synchronize: diff --git a/testinfra/test_bridge.py b/testinfra/test_bridge.py index f72326edb2..339ed53bfd 100644 --- a/testinfra/test_bridge.py +++ b/testinfra/test_bridge.py @@ -58,9 +58,9 @@ def test_root_authorized_keys(host): def test_ara(host): - ara = host.run('ara playbook list') + ara = host.run('ara-manage migrate') assert ara.rc == 0 - database = host.file('/var/cache/ansible/ara.sqlite') + database = host.file('/root/.ara/server/ansible.sqlite') assert database.exists diff --git a/zuul.d/system-config-run.yaml b/zuul.d/system-config-run.yaml index c811b70f4c..04e13fa022 100644 --- a/zuul.d/system-config-run.yaml +++ b/zuul.d/system-config-run.yaml @@ -80,10 +80,6 @@ override-checkout: devel - name: github.com/pytest-dev/pytest-testinfra - name: openstack/openstacksdk - - name: recordsansible/ara - # NOTE(ianw): 2019-06-11 pinned to stable branch until we handle 1.0 - # http://lists.openstack.org/pipermail/openstack-infra/2019-June/006400.html - override-checkout: stable/0.x - name: github.com/ansible-collections/ansible.posix override-checkout: main - name: github.com/ansible-collections/ansible.netcommon @@ -92,12 +88,13 @@ override-checkout: main - name: github.com/ansible-collections/community.general override-checkout: main + - name: github.com/ansible-community/ara vars: bridge_ansible_name: '{{ ansible_user_dir}}/src/github.com/ansible/ansible' bridge_ansible_version: null bridge_openstacksdk_name: '{{ ansible_user_dir }}/src/opendev.org/openstack/openstacksdk' bridge_openstacksdk_version: null - bridge_ara_name: '{{ ansible_user_dir}}/src/opendev.org/recordsansible/ara' + bridge_ara_name: '{{ ansible_user_dir}}/src/github.com/ansible-community/ara[server]' bridge_ara_version: null # Although we don't have an arm64 based bridge; Zuul can't currently