)]}'
{"id":"openstack%2Fceilometer~981176","triplet_id":"openstack%2Fceilometer~master~I09c243b3eac60c28b149e61ec9039db83e80e5f8","project":"openstack/ceilometer","branch":"master","topic":"ceilometer_use_openstack_sdk","attention_set":{},"removed_from_attention_set":{"4264":{"account":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"last_update":"2026-04-14 07:39:42.000000000","reason":"\u003cGERRIT_ACCOUNT_4264\u003e replied on the change","reason_account":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"}},"32968":{"account":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"last_update":"2026-04-14 07:24:14.000000000","reason":"\u003cGERRIT_ACCOUNT_32968\u003e replied on the change","reason_account":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"}},"13177":{"account":{"_account_id":13177,"name":"Emma Foley","email":"efoley@redhat.com","username":"emma-l-foley"},"last_update":"2026-04-14 07:50:50.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"I09c243b3eac60c28b149e61ec9039db83e80e5f8","subject":"Add FakeKeystoneClient to fakes module","status":"MERGED","created":"2026-03-18 19:34:49.000000000","updated":"2026-04-14 07:51:46.000000000","submitted":"2026-04-14 07:50:50.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":2,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"981176-ceilometer_use_openstack_sdk","meta_rev_id":"84c7fc9691b6f11bd5bba76f829f6336ee59341d","_number":981176,"virtual_id_number":981176,"owner":{"_account_id":13177,"name":"Emma Foley","email":"efoley@redhat.com","username":"emma-l-foley"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-04-14 07:50:50.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},{"value":0,"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"}],"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":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":2,"date":"2026-04-14 07:39:42.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},{"value":2,"date":"2026-04-14 07:24:14.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"}],"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":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":1,"date":"2026-04-14 07:39:42.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},{"value":0,"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-03-18 19:47:14.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-04-13 06:14:21.000000000","updated_by":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"reviewer":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"state":"REVIEWER"},{"updated":"2026-04-13 07:52:35.000000000","updated_by":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"reviewer":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"state":"REVIEWER"}],"messages":[{"id":"d19b74fdeabb084589e66cef022120a74b432662","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":13177,"name":"Emma Foley","email":"efoley@redhat.com","username":"emma-l-foley"},"date":"2026-03-18 19:34:49.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"5ec9b4fd1e89d3a882f6548532c235f170ec6722","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-18 19:47:14.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/a8d376bdcce94590946d07a336981bef\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/94cf9b355ca0430f9b2430e6aa565370 : SUCCESS in 6m 05s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/a2295f547eea4f27b867843fc16e00a7 : SUCCESS in 2m 56s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/04c5afaf12e54678aac90ba285dd02a8 : SUCCESS in 6m 55s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/732f4efe4aa14501a87f86ad420bf25f : SUCCESS in 2m 57s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/5a9dffa4006641a2a1fc8a7077cd6803 : SUCCESS in 3m 35s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/fdd99481f0db4759a4242214a9fe82ae : SUCCESS in 3m 51s","accounts_in_message":[],"_revision_number":1},{"id":"1a3895739766e68eca0df09cf5fc0e13bdaf6563","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":13177,"name":"Emma Foley","email":"efoley@redhat.com","username":"emma-l-foley"},"date":"2026-04-02 17:04:02.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":2},{"id":"7331b84a35b87eb5996544249d6db4223a06d421","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-02 17:23:10.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/0ce5aad5573a410f8737ab47cac8a61c\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/51eae34dad084c97957673c2fc077121 : SUCCESS in 4m 06s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/c42af0c65ebb4bd0971cd581be24c447 : SUCCESS in 2m 40s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/8671f1398e8e42e08047889f568be3da : SUCCESS in 4m 11s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/56b0df1bfb33452f99e9ccdba8cb8944 : SUCCESS in 2m 52s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/735579ec13054549be524b501fd2951c : SUCCESS in 8m 46s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/c2f139bb72d54a95a046f9c71b55e34e : SUCCESS in 7m 42s","accounts_in_message":[],"_revision_number":2},{"id":"55c4dcf3fc4de496dfcaf700653138d6e0add617","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":13177,"name":"Emma Foley","email":"efoley@redhat.com","username":"emma-l-foley"},"date":"2026-04-09 22:45:24.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":3},{"id":"d20dffa0042710c0b436518dbb41d04df96d6c29","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-09 22:59:28.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/b4bd15e2c2b1491c9afc8dd82d694ee7\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/c69564b941254e4cac2b8584d80e0979 : SUCCESS in 6m 46s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/cfc4c510c5d54e4db33552e69f13df31 : SUCCESS in 5m 22s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/c4b85e59cd084bd5bc3c060b7b97582a : SUCCESS in 4m 29s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/253ea09bf1c14aa0baf05ed6080fac57 : SUCCESS in 6m 08s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/31d512bfff7e4adbb76ddebef637ea46 : SUCCESS in 6m 35s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/8d4e07abd08b4ad6a7fdf99e56527467 : SUCCESS in 7m 42s","accounts_in_message":[],"_revision_number":3},{"id":"f68c3aa8cdab20d4dd4ecf62cb28e58d4f1ed1e1","author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"date":"2026-04-13 06:14:21.000000000","message":"Patch Set 3: Code-Review+2","accounts_in_message":[],"_revision_number":3},{"id":"440a5e033fa0a32f34e494f6be761dc0e6956fa0","author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"date":"2026-04-13 07:52:35.000000000","message":"Patch Set 3: Code-Review+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"8e2f950491741550170535cd2f1c2dd9a630b988","author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"date":"2026-04-13 07:53:19.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"c45284a73c26a5810401cfb76cd32f5b03631842","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":13177,"name":"Emma Foley","email":"efoley@redhat.com","username":"emma-l-foley"},"date":"2026-04-13 18:17:31.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Code-Review+1, Code-Review+2 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":4},{"id":"b8d335275da7901c9b7d7007f19600b39a5b4341","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-13 18:35:03.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/e95c4029ace74ed39df1fc81b0c26d44\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/35c00ae7afc1471e8ecbd10383c4e5df : SUCCESS in 6m 34s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/f816faa98fd2481c8553cdfceb905c1d : SUCCESS in 3m 27s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/946e5521f7d54cf5b5b702cde1f984e1 : SUCCESS in 4m 39s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/39ce12976fa0450989a86be85083b957 : SUCCESS in 5m 28s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/6079f70a90f649c7887f11d982a141ba : SUCCESS in 9m 34s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/a22d87a7791c4b18a27b1b24f02411be : SUCCESS in 4m 55s","accounts_in_message":[],"_revision_number":4},{"id":"2e72788787b53e15a1af1038a9d009d83e7ccdec","author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"date":"2026-04-14 07:24:14.000000000","message":"Patch Set 4: Code-Review+2","accounts_in_message":[],"_revision_number":4},{"id":"45fbb42c4c4594d41a1be09979f33b5b1c6f4595","author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"date":"2026-04-14 07:39:42.000000000","message":"Patch Set 4: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":4},{"id":"d57807cfa1c3e9d474a64f2b971c34c40509b01a","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-14 07:40:00.000000000","message":"Patch Set 4: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":4},{"id":"25cedb5b8e26b736afcf78cac297c5fceac2750f","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-14 07:50:50.000000000","message":"Patch Set 4: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/365374086742463ea2cc9156cdf871e5\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/8ce491695cf1486eb52a3c04ae8e77e6 : SUCCESS in 3m 45s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/6cb972e45991432e9aaddb484832db2d : SUCCESS in 5m 01s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/237549353b804236b0aec81d096765de : SUCCESS in 5m 18s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/f550708d42bc4d7b978131f71d19cb64 : SUCCESS in 7m 33s","accounts_in_message":[],"_revision_number":4},{"id":"65976502904623cb770d27a230c0c58e27b2e29f","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-14 07:50:50.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":4},{"id":"84c7fc9691b6f11bd5bba76f829f6336ee59341d","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-14 07:51:46.000000000","message":"Patch Set 4:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/05c2062ff5f74967a67816c836784bf5\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/b67f87ae56e64036a61436acd9c67a53 : SUCCESS in 46s","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"adb679930b41cd6301fdeb6c228a505e4bf91f04","revisions":{"d4d2f59543c157a098d6c947ac489f1a547efb60":{"kind":"REWORK","_number":1,"created":"2026-03-18 19:34:49.000000000","uploader":{"_account_id":13177,"name":"Emma Foley","email":"efoley@redhat.com","username":"emma-l-foley"},"ref":"refs/changes/76/981176/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/76/981176/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/76/981176/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/76/981176/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/76/981176/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/76/981176/1"}}},"commit":{"parents":[{"commit":"ea6e19055e23283a3b42f24df0d122098120ae1e","subject":"Patch keystoneclient.v3.client.Client instead of keystone_client.get_client","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/ea6e19055e23283a3b42f24df0d122098120ae1e"}]}],"author":{"name":"Emma Foley","email":"efoley@redhat.com","date":"2026-03-13 21:15:37.000000000","tz":-240},"committer":{"name":"Emma Foley","email":"efoley@redhat.com","date":"2026-03-18 19:29:47.000000000","tz":-240},"subject":"[WIP] Add FakeResource class to test fakes module","message":"[WIP] Add FakeResource class to test fakes module\n\nIntroduces FakeResource, a dict subclass that exposes keys as attributes\nvia __getattr__. This provides a lightweight stand-in for client resource\nobjects returned by keystoneclient.\n\nReplaces inline mock.Mock() objects carrying raw data attributes with\nthe new fakes.FakeResource instances across test_discovery.py,\ntest_manager.py, and test_gnocchi.py. FakeResource gives test data a\nconsistent, inspectable structure while keeping tests decoupled from the\nclient library\u0027s concrete resource classes.\n\nChange-Id: I09c243b3eac60c28b149e61ec9039db83e80e5f8\nSigned-off-by: Emma Foley \u003cefoley@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/d4d2f59543c157a098d6c947ac489f1a547efb60"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/d4d2f59543c157a098d6c947ac489f1a547efb60"}]},"branch":"refs/heads/master"},"47f30d77f60a22e8814ab2a2e047476c079e94e2":{"kind":"REWORK","_number":2,"created":"2026-04-02 17:04:02.000000000","uploader":{"_account_id":13177,"name":"Emma Foley","email":"efoley@redhat.com","username":"emma-l-foley"},"ref":"refs/changes/76/981176/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/76/981176/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/76/981176/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/76/981176/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/76/981176/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/76/981176/2"}}},"commit":{"parents":[{"commit":"ca65ceb81ad6a3bc98eb2ed3391021e05f332e54","subject":"Remove unused trust_id parameter in keystoneclient.get_client()","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/ca65ceb81ad6a3bc98eb2ed3391021e05f332e54"}]}],"author":{"name":"Emma Foley","email":"efoley@redhat.com","date":"2026-03-13 21:15:37.000000000","tz":-240},"committer":{"name":"Emma Foley","email":"efoley@redhat.com","date":"2026-04-02 16:50:14.000000000","tz":-240},"subject":"[WIP] Add FakeKeystoneClient to fakes module","message":"[WIP] Add FakeKeystoneClient to fakes module\n\nAdds typed keystoneclient resource constants and fake manager classes\nto fakes.py to replace the inline mock.MagicMock() objects currently\nused across test_discovery.py, test_manager.py, and test_gnocchi.py.\n\nResource constants (using real keystoneclient types):\n- Domains: DOMAIN_DEFAULT, DOMAIN_HEAT, DOMAIN_DISABLED, DOMAIN_DEFAULT_2\n- Projects: PROJECT_ADMIN, PROJECT_ADMIN_2, PROJECT_SERVICE, PROJECT_DEMO,\n            PROJECT_DISABLED\n\nFake manager classes implement the keystoneclient ResourceManager subset\nused by ceilometer:\n- FakeDomainManager:  list(), find()\n- FakeProjectManager: list(), find()\n\nBoth managers raise keystoneauth1.exceptions.NotFound on a miss and\nkeystoneclient.exceptions.NoUniqueMatch on an ambiguous find(), matching\nthe real HTTP-backed managers.\n\nFakeKeystoneClient wraps these managers and defaults to PROJECT_ADMIN\nand DOMAIN_DEFAULT so tests with standard data need no constructor\narguments. Custom data is passed via the projects\u003d and domains\u003d\nconstructor parameters.\n\nUsing real typed objects rather than MagicMock means attribute access\nis validated and test data is shared and reusable across test modules.\n\nAssisted-By: Claude Sonnet 4.6\nChange-Id: I09c243b3eac60c28b149e61ec9039db83e80e5f8\nSigned-off-by: Emma Foley \u003cefoley@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/47f30d77f60a22e8814ab2a2e047476c079e94e2"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/47f30d77f60a22e8814ab2a2e047476c079e94e2"}]},"branch":"refs/heads/master"},"75a96abc6b7de4d40ffb1991f4b94cad25f710b3":{"kind":"REWORK","_number":3,"created":"2026-04-09 22:45:24.000000000","uploader":{"_account_id":13177,"name":"Emma Foley","email":"efoley@redhat.com","username":"emma-l-foley"},"ref":"refs/changes/76/981176/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/76/981176/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/76/981176/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/76/981176/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/76/981176/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/76/981176/3"}}},"commit":{"parents":[{"commit":"0603c0863c354265abba28059d1c0e705e496c4c","subject":"Add FakeConnectionFixture","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/0603c0863c354265abba28059d1c0e705e496c4c"}]}],"author":{"name":"Emma Foley","email":"efoley@redhat.com","date":"2026-03-13 21:15:37.000000000","tz":-240},"committer":{"name":"Emma Foley","email":"efoley@redhat.com","date":"2026-04-09 21:14:48.000000000","tz":-240},"subject":"Add FakeKeystoneClient to fakes module","message":"Add FakeKeystoneClient to fakes module\n\nAdds typed keystoneclient resource constants and fake manager classes\nto fakes.py to replace the inline mock.MagicMock() objects currently\nused across test_discovery.py, test_manager.py, and test_gnocchi.py.\n\nResource constants (using real keystoneclient types):\n- Domains: DOMAIN_DEFAULT, DOMAIN_HEAT, DOMAIN_DISABLED\n- Projects: PROJECT_ADMIN, PROJECT_SERVICE, PROJECT_DEMO,\n            PROJECT_DISABLED\n\nFake manager classes implement the keystoneclient ResourceManager subset\nused by ceilometer:\n- FakeDomainManager:  list(), find()\n- FakeProjectManager: list(), find()\n\nBoth managers raise keystoneauth1.exceptions.NotFound on a miss and\nkeystoneclient.exceptions.NoUniqueMatch on an ambiguous find(), matching\nthe real HTTP-backed managers.\n\nFakeKeystoneClient wraps these managers and sets default projects and\ndomains attributes so tests with standard data need no constructor\narguments. Custom data is passed via the projects\u003d and domains\u003d\nconstructor parameters.\n\nUsing real typed objects rather than MagicMock means attribute access\nis validated and test data is shared and reusable across test modules.\n\nAssisted-By: Claude Sonnet 4.6\nChange-Id: I09c243b3eac60c28b149e61ec9039db83e80e5f8\nSigned-off-by: Emma Foley \u003cefoley@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/75a96abc6b7de4d40ffb1991f4b94cad25f710b3"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/75a96abc6b7de4d40ffb1991f4b94cad25f710b3"}]},"branch":"refs/heads/master"},"adb679930b41cd6301fdeb6c228a505e4bf91f04":{"kind":"REWORK","_number":4,"created":"2026-04-13 18:17:31.000000000","uploader":{"_account_id":13177,"name":"Emma Foley","email":"efoley@redhat.com","username":"emma-l-foley"},"ref":"refs/changes/76/981176/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/76/981176/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/76/981176/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/76/981176/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/76/981176/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/76/981176/4"}}},"commit":{"parents":[{"commit":"ff46adce85be1bb805acc6d6f5cbb94e0ac96c77","subject":"Add FakeConnectionFixture","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/ff46adce85be1bb805acc6d6f5cbb94e0ac96c77"}]}],"author":{"name":"Emma Foley","email":"efoley@redhat.com","date":"2026-03-13 21:15:37.000000000","tz":-240},"committer":{"name":"Emma Foley","email":"efoley@redhat.com","date":"2026-04-10 19:46:13.000000000","tz":-240},"subject":"Add FakeKeystoneClient to fakes module","message":"Add FakeKeystoneClient to fakes module\n\nAdds typed keystoneclient resource constants and fake manager classes\nto fakes.py to replace the inline mock.MagicMock() objects currently\nused across test_discovery.py, test_manager.py, and test_gnocchi.py.\n\nResource constants (using real keystoneclient types):\n- Domains: DOMAIN_DEFAULT, DOMAIN_HEAT, DOMAIN_DISABLED\n- Projects: PROJECT_ADMIN, PROJECT_SERVICE, PROJECT_DEMO,\n            PROJECT_DISABLED\n\nFake manager classes implement the keystoneclient ResourceManager subset\nused by ceilometer:\n- FakeDomainManager:  list(), find()\n- FakeProjectManager: list(), find()\n\nBoth managers raise keystoneauth1.exceptions.NotFound on a miss and\nkeystoneclient.exceptions.NoUniqueMatch on an ambiguous find(), matching\nthe real HTTP-backed managers.\n\nFakeKeystoneClient wraps these managers and sets default projects and\ndomains attributes so tests with standard data need no constructor\narguments. Custom data is passed via the projects\u003d and domains\u003d\nconstructor parameters.\n\nUsing real typed objects rather than MagicMock means attribute access\nis validated and test data is shared and reusable across test modules.\n\nAssisted-By: Claude Sonnet 4.6\nChange-Id: I09c243b3eac60c28b149e61ec9039db83e80e5f8\nSigned-off-by: Emma Foley \u003cefoley@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/adb679930b41cd6301fdeb6c228a505e4bf91f04"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/adb679930b41cd6301fdeb6c228a505e4bf91f04"}]},"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":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"}}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
