)]}'
{"id":"openstack%2Fwatcher~995119","triplet_id":"openstack%2Fwatcher~master~I6b7e6492794b5b77776b7accc8753e10a4de2815","project":"openstack/watcher","branch":"master","topic":"bp/audit-pipeline","attention_set":{},"removed_from_attention_set":{"30002":{"account":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"last_update":"2026-08-18 22:11:28.000000000","reason":"Change was submitted"},"34452":{"account":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"last_update":"2026-08-18 22:11:28.000000000","reason":"Change was submitted"},"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-07-01 13:26:31.000000000","reason":"removed on reply"},"26471":{"account":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"last_update":"2026-08-07 19:40:50.000000000","reason":"removed on reply"},"16312":{"account":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"last_update":"2026-08-10 13:11:54.000000000","reason":"\u003cGERRIT_ACCOUNT_16312\u003e replied on the change","reason_account":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"}}},"hashtags":[],"change_id":"I6b7e6492794b5b77776b7accc8753e10a4de2815","subject":"Add MetricDataCache and integrate it into DataSourceBase","status":"MERGED","created":"2026-06-26 18:00:58.000000000","updated":"2026-08-18 22:12:24.000000000","submitted":"2026-08-18 22:11:28.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":60,"unresolved_comment_count":11,"has_review_started":true,"submission_id":"995119-bp/audit-pipeline","meta_rev_id":"f50b83ee75424ddcf3bb9abdc036416e17c697b0","_number":995119,"virtual_id_number":995119,"owner":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"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-08-18 22:11:27.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":0,"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},{"value":2,"date":"2026-08-18 16:40:01.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-08-18 18:39:31.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-08-18 12:42:41.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-08-18 16:40:01.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":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"},{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-06-26 18:01:08.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-06-26 20:10:36.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-06-26 20:58:26.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-06-29 12:03:00.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":"CC"},{"updated":"2026-07-31 12:41:17.000000000","updated_by":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"reviewer":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"state":"CC"},{"updated":"2026-08-10 13:11:54.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-08-18 16:40:01.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"}],"messages":[{"id":"bb237cf5cc62ca679f2844d9b6653810b7df9ef8","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-06-26 18:00:58.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"1e4b2c4d5129584a9eaeec608fa918d442fb7865","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-06-26 18:01:08.000000000","message":"Patch Set 1:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":1},{"id":"f5f5275fe425d99eb4a4b9a02b70cce8295b8d6d","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-06-26 18:36:15.000000000","message":"Patch Set 1:\n\n(4 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/ae073ad51c374b65ab7178fdb6b1d89c\n\n- teim-code-review https://zuul.teim.app/t/main/build/b465b6a1e1b74511953512643b72fc60 : SUCCESS in 16m 40s\n\nWarning:\n  The metric cache is unbounded and never invalidated. The datasource backend is created lazily (DataSourceManager.get_backend) and held on the strategy context for its lifetime; no code resets _metric_cache between audits. Impact: For a long-lived decision-engine process the cache grows monotonically and can serve metrics computed in a prior audit to a later one (stale cross-audit data), which is especially dangerous for the audit-pipeline cascade use case the commit targets. Recommendation: Add an explicit cache-clear/reset hook (e.g. a clear_metric_cache() method) invoked at audit boundaries, or bound the cache (e.g. functools.lru_cache / size limit). At minimum document the expected cache lifetime and who is responsible for resetting it.\n  Broad except AttributeError around resource.uuid: any unrelated AttributeError raised while evaluating resource.uuid (e.g. a property that internally fails) is swallowed and logged as a missing-uuid, masking real bugs. Impact: A resource whose uuid is a property that raises AttributeError for a non-uuid reason will silently fall to the uncached path with a misleading warning, and the underlying bug is hidden. Recommendation: Consider using getattr(resource, \u0027uuid\u0027, None) and branching on None, which avoids catching unrelated AttributeErrors from property bodies.","accounts_in_message":[],"_revision_number":1},{"id":"e287b88b14ba017f3ad5f93769bb1edaaa092535","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-26 20:10:36.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/235b9668e38e40cfaa024f0f43d69909\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/bdb9d4ac6d0d4faab9ee12e7b76260b6 : SUCCESS in 9m 22s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/259ec1c9e9e44956993801adf0541917 : SUCCESS in 4m 23s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/dce681a9f6ac434d853a501b57500910 : SUCCESS in 5m 54s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/40646553813f485ab50bfe8b32505dc6 : SUCCESS in 5m 35s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/9b86e020e2114c91b4f73617bef4ba5e : SUCCESS in 8m 28s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/eded75bb9deb458ea9869c9a488a8bbc : SUCCESS in 9m 50s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/43880a8ddb7045aca426ec9946278793 : SUCCESS in 4m 53s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/86669c8e04634cdbb91a8a2696edbea4 : SUCCESS in 5m 30s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/12c363f46078473ea899d49fb63dc774 : SUCCESS in 53m 35s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/3d04c0bb3efa413bb12074dd05970be6 : SUCCESS in 1h 03m 55s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/86074c5a7197465f8d588be917407f3b : SUCCESS in 48m 54s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/0340daafde284bdfb97f2644fe96dcb0 : SUCCESS in 2h 00m 39s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/fb7170b0ba4a4d0690c311aa994d723f : SUCCESS in 1h 59m 33s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/2ebb7b141a99418eb0050cc54319872d : SUCCESS in 2h 02m 08s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/c6ff4ed0e8d241efbf8b07c3f80cae33 : SUCCESS in 2h 01m 30s","accounts_in_message":[],"_revision_number":1},{"id":"7d9a11ede4f133cfa1596f91c12b9d74db26633c","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-06-26 20:58:26.000000000","message":"Patch Set 1: Code-Review+1\n\nBuild succeeded (check pipeline).\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/4e3356b6cc054233a1c7469632f4fac8\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/a70ffede0cba4b478c0fc6962cc1be29 : SUCCESS in 2h 55m 54s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/678b2b4bb13c414fad59cd69993f92f5 : SUCCESS in 2h 12m 12s","accounts_in_message":[],"_revision_number":1},{"id":"ad39057fb0b568480b787058c960d7138cee4414","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-06-29 12:03:00.000000000","message":"Patch Set 1:\n\n(4 comments)","accounts_in_message":[],"_revision_number":1},{"id":"cd8af3dc6b3c33016d5e9af223a8231856ab0678","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-06-30 13:40:53.000000000","message":"Patch Set 1:\n\n(8 comments)","accounts_in_message":[],"_revision_number":1},{"id":"c403db7093edcf5c16ba390f72891a6a2c587cb3","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-07-01 13:26:21.000000000","message":"Uploaded patch set 2: Patch Set 1 was rebased.\n\nCopied Votes:\n* Code-Review+1 (copy condition: \"**changekind:TRIVIAL_REBASE** OR is:MIN\")\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"0718765a32c204e3466fe4981a666dee9536b355","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-07-01 13:26:31.000000000","message":"Patch Set 2:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":2},{"id":"66da5ebe8895db30fa35f18405da3960d2d43dab","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-07-01 13:36:57.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://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/9d4a7b8363a748abbfa6f4e693dd8958\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/b136a4e9c99444b194a60142c689964c : FAILURE in 9m 29s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/27b67021173c4b0bacb4b1ecade91452 : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":2},{"id":"52ecb22044f80043b1839dc899a6d598edd49314","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-07-01 14:01:31.000000000","message":"Patch Set 2:\n\n(8 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/cb819e19acf44a99af71e0dde71ff83b\n\n- teim-code-review https://zuul.teim.app/t/main/build/a39c4c46be0a45af99065d1f2a082cc1 : SUCCESS in 17m 25s\n\nWarning:\n  The aetos.py datasource (AetosHelper) subclasses PrometheusBase and was NOT modified in this patch, yet it is affected by the change. It inherits _statistic_aggregation from PrometheusBase and gets _metric_cache initialized via the super().__init__() chain, so it picks up caching automatically. Impact: AetosHelper is correctly covered by the inheritance chain and does not need a code change. However, its documentation (aetos.rst) was updated while aetos.py itself was not, which is correct but worth confirming that the AetosHelper test suite exercises the cached path. Recommendation: Confirm that test_aetos_helper.py exercises statistic_aggregation through the cache. The current test_aetos_helper.py only tests config getters and _setup_prometheus_client, so the cached statistic_aggregation path for Aetos is entirely untested. Consider adding an integration test.","accounts_in_message":[],"_revision_number":2},{"id":"e5eff403874b5c68a21ae3c95adef0317e0b4291","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-01 15:43:05.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/ae51baff0ff34972966f7999ea811bee\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/776a79cf8337409884d7804c4bd7a8bb : SUCCESS in 6m 49s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/c76a0b30f1584f81bc6dd471749d97f9 : SUCCESS in 3m 54s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/171584e9fb3e488f87e5f453649a677f : SUCCESS in 4m 59s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/00dd73ec759749d99fd1af07ffef185b : SUCCESS in 5m 21s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/69f49a34033f4671823eeb5279e79cb3 : SUCCESS in 10m 18s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/d3c7cc47e8a44717a7be68ec9a276a57 : SUCCESS in 8m 53s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/6547eebd61c84908875d9747a8acb569 : SUCCESS in 4m 43s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/9fe74fc526f949b4aba911fe9085a50e : SUCCESS in 4m 40s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/1e412549223b40dab44c5b6363461814 : SUCCESS in 46m 47s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/d88bdea081ec468195951e0e49ccaab8 : SUCCESS in 26m 46s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/25ba1eec39f34187a1319b4f553d546f : SUCCESS in 36m 40s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/7417194d20bb4044914d8a395a644637 : SUCCESS in 2h 04m 05s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/0d9ff2b319704114adddbc0e782c74dd : SUCCESS in 1h 08m 43s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/b7fb3bf4510a4abc8c244b67f98873f2 : SUCCESS in 1h 09m 25s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/cfca32ba94054335be242732e453ba2e : SUCCESS in 1h 57m 23s","accounts_in_message":[],"_revision_number":2},{"id":"3d0c59dc35bc9de0bb42731f62674cddf3ed544c","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-07-10 20:00:42.000000000","message":"Uploaded patch set 3: Patch Set 2 was rebased.\n\nCopied Votes:\n* Code-Review-1 (copy condition: \"**changekind:TRIVIAL_REBASE** OR is:MIN\")\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":3},{"id":"e2b7866c648207379f4ea08fe1a142d940511064","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-07-10 20:00:54.000000000","message":"Patch Set 3:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":3},{"id":"b384ae2832c6981e69499ac110fe02fa30e39f0b","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-07-10 20:12:35.000000000","message":"Patch Set 3: 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/ef831d6b17924c7aaf8bd0d17f533003\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/3a37fb2246734bc0b4cf3933463f7d21 : FAILURE in 10m 37s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/92032769f5f0488d9b137ec4c6b97115 : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":3},{"id":"05df39f035332012aa5557962c7985a08596378b","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-07-10 20:24:52.000000000","message":"Patch Set 3:\n\n(1 comment)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/604cddc4da9649e2a01e0c98f8b06254\n\n- teim-code-review https://zuul.teim.app/t/main/build/873839b43ed04773a485219e00af892d : SUCCESS in 8m 08s","accounts_in_message":[],"_revision_number":3},{"id":"b8c43d1a38b5fad19974505cbbfdbe62c7f6026d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-10 22:03:25.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/3680fb8b99ee4d4e8fad8b2ccf59e051\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/de1b007206f94e4ab8b1393711e09cb2 : SUCCESS in 4m 20s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/4d70ec6482d140f3a5f85d5b496f0f21 : SUCCESS in 4m 20s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/1c613633631c4bb8b87e71b975e933ae : SUCCESS in 3m 33s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/338bc49cf9e641e698fa1c0c8dc1bb37 : SUCCESS in 4m 55s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/a0f1ec1e7a184931bfa6f7cbd42796b0 : SUCCESS in 4m 51s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/a2b1865e568647e5ab308d882fb53b43 : SUCCESS in 10m 04s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/58fa4310b88f446999191995b076fc3c : SUCCESS in 4m 33s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/337887edfe67467bb79aeeb571484173 : SUCCESS in 4m 37s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/d6b2ab39a05c40109e82de96fda613bb : SUCCESS in 24m 27s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/454f195c78d04d299fdd29f58d0fbd01 : SUCCESS in 51m 15s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/0c99c7363e7341a1abde513a15078365 : SUCCESS in 36m 35s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/a0982e3912eb4cf6afe18eb97545a49f : SUCCESS in 1h 08m 25s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/44d4f988e6584addb10dd645f8845e1e : SUCCESS in 1h 36m 35s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/4f65a7a24cdb427fbd442926cb553b28 : SUCCESS in 1h 56m 46s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/caf7ae98ad2b410fb8ef48e6c5e02e0f : SUCCESS in 1h 08m 35s","accounts_in_message":[],"_revision_number":3},{"id":"333235dfb7357045bced125430f5daee6531e0cf","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-07-28 10:02:12.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"1f50f66a824639ecaeb1976315d97f686b844e32","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-07-29 11:57:07.000000000","message":"Patch Set 3: Workflow-1\n\n(2 comments)","accounts_in_message":[],"_revision_number":3},{"id":"eb3926cf67d1b8e2407902a1241ebb369ec2af26","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-07-31 12:41:17.000000000","message":"Patch Set 3:\n\n(2 comments)","accounts_in_message":[],"_revision_number":3},{"id":"e9422e212da40c40e20ed4959df044d96c8229ea","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-07-31 12:57:40.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"a655c5fd516b99045bbdcee83545593274d77ed2","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-08-03 22:13: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* Workflow-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":4},{"id":"93792288f04771458aee7b46dfed731b33f98cce","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-08-03 22:13:59.000000000","message":"Patch Set 4:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":4},{"id":"412ed238f0433b3d71c745d11787b9b55f430162","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-08-03 22:16:22.000000000","message":"Patch Set 4:\n\n(2 comments)","accounts_in_message":[],"_revision_number":4},{"id":"d63fb4e61d46ef01badfa1ba661285717f134ab2","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-08-03 22:21:28.000000000","message":"Patch Set 4:\n\n(3 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/b7a4fffe8b534bf38a67c6f15dfb5a14\n\n- teim-code-review https://zuul.teim.app/t/main/build/5eee398f875145d2beed06a66c987576 : SUCCESS in 7m 21s","accounts_in_message":[],"_revision_number":4},{"id":"90b3146ab9a1b8deac0ad0e5982b9d7ad13f85c4","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-08-03 22:25:59.000000000","message":"Patch Set 4: 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/aea4c45c4acd4e8db34507a64e2e6563\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/62c796d7394f4d5f86a77a51bbb184f2 : FAILURE in 9m 59s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/c451111ea8a84f44bee695f05ad59572 : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":4},{"id":"8de24e399b71be9ac701871629cf0d70a6f02a89","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-03 23:52:17.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/2f14664ab4a741329edeb79d3a79dd87\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/bf02f53513ac44609730164c6f114f77 : SUCCESS in 6m 46s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/78a3344a64724550aefdb6bf3f8def11 : SUCCESS in 3m 26s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/73a055188ecd45acb91e7a0074edfb16 : SUCCESS in 4m 35s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/9c28cde22dee4a70b5e8fcd9667395b2 : SUCCESS in 5m 32s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/f9e1752ca0934691a579d53e26101846 : SUCCESS in 10m 48s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/81f4b6a32bdf40b9baa56c0f1c740464 : SUCCESS in 9m 07s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/1d6b2aaa0bcb49368594c3725638fa7e : SUCCESS in 4m 11s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/416b92bff4324064ba4fc105a111df0c : SUCCESS in 4m 31s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/ac6b9836b7ee4ddf8375396552173574 : SUCCESS in 52m 19s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/b490dbf323724df2b4a13cede3ace566 : SUCCESS in 27m 45s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/b13d48ba1c6940dd9164cdc08b725dee : SUCCESS in 17m 27s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/2ff920b83c6a4322b19e693476b2367c : SUCCESS in 1h 17m 30s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/d1d8c93b9dd041feae6ac5a1813a525a : SUCCESS in 1h 24m 29s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/a06cba1f51954d37bd54afc5ec38d43e : SUCCESS in 47m 59s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/1e5d05adf91b432d9809371ba98e14fe : SUCCESS in 1h 32m 22s","accounts_in_message":[],"_revision_number":4},{"id":"00b9ec3d02c959880b68143d01e686bfeee3747d","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-08-04 11:44:28.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"bcd33cfb976aa6d8094cdc1c4ba51b387eb10fac","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-08-04 11:50:36.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"face3e2e9955e694aeed1ee56d3088cecee50256","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-08-04 12:16:54.000000000","message":"Uploaded patch set 5.\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":5},{"id":"cedaeb02281a985e606c00d33078343a6d3fba8b","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-08-04 12:17:05.000000000","message":"Patch Set 5:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":5},{"id":"0475c425d55befe2ffb1150a394ace1546f7025e","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-08-04 12:17:39.000000000","message":"Patch Set 5:\n\n(1 comment)","accounts_in_message":[],"_revision_number":5},{"id":"c2ade2f61918c16163f7853c3674cd92f5d834ec","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-08-04 12:22:27.000000000","message":"Patch Set 4:\n\n(4 comments)","accounts_in_message":[],"_revision_number":4},{"id":"ed8844d313127149d4c30793bc170a1b853630b4","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-08-04 12:26:35.000000000","message":"Patch Set 5:\n\n(1 comment)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/fad94033602349199528e0d73bea9e67\n\n- teim-code-review https://zuul.teim.app/t/main/build/7880a2efb21f46bb9371cb62b3b526c7 : SUCCESS in 9m 22s\n\nWarning:\n  The patch removes the oslo.cache dependency, changes the statistic_aggregation method from abstract to concrete, and introduces a new MetricDataCache, but no reno release note was added to document these changes. Impact: Operators upgrading to this version will not be alerted to the removal of oslo.cache or the change in datasource caching behavior. The oslo.cache config options previously generated will silently disappear, and the new in-memory caching behavior (per-object lifetime, no TTL) differs from the prev... Recommendation: Add a reno release note (e.g., releasenotes/notes/metric-data-cache-\u003chash\u003e.yaml) documenting the removal of oslo.cache dependency, the new MetricDataCache behavior, and any upgrade considerations for operators who had custom oslo.cache configuration.\n  The commit message body ends a paragraph with \u0027datasource.tox -e docs\u0027, which appears to be an accidental paste of a shell command into the commit message text. Impact: The commit message is part of the permanent git history. The accidental text makes the message harder to read and looks unprofessional in git log output. Recommendation: Remove the \u0027tox -e docs\u0027 fragment from the commit message body so the paragraph reads \u0027...without re-querying the datasource.\u0027","accounts_in_message":[],"_revision_number":5},{"id":"5b1473719b35bb96181690132247acdaa34019d3","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-08-04 12:54:16.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/9acdbd6daf40446f9924693c1bd92a37\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/67d992a09f994d75867250fd500d0c55 : FAILURE in 9m 50s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/23ea992ca0454f16a71c906f988d7160 : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":5},{"id":"e547494b0b941421deb578b6169045514f3d49c9","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-04 13:59:27.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/866cb8495bdb407a8e9b440375c6407e\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/bf3d7173b1cc47538d1ef9edabc322cc : SUCCESS in 2m 24s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/6ba544b74caf43f8bf03440f22dc4c72 : SUCCESS in 3m 49s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/6f84cc50e0064fe7a22ae36bfb6476ef : SUCCESS in 4m 12s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/f0b36f6e104d49659b000db3add35149 : SUCCESS in 6m 42s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/2d3daf98762a4d53bb82b6ef429f8591 : SUCCESS in 4m 09s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/055f5d07786048ebb72093af14791a68 : SUCCESS in 8m 05s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/e190d7225a4c490baaa591a9b71fd742 : SUCCESS in 6m 06s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/1943fa44c42d42628eb6d1bdc77d224f : SUCCESS in 4m 43s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/fd2dd6b5bfd349498ffd0c418782bdad : SUCCESS in 4m 31s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/d516192660c44d06bc1e1d5930182b07 : SUCCESS in 52m 00s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/eed8f2bc0ec44535921d595268ef3110 : SUCCESS in 54m 43s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/7aef03f25f5c4108b6963b8a2917c342 : SUCCESS in 36m 13s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/f3a577a04d984ae884451bc6fd768628 : SUCCESS in 1h 34m 04s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/b7a65187562d4e44b139f19e42b51e2b : SUCCESS in 44m 19s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/51ecddf21f7e453a96bc10ecf9bf4d5a : SUCCESS in 1h 30m 41s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/61e81fbd34dd4ed484391e3cc39e67de : SUCCESS in 1h 39m 15s","accounts_in_message":[],"_revision_number":5},{"id":"3c571c60c9965f785af2e00a04370cff9903b6f1","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-08-05 18:31:05.000000000","message":"Uploaded patch set 6: Patch Set 5 was rebased.\n\nCopied Votes:\n* Code-Review-1 (copy condition: \"**changekind:TRIVIAL_REBASE** OR is:MIN\")\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":6},{"id":"fbf0d86271e38a26eecfb3da6ea12e3a5c0a1a9c","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-08-05 18:31:16.000000000","message":"Patch Set 6:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":6},{"id":"4a4ee2eac0e461999de034056e11df4747bba6fd","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-08-05 18:39:05.000000000","message":"Patch Set 6:\n\n(1 comment)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/38c5d88fcec54505b13bfd4edd17ccfd\n\n- teim-code-review https://zuul.teim.app/t/main/build/6b9571593b6e445aa0e0ab80b657f8bf : SUCCESS in 7m 40s\n\nWarning:\n  The commit message body ends with \u0027without re-querying the datasource.tox -e docs\u0027 where \u0027tox -e docs\u0027 (note double space) appears to be an accidental paste of a shell command into the commit message. Impact: The commit history will contain a stray command artifact in the message body, reducing readability and professionalism of the git log. Recommendation: Amend the commit message to remove the stray \u0027tox -e docs\u0027 text so the paragraph ends cleanly at \u0027...without re-querying the datasource.\u0027","accounts_in_message":[],"_revision_number":6},{"id":"aaa6beb2cc3e9adaefa9d7df1f1d241a923e33b3","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-08-05 18:42:32.000000000","message":"Patch Set 6: 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/4428307806a94dc8b20a07cbbb0349fc\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/b84bdd2c15014d93a8cdae7c271ae848 : FAILURE in 10m 12s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/834d0061d3414555af9f38bb6ea34a01 : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":6},{"id":"2d7969c044a01c3bd49a1097c2eb97c140f06111","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-05 20:19:27.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/c9a0e2cbf828456087d0714fb8fb94c3\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/82a299df04c241919da705e4f682ff24 : SUCCESS in 2m 37s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/d8666a35df974c7b99088b00f25e3fc7 : SUCCESS in 7m 01s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/b478eb1f078945adb7e5a27d4bac8892 : SUCCESS in 2m 44s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/3447ad8c5f7e42ab9b71a26fc08bfde5 : SUCCESS in 7m 49s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/302dead7d39c468db543793e488660f0 : SUCCESS in 5m 37s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/0043edeb9a854188b7f80fbef8a88e9a : SUCCESS in 9m 35s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/65d4b04de42a4158823369cf8bb3f7f8 : SUCCESS in 11m 33s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/a076b5efa1bb443886aa8eb8781fb605 : SUCCESS in 4m 32s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/23d2dfdb2a1343fca6d6b9cc59651469 : SUCCESS in 4m 58s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/65abd6af8a1643d6b3289f4134c487b8 : SUCCESS in 53m 18s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/193fb112faee417590f175625ad2cb8f : SUCCESS in 24m 44s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/3603170b312b4d7580ddd081b72f6afc : SUCCESS in 18m 59s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/74f0f60797d54a92811465c97a37684f : SUCCESS in 1h 35m 26s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/04368cf9cad3400f869b9fc778a7f2f4 : SUCCESS in 1h 37m 31s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/c35e203e44dc4f179cb30594eb5b300b : SUCCESS in 1h 35m 19s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/afab81dbe58b4780822e61cd092b06ce : SUCCESS in 1h 41m 32s","accounts_in_message":[],"_revision_number":6},{"id":"f6858f45f1775efafd9816ffd028cafe83ccf045","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-08-07 19:24:28.000000000","message":"Patch Set 6:\n\n(3 comments)","accounts_in_message":[],"_revision_number":6},{"id":"22d4dae59a8f385805c0a8e8d834be9904a45463","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-08-07 19:29:33.000000000","message":"Uploaded patch set 7.\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":7},{"id":"84a8f1631c1454278aa28ee0f9abd5ebb68040cf","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-08-07 19:29:47.000000000","message":"Patch Set 7:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":7},{"id":"65760a5e0747db414f2b92bd193a6a6ce351a023","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-08-07 19:36:25.000000000","message":"Patch Set 7:\n\n(1 comment)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/ebf35950cbb3402c815fadbdd7313317\n\n- teim-code-review https://zuul.teim.app/t/main/build/02c1de83dd2f4cca90ecf7d6150c5586 : SUCCESS in 6m 28s\n\nWarning:\n  The commit message body contains an accidental shell command appended to a sentence: \u0027...without re-querying the datasource.tox -e docs\u0027. This looks like a copy-paste of a tox command that was inadvertently included in the commit message text. Impact: The commit message is permanently recorded in git history. The malformed sentence reduces clarity of the commit rationale and looks unprofessional. It could confuse future contributors reading the commit log or cherry-picking. Recommendation: Amend the commit message to remove the stray \u0027tox -e docs\u0027 text so the sentence reads: \u0027...cluster state without re-querying the datasource.\u0027\n  This change removes oslo.cache from requirements.txt, eliminates the oslo_cache-based MEMOIZE decorator from WorkloadStabilization, and replaces the caching mechanism with a new in-memory MetricDataCache. No reno release note was added to document this behavioral and dependency change for operato... Impact: Operators who configured oslo.cache backends (e.g., memcached) for watcher will have silently unused configuration after upgrade. Downstream packagers need to know oslo.cache is no longer required. Without a release note, these changes may be missed during release preparation. Recommendation: Add a reno release note (e.g., \u0027releasenotes/notes/add-metric-data-cache-\u003chash\u003e.yaml\u0027) documenting: (1) oslo.cache dependency removed, (2) new MetricDataCache replaces oslo_cache-based memoization, (3) any operational implications for existing cache configurations.","accounts_in_message":[],"_revision_number":7},{"id":"cb4ac7926fdaf1d980b980e997ae03b3db5ef86e","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-08-07 19:40:50.000000000","message":"Patch Set 7: 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/f95500cf0dcd487c9c6beccdbca97802\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/d59df2a9fc654e609eb9009453ca71d3 : FAILURE in 9m 06s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/330f7b97d10a4e1c9c3a55f834fed144 : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":7},{"id":"0ddc6815ebc8d7fbf7038b85cf6c5ec06a01da73","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-07 21:12:31.000000000","message":"Patch Set 7: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/8f419ba0b6c34125bd531d5aad314b66\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/ca92696e7a684f7ab828919344c0989e : SUCCESS in 2m 37s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/3dd0d1880b074ac79e7a231a2a5a5f6d : SUCCESS in 10m 38s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/eaae41bbce394d6c926ba5e30e40018b : SUCCESS in 7m 36s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/428fd7ed86694e7eac79e7239642ec2b : SUCCESS in 5m 58s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/d3bb09765bf942fe89fa3cf615066e19 : SUCCESS in 7m 37s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/e9062bc807bb4b009f7040f0dab8ac7c : SUCCESS in 7m 51s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/ec198145226343edb3268ad135e97e3c : SUCCESS in 4m 47s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/c541eb6d8e2242129e562c1595ec4b4d : SUCCESS in 5m 49s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/22747912de4349eead4934c1da41203a : SUCCESS in 5m 14s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/2d6f0006ff84425dbe6151d03d61322d : SUCCESS in 58m 33s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/9b580f52ccb743d9ba21b0f9190e776e : SUCCESS in 50m 43s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/b3e06d003b0b435098ff0c8cd90413a5 : SUCCESS in 29m 11s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/7b2c5207c9974541bb4470a1ba8cafd1 : SUCCESS in 45m 13s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/c7862d477ecf495f989355f4af9151cf : SUCCESS in 48m 37s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/a3ba1356686e44f7b11132a880539ccf : SUCCESS in 1h 35m 24s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/d1a5890b544d459e83ca7459553e1fa3 : SUCCESS in 1h 37m 00s","accounts_in_message":[],"_revision_number":7},{"id":"646e4f75bd3b3251c5e24398c132b342784e9997","author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"date":"2026-08-10 13:11:54.000000000","message":"Patch Set 7: Code-Review+2","accounts_in_message":[],"_revision_number":7},{"id":"ee3dc8374447f7ea8148b11583a6e73a18661b84","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-08-12 22:13:47.000000000","message":"Uploaded patch set 8: Patch Set 7 was rebased.\n\nCopied Votes:\n* Code-Review+2, Code-Review-1 (copy condition: \"**changekind:TRIVIAL_REBASE** OR is:MIN\")\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":8},{"id":"1fcccee435806a55cb7130a6e5547ee1fd4b7b14","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-08-12 22:14:01.000000000","message":"Patch Set 8:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":8},{"id":"6ec517079ac35133a7b8d5d7106216c349c6debd","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-08-12 22:24:58.000000000","message":"Patch Set 8: 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/1b8de95d488343459390e3595958b9c7\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/67bfbc570af648dcae0fb2de6d6cbca0 : FAILURE in 9m 21s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/f34c933112c544658d8cc294dfb701ac : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":8},{"id":"46905268468010d7bec66880ab313c65894bc176","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-08-12 22:27:04.000000000","message":"Patch Set 8:\n\n(1 comment)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/a02696f0811c4d2195b4b344803cc809\n\n- teim-code-review https://zuul.teim.app/t/main/build/94f7c26680e143a78858ddafaef75243 : SUCCESS in 12m 53s\n\nWarning:\n  File .kube/cache/http/4cbf3e74a0cf251e76b79c730e27aa78 found in build home directory during playbook github.com/SeanMooney/ci-sean-mooney/playbooks/base/pre.yaml for job teim-code-review.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .kube/cache/http/0a771f2540bee8272a9133c8d531842b found in build home directory during playbook github.com/SeanMooney/ci-sean-mooney/playbooks/base/pre.yaml for job teim-code-review.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .kube/cache/http/2828778a60deaf32ddfd8bf19a7bbe42 found in build home directory during playbook github.com/SeanMooney/ci-sean-mooney/playbooks/base/pre.yaml for job teim-code-review.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .kube/cache/http/0152c20648616207022b772d371c79f0 found in build home directory during playbook github.com/SeanMooney/ci-sean-mooney/playbooks/base/pre.yaml for job teim-code-review.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .kube/cache/http/5d6ec245f855ced60908a544f340db02 found in build home directory during playbook github.com/SeanMooney/ci-sean-mooney/playbooks/base/pre.yaml for job teim-code-review.  Add to preserve-home-paths if safe, or otherwise remove.\n  The commit message body ends a sentence with \u0027...without re-querying the datasource.tox -e docs\u0027 which appears to be an accidental paste of a shell command into the commit message text. This is a formatting error in the commit history. Impact: The commit message is part of permanent project history. The stray command text makes the message appear unprofessional and could confuse readers about the intent. Recommendation: Amend the commit message to remove the stray \u0027tox -e docs\u0027 text from the body, or rewrite the affected sentence for clarity.","accounts_in_message":[],"_revision_number":8},{"id":"01ccec6fb5c9a4322b31ba7ed713901e2f35ef3e","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-13 00:01:20.000000000","message":"Patch Set 8: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/76688bd6e84d4dc9b46aaac530476f54\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/f48e906d6a7c449896ea33e6f5374537 : SUCCESS in 2m 38s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/bde5caa9527f426188234ad965ae1d1c : SUCCESS in 8m 31s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/960718534845447aba1655ae0004cb70 : SUCCESS in 4m 32s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/7278a54e43d44c7784cc6833481caddc : SUCCESS in 4m 03s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/f568da8fbec7403d81f89ac449bf9bad : SUCCESS in 5m 18s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/2d7fcdedbdde453daf91b93fce29ed64 : SUCCESS in 8m 00s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/f516098edcbd46f4a6b220b87b6fb059 : SUCCESS in 8m 56s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/992b183786be44e3b31276a8b31b38c9 : SUCCESS in 4m 01s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/81ad4a628038469182323670c0d1fc8a : SUCCESS in 4m 50s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/9563a00bcce844fe96f7fbeb9f7e6ff1 : SUCCESS in 40m 20s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/46be385a415340adab3bde962064e8b3 : SUCCESS in 56m 56s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/088dd28226844e8c95c51b2e927b5ef2 : SUCCESS in 36m 43s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/2d5a4dbe0cd7486d885699dccb427ad4 : SUCCESS in 1h 36m 28s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/f6d6f9427fc44d2da576348a2c125fc9 : SUCCESS in 1h 31m 34s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/23a7c9aa56b741f09fd650d774fcd352 : SUCCESS in 1h 32m 55s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/9b5d4411897741298c5b875940261ac6 : SUCCESS in 1h 34m 05s","accounts_in_message":[],"_revision_number":8},{"id":"2dea9ffd8c53bd2535f216f2bcc87d122385b5f3","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-08-18 12:42:41.000000000","message":"Uploaded patch set 9: Patch Set 8 was rebased.\n\nCopied Votes:\n* Code-Review+2, Code-Review-1 (copy condition: \"**changekind:TRIVIAL_REBASE** OR is:MIN\")\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":9},{"id":"558c251b50e6d016319c97b20a3805d20ca98733","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-08-18 12:43:01.000000000","message":"Patch Set 9:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":9},{"id":"b301f9b4bcb6701bb6ba4481cc4521decbee18c0","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-08-18 12:52:53.000000000","message":"Patch Set 9:\n\n(1 comment)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/d01514bd753a4a96b4760e3efe2a62d2\n\n- teim-code-review https://zuul.teim.app/t/main/build/ada9bda94477473982b529d9ec3a87de : SUCCESS in 9m 43s\n\nWarning:\n  The final paragraph of the commit message reads \u0027... so that each strategy sees the expected post-execution cluster state without re-querying the datasource.tox  -e docs\u0027. The \u0027tox  -e docs\u0027 text is an accidental terminal command paste appended directly to the sentence, leaving a malformed run-on sentence in the permanent change history.\n\n**Severity**: SUGGESTION | **Confidence**: 0.95\n\n**Impact**: The permanent git history contains an accidental command fragment that makes the final paragraph read as a typo and slightly obscures the stated purpose of the cache; no runtime impact.\n\n**Recommendation**:\nAmend the commit message to remove the stray \u0027tox  -e docs\u0027 fragment so the sentence ends at \u0027without re-querying the datasource.\u0027.","accounts_in_message":[],"_revision_number":9},{"id":"1af17ba05a3d189a14e8d89427321c01fe1b2d11","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-18 14:20:24.000000000","message":"Patch Set 9: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/cb4ad9863dc94fbd808b0b2aa3f67bf6\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/e4a3d4036bfd4c2f8669d098fd89b3f8 : SUCCESS in 1m 52s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/efbd8f293d134019b760f3a850866d38 : SUCCESS in 7m 00s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/ca01afa5332b4331890a4fa722736769 : SUCCESS in 4m 16s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/f4fd58b03cb2492da56c0bace44683ba : SUCCESS in 3m 19s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/08ce5e8518e04246a00610d1e4ae9815 : SUCCESS in 3m 00s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/98f985c2d7dd45319a88c0f22f9b1a15 : SUCCESS in 11m 26s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/5249f8f48a774c2988e8d2f21c664b1e : SUCCESS in 10m 17s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/fa2bab99acac40c397bdf77c75eae313 : SUCCESS in 3m 13s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/e2e2546e8ca04d38b06eb26bec68f676 : SUCCESS in 8m 35s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/c901b3c49e0e47a3a9ca8799c574a560 : SUCCESS in 54m 15s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/fa98a1d812724bfeb88afc2a01b6ed6e : SUCCESS in 56m 12s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/992ca9d7ecf14c43aae76273f403427f : SUCCESS in 39m 58s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/fed79248b1a74847a39647ebcd482dfb : SUCCESS in 1h 28m 47s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/af85b196acad4d5ab2a71bbbc8944a6a : SUCCESS in 1h 31m 15s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/5291ceab58a34deeb4cb184ae5bd82a8 : SUCCESS in 1h 16m 46s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/aef557426305499bab2fe6a7b3f26e07 : SUCCESS in 1h 21m 06s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/fb232323534c4ccc8215534b5dcc1c49 : SUCCESS in 3m 22s","accounts_in_message":[],"_revision_number":9},{"id":"0b297b88229f59f586c49e49a3ac1db4f0ccbe5a","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-08-18 16:40:01.000000000","message":"Patch Set 9: Code-Review+2 Workflow+1\n\n(7 comments)","accounts_in_message":[],"_revision_number":9},{"id":"422fcb9d586220f5f0500261bcbac81bbdcc5349","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-18 16:40:46.000000000","message":"Patch Set 9: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":9},{"id":"7174593f077a2597cf1b743b8f4bce680e7304e3","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-18 18:26:47.000000000","message":"Patch Set 9: Verified-2\n\nBuild failed (gate pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\n\nhttps://zuul.opendev.org/t/openstack/buildset/c3a1e8e8ce254716b79fe3666ffcbbd6\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/55f0067919fe405fa69be0b939d64f66 : SUCCESS in 2m 35s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/58177eba98194c4697e71bca0a36a221 : SUCCESS in 4m 33s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/899c892581404f9686d027bfa8954754 : SUCCESS in 8m 05s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/70d1ee09948c40988c7f308c75b4e62e : SUCCESS in 5m 01s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/269954058f634fb19efe897d671c000b : SUCCESS in 8m 18s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/c8771fc160934e91b0461ba56413a661 : SUCCESS in 2m 40s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/14acb29348454e3880bc5d275e91147f : SUCCESS in 6m 52s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/81e68e49dc0340acb1c60be6594f6729 : SUCCESS in 54m 38s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/bd1d2bfa8cc244f1bfb6827799544796 : SUCCESS in 53m 16s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/712a4c894b494212869df5c230ea02dd : SUCCESS in 34m 52s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/ce8930a78177438ca0aa8c831d0ed442 : SUCCESS in 1h 40m 34s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/b72ed0a90b324090b9fe8efa23cd5bcb : SUCCESS in 1h 32m 08s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/522dc5e853b3449b93482f3d34f7ef32 : SUCCESS in 1h 09m 32s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/ca5a7abd03644efe9ef67a25210f04dc : FAILURE in 1h 34m 08s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/d5b27b26bc3e4e4fab83017398214b03 : SUCCESS in 4m 52s","accounts_in_message":[],"_revision_number":9},{"id":"7e778af76dce0439aff0d412dabbe2aef106be6e","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-08-18 18:39:31.000000000","message":"Patch Set 9: 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/efafcc3e5c5e4270883118a2483540a9\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/216bea2566d04507bfb7ce1e0adf058b : FAILURE in 10m 50s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/6e1bd720f287406ba231d49374c1c56f : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":9},{"id":"576f3b8a722b09c6b6e5edee96ddb07e077f6530","author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"date":"2026-08-18 19:10:09.000000000","message":"Patch Set 9:\n\n(1 comment)","accounts_in_message":[],"_revision_number":9},{"id":"295dac781bd16339e6df3d026625eb2e7a8ef202","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-08-18 19:10:18.000000000","message":"Patch Set 9:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":9},{"id":"4c89a2a0d8739424ad5cea203ca472bba0f9c608","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-08-18 19:20:57.000000000","message":"Patch Set 9:\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/8725fb53563f4a2cb2224dcd332a980b\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/6a519a4b96274a2e840c73747b96538d : FAILURE in 9m 11s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/116de9e1355a4c32816e2b01bd28186b : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":9},{"id":"7d50e1a3a56b2b87f75712787970389b141054ff","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-08-18 19:21:45.000000000","message":"Patch Set 9:\n\n(1 comment)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/c00526fb9a4b44bfafeafbdeb9e1e028\n\n- teim-code-review https://zuul.teim.app/t/main/build/4c471cdf25574d5d94bf899a5585b254 : SUCCESS in 11m 14s\n\nWarning:\n  The commit message body ends the design-rationale paragraph with \u0027... without re-querying the datasource.tox  -e docs\u0027, appending a shell command that was evidently pasted into the message editor. The fragment breaks the sentence and leaves an unexplained command in the permanent change history.\n\n**Severity**: SUGGESTION | **Confidence**: 0.9\n\n**Impact**: Minor: the history record is slightly garbled and the fragment could confuse readers about whether a tox run is part of the change\u0027s instructions.\n\n**Recommendation**:\nAmend the commit message to remove the stray \u0027tox  -e docs\u0027 fragment before merge (the sentence should end at \u0027without re-querying the datasource.\u0027).","accounts_in_message":[],"_revision_number":9},{"id":"6b30d73cf43c8f39edc14f3dc3cddf85a0c3f445","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-18 20:25:17.000000000","message":"Patch Set 9: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/b398a44baf6449c390d81e747bdccb71\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/0adc80e4ecbc4fc689185846800b84fe : SUCCESS in 2m 53s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/1a8a9918908b4563aa1bc6e6a0555f12 : SUCCESS in 4m 59s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/084550ff9cda4fc9a64d4938375ced38 : SUCCESS in 3m 26s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/dad68d99c1134ac786e35dccd5aaaec8 : SUCCESS in 3m 38s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/7e63a864ed7b445d906b5b22483ed9aa : SUCCESS in 3m 49s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/0008b06b64e14fd9a0a95766e9265c23 : SUCCESS in 5m 46s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/8115b4ea5c644c9989455c25bab801d7 : SUCCESS in 8m 35s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/c8e4a7a9e1cd4e068470638d66480696 : SUCCESS in 3m 14s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/8836d3f61fed42c2ad53d878748bdbf4 : SUCCESS in 5m 26s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/787361cdca594797ab6894b6099d496f : SUCCESS in 40m 58s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/f0603741ac964172ae73c893060496b2 : SUCCESS in 39m 50s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/0b20c17a7a02418fa9d244c34d208333 : SUCCESS in 16m 47s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/826500ae9e1b4540921f11fe9251a705 : SUCCESS in 45m 38s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/c58fd36901574dcdb3a6bedc738a9c87 : SUCCESS in 1h 12m 47s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/dc2030ea98554c5a961a9263f0433163 : SUCCESS in 1h 03m 54s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/35d668fd7355458aa400897225fa6377 : SUCCESS in 1h 04m 38s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/56d5a55367864dfdb11a2a460fca253b : SUCCESS in 4m 11s","accounts_in_message":[],"_revision_number":9},{"id":"b7244bf4a5dfeb47843f915cc24adb830c0edd70","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-18 20:25:55.000000000","message":"Patch Set 9: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":9},{"id":"6d590f1783d120f6595b8f74c3f5a51c5b4b2955","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-18 22:11:27.000000000","message":"Patch Set 9: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/8910237bfacd4f37a9f36a049524ebb4\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/cedd5156d1d04afc957f2cf0b1d2b17c : SUCCESS in 2m 15s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/91d710472fc54a28b902511764e38701 : SUCCESS in 3m 53s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/e7f0c6c8491f4b63a574312cbe480535 : SUCCESS in 4m 00s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/28cd2b4e26cd4f1ca5127c1bc57276a2 : SUCCESS in 5m 10s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/35a90e46057444a2a35293e586da3f80 : SUCCESS in 9m 42s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/5ac6ae5ca08749dbac8099bf5eff7e1f : SUCCESS in 4m 48s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/d3a60dd5eec947ae8db51f39d9f408a5 : SUCCESS in 5m 05s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/590413963a3d45be8bb0c58170431c86 : SUCCESS in 53m 06s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/29895ef0d6344c6a995b527d4748cff9 : SUCCESS in 51m 53s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/5642b34747134616a246272c2e86d54c : SUCCESS in 34m 36s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/a12a6b7902be48b79ac28c366b8ff4db : SUCCESS in 45m 49s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/f1a50f599d2e406d89936857e49d01c6 : SUCCESS in 1h 36m 21s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/f8773d12f0be47f6b9749f9be1c041fc : SUCCESS in 1h 17m 57s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/25d9cec58da44d6c861f5d9098dcce34 : SUCCESS in 1h 40m 25s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/355ea0b1acac419bae29ae8867cbade4 : SUCCESS in 4m 24s","accounts_in_message":[],"_revision_number":9},{"id":"80b556bfac015ee2e50e8ee0b4ed3884f1af1969","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-18 22:11:28.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":9},{"id":"f50b83ee75424ddcf3bb9abdc036416e17c697b0","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-18 22:12:24.000000000","message":"Patch Set 9:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/844e101b7c1148138ec2ef041630d7b7\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/c1f838f4457142ba8cf1c19b34a3ba46 : SUCCESS in 45s","accounts_in_message":[],"_revision_number":9}],"current_revision_number":9,"current_revision":"e8c70fc23210522c93f6fbc8e54771a66333875d","revisions":{"f14ab13ab3b884ad8771873ac8a2c93924a9ba24":{"kind":"REWORK","_number":1,"created":"2026-06-26 18:00:58.000000000","uploader":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"ref":"refs/changes/19/995119/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/19/995119/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/19/995119/1"}}},"commit":{"parents":[{"commit":"3c9c9f5302a4a8b3e91caf2072c27b53a6744518","subject":"Add default_parameters support to Audit Templates","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/3c9c9f5302a4a8b3e91caf2072c27b53a6744518"}]}],"author":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-06-24 18:52:26.000000000","tz":-180},"committer":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-06-26 18:00:44.000000000","tz":-180},"subject":"Add metric cache to DataSourceBase","message":"Add metric cache to DataSourceBase\n\nRename the concrete statistic_aggregation implementation in each\ndatasource (gnocchi, prometheus_base, grafana) to the private\n_statistic_aggregation. Introduce a concrete public statistic_aggregation\nin DataSourceBase that wraps _statistic_aggregation with an in-memory\ncache keyed on (resource.uuid, meter_name, aggregate, period).\n\nOn a cache miss the result is fetched from the datasource and stored for\nthe lifetime of the object. A new inject_metric method allows callers\nto pre-populate the cache with an externally computed value before\nqueries are made.\n\nThis lays the groundwork for the Audit Pipeline feature (cascade execution\nmode), where the pipeline handler will inject projected metric values\nbetween stages so that each strategy sees the expected post-execution\ncluster state without re-querying the datasource.\n\nStrategies and wrapper methods (get_host_*, get_instance_*) are unchanged;\nthey continue to call the public statistic_aggregation interface.\n\nPartially-Implements: blueprint audit-pipeline\nAssisted-By: Claude Code (Sonnet 4.6)\nChange-Id: I6b7e6492794b5b77776b7accc8753e10a4de2815\nSigned-off-by: Douglas Viroel \u003cviroel@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/f14ab13ab3b884ad8771873ac8a2c93924a9ba24"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/f14ab13ab3b884ad8771873ac8a2c93924a9ba24"}]},"branch":"refs/heads/master"},"fdbd3c158c9a731dc6348f137d7e6be8d7c46769":{"kind":"TRIVIAL_REBASE","_number":2,"created":"2026-07-01 13:26:21.000000000","uploader":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"ref":"refs/changes/19/995119/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/19/995119/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/19/995119/2"}}},"commit":{"parents":[{"commit":"589b9a1a1eaac96980cfd827ee954a9e9348eb11","subject":"Add default_parameters support to Audit Templates","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/589b9a1a1eaac96980cfd827ee954a9e9348eb11"}]}],"author":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-06-24 18:52:26.000000000","tz":-180},"committer":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-07-01 13:24:51.000000000","tz":-180},"subject":"Add metric cache to DataSourceBase","message":"Add metric cache to DataSourceBase\n\nRename the concrete statistic_aggregation implementation in each\ndatasource (gnocchi, prometheus_base, grafana) to the private\n_statistic_aggregation. Introduce a concrete public statistic_aggregation\nin DataSourceBase that wraps _statistic_aggregation with an in-memory\ncache keyed on (resource.uuid, meter_name, aggregate, period).\n\nOn a cache miss the result is fetched from the datasource and stored for\nthe lifetime of the object. A new inject_metric method allows callers\nto pre-populate the cache with an externally computed value before\nqueries are made.\n\nThis lays the groundwork for the Audit Pipeline feature (cascade execution\nmode), where the pipeline handler will inject projected metric values\nbetween stages so that each strategy sees the expected post-execution\ncluster state without re-querying the datasource.\n\nStrategies and wrapper methods (get_host_*, get_instance_*) are unchanged;\nthey continue to call the public statistic_aggregation interface.\n\nPartially-Implements: blueprint audit-pipeline\nAssisted-By: Claude Code (Sonnet 4.6)\nChange-Id: I6b7e6492794b5b77776b7accc8753e10a4de2815\nSigned-off-by: Douglas Viroel \u003cviroel@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/fdbd3c158c9a731dc6348f137d7e6be8d7c46769"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/fdbd3c158c9a731dc6348f137d7e6be8d7c46769"}]},"branch":"refs/heads/master"},"cb00210504a32efa198a073621c3e20c8c2660cf":{"kind":"TRIVIAL_REBASE","_number":3,"created":"2026-07-10 20:00:42.000000000","uploader":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"ref":"refs/changes/19/995119/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/19/995119/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/19/995119/3"}}},"commit":{"parents":[{"commit":"49645b83d8a1e4a9c2ff5595476740fba2a7069a","subject":"Add default_parameters support to Audit Templates","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/49645b83d8a1e4a9c2ff5595476740fba2a7069a"}]}],"author":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-06-24 18:52:26.000000000","tz":-180},"committer":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-07-02 17:14:21.000000000","tz":-180},"subject":"Add metric cache to DataSourceBase","message":"Add metric cache to DataSourceBase\n\nRename the concrete statistic_aggregation implementation in each\ndatasource (gnocchi, prometheus_base, grafana) to the private\n_statistic_aggregation. Introduce a concrete public statistic_aggregation\nin DataSourceBase that wraps _statistic_aggregation with an in-memory\ncache keyed on (resource.uuid, meter_name, aggregate, period).\n\nOn a cache miss the result is fetched from the datasource and stored for\nthe lifetime of the object. A new inject_metric method allows callers\nto pre-populate the cache with an externally computed value before\nqueries are made.\n\nThis lays the groundwork for the Audit Pipeline feature (cascade execution\nmode), where the pipeline handler will inject projected metric values\nbetween stages so that each strategy sees the expected post-execution\ncluster state without re-querying the datasource.\n\nStrategies and wrapper methods (get_host_*, get_instance_*) are unchanged;\nthey continue to call the public statistic_aggregation interface.\n\nPartially-Implements: blueprint audit-pipeline\nAssisted-By: Claude Code (Sonnet 4.6)\nChange-Id: I6b7e6492794b5b77776b7accc8753e10a4de2815\nSigned-off-by: Douglas Viroel \u003cviroel@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/cb00210504a32efa198a073621c3e20c8c2660cf"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/cb00210504a32efa198a073621c3e20c8c2660cf"}]},"branch":"refs/heads/master"},"1b1f04adf7dc05f5155cd9095c106117d00022b1":{"kind":"REWORK","_number":4,"created":"2026-08-03 22:13:49.000000000","uploader":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"ref":"refs/changes/19/995119/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/19/995119/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/19/995119/4"}}},"commit":{"parents":[{"commit":"49836d0d7f1cc16a91e3190410cc8a616938be32","subject":"Merge \"Add default_parameters support to Audit Templates\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/49836d0d7f1cc16a91e3190410cc8a616938be32"}]}],"author":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-06-24 18:52:26.000000000","tz":-180},"committer":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-08-03 22:12:28.000000000","tz":-180},"subject":"Add MetricDataCache and integrate it into DataSourceBase","message":"Add MetricDataCache and integrate it into DataSourceBase\n\nIntroduce a dedicated MetricDataCache class (cache.py) that stores\nmetric values using a five-dimension key (resource_id, meter_name,\naggregate, period, granularity). The class provides get/put/remove/\nclear/clear_simulated operations, tracks which entries are simulated\n(projected) vs. real datasource values.\n\nRename the concrete statistic_aggregation implementation in each\ndatasource (gnocchi, prometheus_base, grafana) to the private\n_statistic_aggregation. Introduce a concrete public statistic_aggregation\nin DataSourceBase that wraps _statistic_aggregation with an in-memory\ncache keyed.\n\nOn a cache miss the result is fetched from the datasource and stored for\nthe lifetime of the object. A new inject_metric method allows callers\nto pre-populate the cache with an externally computed value before\nqueries are made.\n\nThis lays the groundwork for the Audit Pipeline feature (cascade execution\nmode), where the pipeline handler will inject projected metric values\nbetween stages so that each strategy sees the expected post-execution\ncluster state without re-querying the datasource.tox  -e docs\n\nStrategies and wrapper methods (get_host_*, get_instance_*) are unchanged;\nthey continue to call the public statistic_aggregation interface.\n\nPartially-Implements: blueprint audit-pipeline\nAssisted-By: Claude Code (Sonnet 4.6)\nChange-Id: I6b7e6492794b5b77776b7accc8753e10a4de2815\nSigned-off-by: Douglas Viroel \u003cviroel@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/1b1f04adf7dc05f5155cd9095c106117d00022b1"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/1b1f04adf7dc05f5155cd9095c106117d00022b1"}]},"branch":"refs/heads/master"},"120c5e647307b3ccfb122d9f4cda6452c0ad319a":{"kind":"REWORK","_number":5,"created":"2026-08-04 12:16:54.000000000","uploader":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"ref":"refs/changes/19/995119/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/19/995119/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/19/995119/5"}}},"commit":{"parents":[{"commit":"d7c96b2272f3799bb434171208fb395f4d63a71d","subject":"Remove unused osc parameter from scope and builder classes","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/d7c96b2272f3799bb434171208fb395f4d63a71d"}]}],"author":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-06-24 18:52:26.000000000","tz":-180},"committer":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-08-04 12:11:36.000000000","tz":-180},"subject":"Add MetricDataCache and integrate it into DataSourceBase","message":"Add MetricDataCache and integrate it into DataSourceBase\n\nIntroduce a dedicated MetricDataCache class (cache.py) that stores\nmetric values using a five-dimension key (resource_id, meter_name,\naggregate, period, granularity). The class provides get/put/remove/\nclear/clear_simulated operations, tracks which entries are simulated\n(projected) vs. real datasource values.\n\nRename the concrete statistic_aggregation implementation in each\ndatasource (gnocchi, prometheus_base, grafana) to the private\n_statistic_aggregation. Introduce a concrete public statistic_aggregation\nin DataSourceBase that wraps _statistic_aggregation with an in-memory\ncache keyed.\n\nOn a cache miss the result is fetched from the datasource and stored for\nthe lifetime of the object. A new inject_metric method allows callers\nto pre-populate the cache with an externally computed value before\nqueries are made.\n\nThis lays the groundwork for the Audit Pipeline feature (cascade execution\nmode), where the pipeline handler will inject projected metric values\nbetween stages so that each strategy sees the expected post-execution\ncluster state without re-querying the datasource.tox  -e docs\n\nStrategies and wrapper methods (get_host_*, get_instance_*) are unchanged;\nthey continue to call the public statistic_aggregation interface.\n\nMethods that were memoized with oslo_cache to avoid redundant datasource\ncalls have been removed together with the oslo.cache requirement.\n\nPartially-Implements: blueprint audit-pipeline\nAssisted-By: Claude Code (Sonnet 4.6)\nChange-Id: I6b7e6492794b5b77776b7accc8753e10a4de2815\nSigned-off-by: Douglas Viroel \u003cviroel@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/120c5e647307b3ccfb122d9f4cda6452c0ad319a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/120c5e647307b3ccfb122d9f4cda6452c0ad319a"}]},"branch":"refs/heads/master"},"bd20c76416410c70f5b5f60a84598398df6d9375":{"kind":"TRIVIAL_REBASE","_number":6,"created":"2026-08-05 18:31:05.000000000","uploader":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"ref":"refs/changes/19/995119/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/19/995119/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/19/995119/6"}}},"commit":{"parents":[{"commit":"2b997f0a6b854c5370e0bd927c586b9c3ffa6893","subject":"Merge \"devstack: Use common function to manage watcher_clients_auth options\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/2b997f0a6b854c5370e0bd927c586b9c3ffa6893"}]}],"author":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-06-24 18:52:26.000000000","tz":-180},"committer":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-08-05 15:25:02.000000000","tz":-180},"subject":"Add MetricDataCache and integrate it into DataSourceBase","message":"Add MetricDataCache and integrate it into DataSourceBase\n\nIntroduce a dedicated MetricDataCache class (cache.py) that stores\nmetric values using a five-dimension key (resource_id, meter_name,\naggregate, period, granularity). The class provides get/put/remove/\nclear/clear_simulated operations, tracks which entries are simulated\n(projected) vs. real datasource values.\n\nRename the concrete statistic_aggregation implementation in each\ndatasource (gnocchi, prometheus_base, grafana) to the private\n_statistic_aggregation. Introduce a concrete public statistic_aggregation\nin DataSourceBase that wraps _statistic_aggregation with an in-memory\ncache keyed.\n\nOn a cache miss the result is fetched from the datasource and stored for\nthe lifetime of the object. A new inject_metric method allows callers\nto pre-populate the cache with an externally computed value before\nqueries are made.\n\nThis lays the groundwork for the Audit Pipeline feature (cascade execution\nmode), where the pipeline handler will inject projected metric values\nbetween stages so that each strategy sees the expected post-execution\ncluster state without re-querying the datasource.tox  -e docs\n\nStrategies and wrapper methods (get_host_*, get_instance_*) are unchanged;\nthey continue to call the public statistic_aggregation interface.\n\nMethods that were memoized with oslo_cache to avoid redundant datasource\ncalls have been removed together with the oslo.cache requirement.\n\nPartially-Implements: blueprint audit-pipeline\nAssisted-By: Claude Code (Sonnet 4.6)\nChange-Id: I6b7e6492794b5b77776b7accc8753e10a4de2815\nSigned-off-by: Douglas Viroel \u003cviroel@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/bd20c76416410c70f5b5f60a84598398df6d9375"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/bd20c76416410c70f5b5f60a84598398df6d9375"}]},"branch":"refs/heads/master"},"3e1cd24e4c2de7f642a1b34868afed936fdd3acf":{"kind":"REWORK","_number":7,"created":"2026-08-07 19:29:33.000000000","uploader":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"ref":"refs/changes/19/995119/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/19/995119/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/19/995119/7"}}},"commit":{"parents":[{"commit":"2b997f0a6b854c5370e0bd927c586b9c3ffa6893","subject":"Merge \"devstack: Use common function to manage watcher_clients_auth options\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/2b997f0a6b854c5370e0bd927c586b9c3ffa6893"}]}],"author":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-06-24 18:52:26.000000000","tz":-180},"committer":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-08-07 19:28:04.000000000","tz":-180},"subject":"Add MetricDataCache and integrate it into DataSourceBase","message":"Add MetricDataCache and integrate it into DataSourceBase\n\nIntroduce a dedicated MetricDataCache class (cache.py) that stores\nmetric values using a five-dimension key (resource_id, meter_name,\naggregate, period, granularity). The class provides get/put/remove/\nclear/clear_simulated operations, tracks which entries are simulated\n(projected) vs. real datasource values.\n\nRename the concrete statistic_aggregation implementation in each\ndatasource (gnocchi, prometheus_base, grafana) to the private\n_statistic_aggregation. Introduce a concrete public statistic_aggregation\nin DataSourceBase that wraps _statistic_aggregation with an in-memory\ncache keyed.\n\nOn a cache miss the result is fetched from the datasource and stored for\nthe lifetime of the object. A new inject_metric method allows callers\nto pre-populate the cache with an externally computed value before\nqueries are made.\n\nThis lays the groundwork for the Audit Pipeline feature (cascade execution\nmode), where the pipeline handler will inject projected metric values\nbetween stages so that each strategy sees the expected post-execution\ncluster state without re-querying the datasource.tox  -e docs\n\nStrategies and wrapper methods (get_host_*, get_instance_*) are unchanged;\nthey continue to call the public statistic_aggregation interface.\n\nMethods that were memoized with oslo_cache to avoid redundant datasource\ncalls have been removed together with the oslo.cache requirement.\n\nPartially-Implements: blueprint audit-pipeline\nAssisted-By: Claude Code (Sonnet 4.6)\nChange-Id: I6b7e6492794b5b77776b7accc8753e10a4de2815\nSigned-off-by: Douglas Viroel \u003cviroel@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/3e1cd24e4c2de7f642a1b34868afed936fdd3acf"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/3e1cd24e4c2de7f642a1b34868afed936fdd3acf"}]},"branch":"refs/heads/master"},"84c56b8c45ef1782907a498a7515b1eae78b744f":{"kind":"TRIVIAL_REBASE","_number":8,"created":"2026-08-12 22:13:47.000000000","uploader":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"ref":"refs/changes/19/995119/8","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/19/995119/8","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/19/995119/8"}}},"commit":{"parents":[{"commit":"ebad4673247e7653460ca91bd82113c8d6f39fcc","subject":"Merge \"Add strategy as filter on /v1/audits/detail endpoint\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/ebad4673247e7653460ca91bd82113c8d6f39fcc"}]}],"author":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-06-24 18:52:26.000000000","tz":-180},"committer":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-08-12 22:12:56.000000000","tz":-180},"subject":"Add MetricDataCache and integrate it into DataSourceBase","message":"Add MetricDataCache and integrate it into DataSourceBase\n\nIntroduce a dedicated MetricDataCache class (cache.py) that stores\nmetric values using a five-dimension key (resource_id, meter_name,\naggregate, period, granularity). The class provides get/put/remove/\nclear/clear_simulated operations, tracks which entries are simulated\n(projected) vs. real datasource values.\n\nRename the concrete statistic_aggregation implementation in each\ndatasource (gnocchi, prometheus_base, grafana) to the private\n_statistic_aggregation. Introduce a concrete public statistic_aggregation\nin DataSourceBase that wraps _statistic_aggregation with an in-memory\ncache keyed.\n\nOn a cache miss the result is fetched from the datasource and stored for\nthe lifetime of the object. A new inject_metric method allows callers\nto pre-populate the cache with an externally computed value before\nqueries are made.\n\nThis lays the groundwork for the Audit Pipeline feature (cascade execution\nmode), where the pipeline handler will inject projected metric values\nbetween stages so that each strategy sees the expected post-execution\ncluster state without re-querying the datasource.tox  -e docs\n\nStrategies and wrapper methods (get_host_*, get_instance_*) are unchanged;\nthey continue to call the public statistic_aggregation interface.\n\nMethods that were memoized with oslo_cache to avoid redundant datasource\ncalls have been removed together with the oslo.cache requirement.\n\nPartially-Implements: blueprint audit-pipeline\nAssisted-By: Claude Code (Sonnet 4.6)\nChange-Id: I6b7e6492794b5b77776b7accc8753e10a4de2815\nSigned-off-by: Douglas Viroel \u003cviroel@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/84c56b8c45ef1782907a498a7515b1eae78b744f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/84c56b8c45ef1782907a498a7515b1eae78b744f"}]},"branch":"refs/heads/master"},"e8c70fc23210522c93f6fbc8e54771a66333875d":{"kind":"TRIVIAL_REBASE","_number":9,"created":"2026-08-18 12:42:41.000000000","uploader":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"ref":"refs/changes/19/995119/9","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/19/995119/9","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/9 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/9 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/19/995119/9 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/19/995119/9"}}},"commit":{"parents":[{"commit":"fb6883011df46314b906a862947e43b93f1dd1ab","subject":"Merge \"Add allocation-based capacity checks to vm_workload_consolidation\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/fb6883011df46314b906a862947e43b93f1dd1ab"}]}],"author":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-06-24 18:52:26.000000000","tz":-180},"committer":{"name":"Douglas Viroel","email":"viroel@gmail.com","date":"2026-08-18 12:40:44.000000000","tz":-180},"subject":"Add MetricDataCache and integrate it into DataSourceBase","message":"Add MetricDataCache and integrate it into DataSourceBase\n\nIntroduce a dedicated MetricDataCache class (cache.py) that stores\nmetric values using a five-dimension key (resource_id, meter_name,\naggregate, period, granularity). The class provides get/put/remove/\nclear/clear_simulated operations, tracks which entries are simulated\n(projected) vs. real datasource values.\n\nRename the concrete statistic_aggregation implementation in each\ndatasource (gnocchi, prometheus_base, grafana) to the private\n_statistic_aggregation. Introduce a concrete public statistic_aggregation\nin DataSourceBase that wraps _statistic_aggregation with an in-memory\ncache keyed.\n\nOn a cache miss the result is fetched from the datasource and stored for\nthe lifetime of the object. A new inject_metric method allows callers\nto pre-populate the cache with an externally computed value before\nqueries are made.\n\nThis lays the groundwork for the Audit Pipeline feature (cascade execution\nmode), where the pipeline handler will inject projected metric values\nbetween stages so that each strategy sees the expected post-execution\ncluster state without re-querying the datasource.tox  -e docs\n\nStrategies and wrapper methods (get_host_*, get_instance_*) are unchanged;\nthey continue to call the public statistic_aggregation interface.\n\nMethods that were memoized with oslo_cache to avoid redundant datasource\ncalls have been removed together with the oslo.cache requirement.\n\nPartially-Implements: blueprint audit-pipeline\nAssisted-By: Claude Code (Sonnet 4.6)\nChange-Id: I6b7e6492794b5b77776b7accc8753e10a4de2815\nSigned-off-by: Douglas Viroel \u003cviroel@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/e8c70fc23210522c93f6fbc8e54771a66333875d"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/e8c70fc23210522c93f6fbc8e54771a66333875d"}]},"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":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"}},{"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":""}}}]}
