)]}'
{"id":"openstack%2Fwatcher~999389","triplet_id":"openstack%2Fwatcher~master~I9e2852b0a2874bcd5e8673bb8537240623d13953","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-09-18 19:48:47.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-17 15:17:30.000000000","reason":"removed on reply"}},"hashtags":[],"change_id":"I9e2852b0a2874bcd5e8673bb8537240623d13953","subject":"Add IronicNode wrapper dataclass","status":"NEW","created":"2026-07-31 09:42:59.000000000","updated":"2026-09-18 19:48:47.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":5,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"e1504b379c5e3f0b8cf64a2521d9c2eb315af5a4","_number":999389,"virtual_id_number":999389,"owner":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},{"tag":"autogenerated:zuul:check","value":-1,"date":"2026-09-18 13:26:20.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 19:48:47.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:22.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:55:22.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:16: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"}],"messages":[{"id":"590a83388bcd307d863edfd509a991896cb3c6be","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":"542600379fa451448966c3ea8ada2237cf6e7b7f","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:22.000000000","message":"Patch Set 1:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":1},{"id":"66bbc55ccb2aa19049bf797bebec620d7bf949d7","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-07-31 09:55:22.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/d78a75e8cdc545bda696d7039682b1c4\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/c619fc4206a74cf2a412987d4f045878 : FAILURE in 10m 03s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/3dc6c735ec354db68df1cab8c8ab2fe0 : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":1},{"id":"ce8bcb8ef34ecfed224ad376a066cce884cd53b6","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: Patch Set 1 was rebased.\n\nCopied Votes:\n* Code-Review-1 (copy condition: \"**changekind:TRIVIAL_REBASE** OR is:MIN\")\n","accounts_in_message":[],"_revision_number":2},{"id":"12af5e0d8202cd16c4afb22e08d88889e3982c73","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:16.000000000","message":"Patch Set 2:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":2},{"id":"a82b9448d1580eca455274152dd39cd7335ccd57","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-07-31 10:41:45.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/d99257ed4b754347af964e4f14916e64\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/879f4ff0bf5e4116861583f5b014733c : FAILURE in 9m 50s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/93e7a5d846234160978a7976d1f7ab42 : SKIPPED Skipped due to failed job openstack-meta-content-provider-master","accounts_in_message":[],"_revision_number":2},{"id":"b49024ec172d0fad8e6d74633eab59e30321e9b9","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:00:43.000000000","message":"Patch Set 2:\n\n(2 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/9bc8b78ef3d248238baa1bb24d5eda86\n\n- teim-code-review https://zuul.teim.app/t/main/build/33a98de104b845d7a62a37967b381720 : SUCCESS in 7m 27s","accounts_in_message":[],"_revision_number":2},{"id":"956815cf8de2586b9f01ad6cc45a45dc8f0c2c9b","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-31 12:16:14.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/ff393cab43b24941be789b1350279eb0\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/b07766cd78454ebe92eac583c6830201 : SUCCESS in 6m 55s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/a3f0b9ee6cb4455ab4080b49f742ee80 : SUCCESS in 4m 59s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/d46f80e11e4a4346962cfbd8cafcd25b : SUCCESS in 5m 58s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/b90eadf16f3749b482f82a626f221c76 : SUCCESS in 5m 37s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/65c67185de2f4bc48fc7e8e9f9c0f8ab : SUCCESS in 8m 17s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/378b0145f3a44b5a927c82444cf5c4b3 : SUCCESS in 8m 53s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/023ceb988c644b16ac63135695a182ff : SUCCESS in 6m 00s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/33542fd1c1414df7a67da10e73f59d2a : SUCCESS in 7m 59s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/931d8c6dd21349339870db0ae60cd117 : SUCCESS in 29m 37s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/bcca6ff1db084cb8baa0ca3503456a6a : SUCCESS in 43m 08s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/75777b4ee87c457992bc2b9b484730b9 : SUCCESS in 28m 07s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/da47636135fd43b9a68ec1fe09b5887c : SUCCESS in 51m 22s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/981581ff80ed4005b5cfd59693eb8c5f : SUCCESS in 1h 12m 26s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/f7b5cb4c0d9b43dea145c1481440912f : SUCCESS in 1h 39m 54s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/3c80bffaa103478da1a6a2d67018322a : SUCCESS in 1h 39m 24s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/8fb11c309d474c188a5d48b468ccdc9f : SUCCESS in 7m 17s","accounts_in_message":[],"_revision_number":2},{"id":"48b00e4f2be8545ac444160f9ccabcdd274c8249","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: Patch Set 2 was rebased.\n\nCopied Votes:\n* Code-Review-1 (copy condition: \"**changekind:TRIVIAL_REBASE** OR is:MIN\")\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":3},{"id":"52c629160cb8ae65c073dff172a12c68d18bcb83","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:15.000000000","message":"Patch Set 3:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":3},{"id":"18c3acaa24738d2b2b461e6160324e47103151b3","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:15:37.000000000","message":"Patch Set 3:\n\n(2 comments)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/2a464e87cdf94979bbba91af05ca2794\n\n- teim-code-review https://zuul.teim.app/t/main/build/546908e5271a44eba8c23b7fe5fd6a3b : SUCCESS in 14m 19s\n\nWarning:\n  The commit body states \u0027Move usage of ironicclient in the maas_helper to IronicHelper.\u0027 The commit only moves ironicclient usage in watcher/common/metal_helper/ironic.py (the ironic metal helper); the MaaS helper (watcher/common/metal_helper/maas.py) uses python-libmaas, contains no ironicclient usage, and no maas_helper module exists anywhere in the repository.\n\n**Severity**: SUGGESTION | **Confidence**: 0.85\n\n**Impact**: Permanent change history directs future readers verifying this refactor to the MAAS helper; someone auditing when ironicclient usage left the MAAS path, or confirming which helper was refactored, will find no matching change and may doubt the history.\n\n**Recommendation**:\nAmend the sentence to name the ironic metal helper, e.g. \u0027Move usage of ironicclient in the metal_helper to IronicHelper\u0027, before the change merges.","accounts_in_message":[],"_revision_number":3},{"id":"69ab822758e93f61cee3b2b250b26bd68b401994","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-16 18:15:33.000000000","message":"Patch Set 3: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/cfc97dcd8f7545d0aad41eca43881334\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/28ecad9dff9e440da27acc249a9ce4bb : SUCCESS in 7m 12s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/46e4d7cdc2d64ae4988a68f1687568d6 : SUCCESS in 4m 08s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/183e4f8068f343c1a005cdf7af8e8b18 : SUCCESS in 6m 54s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/2f20895b32554a02999ccc937ee82603 : SUCCESS in 5m 51s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/f195f8dfb4344acb97474e075afc3861 : SUCCESS in 10m 58s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/2bb270628eb34031a3d25a7bc260c60e : SUCCESS in 5m 38s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/77659e4e443a47cda066959f17f8b224 : SUCCESS in 5m 14s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/dfdd0c7eea634615bce466d63117eabc : SUCCESS in 5m 42s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/cacc78cb5bf046149bbcb05b58a69a61 : SUCCESS in 58m 26s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/df1d7603bb6447ba90023738589a996b : SUCCESS in 51m 07s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/20e03eb2450e462c81a14043f2a88ebe : SUCCESS in 18m 51s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/cca179c16f37466a83c5dd04dc3a88e9 : FAILURE in 1h 20m 58s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/c9f1e713bd2047fea788081481291dab : SUCCESS in 58m 39s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/c595db1dc7d34ae4b2e1fdf5ebba2342 : SUCCESS in 1h 36m 46s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/d4de40ae7c0f4ee784d392fb6bbbdb95 : SUCCESS in 1h 44m 06s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/d9310195679f456a89bf4a49e69418c8 : SUCCESS in 7m 18s","accounts_in_message":[],"_revision_number":3},{"id":"7010778ea66cfbdebb36cf193cb9a4f0195d4877","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-09-16 18:32:00.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/9acbb959c20540afa3dc2f57c40b1564\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/c4f616a8fe6d46cba5b3dc62ad3f5d77 : FAILURE in 8m 39s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/8b0706cf05174dcdace121aaec5ed737 : 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/467974656f5f4e0f8b95f54d12dbaf61 : FAILURE in 2m 12s (non-voting)\n- watcher-s2i-tempest https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/2c6869133a9142a9978b25950755f7e6 : SKIPPED Skipped due to failed job watcher-s2i-content-provider (non-voting)","accounts_in_message":[],"_revision_number":3},{"id":"6d3835abec3eebb598c6da06b007e4cc50508aa9","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":"a6d4e350c28b28a7d8793bb0711c10e0b063cea0","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":"7cd2a9eabbb41d02ce470150f68391ba7ed66ada","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: Patch Set 4 was rebased.","accounts_in_message":[],"_revision_number":5},{"id":"d527f6cec0437e13a535168b93b331c3fa39d53e","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:31.000000000","message":"Patch Set 5:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":5},{"id":"d40bc5823f3df7e80dfe8cfe3e2aab47d108659b","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:51:43.000000000","message":"Patch Set 5:\n\n(1 comment)\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/f23208083f3a4ca5a2445ff53525c414\n\n- teim-code-review https://zuul.teim.app/t/main/build/8eef663b2d0d47ec8b4cffb9563041e9 : SUCCESS in 14m 38s\n\nWarning:\n  The commit message states \u0027Move usage of ironicclient in the maas_helper to IronicHelper\u0027, but no MAAS helper code is touched by this commit. The actual change moves ironicclient usage out of the metal_helper\u0027s ironic wrapper (watcher/common/metal_helper/ironic.py) into watcher.common.ironic_helper.IronicHelper. The MAAS helper (watcher/common/metal_helper/maas.py) uses python-libmaas, not ironicclient, and is unmodified, so the sentence describes a change that does not exist.\n\n**Severity**: WARNING | **Confidence**: 0.88\n\n**Impact**: The permanent change history misdirects maintainers: anyone auditing MAAS code paths to understand, verify, or revert this change will find nothing, and future readers may wrongly conclude MAAS power-state behavior was altered when only the Ironic helper path was refactored.\n\n**Suggestion**:\nWhen amending, reword the sentence to name the metal_helper, e.g. \u0027Move usage of ironicclient in the metal_helper to IronicHelper\u0027. The remaining message paragraphs accurately describe the IronicNode dataclass and the node.get Struct-to-string fix.","accounts_in_message":[],"_revision_number":5},{"id":"c3141d5ba5f9dc3354efae61e2416e917f80c4bd","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-17 11:55:46.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/0849233562824c2d962960a4942c5253\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/1b2067bf1a714da581ce3595ab88d80e : SUCCESS in 8m 44s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/45aadb6cf1da4a72af51f296b82ab759 : SUCCESS in 6m 30s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/e329ebc2a7614b81a8dfb7aea531cf65 : SUCCESS in 5m 52s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/9f7b4803b3f14f28bc348eb8231a8bd4 : SUCCESS in 4m 45s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/fc44b63d02504515adb71fe829990a9e : SUCCESS in 10m 27s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/8ae9cbb1aba040b699138ca1968b4070 : SUCCESS in 9m 57s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/553d8c76507f4529b6422249975ebeb8 : SUCCESS in 4m 42s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/ff674376531544f6863683949032d2a6 : SUCCESS in 5m 32s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/c42bce17c933478ca6c24e0243e70475 : SUCCESS in 58m 23s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/b02242272fba4bd59e88593ace6c7b75 : SUCCESS in 55m 03s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/8fe9fe2b9f584cd7aa7cf4edd52533c0 : SUCCESS in 45m 30s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/956b9ac042a94c428e95ccde2301adcb : SUCCESS in 1h 32m 45s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/373fe32531784ace8eab6f4d33defca5 : SUCCESS in 1h 39m 48s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/9e596c0a8ce54b1d8081ea5a85d7e136 : SUCCESS in 1h 32m 37s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/4d6e207560a64ff7ab3514925407ce69 : SUCCESS in 1h 46m 33s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/31dbe8c0ee3947f183431402b8aed157 : SUCCESS in 4m 30s","accounts_in_message":[],"_revision_number":5},{"id":"c49f1fffd2d452e48820990f18980bfb0397cc5e","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-09-17 15:17:30.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/d0ae74c4dcbf4565b0ab6a0b7a7686c3\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/03b51718527c4f7496b90ae7a923bad0 : FAILURE in 8m 16s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/6700440d96c341a788d5ef66b384d969 : 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/80e6f13a2e024ad8a7e3ad8fbc9abf0b : NODE_FAILURE Node(set) request 200-0000205920 failed in 0s (non-voting)\n- watcher-s2i-tempest https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/8f9d39c12cfd4ad68e9bd81259e85f9e : SKIPPED Skipped due to failed job watcher-s2i-content-provider (non-voting)","accounts_in_message":[],"_revision_number":5},{"id":"57effdab8418264b5947b6e09db45a249cb74257","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: Patch Set 5 was rebased.\n\nCopied Votes:\n* Code-Review-1 (copy condition: \"**changekind:TRIVIAL_REBASE** OR is:MIN\")\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":6},{"id":"3c31c5b8a348b8d06586987e094b8e5315bfc1db","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:42.000000000","message":"Patch Set 6:\n\nStarting automatic-ci jobs.","accounts_in_message":[],"_revision_number":6},{"id":"8c044dbedb72a84b0c3f8241d8f51b27104ba809","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:36:34.000000000","message":"Patch Set 6:\n\nBuild succeeded (automatic-ci pipeline).\nhttps://zuul.teim.app/t/main/buildset/3128702c4c2541a89d89e9b574ab85a2\n\n- teim-code-review https://zuul.teim.app/t/main/build/39ca2022e7a44319981edd21940ba822 : SUCCESS in 18m 02s","accounts_in_message":[],"_revision_number":6},{"id":"bc9a26d734e06714a9b61a6c930eff31347faf4a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-18 13:26:20.000000000","message":"Patch Set 6: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/666824f09b21433eb421ec493ef11ee1\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/ee4b9a0ff4b148a7b003b440da29b2c1 : SUCCESS in 7m 48s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/ea97889ff8704247bc261c46c49783b4 : SUCCESS in 4m 08s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/18d65d49e33e4af6980b3a202c03765d : SUCCESS in 6m 10s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/3cac40f5f8fc4940abe9f7726a5ba5dd : SUCCESS in 4m 02s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/112fc5addc6347838cf5e706c175671e : SUCCESS in 6m 01s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/37a0abb00c644ffab186a8b29e743091 : SUCCESS in 9m 21s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/dad312b8026c4a1b99aef3d37413bcdd : SUCCESS in 4m 19s\n- openstack-tox-py313-eventlet https://zuul.opendev.org/t/openstack/build/2efa761d68ff4254a25366d0d7de59f6 : SUCCESS in 4m 33s\n- watcher-grenade https://zuul.opendev.org/t/openstack/build/2706cbbe137b4045bf2fd7cf8f109434 : SUCCESS in 45m 04s\n- watcher-grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/84e05c0e750f49debcd6d3fc404d0105 : SUCCESS in 55m 54s\n- watcher-tempest-api-ipv6-only https://zuul.opendev.org/t/openstack/build/fefe35480fb74c5d801f92690e874fa1 : SUCCESS in 40m 49s\n- watcher-tempest-gnocchi https://zuul.opendev.org/t/openstack/build/0c3cdd7de8dd4cd095434c7fac483233 : FAILURE in 1h 36m 34s\n- watcher-tempest-prometheus https://zuul.opendev.org/t/openstack/build/b7e92e78674d4f0dbb67c6888e5c26a7 : SUCCESS in 1h 38m 51s\n- watcher-tempest-prometheus-eventlet https://zuul.opendev.org/t/openstack/build/cb3d215c2cb7474584eed4efda4ce41b : SUCCESS in 1h 32m 51s\n- watcher-tempest-aetos https://zuul.opendev.org/t/openstack/build/146a92774ee24db7bc3f3e8bc61d9f7a : SUCCESS in 50m 05s\n- openstack-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/461b92ee5d894dc8901775a4e19bfaa6 : SUCCESS in 5m 39s","accounts_in_message":[],"_revision_number":6},{"id":"e1504b379c5e3f0b8cf64a2521d9c2eb315af5a4","author":{"_account_id":26471,"name":"Software Factory CI","email":"softwarefactory-operations-team@redhat.com","username":"sf-project-io"},"date":"2026-09-18 19:48:47.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/34fbd2d9109446ad9b957c8df02225e8\n\n- openstack-meta-content-provider-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/14115289aaef465eaee9aa22c7db196c : FAILURE in 8m 49s\n- watcher-operator-validation-master https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/14e2ffbc06bb4da28ffc1fdcf93d5417 : 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/ea4d5212f1494df7af2f2d307d9a9e20 : FAILURE in 2m 09s (non-voting)\n- watcher-s2i-tempest https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/build/a4e0c7aa3eed481c9e8e054dfd8c7570 : SKIPPED Skipped due to failed job watcher-s2i-content-provider (non-voting)","accounts_in_message":[],"_revision_number":6}],"current_revision_number":6,"current_revision":"0a3b478537ce9158045a80aef62bfacb369d5814","revisions":{"bc5c0a86915222f81fb573845f9e1b32622122c6":{"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/89/999389/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/89/999389/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/89/999389/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/89/999389/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/89/999389/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/89/999389/1"}}},"commit":{"parents":[{"commit":"d8992a5f918b02d03067a85a3fe92dc8c9ed1aa3","subject":"Add Ironic emulator and saving_energy functional tests","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/d8992a5f918b02d03067a85a3fe92dc8c9ed1aa3"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-03-19 16:16:16.000000000","tz":60},"committer":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-07-31 09:42:39.000000000","tz":120},"subject":"Add IronicNode wrapper dataclass","message":"Add IronicNode wrapper dataclass\n\nAdd a frozen dataclass to wrap ironicclient Node objects,\nfollowing the pattern established in nova_helper.py. The\nwrapper extracts node attributes at construction time via\na from_ironicclient classmethod.\n\nMove usage of ironicclient in the maas_helper to IronicHelper.\n\nFix the call to ironicclient node.get that used w utils.Struct instead\nof a string with the uuid.\n\nGenerated-By: claude-code (claude-opus-4-6)\nChange-Id: I9e2852b0a2874bcd5e8673bb8537240623d13953\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/bc5c0a86915222f81fb573845f9e1b32622122c6"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/bc5c0a86915222f81fb573845f9e1b32622122c6"}]},"branch":"refs/heads/master"},"f0ac21feabe598efd1e91ae679ba0493f9552bc8":{"kind":"TRIVIAL_REBASE","_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/89/999389/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/89/999389/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/89/999389/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/89/999389/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/89/999389/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/89/999389/2"}}},"commit":{"parents":[{"commit":"0d816d655cedf8052cc50e292cde079446e6cdb0","subject":"Add Ironic emulator and saving_energy functional tests","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/0d816d655cedf8052cc50e292cde079446e6cdb0"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-03-19 16:16:16.000000000","tz":60},"committer":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-07-31 10:28:29.000000000","tz":120},"subject":"Add IronicNode wrapper dataclass","message":"Add IronicNode wrapper dataclass\n\nAdd a frozen dataclass to wrap ironicclient Node objects,\nfollowing the pattern established in nova_helper.py. The\nwrapper extracts node attributes at construction time via\na from_ironicclient classmethod.\n\nMove usage of ironicclient in the maas_helper to IronicHelper.\n\nFix the call to ironicclient node.get that used w utils.Struct instead\nof a string with the uuid.\n\nGenerated-By: claude-code (claude-opus-4-6)\nChange-Id: I9e2852b0a2874bcd5e8673bb8537240623d13953\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/f0ac21feabe598efd1e91ae679ba0493f9552bc8"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/f0ac21feabe598efd1e91ae679ba0493f9552bc8"}]},"branch":"refs/heads/master"},"a9993136ba2145b89ee7da92472cc677f43ee1c4":{"kind":"TRIVIAL_REBASE","_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/89/999389/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/89/999389/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/89/999389/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/89/999389/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/89/999389/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/89/999389/3"}}},"commit":{"parents":[{"commit":"b7534e55ad5e851fdb256ac0feab58a632592ed0","subject":"Add Ironic emulator and saving_energy functional tests","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/b7534e55ad5e851fdb256ac0feab58a632592ed0"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-03-19 16:16:16.000000000","tz":60},"committer":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-09-16 16:23:41.000000000","tz":120},"subject":"Add IronicNode wrapper dataclass","message":"Add IronicNode wrapper dataclass\n\nAdd a frozen dataclass to wrap ironicclient Node objects,\nfollowing the pattern established in nova_helper.py. The\nwrapper extracts node attributes at construction time via\na from_ironicclient classmethod.\n\nMove usage of ironicclient in the maas_helper to IronicHelper.\n\nFix the call to ironicclient node.get that used w utils.Struct instead\nof a string with the uuid.\n\nGenerated-By: claude-code (claude-opus-4-6)\nChange-Id: I9e2852b0a2874bcd5e8673bb8537240623d13953\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/a9993136ba2145b89ee7da92472cc677f43ee1c4"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/a9993136ba2145b89ee7da92472cc677f43ee1c4"}]},"branch":"refs/heads/master"},"56e42f70b1b822a7004b7ebb5d150087b56be2de":{"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/89/999389/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/89/999389/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/89/999389/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/89/999389/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/89/999389/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/89/999389/4"}}},"commit":{"parents":[{"commit":"975a8f38044238d5779e34d5506717386944924f","subject":"Add Ironic emulator and saving_energy functional tests","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/975a8f38044238d5779e34d5506717386944924f"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-03-19 16:16:16.000000000","tz":60},"committer":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-09-17 09:35:08.000000000","tz":120},"subject":"Add IronicNode wrapper dataclass","message":"Add IronicNode wrapper dataclass\n\nAdd a frozen dataclass to wrap ironicclient Node objects,\nfollowing the pattern established in nova_helper.py. The\nwrapper extracts node attributes at construction time via\na from_ironicclient classmethod.\n\nMove usage of ironicclient in the maas_helper to IronicHelper.\n\nFix the call to ironicclient node.get that used w utils.Struct instead\nof a string with the uuid.\n\nGenerated-By: claude-code (claude-opus-4-6)\nChange-Id: I9e2852b0a2874bcd5e8673bb8537240623d13953\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/56e42f70b1b822a7004b7ebb5d150087b56be2de"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/56e42f70b1b822a7004b7ebb5d150087b56be2de"}]},"branch":"refs/heads/master"},"515ff7507c5e99e329990934b83bdc44aea26c53":{"kind":"TRIVIAL_REBASE","_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/89/999389/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/89/999389/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/89/999389/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/89/999389/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/89/999389/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/89/999389/5"}}},"commit":{"parents":[{"commit":"0b1bfb4066462edc32532d6062b059e5f89d9ba5","subject":"Add Ironic emulator and saving_energy functional tests","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/0b1bfb4066462edc32532d6062b059e5f89d9ba5"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-03-19 16:16:16.000000000","tz":60},"committer":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-09-17 10:04:13.000000000","tz":120},"subject":"Add IronicNode wrapper dataclass","message":"Add IronicNode wrapper dataclass\n\nAdd a frozen dataclass to wrap ironicclient Node objects,\nfollowing the pattern established in nova_helper.py. The\nwrapper extracts node attributes at construction time via\na from_ironicclient classmethod.\n\nMove usage of ironicclient in the maas_helper to IronicHelper.\n\nFix the call to ironicclient node.get that used w utils.Struct instead\nof a string with the uuid.\n\nGenerated-By: claude-code (claude-opus-4-6)\nChange-Id: I9e2852b0a2874bcd5e8673bb8537240623d13953\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/515ff7507c5e99e329990934b83bdc44aea26c53"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/515ff7507c5e99e329990934b83bdc44aea26c53"}]},"branch":"refs/heads/master"},"0a3b478537ce9158045a80aef62bfacb369d5814":{"kind":"TRIVIAL_REBASE","_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/89/999389/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/watcher","ref":"refs/changes/89/999389/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/watcher refs/changes/89/999389/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/watcher refs/changes/89/999389/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/watcher refs/changes/89/999389/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/watcher refs/changes/89/999389/6"}}},"commit":{"parents":[{"commit":"f49c3ca2436e7199cd2767612eac677c128fb34c","subject":"Add Ironic emulator and saving_energy functional tests","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/f49c3ca2436e7199cd2767612eac677c128fb34c"}]}],"author":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-03-19 16:16:16.000000000","tz":60},"committer":{"name":"jgilaber","email":"jgilaber@redhat.com","date":"2026-09-18 11:02:10.000000000","tz":120},"subject":"Add IronicNode wrapper dataclass","message":"Add IronicNode wrapper dataclass\n\nAdd a frozen dataclass to wrap ironicclient Node objects,\nfollowing the pattern established in nova_helper.py. The\nwrapper extracts node attributes at construction time via\na from_ironicclient classmethod.\n\nMove usage of ironicclient in the maas_helper to IronicHelper.\n\nFix the call to ironicclient node.get that used w utils.Struct instead\nof a string with the uuid.\n\nGenerated-By: claude-code (claude-opus-4-6)\nChange-Id: I9e2852b0a2874bcd5e8673bb8537240623d13953\nSigned-off-by: jgilaber \u003cjgilaber@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/0a3b478537ce9158045a80aef62bfacb369d5814"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/watcher/commit/0a3b478537ce9158045a80aef62bfacb369d5814"}]},"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":""}}}]}
