)]}'
{"test-ansible-deps.txt":[{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"01a867ed2608713eb11642fdf66159f4c16a5b18","unresolved":false,"context_lines":[{"line_number":14,"context_line":"ansible-lint\u003d\u003d3.4.1"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# ARA for reporting"},{"line_number":17,"context_line":"ara\u003d\u003d0.9.2"}],"source_content_type":"text/plain","patch_set":2,"id":"9a629dbe_407ccdeb","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":10},"updated":"2016-11-11 11:18:05.000000000","message":"Personally, I don\u0027t think we need to pin this particular package. Perhaps leave it unpinned and deal with the consequences one day if need be?","commit_id":"6dae9e5ef3b98ee6729d15bd02736b974fed1827"}],"test-ansible-env-prep.sh":[{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"01a867ed2608713eb11642fdf66159f4c16a5b18","unresolved":false,"context_lines":[{"line_number":97,"context_line":"fi"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# Link the ARA Callback directory to the the ansible callback directory"},{"line_number":100,"context_line":"if [ \"${ARA_REPORT}\" \u003d\u003d \"true\" ]; then"},{"line_number":101,"context_line":"  echo \"Linking ${ANSIBLE_PLUGIN_DIR}/callback/ara to ${WORKING_DIR}/.tox/functional/lib/python2.7/site-packages/ara/callback/\""},{"line_number":102,"context_line":"  ln -s \"${WORKING_DIR}/.tox/functional/lib/python2.7/site-packages/ara/callback/\" \"${ANSIBLE_PLUGIN_DIR}/callback/ara\""},{"line_number":103,"context_line":"fi"}],"source_content_type":"text/x-sh","patch_set":2,"id":"9a629dbe_40ca0d1c","line":100,"range":{"start_line":100,"start_character":0,"end_line":100,"end_character":38},"updated":"2016-11-11 11:18:05.000000000","message":"Instead of creating a new flag, perhaps just test whether the ${WORKING_DIR}/.tox/functional/lib/python2.7/site-packages/ara/callback directory exists ?","commit_id":"6dae9e5ef3b98ee6729d15bd02736b974fed1827"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"081ba78cbe0479fbbc28e0c1ee64dee6d7fdd461","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# Link the ARA Callback directory to the the ansible callback directory"},{"line_number":100,"context_line":"if [ \"${ARA_REPORT}\" \u003d\u003d \"true\" ]; then"},{"line_number":101,"context_line":"  rm -rf \"${AANSIBLE_PLUGIN_DIR}/callback/ara\""},{"line_number":102,"context_line":"  echo \"Linking ${ANSIBLE_PLUGIN_DIR}/callback/ara to ${WORKING_DIR}/.tox/functional/lib/python2.7/site-packages/ara/callback/\""},{"line_number":103,"context_line":"  ln -sd \"${WORKING_DIR}/.tox/functional/lib/python2.7/site-packages/ara/callback/\" \"${ANSIBLE_PLUGIN_DIR}/callback/ara/\""},{"line_number":104,"context_line":"fi"}],"source_content_type":"text/x-sh","patch_set":3,"id":"9a629dbe_208ef9cf","line":101,"range":{"start_line":101,"start_character":2,"end_line":101,"end_character":46},"updated":"2016-11-11 11:22:14.000000000","message":"Instead of doing this, rather check if the link is already there and skip this section if it is.","commit_id":"58aa08f164482bdd80f2f65cfa63eccdaded85b8"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"f9ac40571be162d5612cde5c393baeff454f5a08","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"# Link the ARA Callback directory to the the ansible callback directory"},{"line_number":99,"context_line":"if [ -d \"${WORKING_DIR}/.tox/functional/lib/python2.7/site-packages/ara/callback/\" ]; then"},{"line_number":100,"context_line":"  rm -rf \"${ANSIBLE_PLUGIN_DIR}/callback/ara\""},{"line_number":101,"context_line":"  echo \"Linking ${ANSIBLE_PLUGIN_DIR}/callback/ara to ${WORKING_DIR}/.tox/functional/lib/python2.7/site-packages/ara/callback/\""},{"line_number":102,"context_line":"  ln -sd \"${WORKING_DIR}/.tox/functional/lib/python2.7/site-packages/ara/callback/\" \"${ANSIBLE_PLUGIN_DIR}/callback/ara/\""},{"line_number":103,"context_line":"fi"}],"source_content_type":"text/x-sh","patch_set":4,"id":"9a629dbe_4377779f","line":100,"range":{"start_line":100,"start_character":2,"end_line":100,"end_character":45},"updated":"2016-11-11 11:28:11.000000000","message":"Instead of doing this, rather check in the conditional above whether the link is already there and skip this section if it is.\n\nie if the directory exists, and the link is not present, then...","commit_id":"7c2ef851a7c3e525d707db2739a1978f216c4d75"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"e89fa1b514be8fa252ebffceef3495ff39d3b4db","unresolved":false,"context_lines":[{"line_number":99,"context_line":"if [ -d \"${WORKING_DIR}/.tox/functional/lib/python2.7/site-packages/ara/callback/\" ]; then"},{"line_number":100,"context_line":"  if [ ! -L \"${ANSIBLE_PLUGIN_DIR}/callback/ara\" ]; then"},{"line_number":101,"context_line":"    echo \"Linking ${ANSIBLE_PLUGIN_DIR}/callback/ara to ${WORKING_DIR}/.tox/functional/lib/python2.7/site-packages/ara/callback/\""},{"line_number":102,"context_line":"    if [ ! -d \"${ANSIBLE_PLUGIN_DIR}/callback/ara\" ]; then"},{"line_number":103,"context_line":"      mkdir -p \"${ANSIBLE_PLUGIN_DIR}/callback/ara\""},{"line_number":104,"context_line":"    fi"},{"line_number":105,"context_line":"    ln -s \"${WORKING_DIR}/.tox/functional/lib/python2.7/site-packages/ara/callback/\" \"${ANSIBLE_PLUGIN_DIR}/callback/ara/\""},{"line_number":106,"context_line":"  fi"},{"line_number":107,"context_line":"fi"}],"source_content_type":"text/x-sh","patch_set":8,"id":"9a629dbe_4b37894c","line":104,"range":{"start_line":102,"start_character":0,"end_line":104,"end_character":6},"updated":"2016-11-11 14:03:25.000000000","message":"This could just be replaced with:\n\nmkdir -p \"${ANSIBLE_PLUGIN_DIR}/callback/ara\"\n\nNo need to check if it exists first. The above will create it if it doesn\u0027t exist, and do nothing if it does exist.","commit_id":"ab8af4b70ccca646610e002025da3dfb5f3d615e"},{"author":{"_account_id":9061,"name":"David Moreau Simard","email":"moi@dmsimard.com","username":"dmsimard"},"change_message_id":"7d5a0f514ef9b8daf31a0fd0dce7be6db9f1ad44","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    mkdir -p \"${ANSIBLE_PLUGIN_DIR}/callback/ara\""},{"line_number":103,"context_line":"    ln -s \"${WORKING_DIR}/.tox/functional/lib/python2.7/site-packages/ara/callback/\" \"${ANSIBLE_PLUGIN_DIR}/callback/ara/\""},{"line_number":104,"context_line":"  fi"},{"line_number":105,"context_line":"fi"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"# Ensure that the Ansible configuration file is in the right place"},{"line_number":108,"context_line":"if [ ! -f \"${ANSIBLE_CFG_PATH}\" ]; then"}],"source_content_type":"text/x-sh","patch_set":9,"id":"7a77a97e_509a8d15","line":105,"updated":"2016-11-15 15:11:26.000000000","message":"That seems pretty involved, is this how other callbacks are installed ?\nIn\n\n    https://review.openstack.org/#/c/396324/5/scripts/gate-check-commit.sh\n\nI just append the callback path to the default one. Should I do something like what you are doing instead ?","commit_id":"c5f4033989bf101bfff842390f8e7140b93ab9f4"}],"test-ansible.cfg":[{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"0a9a5b5bf2f322c3df58470c5eefff3456ea06a9","unresolved":false,"context_lines":[{"line_number":27,"context_line":"ssh_args          \u003d -o ControlMaster\u003dno -o UserKnownHostsFile\u003d/dev/null -o StrictHostKeyChecking\u003dno -o ServerAliveInterval\u003d64 -o ServerAliveCountMax\u003d1024 -o Compression\u003dno -o TCPKeepAlive\u003dyes -o VerifyHostKeyDNS\u003dno -o ForwardX11\u003dno -o ForwardAgent\u003dyes"},{"line_number":28,"context_line":"library           \u003d $HOME/.ansible/plugins/library"},{"line_number":29,"context_line":"roles_path        \u003d $HOME/.ansible/roles"},{"line_number":30,"context_line":"callback_plugins  \u003d $HOME/.ansible/plugins/callback:/usr/local/lib/python2.7/dist-packages/ara/callback"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"9a629dbe_6a3d308e","line":30,"range":{"start_line":30,"start_character":52,"end_line":30,"end_character":103},"updated":"2016-11-11 10:11:19.000000000","message":"The location may be different if it\u0027s installed by tox.","commit_id":"15f4f170140aad767ebc22e43db770e8144a8cdc"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"01a867ed2608713eb11642fdf66159f4c16a5b18","unresolved":false,"context_lines":[{"line_number":27,"context_line":"ssh_args          \u003d -o ControlMaster\u003dno -o UserKnownHostsFile\u003d/dev/null -o StrictHostKeyChecking\u003dno -o ServerAliveInterval\u003d64 -o ServerAliveCountMax\u003d1024 -o Compression\u003dno -o TCPKeepAlive\u003dyes -o VerifyHostKeyDNS\u003dno -o ForwardX11\u003dno -o ForwardAgent\u003dyes"},{"line_number":28,"context_line":"library           \u003d $HOME/.ansible/plugins/library"},{"line_number":29,"context_line":"roles_path        \u003d $HOME/.ansible/roles"},{"line_number":30,"context_line":"callback_plugins  \u003d $HOME/.ansible/plugins/callback:$HOME/.ansible/plugins/callback/ara"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"9a629dbe_e0d961f4","line":30,"range":{"start_line":30,"start_character":51,"end_line":30,"end_character":87},"updated":"2016-11-11 11:18:05.000000000","message":"Is this necessary? Won\u0027t it just pick up the plugin because it\u0027s now in the plugins directory?","commit_id":"6dae9e5ef3b98ee6729d15bd02736b974fed1827"}],"test-log-collect.sh":[{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"0a9a5b5bf2f322c3df58470c5eefff3456ea06a9","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  command gzip --best --recursive \"${WORKING_DIR}/logs/\""},{"line_number":49,"context_line":"  # Generate the ARA report"},{"line_number":50,"context_line":"  /opt/ansible-runtime/bin/ara generate \"${GATE_LOG_DIR}/ara\" || true"},{"line_number":51,"context_line":"  cp -p ~/.ara/ansible.sqlite \"${GATE_LOG_DIR}/ara.sqlite\""},{"line_number":52,"context_line":"fi"}],"source_content_type":"text/x-sh","patch_set":1,"id":"9a629dbe_4a614ca8","line":51,"range":{"start_line":51,"start_character":2,"end_line":51,"end_character":58},"updated":"2016-11-11 10:11:19.000000000","message":"I think this is useful for diagnostics, but not essential to keep as-is. Perhaps this should be copied before the gzip takes place to reduce space used on infra?","commit_id":"15f4f170140aad767ebc22e43db770e8144a8cdc"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"01a867ed2608713eb11642fdf66159f4c16a5b18","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    ${RSYNC_CMD} \"${ANSIBLE_LOG_DIR}/\" \"${WORKING_DIR}/logs/ansible\" || true"},{"line_number":42,"context_line":"  fi"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"  # Generate the ARA report"},{"line_number":45,"context_line":"  ${ARA_CMD} \"${WORKING_DIR}/logs/ara\" || true"},{"line_number":46,"context_line":"  cp -p ~/.ara/ansible.sqlite \"${WORKING_DIR}/logs/ara.sqlite\""},{"line_number":47,"context_line":"  # Rename all files gathered to have a .txt suffix so that the compressed"},{"line_number":48,"context_line":"  # files are viewable via a web browser in OpenStack-CI."}],"source_content_type":"text/x-sh","patch_set":2,"id":"9a629dbe_00fc953c","line":45,"range":{"start_line":44,"start_character":0,"end_line":45,"end_character":46},"updated":"2016-11-11 11:18:05.000000000","message":"Move this to after the gzip.","commit_id":"6dae9e5ef3b98ee6729d15bd02736b974fed1827"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"01a867ed2608713eb11642fdf66159f4c16a5b18","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"  # Generate the ARA report"},{"line_number":45,"context_line":"  ${ARA_CMD} \"${WORKING_DIR}/logs/ara\" || true"},{"line_number":46,"context_line":"  cp -p ~/.ara/ansible.sqlite \"${WORKING_DIR}/logs/ara.sqlite\""},{"line_number":47,"context_line":"  # Rename all files gathered to have a .txt suffix so that the compressed"},{"line_number":48,"context_line":"  # files are viewable via a web browser in OpenStack-CI."},{"line_number":49,"context_line":"  find \"${WORKING_DIR}/logs/\" -type f -exec mv {} {}.txt \\;"}],"source_content_type":"text/x-sh","patch_set":2,"id":"9a629dbe_40984d1c","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":62},"updated":"2016-11-11 11:18:05.000000000","message":"Move this to after the file renames, but before the gzip.","commit_id":"6dae9e5ef3b98ee6729d15bd02736b974fed1827"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"081ba78cbe0479fbbc28e0c1ee64dee6d7fdd461","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"  # Generate the ARA report"},{"line_number":45,"context_line":"  ${ARA_CMD} \"${WORKING_DIR}/logs/ara\" || true"},{"line_number":46,"context_line":"  cp -p ~/.ara/ansible.sqlite \"${WORKING_DIR}/logs/ara.sqlite\""},{"line_number":47,"context_line":"  # Rename all files gathered to have a .txt suffix so that the compressed"},{"line_number":48,"context_line":"  # files are viewable via a web browser in OpenStack-CI."},{"line_number":49,"context_line":"  find \"${WORKING_DIR}/logs/\" -type f -exec mv {} {}.txt \\;"}],"source_content_type":"text/x-sh","patch_set":3,"id":"9a629dbe_0081f58e","line":46,"range":{"start_line":46,"start_character":8,"end_line":46,"end_character":9},"updated":"2016-11-11 11:22:14.000000000","message":"use ${TESTING_HOME} instead, and add https://github.com/openstack/openstack-ansible-tests/blob/master/test-ansible-env-prep.sh#L32 to the vars section.","commit_id":"58aa08f164482bdd80f2f65cfa63eccdaded85b8"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"f9ac40571be162d5612cde5c393baeff454f5a08","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  # files are viewable via a web browser in OpenStack-CI."},{"line_number":46,"context_line":"  find \"${WORKING_DIR}/logs/\" -type f -exec mv {} {}.txt \\;"},{"line_number":47,"context_line":"  # Get the ara sqlite database"},{"line_number":48,"context_line":"  cp -p ~/.ara/ansible.sqlite \"${WORKING_DIR}/logs/ara.sqlite\""},{"line_number":49,"context_line":"  # Compress the files gathered so that they do not take up too much space."},{"line_number":50,"context_line":"  # We use \u0027command\u0027 to ensure that we\u0027re not executing with some sort of alias."},{"line_number":51,"context_line":"  command gzip --best --recursive \"${WORKING_DIR}/logs/\""}],"source_content_type":"text/x-sh","patch_set":4,"id":"9a629dbe_43293789","line":48,"range":{"start_line":48,"start_character":2,"end_line":48,"end_character":7},"updated":"2016-11-11 11:28:11.000000000","message":"possibly best to use ${RSYNC_CMD} here?\n\nAlso, probably best to add || true at the end of the line so that this doesn\u0027t cause a log copy failure if something goes wrong","commit_id":"7c2ef851a7c3e525d707db2739a1978f216c4d75"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"f9ac40571be162d5612cde5c393baeff454f5a08","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  # files are viewable via a web browser in OpenStack-CI."},{"line_number":46,"context_line":"  find \"${WORKING_DIR}/logs/\" -type f -exec mv {} {}.txt \\;"},{"line_number":47,"context_line":"  # Get the ara sqlite database"},{"line_number":48,"context_line":"  cp -p ~/.ara/ansible.sqlite \"${WORKING_DIR}/logs/ara.sqlite\""},{"line_number":49,"context_line":"  # Compress the files gathered so that they do not take up too much space."},{"line_number":50,"context_line":"  # We use \u0027command\u0027 to ensure that we\u0027re not executing with some sort of alias."},{"line_number":51,"context_line":"  command gzip --best --recursive \"${WORKING_DIR}/logs/\""}],"source_content_type":"text/x-sh","patch_set":4,"id":"9a629dbe_a32213a1","line":48,"range":{"start_line":48,"start_character":8,"end_line":48,"end_character":9},"updated":"2016-11-11 11:28:11.000000000","message":"use ${TESTING_HOME} instead of ~, and add https://github.com/openstack/openstack-ansible-tests/blob/master/test-ansible-env-prep.sh#L32 to the vars section.","commit_id":"7c2ef851a7c3e525d707db2739a1978f216c4d75"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"e89fa1b514be8fa252ebffceef3495ff39d3b4db","unresolved":false,"context_lines":[{"line_number":46,"context_line":"  # files are viewable via a web browser in OpenStack-CI."},{"line_number":47,"context_line":"  find \"${WORKING_DIR}/logs/\" -type f -exec mv {} {}.txt \\;"},{"line_number":48,"context_line":"  # Get the ara sqlite database"},{"line_number":49,"context_line":"  ${RSYNC_CMD} \"${TESTING_HOME}/.ara/ansible.sqlite\" \"${WORKING_DIR}/logs/ara.sqlite\" || true"},{"line_number":50,"context_line":"  # Compress the files gathered so that they do not take up too much space."},{"line_number":51,"context_line":"  # We use \u0027command\u0027 to ensure that we\u0027re not executing with some sort of alias."},{"line_number":52,"context_line":"  command gzip --best --recursive \"${WORKING_DIR}/logs/\""}],"source_content_type":"text/x-sh","patch_set":8,"id":"9a629dbe_8bcfe154","line":49,"range":{"start_line":49,"start_character":74,"end_line":49,"end_character":84},"updated":"2016-11-11 14:03:25.000000000","message":"nit: the file name here is not necessary, just \"${WORKING_DIR}/logs/\" will do fine","commit_id":"ab8af4b70ccca646610e002025da3dfb5f3d615e"},{"author":{"_account_id":9061,"name":"David Moreau Simard","email":"moi@dmsimard.com","username":"dmsimard"},"change_message_id":"7d5a0f514ef9b8daf31a0fd0dce7be6db9f1ad44","unresolved":false,"context_lines":[{"line_number":46,"context_line":"  # files are viewable via a web browser in OpenStack-CI."},{"line_number":47,"context_line":"  find \"${WORKING_DIR}/logs/\" -type f -exec mv {} {}.txt \\;"},{"line_number":48,"context_line":"  # Get the ara sqlite database"},{"line_number":49,"context_line":"  ${RSYNC_CMD} \"${TESTING_HOME}/.ara/ansible.sqlite\" \"${WORKING_DIR}/logs/\" || true"},{"line_number":50,"context_line":"  # Compress the files gathered so that they do not take up too much space."},{"line_number":51,"context_line":"  # We use \u0027command\u0027 to ensure that we\u0027re not executing with some sort of alias."},{"line_number":52,"context_line":"  command gzip --best --recursive \"${WORKING_DIR}/logs/\""}],"source_content_type":"text/x-sh","patch_set":9,"id":"7a77a97e_b0d121fe","line":49,"updated":"2016-11-15 15:11:26.000000000","message":"The database is not really necessary (unless, for example, you want to download it and then generate or browse locally), up to you -- it\u0027s pretty small.","commit_id":"c5f4033989bf101bfff842390f8e7140b93ab9f4"}],"tox.ini":[{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"64f141557cbaa2f218a021e9afe2572e67e30f0e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"[testenv]"},{"line_number":8,"context_line":"usedevelop \u003d True"},{"line_number":9,"context_line":"install_command \u003d"},{"line_number":10,"context_line":"    pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages} ara"},{"line_number":11,"context_line":"deps \u003d"},{"line_number":12,"context_line":"    -r{toxinidir}/test-requirements.txt"},{"line_number":13,"context_line":"commands \u003d"}],"source_content_type":"text/x-properties","patch_set":1,"id":"9a629dbe_4aecec29","line":10,"updated":"2016-11-11 10:08:10.000000000","message":"Instead of doing this, add it to https://github.com/openstack/openstack-ansible-tests/blob/master/test-ansible-deps.txt which will apply it to all ansible tests across all repositories automatically.","commit_id":"15f4f170140aad767ebc22e43db770e8144a8cdc"}]}
