)]}'
{".zuul.yaml":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a5d2f1fad14fdd79ddfe272ab41fbe7ec2ef11a4","unresolved":false,"context_lines":[{"line_number":458,"context_line":"      pass-to-parent: true"},{"line_number":459,"context_line":"    vars: *swift_image_vars_py3"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"- project:"},{"line_number":462,"context_line":"    templates:"},{"line_number":463,"context_line":"      - publish-openstack-docs-pti"},{"line_number":464,"context_line":"      - periodic-stable-jobs"},{"line_number":465,"context_line":"      - check-requirements"},{"line_number":466,"context_line":"      - release-notes-jobs-python3"},{"line_number":467,"context_line":"      - integrated-gate-object-storage"},{"line_number":468,"context_line":"    check:"},{"line_number":469,"context_line":"      jobs:"},{"line_number":470,"context_line":"        - swift-build-image:"},{"line_number":471,"context_line":"            irrelevant-files:"},{"line_number":472,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":473,"context_line":"              - ^test/(functional|probe)/.*$"},{"line_number":474,"context_line":"        - swift-build-image-py3:"},{"line_number":475,"context_line":"            irrelevant-files:"},{"line_number":476,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":477,"context_line":"              - ^test/(functional|probe)/.*$"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"        # Unit tests"},{"line_number":480,"context_line":"        - swift-tox-py27:"},{"line_number":481,"context_line":"            irrelevant-files:"},{"line_number":482,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":483,"context_line":"              - ^test/(functional|probe)/.*$"},{"line_number":484,"context_line":"        - swift-tox-py36:"},{"line_number":485,"context_line":"            irrelevant-files:"},{"line_number":486,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":487,"context_line":"              - ^test/(functional|probe)/.*$"},{"line_number":488,"context_line":"        - swift-tox-py37:"},{"line_number":489,"context_line":"            irrelevant-files:"},{"line_number":490,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":491,"context_line":"              - ^test/(functional|probe)/.*$"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"        # Functional tests"},{"line_number":494,"context_line":"        - swift-tox-func:"},{"line_number":495,"context_line":"            irrelevant-files:"},{"line_number":496,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":497,"context_line":"              - ^test/probe/.*$"},{"line_number":498,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":499,"context_line":"        - swift-tox-func-encryption:"},{"line_number":500,"context_line":"            irrelevant-files:"},{"line_number":501,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":502,"context_line":"              - ^test/probe/.*$"},{"line_number":503,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":504,"context_line":"        - swift-tox-func-domain-remap-staticweb:"},{"line_number":505,"context_line":"            irrelevant-files:"},{"line_number":506,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":507,"context_line":"              - ^test/probe/.*$"},{"line_number":508,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":509,"context_line":"        - swift-tox-func-ec:"},{"line_number":510,"context_line":"            irrelevant-files:"},{"line_number":511,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":512,"context_line":"              - ^test/probe/.*$"},{"line_number":513,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":514,"context_line":"        - swift-tox-func-s3api:"},{"line_number":515,"context_line":"            irrelevant-files:"},{"line_number":516,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":517,"context_line":"              - ^test/probe/.*$"},{"line_number":518,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        # py3 functional tests"},{"line_number":521,"context_line":"        - swift-tox-func-py37:"},{"line_number":522,"context_line":"            irrelevant-files:"},{"line_number":523,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":524,"context_line":"              - ^test/probe/.*$"},{"line_number":525,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":526,"context_line":"        - swift-tox-func-encryption-py37:"},{"line_number":527,"context_line":"            irrelevant-files:"},{"line_number":528,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":529,"context_line":"              - ^test/probe/.*$"},{"line_number":530,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":531,"context_line":"        - swift-tox-func-domain-remap-staticweb-py37:"},{"line_number":532,"context_line":"            irrelevant-files:"},{"line_number":533,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":534,"context_line":"              - ^test/probe/.*$"},{"line_number":535,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":536,"context_line":"        - swift-tox-func-ec-py37:"},{"line_number":537,"context_line":"            irrelevant-files:"},{"line_number":538,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":539,"context_line":"              - ^test/probe/.*$"},{"line_number":540,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":541,"context_line":"        - swift-tox-func-s3api-py37:"},{"line_number":542,"context_line":"            irrelevant-files:"},{"line_number":543,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":544,"context_line":"              - ^test/probe/.*$"},{"line_number":545,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"        # Other tests"},{"line_number":548,"context_line":"        - swift-tox-func-s3api-ceph-s3tests-tempauth:"},{"line_number":549,"context_line":"            irrelevant-files:"},{"line_number":550,"context_line":"              - ^(api-ref|releasenotes)/.*$"},{"line_number":551,"context_line":"              # Keep doc/saio -- we use those sample configs in the saio playbooks"},{"line_number":552,"context_line":"              # Also keep doc/s3api -- it holds known failures for these tests"},{"line_number":553,"context_line":"              - ^doc/(requirements.txt|(manpages|source)/.*)$"},{"line_number":554,"context_line":"              - ^test/(unit|probe)/.*$"},{"line_number":555,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":556,"context_line":"        - swift-probetests-centos-7:"},{"line_number":557,"context_line":"            irrelevant-files:"},{"line_number":558,"context_line":"              - ^(api-ref|releasenotes)/.*$"},{"line_number":559,"context_line":"              # Keep doc/saio -- we use those sample configs in the saio playbooks"},{"line_number":560,"context_line":"              - ^doc/(requirements.txt|(manpages|s3api|source)/.*)$"},{"line_number":561,"context_line":"              - ^test/(unit|functional)/.*$"},{"line_number":562,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":563,"context_line":"        - swift-dsvm-functional:"},{"line_number":564,"context_line":"            irrelevant-files:"},{"line_number":565,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":566,"context_line":"              - ^test/probe/.*$"},{"line_number":567,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":568,"context_line":"        - swift-dsvm-functional-py3:"},{"line_number":569,"context_line":"            irrelevant-files:"},{"line_number":570,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":571,"context_line":"              - ^test/probe/.*$"},{"line_number":572,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":573,"context_line":"        - swift-dsvm-functional-ipv6:"},{"line_number":574,"context_line":"            irrelevant-files:"},{"line_number":575,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":576,"context_line":"              - ^test/probe/.*$"},{"line_number":577,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":578,"context_line":"        - swift-tox-lower-constraints:"},{"line_number":579,"context_line":"            irrelevant-files:"},{"line_number":580,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":581,"context_line":"              - ^test/(functional|probe)/.*$"},{"line_number":582,"context_line":"        - openstack-tox-pep8:"},{"line_number":583,"context_line":"            irrelevant-files:"},{"line_number":584,"context_line":"              - ^(api-ref|etc|examples|releasenotes)/.*$"},{"line_number":585,"context_line":"              # Keep doc/manpages -- we want to syntax check them"},{"line_number":586,"context_line":"              - ^doc/(requirements.txt|(saio|s3api|source)/.*)$"},{"line_number":587,"context_line":"        - swift-multinode-rolling-upgrade:"},{"line_number":588,"context_line":"            irrelevant-files:"},{"line_number":589,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":590,"context_line":"              - ^test/probe/.*$"},{"line_number":591,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":592,"context_line":"        - tempest-integrated-object-storage:"},{"line_number":593,"context_line":"            irrelevant-files:"},{"line_number":594,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":595,"context_line":"              - ^test/.*$"},{"line_number":596,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":597,"context_line":"        - tempest-ipv6-only:"},{"line_number":598,"context_line":"            irrelevant-files:"},{"line_number":599,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":600,"context_line":"              - ^test/.*$"},{"line_number":601,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":602,"context_line":"        - grenade-py3:"},{"line_number":603,"context_line":"            irrelevant-files:"},{"line_number":604,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":605,"context_line":"              - ^test/.*$"},{"line_number":606,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":607,"context_line":"    gate:"},{"line_number":608,"context_line":"      jobs:"},{"line_number":609,"context_line":"        # For gate jobs, err towards running more jobs (so, generally avoid"},{"line_number":610,"context_line":"        # using irrelevant-files). Exceptions should mainly be made for"},{"line_number":611,"context_line":"        # long-running jobs, like probetests or (once they move to"},{"line_number":612,"context_line":"        # in-tree definitions) dsvm jobs."},{"line_number":613,"context_line":"        - swift-upload-image"},{"line_number":614,"context_line":"        - swift-upload-image-py3"},{"line_number":615,"context_line":"        - swift-tox-py27"},{"line_number":616,"context_line":"        - swift-tox-py36"},{"line_number":617,"context_line":"        - swift-tox-py37"},{"line_number":618,"context_line":"        - swift-tox-func"},{"line_number":619,"context_line":"        - swift-tox-func-encryption"},{"line_number":620,"context_line":"        - swift-tox-func-domain-remap-staticweb"},{"line_number":621,"context_line":"        - swift-tox-func-ec"},{"line_number":622,"context_line":"        - swift-tox-func-s3api"},{"line_number":623,"context_line":"        - swift-tox-func-py37"},{"line_number":624,"context_line":"        - swift-tox-func-encryption"},{"line_number":625,"context_line":"        - swift-tox-func-domain-remap-staticweb-py37"},{"line_number":626,"context_line":"        - swift-tox-func-ec-py37"},{"line_number":627,"context_line":"        - swift-tox-func-s3api-py37"},{"line_number":628,"context_line":"        - swift-probetests-centos-7:"},{"line_number":629,"context_line":"            irrelevant-files:"},{"line_number":630,"context_line":"              - ^(api-ref|releasenotes)/.*$"},{"line_number":631,"context_line":"              # Keep doc/saio -- we use those sample configs in the saio playbooks"},{"line_number":632,"context_line":"              - ^doc/(requirements.txt|(manpages|s3api|source)/.*)$"},{"line_number":633,"context_line":"              - ^test/(unit|functional)/.*$"},{"line_number":634,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":635,"context_line":"        - swift-dsvm-functional:"},{"line_number":636,"context_line":"            irrelevant-files:"},{"line_number":637,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":638,"context_line":"              - ^test/probe/.*$"},{"line_number":639,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":640,"context_line":"        - swift-dsvm-functional-py3:"},{"line_number":641,"context_line":"            irrelevant-files:"},{"line_number":642,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":643,"context_line":"              - ^test/probe/.*$"},{"line_number":644,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":645,"context_line":"        - swift-dsvm-functional-ipv6:"},{"line_number":646,"context_line":"            irrelevant-files:"},{"line_number":647,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":648,"context_line":"              - ^test/probe/.*$"},{"line_number":649,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":650,"context_line":"        - swift-tox-lower-constraints:"},{"line_number":651,"context_line":"            irrelevant-files:"},{"line_number":652,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":653,"context_line":"              - ^test/(functional|probe)/.*$"},{"line_number":654,"context_line":"        - openstack-tox-pep8:"},{"line_number":655,"context_line":"            irrelevant-files:"},{"line_number":656,"context_line":"              - ^(api-ref|etc|examples|releasenotes)/.*$"},{"line_number":657,"context_line":"              # Keep doc/manpages -- we want to syntax check them"},{"line_number":658,"context_line":"              - ^doc/(requirements.txt|(saio|s3api|source)/.*)$"},{"line_number":659,"context_line":"        - tempest-integrated-object-storage:"},{"line_number":660,"context_line":"            irrelevant-files:"},{"line_number":661,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":662,"context_line":"              - ^test/.*$"},{"line_number":663,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":664,"context_line":"        - tempest-ipv6-only:"},{"line_number":665,"context_line":"            irrelevant-files:"},{"line_number":666,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":667,"context_line":"              - ^test/.*$"},{"line_number":668,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":669,"context_line":"        - grenade-py3:"},{"line_number":670,"context_line":"            irrelevant-files:"},{"line_number":671,"context_line":"              - ^(api-ref|doc|releasenotes)/.*$"},{"line_number":672,"context_line":"              - ^test/.*$"},{"line_number":673,"context_line":"              - ^(.gitreview|.mailmap|AUTHORS|CHANGELOG)$"},{"line_number":674,"context_line":"    experimental:"},{"line_number":675,"context_line":"      jobs:"},{"line_number":676,"context_line":"        - swift-tox-py27-centos-7"},{"line_number":677,"context_line":"        - swift-tox-func-centos-7"},{"line_number":678,"context_line":"        - swift-tox-func-encryption-centos-7"},{"line_number":679,"context_line":"        - swift-tox-func-ec-centos-7"},{"line_number":680,"context_line":"        - swift-multinode-rolling-upgrade-queens"},{"line_number":681,"context_line":"        - swift-multinode-rolling-upgrade-rocky"},{"line_number":682,"context_line":"        - swift-multinode-rolling-upgrade-stein"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"    post:"},{"line_number":685,"context_line":"      jobs:"},{"line_number":686,"context_line":"        - publish-openstack-python-branch-tarball"},{"line_number":687,"context_line":"    promote:"},{"line_number":688,"context_line":"      jobs:"},{"line_number":689,"context_line":"        - swift-promote-image"},{"line_number":690,"context_line":"        - swift-promote-image-3"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3fa7e38b_48d958f2","line":690,"range":{"start_line":461,"start_character":2,"end_line":690,"end_character":0},"updated":"2019-10-03 15:06:31.000000000","message":"Job swift-promote-image-3 not defined","commit_id":"864dc474c133f725f997a3c2d5836c3476059b85"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"b9e1d744647de7a6a4f4c97aca57d42278713dc5","unresolved":false,"context_lines":[{"line_number":433,"context_line":"      docker_images:"},{"line_number":434,"context_line":"        - context: ."},{"line_number":435,"context_line":"          repository: openstackswift/saio"},{"line_number":436,"context_line":"          tags:"},{"line_number":437,"context_line":"           - py3"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"- job:"},{"line_number":440,"context_line":"    name: swift-upload-image-py3"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3fa7e38b_4075a897","line":437,"range":{"start_line":436,"start_character":10,"end_line":437,"end_character":16},"updated":"2019-10-03 21:11:21.000000000","message":"So this is the key part, huh?","commit_id":"bbe5a284cdc3beb3050acead3d384328f5d829f3"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"a55efe774dca0c009107ad59a34d634a7181c98a","unresolved":false,"context_lines":[{"line_number":433,"context_line":"      docker_images:"},{"line_number":434,"context_line":"        - context: ."},{"line_number":435,"context_line":"          repository: openstackswift/saio"},{"line_number":436,"context_line":"          tags:"},{"line_number":437,"context_line":"           - py3"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"- job:"},{"line_number":440,"context_line":"    name: swift-upload-image-py3"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3fa7e38b_97875db7","line":437,"range":{"start_line":436,"start_character":10,"end_line":437,"end_character":16},"in_reply_to":"3fa7e38b_4075a897","updated":"2019-10-04 12:19:50.000000000","message":"correct, this will add the correct tag that will allow us to differentiate between py2 and py3 images. I\u0027m also missing the dockerfile parameter which defines how to build the py3 image.","commit_id":"bbe5a284cdc3beb3050acead3d384328f5d829f3"}]}
