)]}'
{".zuul.d/cross-jobs.yaml":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"2ba323af04c50b7e048cc605d5e5aa0e8668746e","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    vars:"},{"line_number":154,"context_line":"      tox_envlist: py36"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"- job:"},{"line_number":157,"context_line":"    name: cross-nova-py37"},{"line_number":158,"context_line":"    parent: requirements-cross-test"},{"line_number":159,"context_line":"    description: Run cross-project tests on nova with py37."},{"line_number":160,"context_line":"    required-projects: openstack/nova"},{"line_number":161,"context_line":"    roles:"},{"line_number":162,"context_line":"      - role: ensure-python"},{"line_number":163,"context_line":"        python_version: 3.7"},{"line_number":164,"context_line":"    vars:"},{"line_number":165,"context_line":"      tox_envlist: py37"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"- job:"},{"line_number":168,"context_line":"    name: cross-swift-py27"},{"line_number":169,"context_line":"    parent: requirements-cross-test"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7faddb67_977e0468","line":166,"range":{"start_line":156,"start_character":2,"end_line":166,"end_character":0},"updated":"2019-08-18 17:51:22.000000000","message":"extra keys not allowed @ data[\u0027roles\u0027][0][\u0027role\u0027]","commit_id":"5a99dd9f16c48009ab264df39be2dbe8436003d1"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"25f4d7e8d9d934296916b1efb13432549f716c5f","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    vars:"},{"line_number":154,"context_line":"      tox_envlist: py36"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"- job:"},{"line_number":157,"context_line":"    name: cross-nova-py37"},{"line_number":158,"context_line":"    parent: requirements-cross-test"},{"line_number":159,"context_line":"    description: Run cross-project tests on nova with py37."},{"line_number":160,"context_line":"    required-projects: openstack/nova"},{"line_number":161,"context_line":"    roles:"},{"line_number":162,"context_line":"      - role: ensure-python"},{"line_number":163,"context_line":"    vars:"},{"line_number":164,"context_line":"      tox_envlist: py37"},{"line_number":165,"context_line":"      python_version: 3.7"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"- job:"},{"line_number":168,"context_line":"    name: cross-swift-py27"},{"line_number":169,"context_line":"    parent: requirements-cross-test"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7faddb67_f7e1782c","line":166,"range":{"start_line":156,"start_character":2,"end_line":166,"end_character":0},"updated":"2019-08-18 18:19:55.000000000","message":"extra keys not allowed @ data[\u0027roles\u0027][0][\u0027role\u0027]","commit_id":"0d1d80deef439a8e7384cdc78a8dd6c1a60e07ee"}],".zuul.d/project.yaml":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a9ec2ec33140d3fcc198c3eceb27c5d4c7bfa73e","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        - cross-nova-py36:"},{"line_number":91,"context_line":"            files: ^upper-constraints.txt$"},{"line_number":92,"context_line":"        - cross-nova-py37:"},{"line_number":93,"context_line":"            files: ^upper-constraints.txt$"},{"line_number":94,"context_line":"        - cross-nova-functional"},{"line_number":95,"context_line":"        - cross-osc-tox-docs"},{"line_number":96,"context_line":"        - cross-swift-py27"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7faddb67_f1d6684f","line":93,"range":{"start_line":93,"start_character":0,"end_line":93,"end_character":42},"updated":"2019-08-17 18:20:31.000000000","message":"Is this right? I don\u0027t know why it\u0027s there for py36.","commit_id":"062f1a3afa702643c87b39aa90e19ac3f3e22e10"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"2ba323af04c50b7e048cc605d5e5aa0e8668746e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"- project:"},{"line_number":2,"context_line":"    templates:"},{"line_number":3,"context_line":"      - openstack-pypy-jobs-nonvoting"},{"line_number":4,"context_line":"      - openstack-python-jobs"},{"line_number":5,"context_line":"      - openstack-python3-train-jobs"},{"line_number":6,"context_line":"    check:"},{"line_number":7,"context_line":"      jobs:"},{"line_number":8,"context_line":"        - build-wheel-mirror-centos-7:"},{"line_number":9,"context_line":"            files:"},{"line_number":10,"context_line":"              - bindep.txt"},{"line_number":11,"context_line":"        - build-wheel-mirror-ubuntu-bionic:"},{"line_number":12,"context_line":"            files:"},{"line_number":13,"context_line":"              - bindep.txt"},{"line_number":14,"context_line":"        - build-wheel-mirror-ubuntu-trusty:"},{"line_number":15,"context_line":"            files:"},{"line_number":16,"context_line":"              - bindep.txt"},{"line_number":17,"context_line":"        - build-wheel-mirror-ubuntu-xenial:"},{"line_number":18,"context_line":"            files:"},{"line_number":19,"context_line":"              - bindep.txt"},{"line_number":20,"context_line":"        - openstack-tox-validate"},{"line_number":21,"context_line":"        - requirements-tox-babel"},{"line_number":22,"context_line":"        - requirements-tox-bindep:"},{"line_number":23,"context_line":"            voting: false"},{"line_number":24,"context_line":"        - requirements-tox-py27-check-uc"},{"line_number":25,"context_line":"        - requirements-tox-py36-check-uc"},{"line_number":26,"context_line":"        - requirements-tox-validate-projects:"},{"line_number":27,"context_line":"            voting: false"},{"line_number":28,"context_line":"        - cross-cinder-py27"},{"line_number":29,"context_line":"        - cross-cinder-py36"},{"line_number":30,"context_line":"        - cross-glance-py27"},{"line_number":31,"context_line":"        - cross-glance-py36"},{"line_number":32,"context_line":"        - cross-horizon-py27"},{"line_number":33,"context_line":"        - cross-horizon-py36"},{"line_number":34,"context_line":"        - cross-horizon-npm"},{"line_number":35,"context_line":"        - cross-keystone-py27"},{"line_number":36,"context_line":"        - cross-keystone-py36"},{"line_number":37,"context_line":"        - cross-neutron-py27"},{"line_number":38,"context_line":"        - cross-neutron-py36"},{"line_number":39,"context_line":"        - cross-nova-py27"},{"line_number":40,"context_line":"        - cross-nova-py36"},{"line_number":41,"context_line":"        - cross-nova-py37"},{"line_number":42,"context_line":"        - cross-nova-functional"},{"line_number":43,"context_line":"        - cross-osc-tox-docs"},{"line_number":44,"context_line":"        - cross-swift-py27"},{"line_number":45,"context_line":"        - cross-swift-py36"},{"line_number":46,"context_line":"        - openstack-tox-py36"},{"line_number":47,"context_line":"        - requirements-integration"},{"line_number":48,"context_line":"        - neutron-grenade-multinode:"},{"line_number":49,"context_line":"            irrelevant-files:"},{"line_number":50,"context_line":"              - ^(test-|)requirements.txt$"},{"line_number":51,"context_line":"              - ^setup.cfg$"},{"line_number":52,"context_line":"        - tempest-full:"},{"line_number":53,"context_line":"            irrelevant-files:"},{"line_number":54,"context_line":"              - ^(test-|)requirements.txt$"},{"line_number":55,"context_line":"              - ^setup.cfg$"},{"line_number":56,"context_line":"        - neutron-grenade:"},{"line_number":57,"context_line":"            irrelevant-files:"},{"line_number":58,"context_line":"              - ^(test-|)requirements.txt$"},{"line_number":59,"context_line":"              - ^setup.cfg$"},{"line_number":60,"context_line":"    gate:"},{"line_number":61,"context_line":"      jobs:"},{"line_number":62,"context_line":"        - build-wheel-mirror-centos-7:"},{"line_number":63,"context_line":"            files:"},{"line_number":64,"context_line":"              - bindep.txt"},{"line_number":65,"context_line":"        - build-wheel-mirror-ubuntu-bionic:"},{"line_number":66,"context_line":"            files:"},{"line_number":67,"context_line":"              - bindep.txt"},{"line_number":68,"context_line":"        - build-wheel-mirror-ubuntu-trusty:"},{"line_number":69,"context_line":"            files:"},{"line_number":70,"context_line":"              - bindep.txt"},{"line_number":71,"context_line":"        - build-wheel-mirror-ubuntu-xenial:"},{"line_number":72,"context_line":"            files:"},{"line_number":73,"context_line":"              - bindep.txt"},{"line_number":74,"context_line":"        - openstack-tox-validate"},{"line_number":75,"context_line":"        - requirements-tox-babel"},{"line_number":76,"context_line":"        - requirements-tox-py27-check-uc"},{"line_number":77,"context_line":"        - requirements-tox-py36-check-uc"},{"line_number":78,"context_line":"        - cross-cinder-py27"},{"line_number":79,"context_line":"        - cross-cinder-py36"},{"line_number":80,"context_line":"        - cross-glance-py27"},{"line_number":81,"context_line":"        - cross-glance-py36"},{"line_number":82,"context_line":"        - cross-horizon-py27"},{"line_number":83,"context_line":"        - cross-horizon-py36"},{"line_number":84,"context_line":"        - cross-horizon-npm"},{"line_number":85,"context_line":"        - cross-keystone-py27"},{"line_number":86,"context_line":"        - cross-keystone-py36"},{"line_number":87,"context_line":"        - cross-neutron-py27"},{"line_number":88,"context_line":"        - cross-neutron-py36"},{"line_number":89,"context_line":"        - cross-nova-py27"},{"line_number":90,"context_line":"        - cross-nova-py36:"},{"line_number":91,"context_line":"            files: ^upper-constraints.txt$"},{"line_number":92,"context_line":"        - cross-nova-py37:"},{"line_number":93,"context_line":"            files: ^upper-constraints.txt$"},{"line_number":94,"context_line":"        - cross-nova-functional"},{"line_number":95,"context_line":"        - cross-osc-tox-docs"},{"line_number":96,"context_line":"        - cross-swift-py27"},{"line_number":97,"context_line":"        - cross-swift-py36"},{"line_number":98,"context_line":"        - openstack-tox-py36"},{"line_number":99,"context_line":"        - requirements-integration"},{"line_number":100,"context_line":"        - neutron-grenade-multinode:"},{"line_number":101,"context_line":"            irrelevant-files:"},{"line_number":102,"context_line":"              - ^(test-|)requirements.txt$"},{"line_number":103,"context_line":"              - ^setup.cfg$"},{"line_number":104,"context_line":"        - tempest-full:"},{"line_number":105,"context_line":"            irrelevant-files:"},{"line_number":106,"context_line":"              - ^(test-|)requirements.txt$"},{"line_number":107,"context_line":"              - ^setup.cfg$"},{"line_number":108,"context_line":"        - neutron-grenade:"},{"line_number":109,"context_line":"            irrelevant-files:"},{"line_number":110,"context_line":"              - ^(test-|)requirements.txt$"},{"line_number":111,"context_line":"              - ^setup.cfg$"},{"line_number":112,"context_line":"    experimental:"},{"line_number":113,"context_line":"      jobs:"},{"line_number":114,"context_line":"        - tempest-pg-full:"},{"line_number":115,"context_line":"            irrelevant-files:"},{"line_number":116,"context_line":"              - ^(test-|)requirements.txt$"},{"line_number":117,"context_line":"              - ^setup.cfg$"},{"line_number":118,"context_line":"        - tempest-full-py3-opensuse150:"},{"line_number":119,"context_line":"            irrelevant-files:"},{"line_number":120,"context_line":"              - ^(test-|)requirements.txt$"},{"line_number":121,"context_line":"              - ^setup.cfg$"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7faddb67_37971093","line":122,"range":{"start_line":1,"start_character":2,"end_line":122,"end_character":0},"updated":"2019-08-18 17:51:22.000000000","message":"Job cross-nova-py37 not defined","commit_id":"5a99dd9f16c48009ab264df39be2dbe8436003d1"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"25f4d7e8d9d934296916b1efb13432549f716c5f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"- project:"},{"line_number":2,"context_line":"    templates:"},{"line_number":3,"context_line":"      - openstack-pypy-jobs-nonvoting"},{"line_number":4,"context_line":"      - openstack-python-jobs"},{"line_number":5,"context_line":"      - openstack-python3-train-jobs"},{"line_number":6,"context_line":"    check:"},{"line_number":7,"context_line":"      jobs:"},{"line_number":8,"context_line":"        - build-wheel-mirror-centos-7:"},{"line_number":9,"context_line":"            files:"},{"line_number":10,"context_line":"              - bindep.txt"},{"line_number":11,"context_line":"        - build-wheel-mirror-ubuntu-bionic:"},{"line_number":12,"context_line":"            files:"},{"line_number":13,"context_line":"              - bindep.txt"},{"line_number":14,"context_line":"        - build-wheel-mirror-ubuntu-trusty:"},{"line_number":15,"context_line":"            files:"},{"line_number":16,"context_line":"              - bindep.txt"},{"line_number":17,"context_line":"        - build-wheel-mirror-ubuntu-xenial:"},{"line_number":18,"context_line":"            files:"},{"line_number":19,"context_line":"              - bindep.txt"},{"line_number":20,"context_line":"        - openstack-tox-validate"},{"line_number":21,"context_line":"        - requirements-tox-babel"},{"line_number":22,"context_line":"        - requirements-tox-bindep:"},{"line_number":23,"context_line":"            voting: false"},{"line_number":24,"context_line":"        - requirements-tox-py27-check-uc"},{"line_number":25,"context_line":"        - requirements-tox-py36-check-uc"},{"line_number":26,"context_line":"        - requirements-tox-validate-projects:"},{"line_number":27,"context_line":"            voting: false"},{"line_number":28,"context_line":"        - cross-cinder-py27"},{"line_number":29,"context_line":"        - cross-cinder-py36"},{"line_number":30,"context_line":"        - cross-glance-py27"},{"line_number":31,"context_line":"        - cross-glance-py36"},{"line_number":32,"context_line":"        - cross-horizon-py27"},{"line_number":33,"context_line":"        - cross-horizon-py36"},{"line_number":34,"context_line":"        - cross-horizon-npm"},{"line_number":35,"context_line":"        - cross-keystone-py27"},{"line_number":36,"context_line":"        - cross-keystone-py36"},{"line_number":37,"context_line":"        - cross-neutron-py27"},{"line_number":38,"context_line":"        - cross-neutron-py36"},{"line_number":39,"context_line":"        - cross-nova-py27"},{"line_number":40,"context_line":"        - cross-nova-py36"},{"line_number":41,"context_line":"        - cross-nova-py37"},{"line_number":42,"context_line":"        - cross-nova-functional"},{"line_number":43,"context_line":"        - cross-osc-tox-docs"},{"line_number":44,"context_line":"        - cross-swift-py27"},{"line_number":45,"context_line":"        - cross-swift-py36"},{"line_number":46,"context_line":"        - openstack-tox-py36"},{"line_number":47,"context_line":"        - requirements-integration"},{"line_number":48,"context_line":"        - neutron-grenade-multinode:"},{"line_number":49,"context_line":"            irrelevant-files:"},{"line_number":50,"context_line":"              - ^(test-|)requirements.txt$"},{"line_number":51,"context_line":"              - ^setup.cfg$"},{"line_number":52,"context_line":"        - tempest-full:"},{"line_number":53,"context_line":"            irrelevant-files:"},{"line_number":54,"context_line":"              - ^(test-|)requirements.txt$"},{"line_number":55,"context_line":"              - ^setup.cfg$"},{"line_number":56,"context_line":"        - neutron-grenade:"},{"line_number":57,"context_line":"            irrelevant-files:"},{"line_number":58,"context_line":"              - ^(test-|)requirements.txt$"},{"line_number":59,"context_line":"              - ^setup.cfg$"},{"line_number":60,"context_line":"    gate:"},{"line_number":61,"context_line":"      jobs:"},{"line_number":62,"context_line":"        - build-wheel-mirror-centos-7:"},{"line_number":63,"context_line":"            files:"},{"line_number":64,"context_line":"              - bindep.txt"},{"line_number":65,"context_line":"        - build-wheel-mirror-ubuntu-bionic:"},{"line_number":66,"context_line":"            files:"},{"line_number":67,"context_line":"              - bindep.txt"},{"line_number":68,"context_line":"        - build-wheel-mirror-ubuntu-trusty:"},{"line_number":69,"context_line":"            files:"},{"line_number":70,"context_line":"              - bindep.txt"},{"line_number":71,"context_line":"        - build-wheel-mirror-ubuntu-xenial:"},{"line_number":72,"context_line":"            files:"},{"line_number":73,"context_line":"              - bindep.txt"},{"line_number":74,"context_line":"        - openstack-tox-validate"},{"line_number":75,"context_line":"        - requirements-tox-babel"},{"line_number":76,"context_line":"        - requirements-tox-py27-check-uc"},{"line_number":77,"context_line":"        - requirements-tox-py36-check-uc"},{"line_number":78,"context_line":"        - cross-cinder-py27"},{"line_number":79,"context_line":"        - cross-cinder-py36"},{"line_number":80,"context_line":"        - cross-glance-py27"},{"line_number":81,"context_line":"        - cross-glance-py36"},{"line_number":82,"context_line":"        - cross-horizon-py27"},{"line_number":83,"context_line":"        - cross-horizon-py36"},{"line_number":84,"context_line":"        - cross-horizon-npm"},{"line_number":85,"context_line":"        - cross-keystone-py27"},{"line_number":86,"context_line":"        - cross-keystone-py36"},{"line_number":87,"context_line":"        - cross-neutron-py27"},{"line_number":88,"context_line":"        - cross-neutron-py36"},{"line_number":89,"context_line":"        - cross-nova-py27"},{"line_number":90,"context_line":"        - cross-nova-py36:"},{"line_number":91,"context_line":"            files: ^upper-constraints.txt$"},{"line_number":92,"context_line":"        - cross-nova-py37:"},{"line_number":93,"context_line":"            files: ^upper-constraints.txt$"},{"line_number":94,"context_line":"        - cross-nova-functional"},{"line_number":95,"context_line":"        - cross-osc-tox-docs"},{"line_number":96,"context_line":"        - cross-swift-py27"},{"line_number":97,"context_line":"        - cross-swift-py36"},{"line_number":98,"context_line":"        - openstack-tox-py36"},{"line_number":99,"context_line":"        - requirements-integration"},{"line_number":100,"context_line":"        - neutron-grenade-multinode:"},{"line_number":101,"context_line":"            irrelevant-files:"},{"line_number":102,"context_line":"              - ^(test-|)requirements.txt$"},{"line_number":103,"context_line":"              - ^setup.cfg$"},{"line_number":104,"context_line":"        - tempest-full:"},{"line_number":105,"context_line":"            irrelevant-files:"},{"line_number":106,"context_line":"              - ^(test-|)requirements.txt$"},{"line_number":107,"context_line":"              - ^setup.cfg$"},{"line_number":108,"context_line":"        - neutron-grenade:"},{"line_number":109,"context_line":"            irrelevant-files:"},{"line_number":110,"context_line":"              - ^(test-|)requirements.txt$"},{"line_number":111,"context_line":"              - ^setup.cfg$"},{"line_number":112,"context_line":"    experimental:"},{"line_number":113,"context_line":"      jobs:"},{"line_number":114,"context_line":"        - tempest-pg-full:"},{"line_number":115,"context_line":"            irrelevant-files:"},{"line_number":116,"context_line":"              - ^(test-|)requirements.txt$"},{"line_number":117,"context_line":"              - ^setup.cfg$"},{"line_number":118,"context_line":"        - tempest-full-py3-opensuse150:"},{"line_number":119,"context_line":"            irrelevant-files:"},{"line_number":120,"context_line":"              - ^(test-|)requirements.txt$"},{"line_number":121,"context_line":"              - ^setup.cfg$"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7faddb67_17df7466","line":122,"range":{"start_line":1,"start_character":2,"end_line":122,"end_character":0},"updated":"2019-08-18 18:19:55.000000000","message":"Job cross-nova-py37 not defined","commit_id":"0d1d80deef439a8e7384cdc78a8dd6c1a60e07ee"}]}
