)]}'
{"id":"openstack%2Fwatcher~1008229","triplet_id":"openstack%2Fwatcher~master~I5fe66772dd036a378fa809469238bc13dcfd1362","project":"openstack/watcher","branch":"master","attention_set":{},"removed_from_attention_set":{"34452":{"account":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"last_update":"2026-10-08 13:23:30.000000000","reason":"Change was submitted"},"11604":{"account":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"last_update":"2026-10-07 13:10:25.000000000","reason":"\u003cGERRIT_ACCOUNT_11604\u003e replied on the change","reason_account":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"}},"26471":{"account":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"last_update":"2026-10-07 21:59:49.000000000","reason":"removed on reply"}},"hashtags":[],"change_id":"I5fe66772dd036a378fa809469238bc13dcfd1362","subject":"Fix double-encoding of JSON error bodies in middleware","status":"MERGED","created":"2026-10-01 09:29:26.000000000","updated":"2026-10-08 13:24:50.000000000","submitted":"2026-10-08 13:23:30.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":10,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"1008229","meta_rev_id":"e54006d6930b7c6b76b06c368218cd9ae42d23a4","_number":1008229,"virtual_id_number":1008229,"owner":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"value":0,"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"value":0,"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-10-08 13:23:30.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"all":[{"value":2,"date":"2026-10-07 13:10:25.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"value":1,"date":"2026-10-07 21:59:49.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"value":2,"date":"2026-10-08 11:30:18.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"all":[{"value":0,"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"value":0,"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"value":1,"date":"2026-10-08 11:30:18.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"value":0,"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"value":0,"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{" 0":"Standard Change","+1":"Important Change","+2":"High Priority Change"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"}],"CC":[{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-10-01 11:02:47.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-10-02 11:29:00.000000000","updated_by":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"reviewer":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"state":"REVIEWER"},{"updated":"2026-10-07 12:24:44.000000000","updated_by":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"reviewer":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"state":"REVIEWER"},{"updated":"2026-10-07 12:49:19.000000000","updated_by":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"reviewer":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"state":"CC"},{"updated":"2026-10-08 11:30:18.000000000","updated_by":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"reviewer":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"state":"REVIEWER"}],"messages":[{"id":"b79f95754a63173ae53c8aa8744b136dc236552d","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-10-01 09:29:26.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"18f880fd2d1891ae4b2df27d99532ff58fc2fe0c","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-10-01 11:02:47.000000000","message":"Patch Set 1: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/becf108b4de1476eac4778e7b1aa828e\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/b12bec77259447678bd9b5604e4345bd : SUCCESS in 8m 03s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/5f464cf3d45d4aa48e9ac4483a456885 : SUCCESS in 5m 18s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/4064c256f4df48e9a281eee08f68197e : SUCCESS in 7m 18s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/24409f1788014f57a876893d4a29b471 : SUCCESS in 5m 10s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0f2f69b316d14341b3118a9755de46d4 : SUCCESS in 9m 42s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/0c663b16001744a48a307ea0128b1bcd : SUCCESS in 4m 51s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/7cf42020569e4b6a89fce43d493f5fdc : SUCCESS in 30m 39s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/d0a6fab3d42a4f8883aa1e90594b1ab6 : SUCCESS in 30m 51s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/22bd714480644d1cab7ff233d0b064c6 : SUCCESS in 30m 41s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/d51473cb6838406cb052a50eb83883d1 : SUCCESS in 1h 19m 29s\n- python-watcherclient-functional https://zuul.opendev.org/t/openstack/build/59c0d6e2bc1843829ff637bcdbf9d4fd : FAILURE in 21m 35s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/7bc6a37e4dc8401981fc0ee4ce9de9b0 : SUCCESS in 1h 29m 42s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/36c4b5a47b7241369340a9c72b5e4375 : SUCCESS in 55m 51s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/87a97abc724842dea9c6b2cec0609426 : SUCCESS in 3m 02s","accounts_in_message":[],"_revision_number":1},{"id":"f771ada21712b76c7cdb441308d751ab1c80d356","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-10-01 16:42:58.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"27a76a54beddc406a417d5262035d03ba1de303c","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-10-01 18:43:46.000000000","message":"Patch Set 2: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/4c86b49d6c554c91982cf8af2a334512\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/f922ebba24da4df4a033aa9caf963dd5 : SUCCESS in 6m 09s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/8a72e0f6a79d42d9a231e256d7aeb4ff : SUCCESS in 2m 28s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/25f780ae6aba4ca4956c3d4f47822fa0 : SUCCESS in 3m 31s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/3727fc21b3cd45a3b87fb363ed6adb20 : SUCCESS in 8m 04s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/9adc9a6a3bb045028deac17c4582c9e9 : SUCCESS in 9m 42s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/03ce522c268e4d08a9f5ed440f21aec9 : SUCCESS in 4m 51s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/1080c89fb38445f8a8b1ff7eeb247f5c : SUCCESS in 43m 42s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/9d41a76e82774babaede1b226b7294a5 : SUCCESS in 54m 36s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/1cdc89cdf8364ae98a3f140f2ebfca48 : SUCCESS in 18m 59s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/05f79578a18446eba89ae50db6a07c61 : SUCCESS in 48m 30s\n- python-watcherclient-functional https://zuul.opendev.org/t/openstack/build/a037fa992da74669af7879292ad43060 : FAILURE in 16m 53s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/2ea243721a86447d8ae61681c0996233 : SUCCESS in 53m 23s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/45526ec7ee65481c93aff517389b501c : SUCCESS in 1h 45m 52s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/8e1c2f39bd4b46e59b114e846751e9fe : SUCCESS in 4m 31s","accounts_in_message":[],"_revision_number":2},{"id":"fb1841286ce9c32ca1072413f6599a97fdb0dc0e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-10-02 06:37:34.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":3},{"id":"9e4c27fbc632def639c910b827c41f62a90bb12a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-10-02 08:43:29.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/6498856921ac40fd8c610a0c475246d0\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/c0f074c9b5fd4135ba66ecfa98c0b72a : SUCCESS in 6m 19s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/7e6b867aa98c451e8186c31e500793e3 : SUCCESS in 4m 14s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/1135456fb1d741e189c1c4fc85c82ebf : SUCCESS in 5m 22s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/fc6246714e7a4d18bb52d850cb2a2be0 : SUCCESS in 8m 32s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/5b2643e4f41b448c89f338edb70e2a4e : SUCCESS in 5m 11s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/5a9fcb62f2f5404281e2e2366af43ab3 : SUCCESS in 4m 58s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/b5db36c2804945b695ad1785c5bdcceb : SUCCESS in 53m 48s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/f79f4070d56644dbb13dd1904ee4d07a : SUCCESS in 55m 30s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/9329184f016d407aa1179b83914771d9 : SUCCESS in 39m 42s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/019186e63478487791481c8b30da2d0e : SUCCESS in 1h 34m 39s\n- python-watcherclient-functional https://zuul.opendev.org/t/openstack/build/ebfddd5cd5ba44babd28444c2076cfc5 : SUCCESS in 16m 17s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/6894f0174b8649c2ba1436774e15b08a : SUCCESS in 1h 56m 41s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/a059f29074e64518946e0414544204f2 : SUCCESS in 50m 03s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/91a4e90f46824b07b22965bffca7cfa7 : SUCCESS in 4m 58s","accounts_in_message":[],"_revision_number":3},{"id":"da4821f3a5817da878a7aa291d7ca667bbf5285b","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-10-02 11:29:00.000000000","message":"Patch Set 3: Code-Review+1\n\nBuild succeeded (check pipeline).\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/375764dce4c941f8b4e0bb2ee925b615\n\n- watcher-s2i-content-provider https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/fffcee2c5d4445d9b7e2e9b6de6806a4 : SUCCESS in 4h 49m 47s\n- watcher-s2i-tempest https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/64b2224d4f3c41dba172cb1a2728687a : SUCCESS in 1h 55m 22s","accounts_in_message":[],"_revision_number":3},{"id":"ec49a9806a9b8540c382925c0dce35e55c51356c","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-10-07 12:24:44.000000000","message":"Patch Set 3: Code-Review+1\n\n(4 comments)","accounts_in_message":[],"_revision_number":3},{"id":"9b0b3ed1665e2bd37141c131222de3e2159da67f","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-10-07 12:49:13.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":4},{"id":"328c68c165b780776934fe51e5f0332cbfe40a89","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-10-07 12:49:15.000000000","message":"Patch Set 3:\n\n(4 comments)","accounts_in_message":[],"_revision_number":3},{"id":"3b4b96150aa49e43c0e3463b3c29519a09366bcf","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-10-07 12:49:19.000000000","message":"Patch Set 4:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":4},{"id":"0dc3933da7cbbac6125da08a85b740ab781548ae","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-10-07 13:10:25.000000000","message":"Patch Set 4: Code-Review+2\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"393076749bcd2685f4d04622ceaec2503473c292","tag":"autogenerated:zuul:automatic-ci","author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"date":"2026-10-07 13:13:17.000000000","message":"Patch Set 4:\n\n(1 comment)\n\nBuild failed (automatic-ci pipeline). To rerun just this ci comment\n\"teim-ci: auto\". To rerun other ci jobs comment \"recheck\".\nNote this ci does run on \"recheck\".\n\nhttps://zuul.teim.app/t/main/buildset/7e6a56724fca480394427c4db1058bbc\n\n- teim-code-review https://zuul.teim.app/t/main/build/33f030147c33435a9ffc2291565b9a13 : POST_FAILURE in 11m 46s","accounts_in_message":[],"_revision_number":4},{"id":"f08eaf5bd3cd8bcf4f10d6ee0452eba918c2a18d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-10-07 15:04:19.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/a902fd9ce1114caaa868dc2a7952d169\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/0dab3a0d35d34b6894ed70b443c4548c : SUCCESS in 7m 35s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/0903b087dfb34e0eb36683e64dd66dbd : SUCCESS in 4m 46s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/6af6a6a3db014d6b819c81242f69d262 : SUCCESS in 5m 52s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/ead84a97f47543e484e77aab7bd8b6f1 : SUCCESS in 9m 45s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/70fd3bd586b049b8a243e8038ffa9ee9 : SUCCESS in 6m 58s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/15463ae094624f8c8b714b0240a26a06 : SUCCESS in 5m 29s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/bd036bcc93cb407daf34f4dcc0a4e801 : SUCCESS in 53m 43s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/bd2b1b19ebd34ba7a1a23e5b49a5b042 : SUCCESS in 52m 58s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/c2b8c36733ef49f8a587d8c841070623 : SUCCESS in 38m 46s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/607ce72be2fe49b4a4b5f5513235dd47 : SUCCESS in 1h 35m 25s\n- python-watcherclient-functional https://zuul.opendev.org/t/openstack/build/f736ea006f9a4fff8a7d7a79ef2223e8 : SUCCESS in 21m 33s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/f7eb6f5e15414996a755d66176c16a02 : SUCCESS in 1h 37m 33s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/4047b0ef90ad4291b8e6e3c8ed3236d7 : SUCCESS in 1h 48m 13s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/578c7dae4d3a48bb83f28230ce8800fe : SUCCESS in 5m 18s","accounts_in_message":[],"_revision_number":4},{"id":"add72bc126899a7369fd910d6db77bc64ce827c2","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-10-07 21:59:49.000000000","message":"Patch Set 4: Code-Review+1\n\nBuild succeeded (check pipeline).\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/a4c61cd10ccf4bfdb4c3f160c94e6708\n\n- watcher-s2i-content-provider https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/6df764c2b90c48799a0c4f7144661995 : SUCCESS in 3h 59m 30s\n- watcher-s2i-tempest https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/b7c4b2fe531540b5a06c1041827b3125 : SUCCESS in 1h 43m 41s","accounts_in_message":[],"_revision_number":4},{"id":"888491f9efdd345457ce5d210bb3be3a02a52bfb","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-10-08 11:30:18.000000000","message":"Patch Set 4: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":4},{"id":"c9b2738ad7734a4ce5d135a0a04d2194fb190dc9","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-10-08 11:30:48.000000000","message":"Patch Set 4: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":4},{"id":"62d08bd4e6daa06b49da2bcfc52333ecd6c3c4c0","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-10-08 13:23:30.000000000","message":"Patch Set 4: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/f2fe45b355294271b7ef08826f31a666\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/2319badef93d465d8d3da47abe846320 : SUCCESS in 4m 30s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/7fb7200d839f466bac8bb889c6ee9ac0 : SUCCESS in 5m 30s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/25385a663ce24e7492bce1195bbf487b : SUCCESS in 5m 26s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/fda15e33b1ca41ffbd20be7c0ee627c8 : SUCCESS in 10m 24s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/4bcd8b603ffa4962b3d918f96c4e6571 : SUCCESS in 4m 32s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/9c0816f34fc141939b53162d765b6152 : SUCCESS in 56m 26s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/1fd227b9397246d8aa8472003475577c : SUCCESS in 52m 58s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/9a9a9b726f0c44dca2dc28cf6ad22f7a : SUCCESS in 30m 47s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/fe770f0341fb4b5daa8002c1f3e41180 : SUCCESS in 1h 35m 06s\n- python-watcherclient-functional https://zuul.opendev.org/t/openstack/build/ba1609f0e0464ce7b1ca42b173918aef : SUCCESS in 17m 23s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/aec61d0cefd74c4abb1a34ee0334f077 : SUCCESS in 1h 38m 39s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/f3a4a852aecb4c0d80aab2d9b6b4dd2e : SUCCESS in 1h 50m 31s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/d28f05c409cc4160b7c301e42d5f74ab : SUCCESS in 4m 35s","accounts_in_message":[],"_revision_number":4},{"id":"f3d79cf365c77aa9fe460376a38f0bf81b0c78db","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-10-08 13:23:30.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":4},{"id":"e54006d6930b7c6b76b06c368218cd9ae42d23a4","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-10-08 13:24:50.000000000","message":"Patch Set 4:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/dec86dfae845418f871aae37b0227511\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/66cb35911bde4386a790d02388caf2e2 : SUCCESS in 52s\n- promote-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/711e61560fd04e0abcb83606c52ad5ca : SUCCESS in 49s","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"4f06a831f95eb4d8bd22bfb998c15ee08631079f","revisions":{"b043c4fe816762818b3d966c1e6521f52f144116":{"kind":"REWORK","_number":1,"created":"2026-10-01 09:29:26.000000000","uploader":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"ref":"refs/changes/29/1008229/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/29/1008229/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/29/1008229/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/29/1008229/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/29/1008229/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/29/1008229/1"}}},"commit":{"parents":[{"commit":"75c841008c4ad6809c22ccf173cca99c555f5df8","subject":"Merge \"Skip unscheduled volumes in Cinder collector\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/75c841008c4ad6809c22ccf173cca99c555f5df8"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-10-01 09:16:53.000000000","tz":120},"committer":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-10-01 09:29:02.000000000","tz":120},"subject":"Fix double-encoding of JSON error bodies in middleware","message":"Fix double-encoding of JSON error bodies in middleware\n\nWSME encodes error responses as JSON before they reach\nParsableErrorMiddleware. The middleware was re-encoding\nthat string, resulting in a double-encoded error_message\nfield that clients had to decode twice.\n\nDecode the error body first with suppress(ValueError) so\nnon-JSON bodies are left unchanged, then wrap the result.\nUpdate all API unit tests to access error_message as a\ndict (response.json[\u0027error_message\u0027][\u0027faultstring\u0027])\ninstead of calling jsonutils.loads() on it.\n\nCloses-Bug: #2169114\nGenerated-By: claude-code (claude-sonnet-4-6)\nChange-Id: I5fe66772dd036a378fa809469238bc13dcfd1362\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/b043c4fe816762818b3d966c1e6521f52f144116"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/b043c4fe816762818b3d966c1e6521f52f144116"}]},"branch":"refs/heads/master"},"956a3c24d36c21c01abbb5d79c6d09882ec9bd5f":{"kind":"REWORK","_number":2,"created":"2026-10-01 16:42:58.000000000","uploader":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"ref":"refs/changes/29/1008229/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/29/1008229/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/29/1008229/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/29/1008229/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/29/1008229/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/29/1008229/2"}}},"commit":{"parents":[{"commit":"75c841008c4ad6809c22ccf173cca99c555f5df8","subject":"Merge \"Skip unscheduled volumes in Cinder collector\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/75c841008c4ad6809c22ccf173cca99c555f5df8"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-10-01 09:16:53.000000000","tz":120},"committer":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-10-01 16:39:52.000000000","tz":120},"subject":"Fix double-encoding of JSON error bodies in middleware","message":"Fix double-encoding of JSON error bodies in middleware\n\nWSME encodes error responses as JSON before they reach\nParsableErrorMiddleware. The middleware was re-encoding\nthat string, resulting in a double-encoded error_message\nfield that clients had to decode twice.\n\nDecode the error body first with suppress(ValueError) so\nnon-JSON bodies are left unchanged, then wrap the result.\nUpdate all API unit tests to access error_message as a\ndict (response.json[\u0027error_message\u0027][\u0027faultstring\u0027])\ninstead of calling jsonutils.loads() on it.\n\nAlso improve the JSON path performance: join the raw WSGI\nbytes first then decode once (instead of N per-chunk\ndecodes followed by a join), and encode the final JSON\nbody directly rather than through a single-element list\ncomprehension.\n\nCloses-Bug: #2169114\nGenerated-By: claude-code (claude-sonnet-4-6)\nChange-Id: I5fe66772dd036a378fa809469238bc13dcfd1362\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/956a3c24d36c21c01abbb5d79c6d09882ec9bd5f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/956a3c24d36c21c01abbb5d79c6d09882ec9bd5f"}]},"branch":"refs/heads/master"},"d55414606769daa22e1e346a1d513e55999f3970":{"kind":"REWORK","_number":3,"created":"2026-10-02 06:37:34.000000000","uploader":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"ref":"refs/changes/29/1008229/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/29/1008229/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/29/1008229/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/29/1008229/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/29/1008229/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/29/1008229/3"}}},"commit":{"parents":[{"commit":"75c841008c4ad6809c22ccf173cca99c555f5df8","subject":"Merge \"Skip unscheduled volumes in Cinder collector\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/75c841008c4ad6809c22ccf173cca99c555f5df8"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-10-01 09:16:53.000000000","tz":120},"committer":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-10-02 06:36:58.000000000","tz":120},"subject":"Fix double-encoding of JSON error bodies in middleware","message":"Fix double-encoding of JSON error bodies in middleware\n\nWSME encodes error responses as JSON before they reach\nParsableErrorMiddleware. The middleware was re-encoding\nthat string, resulting in a double-encoded error_message\nfield that clients had to decode twice.\n\nDecode the error body first with suppress(ValueError) so\nnon-JSON bodies are left unchanged, then wrap the result.\nUpdate all API unit tests to access error_message as a\ndict (response.json[\u0027error_message\u0027][\u0027faultstring\u0027])\ninstead of calling jsonutils.loads() on it.\n\nAlso improve the JSON path performance: join the raw WSGI\nbytes first then decode once (instead of N per-chunk\ndecodes followed by a join), and encode the final JSON\nbody directly rather than through a single-element list\ncomprehension.\n\nDepends-On: https://review.opendev.org/c/openstack/python-watcherclient/+/1008319\n\nCloses-Bug: #2169114\nGenerated-By: claude-code (claude-sonnet-4-6)\nChange-Id: I5fe66772dd036a378fa809469238bc13dcfd1362\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/d55414606769daa22e1e346a1d513e55999f3970"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/d55414606769daa22e1e346a1d513e55999f3970"}]},"branch":"refs/heads/master"},"4f06a831f95eb4d8bd22bfb998c15ee08631079f":{"kind":"REWORK","_number":4,"created":"2026-10-07 12:49:13.000000000","uploader":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"ref":"refs/changes/29/1008229/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/29/1008229/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/29/1008229/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/29/1008229/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/29/1008229/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/29/1008229/4"}}},"commit":{"parents":[{"commit":"75c841008c4ad6809c22ccf173cca99c555f5df8","subject":"Merge \"Skip unscheduled volumes in Cinder collector\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/75c841008c4ad6809c22ccf173cca99c555f5df8"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-10-01 09:16:53.000000000","tz":120},"committer":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-10-07 12:48:57.000000000","tz":120},"subject":"Fix double-encoding of JSON error bodies in middleware","message":"Fix double-encoding of JSON error bodies in middleware\n\nWSME encodes error responses as JSON before they reach\nParsableErrorMiddleware. The middleware was re-encoding\nthat string, resulting in a double-encoded error_message\nfield that clients had to decode twice.\n\nDecode the error body first with suppress(ValueError) so\nnon-JSON bodies are left unchanged, then wrap the result.\nUpdate all API unit tests to access error_message as a\ndict (response.json[\u0027error_message\u0027][\u0027faultstring\u0027])\ninstead of calling jsonutils.loads() on it.\n\nAlso improve the JSON path performance: join the raw WSGI\nbytes first then decode once (instead of N per-chunk\ndecodes followed by a join), and encode the final JSON\nbody directly rather than through a single-element list\ncomprehension.\n\nDepends-On: https://review.opendev.org/c/openstack/python-watcherclient/+/1008319\n\nCloses-Bug: #2169114\nGenerated-By: claude-code (claude-sonnet-4-6)\nChange-Id: I5fe66772dd036a378fa809469238bc13dcfd1362\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/4f06a831f95eb4d8bd22bfb998c15ee08631079f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/4f06a831f95eb4d8bd22bfb998c15ee08631079f"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"}},{"label":"Review-Priority","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Review-Priority","description":"Review Priority","status":"NOT_APPLICABLE","is_legacy":false,"applicability_expression_result":{"fulfilled":false,"status":"FAIL"},"submittability_expression_result":{"expression":"is:true","fulfilled":true,"status":"NOT_EVALUATED","passing_atoms":[],"failing_atoms":[],"atom_explanations":{}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
