)]}'
{"id":"openstack%2Fwatcher-dashboard~978311","triplet_id":"openstack%2Fwatcher-dashboard~master~I82009c07411c400511d6d2003845ba28772b3db2","project":"openstack/watcher-dashboard","branch":"master","topic":"service-layer-refactor","attention_set":{"11604":{"account":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"last_update":"2026-04-30 20:53:58.000000000","reason":"A robot voted negatively on a label"},"26471":{"account":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"last_update":"2026-04-30 20:42:49.000000000","reason":"Vote got outdated and was removed: Code-Review+1"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"I82009c07411c400511d6d2003845ba28772b3db2","subject":"refactor: migrate content modules to use service layer","status":"NEW","created":"2026-02-28 12:22:05.000000000","updated":"2026-04-30 20:53:58.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":false,"submittable":false,"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"f667acfffd9357a4d41391d8ab1d3769813c980e","_number":978311,"virtual_id_number":978311,"owner":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"tag":"autogenerated:zuul:check","value":-1,"date":"2026-04-30 20:53:58.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":"","value":-1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"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":0,"permitted_voting_range":{"min":-1,"max":1},"_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":{"all":[{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"_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,"permitted_voting_range":{"min":0,"max":1},"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"value":0,"permitted_voting_range":{"min":0,"max":1},"_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":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-02-28 12:24:45.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:35:27.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 13:50:57.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"}],"messages":[{"id":"dc2759117c5a572c5da0d723951b38634dddb0a1","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":"231d446af3a7577f83dc6a07baec258beade9885","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:24:45.000000000","message":"Patch Set 1:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":1},{"id":"d02a121bcdc956fcf418cbecfc4784b9829d25e9","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:34:33.000000000","message":"Patch Set 1:\n\n(5 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/0359450fc0f74437a19760c13057c3ab\n\n- teim-code-review https://zuul.teim.app/t/main/build/81b292d65ee54fe68c4fd904bf3857f0 : SUCCESS in 9m 36s","accounts_in_message":[],"_revision_number":1},{"id":"0d42ab69b7f21d92b62986778cc55784871ec400","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-02-28 12:35:27.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/d7eee99d29f24c798b6580190ed57edc\n\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/b1151f9880c84f269a70b522f2c9a4e7 : SUCCESS in 4m 18s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/505cac71b52d4dea80afd60feadd2aff : SUCCESS in 2m 39s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/b46b077624e94ee0baafc2d1d4a060a0 : SUCCESS in 2m 38s (non-voting)\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/97b23244cc564a0da351f729383f11ed : SUCCESS in 3m 08s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/32f6310105ee4980989e5b3a82e80a8a : SUCCESS in 4m 26s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/82f007e8960c44ad91244f0ed2dfd07c : FAILURE in 6m 50s (non-voting)\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/6e80e788cbf14ca7aa98024b6220cfb8 : SUCCESS in 3m 35s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/1d9b4743ac3741a982bbdc2a1cacdefc : SUCCESS in 7m 10s","accounts_in_message":[],"_revision_number":1},{"id":"79e863eb9f158eed98c9b43ddff0db2d04f282dd","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-02-28 13:50:57.000000000","message":"Patch Set 1: 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/faeb7f93ea4b4dda8cb7287280af79b9\n\n- openstack-meta-content-provider-master https://softwarefactory-project.io/zuul/t/rdoproject.org/build/0b744f32a1dd4b1692106c6c22ad44de : SUCCESS in 1h 26m 40s\n- watcher-operator-validation-master https://softwarefactory-project.io/zuul/t/rdoproject.org/build/3f7283e58296445581b3bcd0deff8355 : FAILURE in 34m 14s","accounts_in_message":[],"_revision_number":1},{"id":"ab385946f76be749baa495e20edc4241e33bc040","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-03-30 15:53:53.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":"4b2ad692c1c1e096aa1b743878007aab04ea82c6","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:54:45.000000000","message":"Patch Set 2:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":2},{"id":"26f92b0de1974d65969009749d9ac8d73dc37546","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-03-30 16:02:41.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/f052f1ad32d74e0e8f4c908d0a19b884\n\n- openstack-meta-content-provider-master https://softwarefactory-project.io/zuul/t/rdoproject.org/build/7028eaa9253d4a3ba4980e2d05e40a5f : FAILURE in 7m 29s\n- watcher-operator-validation-master https://softwarefactory-project.io/zuul/t/rdoproject.org/build/bfa18379e7604fc1af7741a40d20b678 : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":2},{"id":"01f7a9df4e180887bffa1e697e71b3c27a981484","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-30 16:15:15.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/91a6d2f8e3364fadac9c3fc13f12d201\n\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/f5db77fa007445eb9fc4aed388fc2a30 : SUCCESS in 4m 13s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/0427293ba2a9463eb5b800729912cf17 : SUCCESS in 4m 40s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/70e3965c7da74be1bfc0f3efa0645f8e : SUCCESS in 3m 21s (non-voting)\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/bfba836bb0154b33a51029420e931ad1 : SUCCESS in 4m 29s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/22a70c615aab4877be0d89321ef0b354 : SUCCESS in 5m 32s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/e4bf6d385d204b048cba65a62bd8c80a : FAILURE in 4m 42s (non-voting)\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/379cdf7feb8647d78e6b12feec8963b1 : SUCCESS in 5m 00s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/b6aa2db5ae74409490e3b8e2f84cd8d5 : FAILURE in 4m 23s","accounts_in_message":[],"_revision_number":2},{"id":"3ac95a740b5220747be9021e7cbf485b9933006c","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 16:36:39.000000000","message":"Patch Set 2:\n\n(1 comment)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/48be978b7c26401eb560c6578f08913f\n\n- teim-code-review https://zuul.teim.app/t/main/build/c730c25405ef4784a77da9dcd9c41de2 : SUCCESS in 8m 33s","accounts_in_message":[],"_revision_number":2},{"id":"f68363cf719ca5ce44a15b373a5b570b9d8b1852","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":"919ee402978a054d31fa54ee1f4e73d5f5260460","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:54:34.000000000","message":"Patch Set 3:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":3},{"id":"6a92b1c4419e4fbe8d4bdd3fbf1f3abc81d9b824","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-04 01:04:48.000000000","message":"Patch Set 3: 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/711a2b82451f48a78ffc0cb11c193cae\n\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/afa90defc4af48f5a9a81ad9070364ed : SUCCESS in 3m 29s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/232d8e7a9558462187731a818336d46d : SUCCESS in 4m 28s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/f5317edfc402434889f3ddd0d19083ef : SUCCESS in 3m 36s (non-voting)\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/bef436d7e61749db925e68668a1f473b : FAILURE in 3m 12s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/9b89c4cb2988423aa12c7dc380e3e900 : SUCCESS in 4m 37s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/8cbe6c1a585849038fd00deac5ffa4e0 : FAILURE in 3m 48s (non-voting)\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/bb836b517bdd408db1b1adc9af9d90bb : SUCCESS in 4m 40s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/d489b3660caf40318cb5f77e4fc94785 : SUCCESS in 6m 01s","accounts_in_message":[],"_revision_number":3},{"id":"d8eef7caff159a125079666df7b4bca57ed2026f","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 02:38:49.000000000","message":"Patch Set 3:\n\n(5 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/39278b306e4b49a795eab6f01287492c\n\n- teim-code-review https://zuul.teim.app/t/main/build/b69c17fc5d344425a836b02457b396af : SUCCESS in 8m 15s\n\nWarning:\n  Comments left for invalid file watcher_dashboard/api/watcher.py","accounts_in_message":[],"_revision_number":3},{"id":"f7772e2da7ec6bc497c1485c6d211e8733eff022","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-04-04 03:50:23.000000000","message":"Patch Set 3: Code-Review+1\n\nBuild succeeded (check pipeline).\nhttps://softwarefactory-project.io/zuul/t/rdoproject.org/buildset/1a063c51cf9d402789fea53f7070c2b3\n\n- openstack-meta-content-provider-master https://softwarefactory-project.io/zuul/t/rdoproject.org/build/cb35643c39f84bf4b7d4409cb9977bb1 : SUCCESS in 2h 55m 30s\n- watcher-operator-validation-master https://softwarefactory-project.io/zuul/t/rdoproject.org/build/42d67b5d0bc64d3f8c9a04062ba31b19 : SUCCESS in 2h 11m 03s","accounts_in_message":[],"_revision_number":3},{"id":"10260eeec07907fa631394fe19219b35ce6dc292","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-04-30 20:42:49.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":"f667acfffd9357a4d41391d8ab1d3769813c980e","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-30 20:53:58.000000000","message":"Patch Set 4: 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/9473d8627f0a4b19b4784d1a332edd16\n\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/3a369e0314ed43d2b5eba2e25ca36034 : SUCCESS in 3m 58s\n- horizon-tox-python3-django42 https://zuul.opendev.org/t/openstack/build/17896416e371424495e20a948f921c7f : SUCCESS in 4m 43s\n- horizon-tox-python3-django52 https://zuul.opendev.org/t/openstack/build/2d5bed4f69b449d1b20b12b09f179a98 : SUCCESS in 7m 05s (non-voting)\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/70675d7db4274ecc94794f29d354b7fb : FAILURE in 3m 39s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/4812697e8bf84f31be17194d9a98e5ca : SUCCESS in 4m 48s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/b6dab9e437df4d0abd103af6aab002a7 : FAILURE in 5m 57s (non-voting)\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/3b7f1160028c4955b964a235fc522c7e : SUCCESS in 4m 46s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0311e9dcf3ff473997a23fd9816e1a80 : SUCCESS in 8m 29s","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"45431bbedf505b651ae9586ece9cfbc693695617","revisions":{"c6ae72e2d8904635d3faeabaa3733132df0637e9":{"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/11/978311/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher-dashboard","ref":"refs/changes/11/978311/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/11/978311/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/11/978311/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/11/978311/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher-dashboard refs/changes/11/978311/1"}}},"commit":{"parents":[{"commit":"3219a2b7349bbcd79601d97f79c06595541bdeae","subject":"feat(B): add service-layer functions to api/watcher.py","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/3219a2b7349bbcd79601d97f79c06595541bdeae"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-02-28 12:04:43.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-02-28 12:21:18.000000000","tz":0},"subject":"feat(B): migrate content modules to use service layer","message":"feat(B): migrate content modules to use service layer\n\nUpdate all content module views, forms, and tabs to call service-layer\nfunctions (e.g. audit_list, goal_get) instead of calling class methods\ndirectly (e.g. Audit.list, Goal.get). This decouples the UI layer from\nthe API wrapper classes.\n\nAlso fix pre-existing variable name inconsistencies in audits/views.py and\naction_plans/views.py, remove debug log statements, and drop dead code in\naudit_templates/forms.py that was introduced alongside the service layer.\n\nGenerated-By: claude-code sonnet 4.6\nChange-Id: I82009c07411c400511d6d2003845ba28772b3db2\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/c6ae72e2d8904635d3faeabaa3733132df0637e9"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/c6ae72e2d8904635d3faeabaa3733132df0637e9"}]},"branch":"refs/heads/master"},"47d54294dcdc6ca1d82fab7b75aaed12e35bae98":{"kind":"REWORK","_number":2,"created":"2026-03-30 15:53:53.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/11/978311/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher-dashboard","ref":"refs/changes/11/978311/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/11/978311/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/11/978311/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/11/978311/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher-dashboard refs/changes/11/978311/2"}}},"commit":{"parents":[{"commit":"3e7884df69fbe726e0a3598f477ff15753fa382b","subject":"add service-layer functions to api/watcher.py","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/3e7884df69fbe726e0a3598f477ff15753fa382b"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-02-28 12:04:43.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-03-30 15:23:52.000000000","tz":60},"subject":"migrate content modules to use service layer","message":"migrate content modules to use service layer\n\nUpdate all content module views, forms, and tabs to call service-layer\nfunctions (e.g. audit_list, goal_get) instead of calling class methods\ndirectly (e.g. Audit.list, Goal.get). This decouples the UI layer from\nthe API wrapper classes.\n\nAlso fix pre-existing variable name inconsistencies in audits/views.py and\naction_plans/views.py, remove debug log statements, and drop dead code in\naudit_templates/forms.py that was introduced alongside the service layer.\n\nGenerated-By: claude-code sonnet 4.6\nChange-Id: I82009c07411c400511d6d2003845ba28772b3db2\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/47d54294dcdc6ca1d82fab7b75aaed12e35bae98"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/47d54294dcdc6ca1d82fab7b75aaed12e35bae98"}]},"branch":"refs/heads/master"},"9cf04420628cc3fcc68cfd545f3a773cff7c5fd3":{"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/11/978311/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher-dashboard","ref":"refs/changes/11/978311/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/11/978311/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/11/978311/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/11/978311/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher-dashboard refs/changes/11/978311/3"}}},"commit":{"parents":[{"commit":"bb7110c4b2b29016a9e2d31571feddc516de1470","subject":"feat: add service-layer functions to api/watcher.py","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/bb7110c4b2b29016a9e2d31571feddc516de1470"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-02-28 12:04:43.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-04-04 00:49:03.000000000","tz":60},"subject":"refactor: migrate content modules to use service layer","message":"refactor: migrate content modules to use service layer\n\nUpdate all content module views, forms, and tabs to call service-layer\nfunctions (e.g. audit_list, goal_get) instead of calling class methods\ndirectly (e.g. Audit.list, Goal.get). This decouples the UI layer from\nthe API wrapper classes.\n\nAlso fix pre-existing variable name inconsistencies in audits/views.py and\naction_plans/views.py, remove debug log statements, and drop dead code in\naudit_templates/forms.py that was introduced alongside the service layer.\n\nGenerated-By: claude-code sonnet 4.6\nChange-Id: I82009c07411c400511d6d2003845ba28772b3db2\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/9cf04420628cc3fcc68cfd545f3a773cff7c5fd3"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/9cf04420628cc3fcc68cfd545f3a773cff7c5fd3"}]},"branch":"refs/heads/master"},"45431bbedf505b651ae9586ece9cfbc693695617":{"kind":"REWORK","_number":4,"created":"2026-04-30 20:42:49.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/11/978311/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher-dashboard","ref":"refs/changes/11/978311/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/11/978311/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/11/978311/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher-dashboard refs/changes/11/978311/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher-dashboard refs/changes/11/978311/4"}}},"commit":{"parents":[{"commit":"e5465105e4559efb415792d1488fa9fa2877f5f1","subject":"feat: add service-layer functions to api/watcher.py","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/e5465105e4559efb415792d1488fa9fa2877f5f1"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-02-28 12:04:43.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-04-30 20:34:37.000000000","tz":60},"subject":"refactor: migrate content modules to use service layer","message":"refactor: migrate content modules to use service layer\n\nUpdate all content module views, forms, and tabs to call service-layer\nfunctions (e.g. audit_list, goal_get) instead of calling class methods\ndirectly (e.g. Audit.list, Goal.get). This decouples the UI layer from\nthe API wrapper classes.\n\nAlso fix pre-existing variable name inconsistencies in audits/views.py and\naction_plans/views.py, remove debug log statements, and drop dead code in\naudit_templates/forms.py that was introduced alongside the service layer.\n\nGenerated-By: claude-code sonnet 4.6\nChange-Id: I82009c07411c400511d6d2003845ba28772b3db2\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/45431bbedf505b651ae9586ece9cfbc693695617"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher-dashboard/commit/45431bbedf505b651ae9586ece9cfbc693695617"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY"},{"label":"Review-Priority","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","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":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
