)]}'
{"id":"openstack%2Fceilometer~981177","triplet_id":"openstack%2Fceilometer~master~I7be5c139e47ef2049a0bc1010d904af2cbfbaeae","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:28.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:27.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:53.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"I7be5c139e47ef2049a0bc1010d904af2cbfbaeae","subject":"Fix polling tests to use keystoneclient v3 and FakeKeystoneClient","status":"MERGED","created":"2026-03-18 19:34:49.000000000","updated":"2026-04-14 07:52:45.000000000","submitted":"2026-04-14 07:50:53.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":3,"unresolved_comment_count":2,"has_review_started":true,"submission_id":"981177-ceilometer_use_openstack_sdk","meta_rev_id":"a73cf1dc8a924faf7ef80828700a93fdd25a27b6","_number":981177,"virtual_id_number":981177,"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:53.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:28.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:27.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:28.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:13:39.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:50:53.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":"2b64bd71d55d0a4988c901b3be5007e4b581401b","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":"3aece0ebfc27b21d8e43acbbdf312bd6e4225790","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/0a5afaf8b9994132b1ad5f29dd2406ad\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/bd033cf788c94b28b3f0405ee88db993 : SUCCESS in 5m 07s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/f99e9039cee74852b93b17ea1673b6c8 : SUCCESS in 3m 15s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/42c0cc00dec04c9caac027609bc8ed41 : SUCCESS in 3m 48s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/23a94bdd5f194e0e9b689036d0e4be27 : SUCCESS in 2m 16s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/31eeb5ef174544c99ac26a2d042a2768 : SUCCESS in 7m 27s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/469524502be349ac86f64f2efab29d69 : SUCCESS in 7m 34s","accounts_in_message":[],"_revision_number":1},{"id":"9932859cf07aefca49ef5adc0b35fb943d351008","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":"97d2df7eef86df0487ff9153a4dee9719964abe9","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-02 17:19:25.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/a7b0871e061344e6b3f284cda3bed36e\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/a3850a366a1e4734862a952f932d2634 : SUCCESS in 5m 38s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/bd4f6c967c0b4fb19b78166c7d277170 : SUCCESS in 4m 58s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/3c19bd6c298347e1b39a393573abcea6 : SUCCESS in 4m 03s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/9afdded1b3a245bb956f640925f28d5e : SUCCESS in 2m 52s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/4a4852af488a4a438c1c7100aa326430 : SUCCESS in 4m 59s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/dae3699e520f484db04f7114f11aede4 : SUCCESS in 7m 54s","accounts_in_message":[],"_revision_number":2},{"id":"aba24ca4dd1293474a1fb7c7ebf193195f41c691","author":{"_account_id":13177,"name":"Emma Foley","email":"efoley@redhat.com","username":"emma-l-foley"},"date":"2026-04-09 19:25:52.000000000","message":"Patch Set 2:\n\n(2 comments)","accounts_in_message":[],"_revision_number":2},{"id":"e0a12e23e448c40c61d29343ba9098a5fd8796d2","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":"35d90e6b0606b882cd334df9364b3ee31452d579","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-09 23:00:34.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/4e524597234849d488b51d6c5b190a2c\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/287141ee76d74c30bf34f180707ab410 : SUCCESS in 3m 49s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/ec8b8563f9b446c88f641017121ab9d2 : SUCCESS in 3m 22s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/58818e2e1bfb4469bbaf8a8be91f2a1c : SUCCESS in 7m 53s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/72338af01706498eabbcbfdf9fcec74a : SUCCESS in 4m 04s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/ab2dacb6b5604886bbee6a9a103d69be : SUCCESS in 4m 41s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/08be8cf117724109ade8e6fa802a6fda : SUCCESS in 7m 02s","accounts_in_message":[],"_revision_number":3},{"id":"5b4f101649bf40c6a2c0ad26469f4758eaa1bfce","author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"date":"2026-04-13 06:13:39.000000000","message":"Patch Set 3: Code-Review+2","accounts_in_message":[],"_revision_number":3},{"id":"03af396679617fa0c9a28743939558dce874b927","author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"date":"2026-04-13 07:50:53.000000000","message":"Patch Set 3: Code-Review+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"854c32e39db9c23af258aa55506e7789942dfeb2","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: Patch Set 3 was rebased. Commit message was updated.\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":"8091077fc70919a5d17a70d04d74f1ef8c3b917e","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-13 18:34:41.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/2067801f6d464da5bea94102ac8cd3c4\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/793e382d21724cb2a650dc0e52659579 : SUCCESS in 6m 19s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/2e384b99b3844eeeabf85186d75ecf6f : SUCCESS in 3m 50s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/9322774001274d0e956ad5bbd87b943d : SUCCESS in 5m 04s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/a6cb343051da4d329a98f1c5d3e69a10 : SUCCESS in 4m 53s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/a4f7a57df1944de6a1bd3adec1d9777d : SUCCESS in 6m 35s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/92d3c4716d5a4955810f8da82c18d7c6 : SUCCESS in 10m 09s","accounts_in_message":[],"_revision_number":4},{"id":"8b398cacd6b8f76d23420ed8315e4a65e98e4c26","author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"date":"2026-04-14 07:24:27.000000000","message":"Patch Set 4: Code-Review+2","accounts_in_message":[],"_revision_number":4},{"id":"502ef575a31b0549231b2d8bce5ecfd771ef17b9","author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"date":"2026-04-14 07:39:28.000000000","message":"Patch Set 4: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":4},{"id":"9852b27a9b4a0fe343a7a812c0fd8c359deba1a2","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-14 07:40:02.000000000","message":"Patch Set 4: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":4},{"id":"077b365a39ea9e1c4aa313e39fa54d29b61d37a3","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-14 07:50:53.000000000","message":"Patch Set 4: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/55fbfcb00a574cec90e6e76e66f753c6\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/3e1a589f0597492babaa9d1d3e4c1c0e : SUCCESS in 2m 33s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/19bdfb82350b41c385cb721c726a1c59 : SUCCESS in 4m 27s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/d0a6a683b2c8425da5feae740d03e716 : SUCCESS in 5m 28s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/3bda008d8b0a438fa83229c0b260088f : SUCCESS in 6m 18s","accounts_in_message":[],"_revision_number":4},{"id":"f3de24a88d7e90ab5f6fdd21d72b48225ff91335","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-14 07:50:53.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":4},{"id":"a73cf1dc8a924faf7ef80828700a93fdd25a27b6","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-14 07:52:45.000000000","message":"Patch Set 4:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/35052313abb349df8e39d815d8751327\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/99efc86cdb524335b570c97646d11c9f : SUCCESS in 50s","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"fccef61e455e830576bd956f354e7308d2286eb5","revisions":{"6076679ad6646f9664db125d6ecfb1c9f3efface":{"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/77/981177/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/77/981177/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/77/981177/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/77/981177/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/77/981177/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/77/981177/1"}}},"commit":{"parents":[{"commit":"d4d2f59543c157a098d6c947ac489f1a547efb60","subject":"[WIP] Add FakeResource class to test fakes module","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/d4d2f59543c157a098d6c947ac489f1a547efb60"}]}],"author":{"name":"Emma Foley","email":"efoley@redhat.com","date":"2026-03-10 18:53:39.000000000","tz":-240},"committer":{"name":"Emma Foley","email":"efoley@redhat.com","date":"2026-03-18 19:29:50.000000000","tz":-240},"subject":"[WIP][test] Add FakeKeystoneClient to replace mock.Mock for keystone test data","message":"[WIP][test] Add FakeKeystoneClient to replace mock.Mock for keystone test data\n\nTODO: Add in some set of data that represents a default cloud when creating Fakekeystoneclient.\n\nThis makes it easier to use, and the constructor can still be used to\ncreate some non-default clouds\n\nThe keystoneclient.v3.client.Client is currently mocked with\nmock.MagicMock() in discovery and polling tests, with return values\nset inline per-test. This makes tests hard to read and couples them\nto the internal structure of the client.\n\nFakeKeystoneClient provides a minimal emulation of the keystoneclient\u0027s\nproject, domain and user managers, each accepting their data via the\nconstructor. The managers implement the subset of the keystoneclient\ninterface used by ceilometer:\n\n - FakeProjectManager: list(), get(), find()\n - FakeDomainManager:  list(), find()\n - FakeUserManager:    get()\n\nAll managers raise keystoneauth1.exceptions.NotFound on a miss,\nmatching the behaviour of the real HTTP-backed managers.\n\nThis is part of the ongoing migration toward openstacksdk. Once\nkeystoneclient is replaced, FakeKeystoneClient can be retired and\ntests updated to use real SDK objects directly.\n\nCo-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\nChange-Id: I7be5c139e47ef2049a0bc1010d904af2cbfbaeae\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/6076679ad6646f9664db125d6ecfb1c9f3efface"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/6076679ad6646f9664db125d6ecfb1c9f3efface"}]},"branch":"refs/heads/master"},"05704c6d9c2b6491dce2ccce04858aeccf61a3ff":{"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/77/981177/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/77/981177/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/77/981177/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/77/981177/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/77/981177/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/77/981177/2"}}},"commit":{"parents":[{"commit":"47f30d77f60a22e8814ab2a2e047476c079e94e2","subject":"[WIP] Add FakeKeystoneClient to fakes module","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/47f30d77f60a22e8814ab2a2e047476c079e94e2"}]}],"author":{"name":"Emma Foley","email":"efoley@redhat.com","date":"2026-03-10 18:53:39.000000000","tz":-240},"committer":{"name":"Emma Foley","email":"efoley@redhat.com","date":"2026-04-02 16:50:17.000000000","tz":-240},"subject":"[WIP] Replace inline mocks with FakeKeystoneClient","message":"[WIP] Replace inline mocks with FakeKeystoneClient\n\nThe keystoneclient.v3.client.Client was mocked with bare mock.MagicMock()\nin discovery, polling, and gnocchi tests, with return values set inline\nper-test. This couples tests to the internal structure of the client and\nmakes test data hard to read and reuse.\n\nIn test_discovery.py, FakeKeystoneClient is wrapped with mock.Mock(wraps\u003d)\nso tests can assert on calls (domains.list, projects.list) while still\nexercising real manager logic rather than configured return values.\n\nAlso fixes test_manager.py to patch keystoneclient.v3.client.Client\ninstead of the removed v2_0 client, and corrects test_when_keystone_fail\nto reset the cached keystone state before simulating an unavailable\nkeystone, matching the actual code path.\n\nAssisted-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\nChange-Id: I7be5c139e47ef2049a0bc1010d904af2cbfbaeae\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/05704c6d9c2b6491dce2ccce04858aeccf61a3ff"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/05704c6d9c2b6491dce2ccce04858aeccf61a3ff"}]},"branch":"refs/heads/master"},"f9239b7e2fc2affdb2b1180c6a4391999756f804":{"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/77/981177/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/77/981177/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/77/981177/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/77/981177/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/77/981177/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/77/981177/3"}}},"commit":{"parents":[{"commit":"75a96abc6b7de4d40ffb1991f4b94cad25f710b3","subject":"Add FakeKeystoneClient to fakes module","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/75a96abc6b7de4d40ffb1991f4b94cad25f710b3"}]}],"author":{"name":"Emma Foley","email":"efoley@redhat.com","date":"2026-03-10 18:53:39.000000000","tz":-240},"committer":{"name":"Emma Foley","email":"efoley@redhat.com","date":"2026-04-09 21:14:59.000000000","tz":-240},"subject":"Fix polling tests to use keystoneclient v3 and FakeKeystoneClient","message":"Fix polling tests to use keystoneclient v3 and FakeKeystoneClient\n\nBaseAgent.setUp() was patching the removed keystoneclient.v2_0.client.Client\nwith a bare mock.Mock(). Update it to patch keystoneclient.v3.client.Client\nusing FakeKeystoneClient() so the test setup matches the production code path\nand uses a realistic fake.\n\ntest_when_keystone_fail also patched the removed v2_0 client. Fix it to\npatch keystoneclient.v3.client.Client instead, and reset the manager\u0027s\ncached keystone state (mgr._keystone and mgr._keystone_last_exception)\nbefore installing the failing mock. Without the reset, the manager reuses\nthe working client cached during setUp() and never re-initialises through\nthe constructor, so the simulated failure is never triggered.\n\nAssisted-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\nChange-Id: I7be5c139e47ef2049a0bc1010d904af2cbfbaeae\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/f9239b7e2fc2affdb2b1180c6a4391999756f804"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/f9239b7e2fc2affdb2b1180c6a4391999756f804"}]},"branch":"refs/heads/master"},"fccef61e455e830576bd956f354e7308d2286eb5":{"kind":"TRIVIAL_REBASE_WITH_MESSAGE_UPDATE","_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/77/981177/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ceilometer","ref":"refs/changes/77/981177/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/77/981177/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/77/981177/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ceilometer refs/changes/77/981177/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ceilometer refs/changes/77/981177/4"}}},"commit":{"parents":[{"commit":"adb679930b41cd6301fdeb6c228a505e4bf91f04","subject":"Add FakeKeystoneClient to fakes module","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/adb679930b41cd6301fdeb6c228a505e4bf91f04"}]}],"author":{"name":"Emma Foley","email":"efoley@redhat.com","date":"2026-03-10 18:53:39.000000000","tz":-240},"committer":{"name":"Emma Foley","email":"efoley@redhat.com","date":"2026-04-13 12:01:23.000000000","tz":-240},"subject":"Fix polling tests to use keystoneclient v3 and FakeKeystoneClient","message":"Fix polling tests to use keystoneclient v3 and FakeKeystoneClient\n\nBaseAgent.setUp() was patching the removed\nkeystoneclient.v2_0.client.Client with a bare mock.Mock().\nUpdate it to patch keystoneclient.v3.client.Client using\nFakeKeystoneClient() so the test setup matches the\nproduction code path and uses a realistic fake.\n\ntest_when_keystone_fail also patched the removed v2_0\nclient. Fix it to patch keystoneclient.v3.client.Client\ninstead, and reset the manager\u0027s cached keystone state\n(mgr._keystone and mgr._keystone_last_exception) before\ninstalling the failing mock. Without the reset, the manager\nreuses the working client cached during setUp() and never\nre-initialises through the constructor, so the simulated\nfailure is never triggered.\n\nAssisted-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\nChange-Id: I7be5c139e47ef2049a0bc1010d904af2cbfbaeae\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/fccef61e455e830576bd956f354e7308d2286eb5"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ceilometer/commit/fccef61e455e830576bd956f354e7308d2286eb5"}]},"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":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"}},{"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":""}}}]}
