)]}'
{"id":"openstack%2Fwatcher~999390","triplet_id":"openstack%2Fwatcher~master~Ibc3531d469bf28c5f1b29274f4e306011e87fd33","project":"openstack/watcher","branch":"master","attention_set":{"34452":{"account":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"last_update":"2026-07-31 09:44:24.000000000","reason":"Someone else replied on the change"}},"removed_from_attention_set":{"26471":{"account":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"last_update":"2026-09-18 13:20:54.000000000","reason":"removed on reply"}},"hashtags":[],"change_id":"Ibc3531d469bf28c5f1b29274f4e306011e87fd33","subject":"Migrate ironicclient to openstacksdk","status":"NEW","created":"2026-07-31 09:42:59.000000000","updated":"2026-09-18 13:33:53.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":8,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"43fa6dfe1d5a37ee725ec65ca6268d20992b49c0","_number":999390,"virtual_id_number":999390,"owner":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"tag":"autogenerated:zuul:check","value":1,"date":"2026-09-18 13:33:53.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":1,"default_value":0,"optional":true},"Code-Review":{"disliked":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"all":[{"value":-1,"date":"2026-09-18 13:20:54.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":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","value":-1,"default_value":0,"optional":true},"Workflow":{"all":[{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{" 0":"Standard Change","+1":"Important Change","+2":"High Priority Change"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"}],"CC":[{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-07-31 09:44:24.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-07-31 09:54:55.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-07-31 12:15:16.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"}],"messages":[{"id":"4e4d3db85381371bcf604c81e5203d64c65197fc","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-07-31 09:42:59.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"4290c9d166ead1fc334c73771a8acafb319ef23e","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-31 09:44:24.000000000","message":"Patch Set 1:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":1},{"id":"175fe8a77023e2a89a76f08c3b4dad7ba31dfc2b","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-07-31 09:54:55.000000000","message":"Patch Set 1: Code-Review-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/5db8fc36097643398ef1ed4a4adbef3a\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/079059e6b97b422186015b25fc71422f : FAILURE in 9m 43s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/92a68b5ea5d14a2180f8ecfdcea39877 : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":1},{"id":"1e4720b879fcd4aa69f77151fc6c84cf52930a40","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-07-31 10:30:26.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n","accounts_in_message":[],"_revision_number":2},{"id":"8f80e5679e6f90c085a94b1a0fd8073770a39ccf","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-31 10:31:17.000000000","message":"Patch Set 2:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":2},{"id":"2fc68e59df0d71e9c245e7700e117511fcdadb6a","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-07-31 10:42:41.000000000","message":"Patch Set 2: Code-Review-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\nhttps://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/1848819011284b9e8e29ea324890de8d\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/a5b2a183e4114f7ba998b6b648a24e25 : FAILURE in 10m 50s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/0ff1697cfbf94156bd93abac4ceeed52 : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":2},{"id":"877022100079a98dc4bf7c429d0c06286b0f9f35","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-31 11:10:00.000000000","message":"Patch Set 2:\n\n(3 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/0e66092e82334d238c7715c43a68364e\n\n- teim-code-review https://zuul.teim.app/t/main/build/4258ffcaac24491db54eefbaa7ad79b1 : SUCCESS in 9m 06s\n\nWarning:\n  This commit deprecates the [ironic_client] configuration options (api_version, endpoint_type, region_name) and introduces a new [ironic] config group with keystoneauth adapter/session/auth options. These are user-visible, upgrade-impacting changes that require a release note. The analogous Cinder... Impact: Operators upgrading to this release will not be aware that [ironic_client] options are deprecated or that they should migrate to the [ironic] group, potentially causing confusion or missed configuration updates. Recommendation: Add a release note under releasenotes/notes/ following the same pattern as cinderclient-openstacksdk-migration-05ec7aaef6795584.yaml, documenting the upgrade path and deprecation of [ironic_client] options.\n  This migration removes all production callers of OpenStackClients.ironic(), but the method itself and the \u0027from ironicclient import client as irclient\u0027 import remain in clients.py. The analogous Cinder migration removed the equivalent dead code from clients.py. The ironicclient package remains a... Impact: Leaves dead code and an unnecessary runtime dependency on python-ironicclient. Could be confusing for future contributors who encounter the method. Recommendation: In a follow-up or this commit, remove the OpenStackClients.ironic() method, the irclient import, and the corresponding tests in test_clients.py. Alternatively, note this as a known follow-up item.","accounts_in_message":[],"_revision_number":2},{"id":"6c927d863f2ec9c2a962a8951749e0f4f4b9c1de","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-31 12:15:16.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/57f340d98ee543be9b6c5cf4297b3204\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/939697e606e64d23a02fd968787de3f5 : SUCCESS in 5m 11s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/a9337eca1c064b1abb6df8a8742b5047 : SUCCESS in 3m 01s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/91ae681b7d084c09b710e7052ecf3526 : SUCCESS in 5m 24s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/fd893386084846938d97996cc4290400 : SUCCESS in 5m 49s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/95eb02834cc14343b2c9cc2437589ce9 : SUCCESS in 6m 14s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/1f21897547b943ebac0d978d8e2b80ef : SUCCESS in 9m 59s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/df25fc5466194260ae70b8f571179214 : SUCCESS in 3m 47s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/dd9106fc4209400abaa71cab7fe0c7a1 : SUCCESS in 5m 10s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/c252701867c84e8d98175b0964a58f80 : SUCCESS in 28m 30s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/83a18edc560f4fd9856c8aff0f1c0e6e : SUCCESS in 54m 05s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/1e072e1c133b414fbd752e7cdeee4ac9 : SUCCESS in 40m 45s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/e6d751e83cb04a8e89854e658e3b9c74 : SUCCESS in 1h 31m 02s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/6ce44a79b06448a8a32379cb213019d3 : SUCCESS in 1h 35m 43s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/97db206a3d23462dbc17ac263a8fba9e : SUCCESS in 1h 34m 50s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/663eadda69ac4d18ba20d411f5204496 : SUCCESS in 1h 28m 57s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/2dbac95f13064fa89c50d2022c451e7c : SUCCESS in 4m 53s","accounts_in_message":[],"_revision_number":2},{"id":"4c97ee6028e1988af39c066364ae6ef051c6bb8c","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-09-16 16:23:51.000000000","message":"Uploaded patch set 3.\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":3},{"id":"a1d62ceb2dda31b72c0b0329dc1f4e7118d78418","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-09-16 16:24:16.000000000","message":"Patch Set 3:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":3},{"id":"e6cbeb68be4051ef70a0341cd2c8b82eaefd9268","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-09-16 17:37:47.000000000","message":"Patch Set 3:\n\n(1 comment)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/a3130b450faf434bb16521a932e4e90d\n\n- teim-code-review https://zuul.teim.app/t/main/build/031b3e84b60143f3944218b56b367c3c : SUCCESS in 22m 06s\n\nWarning:\n  The change deprecates every [ironic_client] option (api_version, endpoint_type, region_name get deprecated_for_removal with deprecated_since\u003d\u00272026.2\u0027) and introduces the new [ironic] keystoneauth group that operators must move connection settings into, but no release note is added. Each prior client migration in this project documented exactly this operator action in a release note (releasenotes/notes/prepare-openstacksdk-migration-73cc43ab26ed47e6.yaml for nova, cinderclient-openstacksdk-migration-05ec7aaef6795584.yaml, placement-openstacksdk-migration-538668b56ef90196.yaml, keystoneclient-openstacksdk-migration-23fe0611b0052209.yaml), each with upgrade and deprecations sections. Impact: Operators upgrading watcher will not receive release-note guidance that ironic connection settings moved to the [ironic] group and that [ironic_client] options (including endpoint_type, whose handling silently changes via the valid_interfaces fallback) are deprecated, breaking the documentation pattern every earlier client migration followed. Recommendation: Add a releasenotes/notes entry in the style of cinderclient-openstacksdk-migration-05ec7aaef6795584.yaml with an upgrade section (\u0027Connection settings for Ironic should be added directly to the [ironic] section instead of [ironic_client]\u0027) and a deprecations section listing the deprecated [ironic_client] options.\n  After this commit no production code path uses ironicclient: IronicHelper now builds openstacksdk connections, and the change even migrates the last in-repo consumer off OpenStackClients.ironic (watcher/tests/local_fixtures/ironic.py removes the \u0027watcher.common.clients.OpenStackClients.ironic\u0027 MockPatch). Yet watcher/common/clients.py still imports ironicclient (line 19) and keeps the full OpenStackClients.ironic() client factory (lines 179-204), its unit tests remain, and requirements.txt:36 still pins python-ironicclient\u003e\u003d2.5.0. The established pattern for this migration series removed the legacy client and dependency (nova, cinder release notes state \u0027Usage of cinderclient has been removed and python-cinderclient has been removed as a dependency\u0027). Impact: Two parallel Ironic client implementations remain in the tree: the legacy one independently reads the deprecated [ironic_client] options and can drift or break silently, and every deployment continues to install python-ironicclient for code watcher no longer executes, contradicting the migration pattern used for novaclient and cinderclient. Recommendation: Remove OpenStackClients.ironic(), its clients.py import and its unit tests, and drop python-ironicclient from requirements.txt, as done for novaclient/cinderclient; if the cleanup is deliberately deferred, say so in the release note so the remaining dependency is understood as transitional.","accounts_in_message":[],"_revision_number":3},{"id":"d064f550b80acca1b94f5cc41f2adad3e6b5f681","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-16 18:15:34.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/82bdf56ee36d447d8ab162d6b3d2de55\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/e31bef7bd9a84bf7a5eeedc0c964d42e : SUCCESS in 9m 16s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/e5100c4527a44814b299a8a34e91ff18 : SUCCESS in 3m 22s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/7739123d81c74e0e9e409c4f3e9aa495 : SUCCESS in 5m 48s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/938bd675cc8747a78074b8a5fa3af620 : SUCCESS in 6m 41s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/f48081b947c2488db279d0466c84c8c6 : SUCCESS in 7m 00s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/c7ca701520dd4d5d8349cd438ec745c1 : SUCCESS in 9m 09s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/cca9b5cf8940427991f9b25b37d25687 : SUCCESS in 5m 14s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/cbe372d69d96426283eaa6012e0d0dfa : SUCCESS in 5m 27s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/22bd006ac4124ce486dbf9360be1f567 : SUCCESS in 54m 00s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/6c1078faab744691838b1c260727710f : SUCCESS in 42m 35s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/565d3e03f53c4afd97622178c06f0209 : SUCCESS in 38m 04s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/7ee2a581e9984b6dafd9c47de3f64bf1 : SUCCESS in 1h 31m 08s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/f08ec2ba19fb432592e1e923a34b247c : SUCCESS in 1h 36m 20s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/2d3a921a87a54150837628a0b8f2675c : SUCCESS in 1h 37m 51s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/11478b2195b341a8a8d133423f5d86a9 : SUCCESS in 1h 44m 47s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/354c9739ff7a438296fcf4f38feff2f2 : SUCCESS in 5m 22s","accounts_in_message":[],"_revision_number":3},{"id":"9ce42f76bca1606a66405474d32f5bdacf45c4d3","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-09-16 18:32:39.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/0c4290c477c146a29da2dfc6a22ec193\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/13ce704be01140f48c50316d21cc9087 : FAILURE in 8m 08s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/fb95979b073f43688a608bd7b46cb911 : SKIPPED Skipped due to failed job openstack-meta-content-provider-master\n- watcher-s2i-content-provider https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/c74fcd30bfd04901a27b3513e9b4901c : FAILURE in 2m 13s (non-voting)\n- watcher-s2i-tempest https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/3d31bee12de94d308e379a20db810989 : SKIPPED Skipped due to failed job watcher-s2i-content-provider (non-voting)","accounts_in_message":[],"_revision_number":3},{"id":"24d46eb97877eb1855a70956282b8f663cccc118","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-09-17 09:57:40.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":4},{"id":"a70384161d9a33e9dec21596ad08e0a241d229e1","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-09-17 09:57:54.000000000","message":"Patch Set 4:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":4},{"id":"d9e5625ae0848ffc60cfae9ee829d881392a2286","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-09-17 10:04:21.000000000","message":"Uploaded patch set 5: New patch set was added with same tree, parent tree, and commit message as Patch Set 4.","accounts_in_message":[],"_revision_number":5},{"id":"87855bfd191004f5f7bf9d86033450150e23543b","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-09-17 10:04:32.000000000","message":"Patch Set 5:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":5},{"id":"cc94798dcfa6b959cfde6ac5310001a7bc4d0651","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-09-17 11:09:45.000000000","message":"Patch Set 5:\n\n(2 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/da2b9b2fa154461e9427382c66636b0c\n\n- teim-code-review https://zuul.teim.app/t/main/build/09cedfb8295548a6875707ff74e0762e : SUCCESS in 17m 56s\n\nWarning:\n  The commit message states it replaces python-ironicclient with openstacksdk\u0027s baremetal proxy for all Ironic API interactions. Production code no longer calls OpenStackClients.ironic(), yet watcher/common/clients.py still defines that ironicclient-based factory (with its [ironic] api_version/endpoint_type/region_name reads) and requirements.txt still pins python-ironicclient\u003e\u003d2.5.0. The only remaining callers of osc.ironic() are in watcher/tests/unit/common/test_clients.py, so the frozen client stack this migration exists to shed is still installed and still covered by tests. Impact: Watcher keeps shipping and installing an unmaintained client library, and two parallel Ironic client implementations remain in the tree; a future contributor can plausibly call the leftover factory and silently resurrect ironicclient usage with different auth and endpoint handling than the SDK path. Recommendation: In this change or an immediate follow-up, remove OpenStackClients.ironic() and the corresponding test_clients.py cases, and drop python-ironicclient from requirements.txt so the migration is complete.","accounts_in_message":[],"_revision_number":5},{"id":"046f8c849b29781753974dee033ab93c70c4767a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-17 11:56:15.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/d49fd29a17854ecb8709ae713c0dd1c1\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/1dd1de9d8ca846439aaad0f042275d62 : SUCCESS in 9m 05s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/afa47c136ebe4c5ca7cb3ed27f7c68f7 : SUCCESS in 3m 57s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/d4ca85f3c24f4738971e0a1375a99f32 : SUCCESS in 7m 31s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/da57e5f89fa640f5a1237471a587e620 : SUCCESS in 6m 59s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/5801092853f540aab3433e56bc9a3a0f : SUCCESS in 9m 29s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/4789a1b50cfc4994baacd513854cd3ed : SUCCESS in 9m 35s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/f421bf3bee6e4f4da476d92b9cc924cd : SUCCESS in 5m 23s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/a619261914c34947a71e38db22665a23 : SUCCESS in 6m 08s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/71e389be018a49d0b5f53a4445d6b778 : SUCCESS in 52m 40s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/3e80eeb7e2cf4ee1ace3f11280acd00e : SUCCESS in 52m 26s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/691ae8f8df134dcfb5df0e96feaac0d7 : SUCCESS in 42m 40s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/593efe2b7952424db7a14c93fa4bfa88 : SUCCESS in 1h 12m 31s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/05dee0b9e1ad4ff6931a32fb4e3bb7b6 : SUCCESS in 1h 27m 31s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/0c10a7be8cca45bf98fcaf4d2c56e081 : SUCCESS in 1h 21m 14s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/a1e2fc2c90d64c1ba38c136868e3b0b5 : SUCCESS in 1h 43m 24s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/5e1443eb44ef439b8e5ec032a36141c0 : SUCCESS in 5m 15s","accounts_in_message":[],"_revision_number":5},{"id":"b88a9afba43879e870daa12680eb043d1c0a979f","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-09-17 15:18:29.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/9371d83bb99c467ba85c80b1e6f46b19\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/a23a36c72ce744599e572a67158556b3 : FAILURE in 8m 49s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/79b731478f4143529376a085f49f262b : SKIPPED Skipped due to failed job openstack-meta-content-provider-master\n- watcher-s2i-content-provider https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/005d576334914b1fb465a26455f65f8f : NODE_FAILURE Node(set) request 200-0000205922 failed in 0s (non-voting)\n- watcher-s2i-tempest https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/16c13574cae54d42a152f4d9d2dbdc4b : SKIPPED Skipped due to failed job watcher-s2i-content-provider (non-voting)","accounts_in_message":[],"_revision_number":5},{"id":"5eca5e6de06999729609f3cbc7da255fe2c1c834","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"date":"2026-09-18 11:23:28.000000000","message":"Uploaded patch set 6.\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":6},{"id":"452d52e8e3a61f2c66b6576f3d2fc86cfd735098","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-09-18 11:23:43.000000000","message":"Patch Set 6:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":6},{"id":"4d641f1a75ce9bba039ac7ed3e11a70328e4debc","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-09-18 12:56:53.000000000","message":"Patch Set 6:\n\n(2 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/72401082bf694b5f8ef711b468ee1ce3\n\n- teim-code-review https://zuul.teim.app/t/main/build/84d2fcb414fd4c308134d4376fbd0825 : SUCCESS in 20m 14s","accounts_in_message":[],"_revision_number":6},{"id":"ed415662b67938289cbfb7feb3bef7c1af4c693f","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-09-18 13:20:54.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/62c7b122c7d9447b8aee6c0c21128621\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/2abc681b1c764423ba8e98b9f03b03ae : FAILURE in 8m 11s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/a32f7de0d61e4199bd46cbbafb3ddb9c : SKIPPED Skipped due to failed job openstack-meta-content-provider-master\n- watcher-s2i-content-provider https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/5afbfd670298472d9f64ce1f94a89e25 : FAILURE in 2m 16s (non-voting)\n- watcher-s2i-tempest https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/bfe5b7c3f5174376a5fdef5a038be4b0 : SKIPPED Skipped due to failed job watcher-s2i-content-provider (non-voting)","accounts_in_message":[],"_revision_number":6},{"id":"43fa6dfe1d5a37ee725ec65ca6268d20992b49c0","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-18 13:33:53.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/e56a7a833bb849c78a336c0787876b55\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/19dd1be13c5f4e78a97c6d9bcecdc891 : SUCCESS in 7m 47s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/292144375b924d11b21bfc5db101d0f9 : SUCCESS in 5m 06s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/6eac235af54e4335aebbbe2eaa4ca3d2 : SUCCESS in 6m 19s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/0bb648f807bb4e3b8fc82f55d6fc8d60 : SUCCESS in 6m 05s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/b8b1df02533a4400904fdcef5f1346a6 : SUCCESS in 9m 04s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0e8169f9c09149a2b29afae6f8351dd9 : SUCCESS in 10m 34s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/fe78136708924fbf9114f4ba12fa9076 : SUCCESS in 5m 01s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/d23628ab8de84da9a2badc8f89f130a0 : SUCCESS in 4m 56s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/e0da52d5c24d4b25b93b230c4dafe1fb : SUCCESS in 39m 09s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/ec8f344fc5dc474cade26d7ba0345161 : SUCCESS in 51m 19s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/e901a241144e45e0852151f2b0bb41d5 : SUCCESS in 23m 58s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/57f2624f95a84355bd6515f7cbe87833 : SUCCESS in 1h 44m 39s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/d7e57905b97d43ce98ff5cb3b4cff186 : SUCCESS in 1h 03m 12s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/e19bd857238940198ca2591da6c9bd70 : SUCCESS in 1h 28m 17s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/e2237bb3730442f381f913f1c8774e78 : SUCCESS in 1h 40m 32s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/5635281d35b34c10b4a27d7718287609 : SUCCESS in 4m 45s","accounts_in_message":[],"_revision_number":6}],"current_revision_number":6,"current_revision":"f8896b8d3652ab2919a63d7cd810e6de719439a1","revisions":{"5e1440653695b9e137adb663b8a515b847ae42c9":{"kind":"REWORK","_number":1,"created":"2026-07-31 09:42:59.000000000","uploader":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"ref":"refs/changes/90/999390/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/90/999390/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/90/999390/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/90/999390/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/90/999390/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/90/999390/1"}}},"commit":{"parents":[{"commit":"bc5c0a86915222f81fb573845f9e1b32622122c6","subject":"Add IronicNode wrapper dataclass","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/bc5c0a86915222f81fb573845f9e1b32622122c6"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-03-20 09:35:06.000000000","tz":60},"committer":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-07-31 09:42:39.000000000","tz":120},"subject":"Migrate ironicclient to openstacksdk","message":"Migrate ironicclient to openstacksdk\n\nReplace python-ironicclient with openstacksdk\u0027s baremetal proxy\nfor all Ironic API interactions. This follows the same migration\npattern applied to the Nova client.\n\nKey changes:\n- Add [ironic] config group with keystoneauth adapter/session/auth\n  options, falling back to [watcher_clients_auth] if unconfigured\n- Deprecate [ironic_client] options in favor of [ironic] group\n- Update IronicHelper to create SDK connections directly instead\n  of using OpenStackClients.ironic()\n- Rename IronicNode.from_ironicclient to from_openstacksdk with\n  updated attribute mappings (id, is_maintenance)\n- Update test utilities to create openstacksdk Node objects\n- Add ironic keystoneauth config to devstack plugin\n\nGenerated-By: claude-code (claude-opus-4.6)\nChange-Id: Ibc3531d469bf28c5f1b29274f4e306011e87fd33\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/5e1440653695b9e137adb663b8a515b847ae42c9"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/5e1440653695b9e137adb663b8a515b847ae42c9"}]},"branch":"refs/heads/master"},"8a55d3be4e9ef3e80eb797d62adb0a8f0f896aae":{"kind":"REWORK","_number":2,"created":"2026-07-31 10:30:26.000000000","uploader":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"ref":"refs/changes/90/999390/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/90/999390/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/90/999390/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/90/999390/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/90/999390/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/90/999390/2"}}},"commit":{"parents":[{"commit":"f0ac21feabe598efd1e91ae679ba0493f9552bc8","subject":"Add IronicNode wrapper dataclass","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/f0ac21feabe598efd1e91ae679ba0493f9552bc8"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-03-20 09:35:06.000000000","tz":60},"committer":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-07-31 10:28:29.000000000","tz":120},"subject":"Migrate ironicclient to openstacksdk","message":"Migrate ironicclient to openstacksdk\n\nReplace python-ironicclient with openstacksdk\u0027s baremetal proxy\nfor all Ironic API interactions. This follows the same migration\npattern applied to the Nova client.\n\nKey changes:\n- Add [ironic] config group with keystoneauth adapter/session/auth\n  options, falling back to [watcher_clients_auth] if unconfigured\n- Deprecate [ironic_client] options in favor of [ironic] group\n- Update IronicHelper to create SDK connections directly instead\n  of using OpenStackClients.ironic()\n- Rename IronicNode.from_ironicclient to from_openstacksdk with\n  updated attribute mappings (id, is_maintenance)\n- Update test utilities to create openstacksdk Node objects\n- Add ironic keystoneauth config to devstack plugin\n\nGenerated-By: claude-code (claude-opus-4.6)\nChange-Id: Ibc3531d469bf28c5f1b29274f4e306011e87fd33\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/8a55d3be4e9ef3e80eb797d62adb0a8f0f896aae"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/8a55d3be4e9ef3e80eb797d62adb0a8f0f896aae"}]},"branch":"refs/heads/master"},"37edc9f03d69672bb7a2ab48f177d6de6837e657":{"kind":"REWORK","_number":3,"created":"2026-09-16 16:23:51.000000000","uploader":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"ref":"refs/changes/90/999390/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/90/999390/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/90/999390/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/90/999390/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/90/999390/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/90/999390/3"}}},"commit":{"parents":[{"commit":"a9993136ba2145b89ee7da92472cc677f43ee1c4","subject":"Add IronicNode wrapper dataclass","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/a9993136ba2145b89ee7da92472cc677f43ee1c4"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-03-20 09:35:06.000000000","tz":60},"committer":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-09-16 16:23:41.000000000","tz":120},"subject":"Migrate ironicclient to openstacksdk","message":"Migrate ironicclient to openstacksdk\n\nReplace python-ironicclient with openstacksdk\u0027s baremetal proxy\nfor all Ironic API interactions. This follows the same migration\npattern applied to the Nova client.\n\nKey changes:\n- Add [ironic] config group with keystoneauth adapter/session/auth\n  options, falling back to [watcher_clients_auth] if unconfigured\n- Deprecate [ironic_client] options in favor of [ironic] group\n- Update IronicHelper to create SDK connections directly instead\n  of using OpenStackClients.ironic()\n- Rename IronicNode.from_ironicclient to from_openstacksdk with\n  updated attribute mappings (id, is_maintenance)\n- Update test utilities to create openstacksdk Node objects\n- Add ironic keystoneauth config to devstack plugin\n\nGenerated-By: claude-code (claude-opus-4.6)\nChange-Id: Ibc3531d469bf28c5f1b29274f4e306011e87fd33\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/37edc9f03d69672bb7a2ab48f177d6de6837e657"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/37edc9f03d69672bb7a2ab48f177d6de6837e657"}]},"branch":"refs/heads/master"},"5fa3ce9508e6f530b5b47f07f9db9cf38a87acc5":{"kind":"REWORK","_number":4,"created":"2026-09-17 09:57:40.000000000","uploader":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"ref":"refs/changes/90/999390/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/90/999390/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/90/999390/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/90/999390/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/90/999390/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/90/999390/4"}}},"commit":{"parents":[{"commit":"56e42f70b1b822a7004b7ebb5d150087b56be2de","subject":"Add IronicNode wrapper dataclass","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/56e42f70b1b822a7004b7ebb5d150087b56be2de"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-03-20 09:35:06.000000000","tz":60},"committer":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-09-17 09:52:08.000000000","tz":120},"subject":"Migrate ironicclient to openstacksdk","message":"Migrate ironicclient to openstacksdk\n\nReplace python-ironicclient with openstacksdk\u0027s baremetal proxy\nfor all Ironic API interactions. This follows the same migration\npattern applied to the Nova client.\n\nKey changes:\n- Add [ironic] config group with keystoneauth adapter/session/auth\n  options, falling back to [watcher_clients_auth] if unconfigured\n- Deprecate [ironic_client] options in favor of [ironic] group\n- Update IronicHelper to create SDK connections directly instead\n  of using OpenStackClients.ironic()\n- Rename IronicNode.from_ironicclient to from_openstacksdk with\n  updated attribute mappings (id, is_maintenance)\n- Update test utilities to create openstacksdk Node objects\n- Add ironic keystoneauth config to devstack plugin\n\nGenerated-By: claude-code (claude-opus-4.6)\nChange-Id: Ibc3531d469bf28c5f1b29274f4e306011e87fd33\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/5fa3ce9508e6f530b5b47f07f9db9cf38a87acc5"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/5fa3ce9508e6f530b5b47f07f9db9cf38a87acc5"}]},"branch":"refs/heads/master"},"3271f97c39625bc4c0a1c1c10c2a7b03637285c3":{"kind":"NO_CHANGE","_number":5,"created":"2026-09-17 10:04:21.000000000","uploader":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"ref":"refs/changes/90/999390/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/90/999390/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/90/999390/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/90/999390/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/90/999390/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/90/999390/5"}}},"commit":{"parents":[{"commit":"515ff7507c5e99e329990934b83bdc44aea26c53","subject":"Add IronicNode wrapper dataclass","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/515ff7507c5e99e329990934b83bdc44aea26c53"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-03-20 09:35:06.000000000","tz":60},"committer":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-09-17 10:04:14.000000000","tz":120},"subject":"Migrate ironicclient to openstacksdk","message":"Migrate ironicclient to openstacksdk\n\nReplace python-ironicclient with openstacksdk\u0027s baremetal proxy\nfor all Ironic API interactions. This follows the same migration\npattern applied to the Nova client.\n\nKey changes:\n- Add [ironic] config group with keystoneauth adapter/session/auth\n  options, falling back to [watcher_clients_auth] if unconfigured\n- Deprecate [ironic_client] options in favor of [ironic] group\n- Update IronicHelper to create SDK connections directly instead\n  of using OpenStackClients.ironic()\n- Rename IronicNode.from_ironicclient to from_openstacksdk with\n  updated attribute mappings (id, is_maintenance)\n- Update test utilities to create openstacksdk Node objects\n- Add ironic keystoneauth config to devstack plugin\n\nGenerated-By: claude-code (claude-opus-4.6)\nChange-Id: Ibc3531d469bf28c5f1b29274f4e306011e87fd33\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/3271f97c39625bc4c0a1c1c10c2a7b03637285c3"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/3271f97c39625bc4c0a1c1c10c2a7b03637285c3"}]},"branch":"refs/heads/master"},"f8896b8d3652ab2919a63d7cd810e6de719439a1":{"kind":"REWORK","_number":6,"created":"2026-09-18 11:23:28.000000000","uploader":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"ref":"refs/changes/90/999390/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/90/999390/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/90/999390/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/90/999390/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/90/999390/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/90/999390/6"}}},"commit":{"parents":[{"commit":"0a3b478537ce9158045a80aef62bfacb369d5814","subject":"Add IronicNode wrapper dataclass","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/0a3b478537ce9158045a80aef62bfacb369d5814"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-03-20 09:35:06.000000000","tz":60},"committer":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-09-18 11:15:02.000000000","tz":120},"subject":"Migrate ironicclient to openstacksdk","message":"Migrate ironicclient to openstacksdk\n\nReplace python-ironicclient with openstacksdk\u0027s baremetal proxy\nfor all Ironic API interactions. This follows the same migration\npattern applied to the Nova client.\n\nKey changes:\n- Add [ironic] config group with keystoneauth adapter/session/auth\n  options, falling back to [watcher_clients_auth] if unconfigured\n- Deprecate [ironic_client] options in favor of [ironic] group\n- Update IronicHelper to create SDK connections directly instead\n  of using OpenStackClients.ironic()\n- Rename IronicNode.from_ironicclient to from_openstacksdk with\n  updated attribute mappings (id, is_maintenance)\n- Update test utilities to create openstacksdk Node objects\n- Add ironic keystoneauth config to devstack plugin\n\nGenerated-By: claude-code (claude-opus-4.6)\nChange-Id: Ibc3531d469bf28c5f1b29274f4e306011e87fd33\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/f8896b8d3652ab2919a63d7cd810e6de719439a1"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/f8896b8d3652ab2919a63d7cd810e6de719439a1"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"}},{"label":"Workflow","status":"MAY"},{"label":"Review-Priority","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Review-Priority","description":"Review Priority","status":"NOT_APPLICABLE","is_legacy":false,"applicability_expression_result":{"fulfilled":false,"status":"FAIL"},"submittability_expression_result":{"expression":"is:true","fulfilled":true,"status":"NOT_EVALUATED","passing_atoms":[],"failing_atoms":[],"atom_explanations":{}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
