)]}'
{"id":"openstack%2Fwatcher-dashboard~978301","triplet_id":"openstack%2Fwatcher-dashboard~master~Id89d6add9c4b5b370e5c213544df577284dea7a2","project":"openstack/watcher-dashboard","branch":"master","topic":"service-layer-refactor","attention_set":{},"removed_from_attention_set":{"30002":{"account":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"last_update":"2026-05-06 18:45:57.000000000","reason":"\u003cGERRIT_ACCOUNT_30002\u003e replied on the change","reason_account":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"}},"11604":{"account":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"last_update":"2026-06-09 15:23:04.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"}},"28006":{"account":{"_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"},"last_update":"2026-06-10 07:31:41.000000000","reason":"Change was submitted"},"26471":{"account":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"last_update":"2026-04-30 21:42:39.000000000","reason":"removed on reply"},"12015":{"account":{"_account_id":12015,"name":"François Magimel","email":"magimel.francois@gmail.com","username":"linkid"},"last_update":"2026-06-10 07:31:41.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"Id89d6add9c4b5b370e5c213544df577284dea7a2","subject":"refactor: centralise Django settings access in config.py","status":"MERGED","created":"2026-02-28 12:22:05.000000000","updated":"2026-06-10 07:33:33.000000000","submitted":"2026-06-10 07:31:41.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":9,"unresolved_comment_count":1,"has_review_started":true,"submission_id":"978301-service-layer-refactor","meta_rev_id":"70296f99884f72979d6fa876a19d863fedd4da46","_number":978301,"virtual_id_number":978301,"owner":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},{"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-06-10 07:31:41.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":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"all":[{"value":2,"date":"2026-06-09 11:55:49.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},{"value":0,"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"value":-1,"date":"2026-06-09 12:07:19.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-06-09 11:55:49.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":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"all":[{"value":0,"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},{"value":1,"date":"2026-06-09 15:23:04.000000000","permitted_voting_range":{"min":1,"max":1},"_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":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},{"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"},{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"}],"CC":[{"_account_id":12015,"name":"François Magimel","email":"magimel.francois@gmail.com","username":"linkid"},{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},{"_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-02-28 12:22:54.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-02-28 12:32:38.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-02-28 15:19:58.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-04-16 17:12:04.000000000","updated_by":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"reviewer":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"state":"REVIEWER"},{"updated":"2026-05-04 07:04:16.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"},{"updated":"2026-05-04 18:09:56.000000000","updated_by":{"_account_id":12015,"name":"François Magimel","email":"magimel.francois@gmail.com","username":"linkid"},"reviewer":{"_account_id":12015,"name":"François Magimel","email":"magimel.francois@gmail.com","username":"linkid"},"state":"CC"},{"updated":"2026-06-09 13:55:22.000000000","updated_by":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"reviewer":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"state":"CC"}],"messages":[{"id":"9e779f18aa62c9da1e0c7d12385ac11b935dabd6","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-02-28 12:22:05.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"cd163b6b11e231dca426581bab6126d91d21d4f7","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-02-28 12:22:54.000000000","message":"Patch Set 1:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":1},{"id":"f9932732098507b7cfbb0b3f4a25a0ed3f871854","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-02-28 12:32:38.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/f3d21abcfa6c4ba6a6a0925f85bfe6ef\n\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/210542aa801746e9a62d976214e6d756 : SUCCESS in 2m 20s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/0741bb9eb03a49099f94e507f1ab1894 : SUCCESS in 4m 18s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/04051e39d8f34eb7a25567c1ff9b4799 : SUCCESS in 3m 00s (non-voting)\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/99961d483267433d94ad3e39e22e9023 : SUCCESS in 3m 59s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/fe5b84cc2c5c4850bf06b17dd1dfcc20 : SUCCESS in 2m 18s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/b2d337a939f44c01a9cfd21c29b708f9 : FAILURE in 4m 21s (non-voting)\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/65e6158de0d241be858b8f78a8159bd7 : SUCCESS in 4m 11s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/39d92230c0f64252a01875b2e9059773 : SUCCESS in 3m 43s","accounts_in_message":[],"_revision_number":1},{"id":"fa6a643fbd7fa63b4ce40e8dd92a0b0f4dd77327","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-02-28 12:35:37.000000000","message":"Patch Set 1:\n\n(5 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/39ad3327df264e1b83c3018f790fe564\n\n- teim-code-review https://zuul.teim.app/t/main/build/e4aa32979d1a47ff97b097d12f3eaf9c : SUCCESS in 12m 30s","accounts_in_message":[],"_revision_number":1},{"id":"5108ef027ece5bb5a9076522c10eab886ea1e81c","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-02-28 15:19:58.000000000","message":"Patch Set 1: Code-Review+1\n\nBuild succeeded (check pipeline).\nhttps://softwarefactory-project.io/zuul/t/rdoproject.org/buildset/83cc311a804b46a4b367e96e20e9463c\n\n- openstack-meta-content-provider-master https://softwarefactory-project.io/zuul/t/rdoproject.org/build/e937072407d9434d8ec21f21dcf1c0ca : SUCCESS in 2h 56m 21s\n- watcher-operator-validation-master https://softwarefactory-project.io/zuul/t/rdoproject.org/build/7c1d95b3883d40ebb898ef47b70bd5bf : SUCCESS in 2h 07m 34s","accounts_in_message":[],"_revision_number":1},{"id":"45d2c4fcb3700925b6e25cd9a82e8341d1c9c96c","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-03-30 13:51:26.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1\n","accounts_in_message":[],"_revision_number":2},{"id":"4abc3bbac963ee0dc207d989046d12111ba150e5","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-03-30 13:52:48.000000000","message":"Patch Set 2:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":2},{"id":"3d7a087067ea4968cfc678fc968363dbee196f28","tag":"autogenerated:gerrit:setTopic","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-03-30 13:53:09.000000000","message":"Topic service-layer-pattern removed","accounts_in_message":[],"_revision_number":2},{"id":"3a5de151d210808355d8ea2ece7e99ecfe782b84","tag":"autogenerated:gerrit:setTopic","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-03-30 13:53:25.000000000","message":"Topic set to config-access","accounts_in_message":[],"_revision_number":2},{"id":"efbd55616e5ff765373f1f72956fa08a7732500a","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-03-30 14:01:09.000000000","message":"Patch Set 2: Code-Review-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\nhttps://softwarefactory-project.io/zuul/t/rdoproject.org/buildset/973aa778c93a4360acdd76d9888447b8\n\n- openstack-meta-content-provider-master https://softwarefactory-project.io/zuul/t/rdoproject.org/build/4eb0310d3caf41c7acf109abcc7d14a5 : FAILURE in 7m 52s\n- watcher-operator-validation-master https://softwarefactory-project.io/zuul/t/rdoproject.org/build/10e5443733e44d5990012c221e1220e6 : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":2},{"id":"01b108ff8fca22719b8a97259d0aeba883598d46","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-30 14:17:29.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/100f38fb086746889dd91eb065512e2b\n\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/0a3cb7a8137f4d4d9f69a80f0865ab0e : SUCCESS in 4m 31s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/7814361d31f549fdb6cba5ad8170bbbb : SUCCESS in 4m 46s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/642b4583432d4ea3b86df8010e61daff : SUCCESS in 5m 05s (non-voting)\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/be8e1c2af0544f9bbbaa9ac529793278 : FAILURE in 4m 12s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/e88058af747f4491bfd8854b2967e5bf : SUCCESS in 3m 02s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/c9e997fe6b104b0ea0bf3c9cb249c972 : FAILURE in 7m 31s (non-voting)\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/793aa131eef3432392ab65617c4e5c53 : SUCCESS in 4m 13s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/6c43a4bcec7a409b937b2280360a7d9d : FAILURE in 6m 51s","accounts_in_message":[],"_revision_number":2},{"id":"2dde1f964cdd3bb6f385f2fcd32e63fbaedf13b1","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-03-30 15:38:11.000000000","message":"Patch Set 2:\n\n(3 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/e21c5b66a73942f78897a4399a4e9f92\n\n- teim-code-review https://zuul.teim.app/t/main/build/8ce24308d07e4686b6c48fd891e8a2a4 : SUCCESS in 12m 44s","accounts_in_message":[],"_revision_number":2},{"id":"54fffc7435f60b6a2a90d2cefe1102c0469925b1","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-04-04 00:52:13.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified-1\n","accounts_in_message":[],"_revision_number":3},{"id":"d59625ad0e19fe4e61506db2b5cb2c41e0c47ccf","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-04-04 00:53:31.000000000","message":"Patch Set 3:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":3},{"id":"6045f9b1c63891188dff182a62df5d60a7d37d78","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-04 01:10:35.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/fc6aec274dbb45f7b609570d913aa800\n\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/a01248ea61be4a26a5b15b0d20b54e29 : SUCCESS in 4m 01s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/4fa4b07ad5114603ae87188aabb2375e : SUCCESS in 4m 13s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/94ec7021bf754f55b4ae4536465ee5d2 : SUCCESS in 4m 01s (non-voting)\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/827a76808e8e48d7a59e0ab264db5a3e : SUCCESS in 3m 14s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/a64672c91feb4e53bcef28cf508da555 : SUCCESS in 4m 37s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/b70c59c8a8414f96804ed4375dab006a : FAILURE in 6m 29s (non-voting)\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/1fec3df62d794ad7933d15ad856748a4 : SUCCESS in 4m 04s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/88b3fd57b2c6423da2b178f447b56311 : SUCCESS in 6m 20s","accounts_in_message":[],"_revision_number":3},{"id":"007dd8cbe2df4482e1b12d7c5cab68b14b799b45","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-04-04 01:48:39.000000000","message":"Patch Set 3:\n\n(6 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/5a31855b8e674c1fb72302a111550aad\n\n- teim-code-review https://zuul.teim.app/t/main/build/88b6bfb4fefa4cddac0bac30a90be591 : SUCCESS in 6m 57s","accounts_in_message":[],"_revision_number":3},{"id":"2add860dcf87b280c92df32ece8065a0f2e54401","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-04-04 03:52:48.000000000","message":"Patch Set 3: Code-Review+1\n\nBuild succeeded (check pipeline).\nhttps://softwarefactory-project.io/zuul/t/rdoproject.org/buildset/659241f440134e82b2abc41b84d169c8\n\n- openstack-meta-content-provider-master https://softwarefactory-project.io/zuul/t/rdoproject.org/build/bd541099ef3a484ebae491943fc0f9f2 : SUCCESS in 2h 58m 51s\n- watcher-operator-validation-master https://softwarefactory-project.io/zuul/t/rdoproject.org/build/816ec36b388f4a4893ed7d6de124ebfa : SUCCESS in 2h 01m 27s","accounts_in_message":[],"_revision_number":3},{"id":"70b2b3d6099eb6e9da9704d442819ce0ff60b5e2","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-04-16 17:12:04.000000000","message":"Patch Set 3: Code-Review+2\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"b27494058b68f12a4549c5d59236580f47ae31ce","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-04-27 07:16:56.000000000","message":"Patch Set 3:\n\n(2 comments)","accounts_in_message":[],"_revision_number":3},{"id":"58a82611154da00382c9053b4468881d6e69792d","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-04-30 17:31:42.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Code-Review+1, Code-Review+2 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":4},{"id":"191115a31ca44a547532abe046085ea07b5ae037","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-04-30 17:32:30.000000000","message":"Patch Set 4:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":4},{"id":"8e4ef37d1bd1c94d97f9c4c3dc3f8bde1de016d5","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-30 17:45:21.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/52d294b3f0604fb1bbb16583c5ec6b26\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/ca6ddc80a9ef4d59a9c80170f3507569 : SUCCESS in 2m 08s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/fec9fa4b609c445a8011264142bdf674 : SUCCESS in 4m 05s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/98933ae46f9d428abc27e3040b7d040b : SUCCESS in 4m 28s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/3fb16e6c06b0448e930e20bfbca65fe2 : SUCCESS in 5m 43s (non-voting)\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/33e120bc29184f53a18d765ca5243ade : SUCCESS in 3m 00s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/14151a87cb364b568a1eb602d608facd : SUCCESS in 3m 14s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/fc15cf9c3bcd4853ae765e70c71c86f9 : FAILURE in 6m 54s (non-voting)\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/384a84486e8b4e7792a2e18d9ad77d8a : SUCCESS in 5m 11s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/542d3658339d42568bc998346a0492b6 : SUCCESS in 8m 19s","accounts_in_message":[],"_revision_number":4},{"id":"c6f1339c2b11ace00f7586528462829302344b31","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-04-30 18:40:21.000000000","message":"Patch Set 4:\n\n(6 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/68f6e03b36e844f0972f6bbd7b05cb10\n\n- teim-code-review https://zuul.teim.app/t/main/build/fef0e774538e4088bee99a2caf50f13b : SUCCESS in 16m 04s","accounts_in_message":[],"_revision_number":4},{"id":"0e23a57300ad314709201ce6f1d3ed8f16a641b3","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-04-30 21:42:39.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/rdo/buildset/ea396632bc4548528c414de41068c0f5\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdo/build/33aded9881884e4dadf5ac7664a607db : SUCCESS in 4h 08m 43s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdo/build/af35324b05d64d379e350d5b0dd96498 : SUCCESS in 2h 11m 17s","accounts_in_message":[],"_revision_number":4},{"id":"8a7615cd54b2fd9c14add1b62f3c4554d71ad56f","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-05-04 07:04:16.000000000","message":"Patch Set 4: Code-Review+2","accounts_in_message":[],"_revision_number":4},{"id":"72c750f1bd1ea8d04ad0290a0f9d0401afa417c7","author":{"_account_id":12015,"name":"François Magimel","email":"magimel.francois@gmail.com","username":"linkid"},"date":"2026-05-04 18:09:56.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"61c36958304e0d314c9fc495d73ce0b29e88d1d2","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-05-06 18:40:14.000000000","message":"Patch Set 4: Workflow-1\n\n(3 comments)","accounts_in_message":[],"_revision_number":4},{"id":"e5682a5bb05dd6645c6224f3ec1f744374d87f83","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-05-06 18:45:57.000000000","message":"Patch Set 4: Code-Review+2\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"65153471bf1b770b133148e51127c69ab1354e63","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-06-09 11:55:49.000000000","message":"Patch Set 5: Patch Set 4 was rebased\n\nCopied Votes:\n* Code-Review+1, Code-Review+2 (copy condition: \"**changekind:TRIVIAL_REBASE** OR is:MIN\")\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n* Workflow-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":5},{"id":"2602ba623ec59bd237cc818a685a29c6a750ad3a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-09 12:07:04.000000000","message":"Patch Set 5: 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/ce079a8d4c8044d9a04d5a7075064e76\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/2365a3193eb14428af6ec121cd752171 : SUCCESS in 2m 15s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/4dc81ce2feec48baa4271d7cfd65ab67 : SUCCESS in 2m 21s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/0c399955bcf247b5842eda7f81b35ecb : SUCCESS in 4m 24s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/1206d810d5a648ec847943b734d64a8a : SUCCESS in 2m 39s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/94f88231cf274a77a25f7c703543e88a : SUCCESS in 2m 07s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/d4f756abe2e54d8999d1772af44cd306 : SUCCESS in 2m 22s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/1ca50d93379f4e55a1ce679d5a5bf3f4 : SUCCESS in 6m 40s (non-voting)\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/a5dd4e76f4ad41adb63876c4b428d2c8 : SUCCESS in 3m 03s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/284581b37a4a4fedb96db236324b9253 : SUCCESS in 9m 20s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/69a4ac45435f43a196000be3bcbbfe03 : FAILURE in 4m 02s","accounts_in_message":[],"_revision_number":5},{"id":"b51e5f5a21f7bcd90e262cbb8a6f51d1851b439c","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-09 12:07:19.000000000","message":"Patch Set 5: Code-Review-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/214ace571e3a4f2da91815e0d459dcc0\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/f473ef64a6f14e538bfe37163a69dd80 : FAILURE in 9m 37s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/bf08bf32f638405da9e4ac993a4be9e4 : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":5},{"id":"60a279f504f9b3e61964694cf920bc908e808e61","author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"date":"2026-06-09 13:55:22.000000000","message":"Patch Set 5:\n\n(1 comment)","accounts_in_message":[],"_revision_number":5},{"id":"ba9e12102887f4b9746ef814d046bc43e10a4986","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-09 14:06:59.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/69e2fef429454be0b706aa2e87ec6f29\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/700f3eae752a4e59964f187d4d667fe0 : SUCCESS in 3m 00s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/3c099ea397a7406dae6de8965362b24b : SUCCESS in 5m 09s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/49fe1eb7b66046ab827c503ab534bf3d : SUCCESS in 5m 15s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/e513be5cfaad4f22b0f92f45953e7f5a : SUCCESS in 4m 23s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/d8e1296db7fa4ee78a667ee7797caff1 : SUCCESS in 4m 02s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/62090f2a99864d88b3314494b7ecc6a7 : SUCCESS in 4m 32s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/ea989892a6ce4154a1f491c741d106cb : SUCCESS in 5m 40s (non-voting)\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/a471e0d535ab425b9d1f2431fa3e3017 : SUCCESS in 4m 26s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/94e1fa7e06594c73b2decd6212489118 : SUCCESS in 8m 15s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/059d304d203b484bb97611efbf64ee96 : SUCCESS in 3m 33s","accounts_in_message":[],"_revision_number":5},{"id":"d492004d3b46fff94c09eaf895c75946985f532b","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-09 15:08:14.000000000","message":"Patch Set 5:\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/84ff8f1fc76e456c9de9e9e0336429e3\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/a3547768c9104cd6add2690a21a7c1da : FAILURE in 8m 22s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/2c7e5df19d1645aba158ed2f8aec6c24 : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":5},{"id":"50750de5eee3806d1b2dc6d7812fef915fee9838","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-06-09 15:23:04.000000000","message":"Patch Set 5: Workflow+1","accounts_in_message":[],"_revision_number":5},{"id":"8138b186650b2b94505b6bc801088e1db5be6b1a","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-10 07:11:29.000000000","message":"Patch Set 5: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":5},{"id":"21a22bc036d204c3b28adddda9c76e374255b5e5","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-10 07:31:41.000000000","message":"Patch Set 5: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/7d5e84703fe84b07906b51f09a67b3e5\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/b735ee0a7a50402085d8be8cb75eb532 : SUCCESS in 3m 07s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/e6e7f52eec2e4535b41b22f3cc64ffab : SUCCESS in 2m 25s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/4bb6f05100bf4aabbae14acfa67d35d8 : SUCCESS in 4m 08s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/696d1d1130764036a8a4de05266d43b9 : SUCCESS in 3m 59s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/994ebc4e4f174ff0b8bb0b5539aac7fd : SUCCESS in 3m 15s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/84055c633fb24bd6875f915c590572d1 : SUCCESS in 4m 07s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/b7e6ad0eb43f47599145f74c7afab19b : SUCCESS in 8m 13s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/cf44f8630acc4db7b909d4279620d457 : SUCCESS in 4m 22s","accounts_in_message":[],"_revision_number":5},{"id":"7c21ba1281af95b80cac55d853c23073fc04a306","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-10 07:31:41.000000000","message":"Change has been successfully merged\n\n4 is the latest approved patch-set.\nNo files were changed between the latest approved patch-set and the submitted one.\n","accounts_in_message":[],"_revision_number":5},{"id":"70296f99884f72979d6fa876a19d863fedd4da46","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-10 07:33:33.000000000","message":"Patch Set 5:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/600c35ddcdb1472d8f66a97231e3f7df\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/2cee61500ade466692cbb51ecdfe869a : SUCCESS in 45s","accounts_in_message":[],"_revision_number":5}],"current_revision_number":5,"current_revision":"71a5e552eda758aee86c8d8b14fd9ab7eb7f1ce6","revisions":{"4d595335a3bb947ed77d57a3efcb8f478ecb835e":{"kind":"REWORK","_number":1,"created":"2026-02-28 12:22:05.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/01/978301/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher-dashboard","ref":"refs/changes/01/978301/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/1"}}},"commit":{"parents":[{"commit":"4b502b880a85c258ed1a9b0b2c9a938b5f818db7","subject":"style: replace autopep8 with ruff-format; restrict hacking to H-rules","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/4b502b880a85c258ed1a9b0b2c9a938b5f818db7"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-02-27 21:03:40.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-02-28 12:09:02.000000000","tz":0},"subject":"refactor: centralise Django settings access in config.py","message":"refactor: centralise Django settings access in config.py\n\nReplace scattered getattr/setattr reflection on Django settings with a\ndedicated watcher_dashboard/config module. Four public functions cover\nthe two SSL settings (get_ssl_no_verify, get_ssl_cacert) and policy\nfile registration (get_policy_files, set_policy_file).\n\nfunctools.cache on the read helpers means settings are looked up once\nper process. set_policy_file clears the policy cache after each write.\nget_policy_files returns a dict copy to prevent caller mutation of the\ncached value. insert_watcher_policy_file guards with an existence check\nso set_policy_file (and its cache_clear) is only called once, avoiding\nper-request cache churn.\n\nGenerated-By: claude-code sonnet 4.6\nChange-Id: Id89d6add9c4b5b370e5c213544df577284dea7a2\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/4d595335a3bb947ed77d57a3efcb8f478ecb835e"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/4d595335a3bb947ed77d57a3efcb8f478ecb835e"}]},"branch":"refs/heads/master"},"97a6e1e2de27477e4d216158cc21db6626f84263":{"kind":"REWORK","_number":2,"created":"2026-03-30 13:51:26.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/01/978301/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher-dashboard","ref":"refs/changes/01/978301/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/2"}}},"commit":{"parents":[{"commit":"b2269ee5dfe3f799d87e2997da2cc73f1cc14b33","subject":"test: fix efficacy_specifications fixture to be a list","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/b2269ee5dfe3f799d87e2997da2cc73f1cc14b33"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-02-27 21:03:40.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-03-30 13:51:08.000000000","tz":60},"subject":"refactor: centralise Django settings access in config.py","message":"refactor: centralise Django settings access in config.py\n\nReplace scattered getattr/setattr reflection on Django settings with a\ndedicated watcher_dashboard/config module. Four public functions cover\nthe two SSL settings (get_ssl_no_verify, get_ssl_cacert) and policy\nfile registration (get_policy_files, set_policy_file).\n\nfunctools.cache on the read helpers means settings are looked up once\nper process. set_policy_file clears the policy cache after each write.\nget_policy_files returns a dict copy to prevent caller mutation of the\ncached value. insert_watcher_policy_file guards with an existence check\nso set_policy_file (and its cache_clear) is only called once, avoiding\nper-request cache churn.\n\nGenerated-By: claude-code sonnet 4.6\nChange-Id: Id89d6add9c4b5b370e5c213544df577284dea7a2\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/97a6e1e2de27477e4d216158cc21db6626f84263"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/97a6e1e2de27477e4d216158cc21db6626f84263"}]},"branch":"refs/heads/master"},"6bf0ac6676d604ccf12478788382a9e9a33ae116":{"kind":"REWORK","_number":3,"created":"2026-04-04 00:52:13.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/01/978301/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher-dashboard","ref":"refs/changes/01/978301/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/3"}}},"commit":{"parents":[{"commit":"cf41e8fc29fee44875218b4407d3ca19672c7705","subject":"test: fix efficacy_specifications fixture to be a list","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/cf41e8fc29fee44875218b4407d3ca19672c7705"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-02-27 21:03:40.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-04-04 00:49:03.000000000","tz":60},"subject":"refactor: centralise Django settings access in config.py","message":"refactor: centralise Django settings access in config.py\n\nReplace scattered getattr/setattr reflection on Django settings with a\ndedicated watcher_dashboard/config module. Four public functions cover\nthe two SSL settings (get_ssl_no_verify, get_ssl_cacert) and policy\nfile registration (get_policy_files, set_policy_file).\n\nfunctools.cache on the read helpers means settings are looked up once\nper process. set_policy_file clears the policy cache after each write.\nget_policy_files returns a dict copy to prevent caller mutation of the\ncached value. insert_watcher_policy_file guards with an existence check\nso set_policy_file (and its cache_clear) is only called once, avoiding\nper-request cache churn.\n\nGenerated-By: claude-code sonnet 4.6\nChange-Id: Id89d6add9c4b5b370e5c213544df577284dea7a2\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/6bf0ac6676d604ccf12478788382a9e9a33ae116"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/6bf0ac6676d604ccf12478788382a9e9a33ae116"}]},"branch":"refs/heads/master"},"0caf38892b8f11064c84a5752327b6c042a8485e":{"kind":"REWORK","_number":4,"created":"2026-04-30 17:31:42.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/01/978301/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher-dashboard","ref":"refs/changes/01/978301/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/4"}}},"commit":{"parents":[{"commit":"69ecd095e46f3539b59140c5a88d733696aeaf47","subject":"test: fix efficacy_specifications fixture to be a list","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/69ecd095e46f3539b59140c5a88d733696aeaf47"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-02-27 21:03:40.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-04-30 15:58:38.000000000","tz":60},"subject":"refactor: centralise Django settings access in config.py","message":"refactor: centralise Django settings access in config.py\n\nReplace scattered getattr/setattr reflection on Django settings with a\ndedicated watcher_dashboard/config module. Four public functions cover\nthe two SSL settings (get_ssl_no_verify, get_ssl_cacert) and policy\nfile registration (get_policy_files, set_policy_file).\n\nfunctools.cache on the read helpers means settings are looked up once\nper process. set_policy_file clears the policy cache after each write.\nget_policy_files returns a dict copy to prevent caller mutation of the\ncached value. insert_watcher_policy_file guards with an existence check\nso set_policy_file (and its cache_clear) is only called once, avoiding\nper-request cache churn.\n\noslo.utils\u003e\u003d8.0.0 is listed in requirements.txt, consistent with\nNova\u0027s lower bound. get_ssl_cacert returns str | None using the native\nunion syntax, valid for the Python \u003e\u003d 3.10 baseline.\n\nConfigMemoizedCache in tests/local_fixtures/fixtures.py clears all\nfunctools caches on watcher_dashboard.config before and after each\ntest, preventing cross-test pollution. tests/unit/test_config.py\nexercises all four config functions and the mixin.\n\nAssisted-By: claude-code sonnet 4.6\nChange-Id: Id89d6add9c4b5b370e5c213544df577284dea7a2\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/0caf38892b8f11064c84a5752327b6c042a8485e"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/0caf38892b8f11064c84a5752327b6c042a8485e"}]},"branch":"refs/heads/master"},"71a5e552eda758aee86c8d8b14fd9ab7eb7f1ce6":{"kind":"TRIVIAL_REBASE","_number":5,"created":"2026-06-09 11:55:49.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/01/978301/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher-dashboard","ref":"refs/changes/01/978301/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher-dashboard refs/changes/01/978301/5"}}},"commit":{"parents":[{"commit":"3a5a72701b2f428572723cb68b1dc7c9e2866e54","subject":"test: fix efficacy_specifications fixture to be a list","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/3a5a72701b2f428572723cb68b1dc7c9e2866e54"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-02-27 21:03:40.000000000","tz":0},"committer":{"name":"sean mooney","email":"work@seanmooney.info","date":"2026-06-09 11:55:49.000000000","tz":0},"subject":"refactor: centralise Django settings access in config.py","message":"refactor: centralise Django settings access in config.py\n\nReplace scattered getattr/setattr reflection on Django settings with a\ndedicated watcher_dashboard/config module. Four public functions cover\nthe two SSL settings (get_ssl_no_verify, get_ssl_cacert) and policy\nfile registration (get_policy_files, set_policy_file).\n\nfunctools.cache on the read helpers means settings are looked up once\nper process. set_policy_file clears the policy cache after each write.\nget_policy_files returns a dict copy to prevent caller mutation of the\ncached value. insert_watcher_policy_file guards with an existence check\nso set_policy_file (and its cache_clear) is only called once, avoiding\nper-request cache churn.\n\noslo.utils\u003e\u003d8.0.0 is listed in requirements.txt, consistent with\nNova\u0027s lower bound. get_ssl_cacert returns str | None using the native\nunion syntax, valid for the Python \u003e\u003d 3.10 baseline.\n\nConfigMemoizedCache in tests/local_fixtures/fixtures.py clears all\nfunctools caches on watcher_dashboard.config before and after each\ntest, preventing cross-test pollution. tests/unit/test_config.py\nexercises all four config functions and the mixin.\n\nAssisted-By: claude-code sonnet 4.6\nChange-Id: Id89d6add9c4b5b370e5c213544df577284dea7a2\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/71a5e552eda758aee86c8d8b14fd9ab7eb7f1ce6"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/71a5e552eda758aee86c8d8b14fd9ab7eb7f1ce6"}]},"branch":"refs/heads/master","description":"Rebase","conflicts":{"base":"69ecd095e46f3539b59140c5a88d733696aeaf47","ours":"0caf38892b8f11064c84a5752327b6c042a8485e","theirs":"3a5a72701b2f428572723cb68b1dc7c9e2866e54","merge_strategy":"recursive","contains_conflicts":false}}},"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":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"}}]}],"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":"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":""}}}]}
