)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4794412b2fdd078a62dbe7e27e8be667983db034","unresolved":true,"context_lines":[{"line_number":24,"context_line":"- ``nova-novncproxy`` can make network connections to the VNC servers"},{"line_number":25,"context_line":"  which run adjacent to ``ironic-conductor``"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"[1] https://specs.openstack.org/openstack/ironic-specs/specs/not-implemented/graphical-console.html"},{"line_number":28,"context_line":"[2] https://specs.openstack.org/openstack/nova-specs/specs/2023.1/approved/ironic-vnc-console.html"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Related-Bug: 2086715"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1d032577_498d826c","line":27,"updated":"2025-10-09 14:31:04.000000000","message":"this is not a thing by the way \nhttps://specs.openstack.org/openstack/ironic-specs/specs/not-implemented/graphical-console.html\nshoudl be \n\nhttps://static.opendev.org/project/specs.openstack.org/openstack/ironic-specs/specs/retired/vnc-graphical-console.html","commit_id":"89e015041d474625ee9de8a69b53239a116d3708"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"d240952d4991f3072d5e78594ee658f7ba1405ed","unresolved":false,"context_lines":[{"line_number":24,"context_line":"- ``nova-novncproxy`` can make network connections to the VNC servers"},{"line_number":25,"context_line":"  which run adjacent to ``ironic-conductor``"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"[1] https://specs.openstack.org/openstack/ironic-specs/specs/not-implemented/graphical-console.html"},{"line_number":28,"context_line":"[2] https://specs.openstack.org/openstack/nova-specs/specs/2023.1/approved/ironic-vnc-console.html"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Related-Bug: 2086715"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a573bd3_721d7163","line":27,"in_reply_to":"1d032577_498d826c","updated":"2025-10-12 20:16:09.000000000","message":"Done","commit_id":"89e015041d474625ee9de8a69b53239a116d3708"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"99e706b22a1aa89d5830ea5a2041029b3ceb885c","unresolved":true,"context_lines":[{"line_number":31,"context_line":"[1] https://specs.openstack.org/openstack/ironic-specs/specs/approved/graphical-console.html"},{"line_number":32,"context_line":"[2] https://specs.openstack.org/openstack/nova-specs/specs/2023.1/approved/ironic-vnc-console.html"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Depends-On: https://review.opendev.org/c/openstack/ironic-tempest-plugin/+/963643"},{"line_number":35,"context_line":"Related-Bug: 2086715"},{"line_number":36,"context_line":"Implements: ironic-vnc-console"},{"line_number":37,"context_line":"Change-Id: Iec26c67e29f91954eafc6a5a81086e36798d3f26"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"4acb4fb7_739f5c17","line":34,"updated":"2025-11-10 17:16:06.000000000","message":"@gmaan@ghanshyammann.com would you be able to look at the tempest refactor this plugin change depend on https://review.opendev.org/c/openstack/tempest/+/963453\n\ni reviewed it previously and it made sense to me.","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e226f042d91f7d97d81e37640d26ecbc85d5a190","unresolved":true,"context_lines":[{"line_number":31,"context_line":"[1] https://specs.openstack.org/openstack/ironic-specs/specs/approved/graphical-console.html"},{"line_number":32,"context_line":"[2] https://specs.openstack.org/openstack/nova-specs/specs/2023.1/approved/ironic-vnc-console.html"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Depends-On: https://review.opendev.org/c/openstack/ironic-tempest-plugin/+/963643"},{"line_number":35,"context_line":"Related-Bug: 2086715"},{"line_number":36,"context_line":"Implements: ironic-vnc-console"},{"line_number":37,"context_line":"Change-Id: Iec26c67e29f91954eafc6a5a81086e36798d3f26"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"b35bae77_9cbfb2de","line":34,"in_reply_to":"21ac128d_16c79ed6","updated":"2026-01-23 00:56:00.000000000","message":"https://review.opendev.org/c/openstack/ironic-tempest-plugin/+/963643 still need to be updated but ill try and make tiem to review this again tomorrow. i think this is more or less ready to go at this point but its been a while since i looked at it properly","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"ce3053821546c346c55e54bae8cb49dd7623fba6","unresolved":true,"context_lines":[{"line_number":31,"context_line":"[1] https://specs.openstack.org/openstack/ironic-specs/specs/approved/graphical-console.html"},{"line_number":32,"context_line":"[2] https://specs.openstack.org/openstack/nova-specs/specs/2023.1/approved/ironic-vnc-console.html"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Depends-On: https://review.opendev.org/c/openstack/ironic-tempest-plugin/+/963643"},{"line_number":35,"context_line":"Related-Bug: 2086715"},{"line_number":36,"context_line":"Implements: ironic-vnc-console"},{"line_number":37,"context_line":"Change-Id: Iec26c67e29f91954eafc6a5a81086e36798d3f26"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"21ac128d_16c79ed6","line":34,"in_reply_to":"4acb4fb7_739f5c17","updated":"2026-01-22 21:05:54.000000000","message":"This patch is now merged.","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"19ea56af38488dc0ce829cea7a9b885877099bfc","unresolved":false,"context_lines":[{"line_number":31,"context_line":"[1] https://specs.openstack.org/openstack/ironic-specs/specs/approved/graphical-console.html"},{"line_number":32,"context_line":"[2] https://specs.openstack.org/openstack/nova-specs/specs/2023.1/approved/ironic-vnc-console.html"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Depends-On: https://review.opendev.org/c/openstack/ironic-tempest-plugin/+/963643"},{"line_number":35,"context_line":"Related-Bug: 2086715"},{"line_number":36,"context_line":"Implements: ironic-vnc-console"},{"line_number":37,"context_line":"Change-Id: Iec26c67e29f91954eafc6a5a81086e36798d3f26"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"008b6a72_59b46373","line":34,"in_reply_to":"b35bae77_9cbfb2de","updated":"2026-02-23 16:23:34.000000000","message":"Done","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"99e706b22a1aa89d5830ea5a2041029b3ceb885c","unresolved":true,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Depends-On: https://review.opendev.org/c/openstack/ironic-tempest-plugin/+/963643"},{"line_number":35,"context_line":"Related-Bug: 2086715"},{"line_number":36,"context_line":"Implements: ironic-vnc-console"},{"line_number":37,"context_line":"Change-Id: Iec26c67e29f91954eafc6a5a81086e36798d3f26"},{"line_number":38,"context_line":"Signed-off-by: Steve Baker \u003csbaker@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"47b5c278_86acd5cb","line":36,"updated":"2025-11-10 17:16:06.000000000","message":"nit: to get this to link to https://blueprints.launchpad.net/nova/+spec/ironic-vnc-console \n\ni belive you have to do \n\n`Implements: blueprint ironic-vnc-console`\n\nwe agreed to proceed with this as a specless blueprint again this cycle so we can continue with the implemeation review","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"33ba178575a1356da86423917ece22825478450b","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Depends-On: https://review.opendev.org/c/openstack/ironic-tempest-plugin/+/963643"},{"line_number":35,"context_line":"Related-Bug: 2086715"},{"line_number":36,"context_line":"Implements: ironic-vnc-console"},{"line_number":37,"context_line":"Change-Id: Iec26c67e29f91954eafc6a5a81086e36798d3f26"},{"line_number":38,"context_line":"Signed-off-by: Steve Baker \u003csbaker@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"c1206dc2_0482b0d1","line":36,"in_reply_to":"47b5c278_86acd5cb","updated":"2025-11-12 01:47:19.000000000","message":"Done","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"2fc48908bec89c191db0b065b81a1ec18d82dd8b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4a2938d6_50abbee8","updated":"2025-03-12 21:03:57.000000000","message":"I have updated this now that the fix for ironic serial console has landed:\n\nhttps://review.opendev.org/c/openstack/nova/+/942575\n\nI hope the scope of this change is small enough that it can still be considered to land in this cycle.","commit_id":"808c1c9758e5bb26f0ddf799aeb7a11fb7977886"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"975b0040db1437f3f1c04259da7694984212e161","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5d07960f_dceb2986","updated":"2025-03-25 18:21:19.000000000","message":"At a high level, I\u0027m actually impressed it is this simple.\n\nI guess the concern at the forefront of my mind is that this uses driver_internal_info, which I guess is okay. I can\u0027t seen operator in their right mind trying to redact the field via policies from Nova. And it actually kind of makes sense because Nova can\u0027t consume and reuse the URL we generate for a standalone/direct user. I guess as long as we close out the session when idle on the remote side its likely okay, and that is outside the nova context of just this change.\n\nI do like it kind of lifts and relies upon prior console code as well. Well done!","commit_id":"657b80367430e1e82121d0ed4a4ad008d2db6ffe"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c4a98a9f9e9e8757a28707d210520f4fe0c4f8ac","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"dfe314ca_31d5d538","updated":"2025-03-25 18:35:39.000000000","message":"without going into this in detail, my main question would be can we test this in ci?\n\nwe have  singel ironcic job which is kind of useless today.\n\n\nit provides some value because it does \"boot a ironic server\" which is faked as a vm but it only runs one test that does that so its very expenisve to have a job that only doese that.\ngranted booting a server via nova impleictly test a lot of other thigns like leease supprot and sharding.\n\nit would be nice to enabel novnc in that if its not allready enabled and at least get basic coverage if we can.\n\nany toughts on that.\ncan that work with vbmc?","commit_id":"657b80367430e1e82121d0ed4a4ad008d2db6ffe"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"919aa975dd436b36425d4103ea308ef863968003","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1c7756d8_412320d1","in_reply_to":"0d7643e5_d87ab75c","updated":"2025-10-07 17:40:19.000000000","message":"I suspect we might take a slightly different approach, where we end up adding it into an existing job as opposed to run yet another job, just given resource constraints and job run times it is a lot easier to chain actions on as opposed to run an entirely separate scenario. Implementer prerogative on the exact how, but overall effect and result of testing totally reasonable in our book.","commit_id":"657b80367430e1e82121d0ed4a4ad008d2db6ffe"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4794412b2fdd078a62dbe7e27e8be667983db034","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6db6b60a_ac7d1dde","in_reply_to":"1748cc0d_f3b6f8ba","updated":"2025-10-09 14:31:04.000000000","message":"that sound reasonable althout the test shoudl have been reusable simplely by usign an ironci flavor in the job.\n\nbut the more reuse the better.\n\nas i mentioned above we currently run \nironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa in check\nand  ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode-shard in our weakly perodic to test ironic integration\n\nif there are better jobs that ironci would prefer we run that can validate this integration or if we can add  baremetal basic ops tests.\n\nto one of those in the parent job or on a nova variation of that that would be fine too. gmaan i belive is back form PTO tomorrow? so we can ask them to take a look at teh tempest refactor once they are back up to speed.\n\nby the way we also need to reapproved https://blueprints.launchpad.net/nova/+spec/ironic-vnc-console for this cycle.\n\nit was approved for the antelope cycle but the spec has not been repospoed and approveal expires after one upstream release so procedurelly this is also blocked until the paper work is complete.\n\nim not sure if folks would be happy proceeding with it as a specless bluepritn for thsi cycle given how small it is and that the ironic part is now done ?\n\nhttps://static.opendev.org/project/specs.openstack.org/openstack/ironic-specs/specs/approved/vnc-console.html is not mared as implemtned and https://review.opendev.org/c/openstack/ironic/+/860689 is abandoned so im not sure fo the current ironic state of this overall. i assume it was superceded by https://bugs.launchpad.net/ironic/+bug/2086715 ?\n\nbut it would be good to get the paper work out of the way early so this shoudl be added etihter to the next nova team meeting or to the ptg ether pad so that it can move forward.","commit_id":"657b80367430e1e82121d0ed4a4ad008d2db6ffe"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"53fa85b6ce74fa031e1c63b59c78e8a030ce65ed","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"892c2aaf_49a59bcb","in_reply_to":"1c7756d8_412320d1","updated":"2025-10-08 10:36:51.000000000","message":"i was not suggeting adding a new job\nim suggesting we extend ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa\nhttps://github.com/openstack/nova/blob/master/.zuul.yaml#L798-L800\n\nthat is the zuul job we have in check to validate ironic integration.\n\nwe coudl also add it to - ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode-shard\n\nwhich we run as a weekly perodic","commit_id":"657b80367430e1e82121d0ed4a4ad008d2db6ffe"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"eaa4eea5ade73370400c00f39c4320b98d78fe96","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ad2e79fe_7febc42a","in_reply_to":"33cb7d08_45f027f1","updated":"2025-10-02 18:59:48.000000000","message":"I\u0027ll just toss in a few cents of thought here.\n\nI don\u0027t think it provides value to expose virtualbmc based interactions. We might be able to do something with sushy tools but thats a bit of an absurd lift for just testing the cross service interaction. The key is to validate that something loads. The existing fake interface seems like a viable option to minimize resource burn and to validate that *something* returns results.\n\nWhich is sort of key. Validating we get something which is semi-valid or matching what we expect. Where the backend URL actually loads from is a hidden detail, but the fake console with its cute animated pixie boots image seems reasonable enough to encode into a tempest test which we could likely opportunistically trigger. It\u0027s not like it will really check the contents of the screen which nova tempest tests don\u0027t seem to do (at a glance).","commit_id":"657b80367430e1e82121d0ed4a4ad008d2db6ffe"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"39c5371a04a7359bd79f4f77c90c9eadec29024c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ba6335a4_e8800dea","in_reply_to":"409ba460_1190d983","updated":"2026-02-23 16:23:55.000000000","message":"Done","commit_id":"657b80367430e1e82121d0ed4a4ad008d2db6ffe"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"422047790a83075852f40b8b743e586e8ced9269","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1748cc0d_f3b6f8ba","in_reply_to":"4fc9aa65_0005fc10","updated":"2025-10-08 20:38:27.000000000","message":"I have proposed a refactoring of the novnc validation so that it can be consumed by other tests via a class mixin. This will allow us to add it to existing functional and baremetal basic ops tests.\n\nhttps://review.opendev.org/c/openstack/tempest/+/963453","commit_id":"657b80367430e1e82121d0ed4a4ad008d2db6ffe"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"d240952d4991f3072d5e78594ee658f7ba1405ed","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"409ba460_1190d983","in_reply_to":"6db6b60a_ac7d1dde","updated":"2025-10-12 20:16:09.000000000","message":"ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa is the job which will have the novnc validate coverage.\n\nThe ironic implementation is essentially complete at this point. If unretiring https://blueprints.launchpad.net/nova/+spec/ironic-vnc-console and making it specless is the best way of tracking the nova change then I am in favour of that. However it is tracked, requiring a spec seems a bit excessive given the scope of the change.","commit_id":"657b80367430e1e82121d0ed4a4ad008d2db6ffe"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cdeb5571ad4d8ad45fb43a96402b223c3f967a08","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4fc9aa65_0005fc10","in_reply_to":"892c2aaf_49a59bcb","updated":"2025-10-08 10:39:06.000000000","message":"if needed we can define our own variant of either job in nova that just overried the regex and cofnigured services to validate it on our end but it woudl be ideal IMO if one of those jobs was updated in the ironic repo to enable the test so that it gets tested for changes in both projects.","commit_id":"657b80367430e1e82121d0ed4a4ad008d2db6ffe"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e61bd40b6408028ee678cc67df9e3e77ca4b2599","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"0d7643e5_d87ab75c","in_reply_to":"ad2e79fe_7febc42a","updated":"2025-10-03 10:44:21.000000000","message":"ah i was confustin thing with my phrasing\n\ni was expectintg th guest graphical console to be exported via tghe vbmc implemetion sinc eon real hard ware you woul dget the vnc console via the bmc.\n\nso im not really asing for the bmc interaction as such more jsut can we expose anything in that est env that woudl allow testign the end to end code path.\n\nin tempest today we have a test that connect to the websocket expose by the console proxy\n\nhttps://github.com/openstack/tempest/blob/93df2d2d3e73788db982be0f4b85e3451343c94c/tempest/api/compute/servers/test_novnc.py#L177-L196\n\nand assert taht we ca actully get teh fram buffer form the underlying vnc connection.\n\nso im wondering if we will be able to run that or not.\n\nhttps://github.com/openstack/tempest/blob/93df2d2d3e73788db982be0f4b85e3451343c94c/tempest/api/compute/servers/test_novnc.py#L177-L196\n\n\nin the ironic job we can use a custom flavor to select an ironic instance (we probaly already do)  looking at the resouce setup for thi test class\n\nhttps://github.com/openstack/tempest/blob/93df2d2d3e73788db982be0f4b85e3451343c94c/tempest/api/compute/servers/test_novnc.py#L57-L63\n\nthis is just using the default form the config  i belive.\n\nso if we can run this test and we have enabeld the novnc console prlxy in the guest i think this woudl be enoug to validate it end to end.\n\nat least as much validation as we do for libvirt so it would have parity.\n\nso basiclly im asking can we run those tests in the ironic job\nif so i think that all the testing we would want/need.","commit_id":"657b80367430e1e82121d0ed4a4ad008d2db6ffe"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"729739101ff8bd5a07ecb239a954bb119a44d732","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"33cb7d08_45f027f1","in_reply_to":"dfe314ca_31d5d538","updated":"2025-03-25 19:35:27.000000000","message":"It doesn\u0027t currently display VNC content from vbmc, that would require the console container proxying VNC traffic (which is possible but not yet developed).\n\nBut the fake console driver does spawn a console container, exposes a VNC server, and displays an animation. I haven\u0027t looked into whether nova has any tests which actually connects to the novnc websocket. If such a thing exists then ironic could do the same thing.","commit_id":"657b80367430e1e82121d0ed4a4ad008d2db6ffe"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"3ef8147ef376ec562dd8727e72d6fa22bf7c8a48","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5011e12a_2e5e806d","updated":"2025-10-05 21:21:45.000000000","message":"This is a rebase to get a fresh CI run. I\u0027ll be looking into enabling tempest test_novnc with the ironic driver","commit_id":"89e015041d474625ee9de8a69b53239a116d3708"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"99e706b22a1aa89d5830ea5a2041029b3ceb885c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"4997a784_87f94c1b","updated":"2025-11-10 17:16:06.000000000","message":"i need to reflect on this again more deeply but here is my initial review feedback\n\ncan you confirm that the generated urls will use the nova novncproxy server\n\ni have not dug into the logic closely enough to assert that eitehr way\n\nwe do nto allwo direct conenction to the hypervior hosts to be reported in teh api\nso all access to ironci novs vnc concoeld still need to go through the novncproxy server for security reasons.\n\nthe same is true for the serial console.\n\nit woudl be good to improvd eth docuemation for this as well\n\nwe woudl idealy have doc examples of using this.\n\nit should be identical to using the vnc console for vms but we shoudl at least refence that its poible to do this with ironic instances now and cross like to any relevent ironic docs if they exist.","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"c18a59c0a5dec230dd916cc3e100c34c2096c2da","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f257cf0d_8cd31d6a","updated":"2025-10-12 22:44:51.000000000","message":"recheck depends-on changes","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9612f426f7d03609e57fa6e7f606a010f20c0b76","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"1e051856_d256eb56","in_reply_to":"0fdc7c85_66deb48c","updated":"2025-12-17 15:48:48.000000000","message":"Acknowledged","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"33ba178575a1356da86423917ece22825478450b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"0fdc7c85_66deb48c","in_reply_to":"4997a784_87f94c1b","updated":"2025-11-12 01:47:19.000000000","message":"\u003e can you confirm that the generated urls will use the nova novncproxy server\n\u003e i have not dug into the logic closely enough to assert that eitehr way\n\u003e we do nto allwo direct conenction to the hypervior hosts to be reported in teh api\n\u003e so all access to ironci novs vnc concoeld still need to go through the novncproxy server for security reasons.\n\nYes, because it ignores the contents of console_info and looks up the node\u0027s internal driver info which has the actual VNC host and port. This is transformed to a nova-novncproxy link elsewhere\n \n\u003e it woudl be good to improvd eth docuemation for this as well\n\u003e we woudl idealy have doc examples of using this.\n\u003e it should be identical to using the vnc console for vms but we shoudl at least refence that its poible to do this with ironic instances now and cross like to any relevent ironic docs if they exist.\n\nI have add a bit to the nova docs, including a reference to the ironic \"Graphical console support\" docs","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9612f426f7d03609e57fa6e7f606a010f20c0b76","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"cf38788b_ed25d08a","updated":"2025-12-17 15:48:48.000000000","message":"this is mostly good i think.\nit would be nice to improve the test coverage and see progress on getting the tempest test merged \n\nthe job is still runign but ill take a look again  next time i find time to review.","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"39c5371a04a7359bd79f4f77c90c9eadec29024c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"09e80aaf_5ea7e455","in_reply_to":"cf38788b_ed25d08a","updated":"2026-02-23 16:23:55.000000000","message":"Done","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f0b8dce884e127f52831123ec3b897e03630aace","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"9e934e8f_f80212ec","updated":"2026-01-05 04:12:09.000000000","message":"There is full unit coverage for the added code now","commit_id":"6f652bf71dbbfabc1af3e6e107c1158553ea1d11"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"27d0a33d72c3fb8052e5644aeaf229386ef2404a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"6ed818fe_bbd924d6","updated":"2026-01-08 16:18:50.000000000","message":"i need to make some time to review this again properly but i think most of my previous comments have been adressed so if other have tiem to reivew i think is ready for wider review","commit_id":"6f652bf71dbbfabc1af3e6e107c1158553ea1d11"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e226f042d91f7d97d81e37640d26ecbc85d5a190","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"fa4e3cef_395d16d2","updated":"2026-01-23 00:56:00.000000000","message":"teim-ci: manual","commit_id":"6f652bf71dbbfabc1af3e6e107c1158553ea1d11"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3aa49e1a26ba85dbb3cd0afd93dbe4f0bf2ef064","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"ff85f62b_156e5803","updated":"2026-01-23 01:14:41.000000000","message":"teim-ci: manual","commit_id":"6f652bf71dbbfabc1af3e6e107c1158553ea1d11"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a43c56c3591d7b90020f317973ddc2c74da34c89","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"a24f90fc_970b4e34","updated":"2026-01-23 15:21:31.000000000","message":"the ironic job is failing with \n\nFailed to import test module: ironic_tempest_plugin.tests.scenario.test_baremetal_basic_ops\n2026-01-05 04:30:14.119397 | controller | Traceback (most recent call last):\n2026-01-05 04:30:14.119401 | controller | File \"/usr/lib/python3.12/unittest/loader.py\", line 394, in _find_test_path\n2026-01-05 04:30:14.119404 | controller | module \u003d self._get_module_from_name(name)\n2026-01-05 04:30:14.119416 | controller | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n2026-01-05 04:30:14.119419 | controller | File \"/usr/lib/python3.12/unittest/loader.py\", line 337, in _get_module_from_name\n2026-01-05 04:30:14.119423 | controller | __import__(name)\n2026-01-05 04:30:14.119426 | controller | File \"/opt/stack/tempest/.tox/tempest/lib/python3.12/site-packages/ironic_tempest_plugin/tests/scenario/test_baremetal_basic_ops.py\", line 17, in \u003cmodule\u003e\n2026-01-05 04:30:14.119430 | controller | from tempest.api.compute.servers import compute\n2026-01-05 04:30:14.119433 | controller | ImportError: cannot import name \u0027compute\u0027 from \u0027tempest.api.compute.servers\u0027 (/opt/stack/tempest/tempest/api/compute/servers/__init__.py)\n2026-01-05 04:30:14.119437 | controller | \n\nfor what its worth so there seam to be a bug in the ironic tempest plugin.","commit_id":"6f652bf71dbbfabc1af3e6e107c1158553ea1d11"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dfbcb2d8dfd29b5fda132b5a20e048189a4a0fa7","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"9ace25ce_cdebccfe","updated":"2026-01-23 15:18:53.000000000","message":"there is a minor nit in the release note that we shoudl fix\n\ni woudl also like to see 1 end to end run of the tempest test before we proceed but over all i think this is ready\n\n+2 once the release note is updated and we have reviewd the tempest results\n\n\ncan we enable it in the current ironic job in the check pipelien or at least create a DNM on top of this to trigger the new vnc tests?","commit_id":"6f652bf71dbbfabc1af3e6e107c1158553ea1d11"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"39c5371a04a7359bd79f4f77c90c9eadec29024c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"8c2f7940_748fd9f1","in_reply_to":"9ace25ce_cdebccfe","updated":"2026-02-23 16:23:55.000000000","message":"Done","commit_id":"6f652bf71dbbfabc1af3e6e107c1158553ea1d11"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"1035174d4a283e8203297af2e949196f772a0e87","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"c8ccd78a_f92d6f64","updated":"2026-01-26 21:04:02.000000000","message":"Sean you\u0027re correct, I think the depends-on is inverted. Stay tuned","commit_id":"341c645104f2d5e601af63119d33554efeba74a7"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"783ab07b7bb1dd66cf405536c5b59f53992e5afb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"42b2fbf7_78b47e56","updated":"2026-01-26 19:54:29.000000000","message":"The test is now green https://01f361f1a1f2068210b2-21dcd1aff174c3440c5e59d062c36770.ssl.cf1.rackcdn.com/openstack/8fbb16d3e94d48318b815ca9a45cb50f/testr_results.html","commit_id":"341c645104f2d5e601af63119d33554efeba74a7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cc9d6be35c095849dfce5f8fa14f6d06e5dd55dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"3127c5f7_1b17bd0c","updated":"2026-01-26 20:06:48.000000000","message":"im happy to upgrade to a +2 more or less once i see the tempest test run eded to end in any job do demonstrate this works end to end.\n\nideally this patch woudl tweak the zuul.yaml to enabel the test in the job we are currently using but that can happen later in a followup if we perfer.","commit_id":"341c645104f2d5e601af63119d33554efeba74a7"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"47d28c723ac748745fbd3755bf31ae894d381938","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"ef7df134_819480e5","updated":"2026-01-25 22:49:19.000000000","message":"recheck ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa the depends-on change has had a refresh","commit_id":"341c645104f2d5e601af63119d33554efeba74a7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"64289d92f9eaad0df172ddce590001b7e32fe889","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":10,"id":"8795e5af_4c9b2fe7","in_reply_to":"04a29d65_3c085814","updated":"2026-01-27 15:14:28.000000000","message":"ok that a little more indirect then i was hoping in that its just a step in an alrger test rather then its own top level test that will pass or fail indepently.\n\nwith that said yes we can see the logs showign the attempt to get the console\nnova compute.\n\nwe do see that the ironic novnc doe slog about setting up proxing for the isntace\n\nhttps://zuul.opendev.org/t/openstack/build/c43054ff62f241ef88fed2a215796d33/log/controller/logs/screen-ir-novnc.txt#8\n\nand we see pooling of the console state at teh same tim eon teh ironic side as teh nova calls\n\nhttps://zuul.opendev.org/t/openstack/build/c43054ff62f241ef88fed2a215796d33/log/controller/logs/screen-ir-api.txt#1410-1412\n\nthe request id does not match howver so i think there is a latent bug there in propagating the correct request id form teh context.\n\ni think that is somethign we could fix in a follow up patch.\n\nmy guess is we are eleveting to an admin/service client to make the call to pull the vnc concole info instead of usign the token form the tempest request which is fine but we shoudl ideealy use the same request id when we do that so its eaiser to trace.\n\nwe can see in the tempest logs that the test did get teh console url\n\nhttps://zuul.opendev.org/t/openstack/build/c43054ff62f241ef88fed2a215796d33/log/controller/logs/tempest_log.txt#1506-1512\n\nResponse - Headers: {\u0027date\u0027: \u0027Mon, 26 Jan 2026 22:29:13 GMT\u0027, \u0027server\u0027: \u0027Apache/2.4.58 (Ubuntu)\u0027, \u0027content-length\u0027: \u0027133\u0027, \u0027content-type\u0027: \u0027application/json\u0027, \u0027openstack-api-version\u0027: \u0027compute 2.1\u0027, \u0027x-openstack-nova-api-version\u0027: \u00272.1\u0027, \u0027vary\u0027: \u0027OpenStack-API-Version,X-OpenStack-Nova-API-Version\u0027, \u0027x-openstack-request-id\u0027: \u0027req-3b3eb9d0-4efe-4e5f-b40f-536d1799cdeb\u0027, \u0027x-compute-request-id\u0027: \u0027req-3b3eb9d0-4efe-4e5f-b40f-536d1799cdeb\u0027, \u0027connection\u0027: \u0027close\u0027, \u0027status\u0027: \u0027200\u0027, \u0027content-location\u0027: \u0027https://200.225.47.39/compute/v2.1/servers/16edcc89-1650-4523-8fc6-302c4690397e/action\u0027}\nBody: b\u0027{\"console\": {\"type\": \"novnc\", \"url\": \"http://200.225.47.39:6080/vnc_lite.html?path\u003d%3Ftoken%3Dadd70b1e-7ea8-4be2-bdfc-103f3dc99529\"}}\n\n\nthat is using 6080 the port that nova novnc console proxy is running on as expected\n\nironic proxy runs on 200.225.47.39:6090\n\nwe can see nova novnc console handel that request properly here \n\nhttps://zuul.opendev.org/t/openstack/build/c43054ff62f241ef88fed2a215796d33/log/controller/logs/screen-n-novnc-cell1.txt#14\n\nunfortunetly the test mixin does not log\n\nhttps://github.com/openstack/tempest/blob/4a271b131d777346bd1248e1ab8c07dc878279c7/tempest/common/compute.py#L555\n\nso while the addtion of validate_console shoudl verify the functionatliy its just not obvious in the test output because it not a seprate testcase its an internal step in teh current test case\n\nhttps://review.opendev.org/c/openstack/ironic-tempest-plugin/+/963643/9/ironic_tempest_plugin/tests/scenario/test_baremetal_basic_ops.py#227\n\nso the best i can point to to show this workign ened to end is in the nova novnc proxy we see the connection is established here\n\nhttps://zuul.opendev.org/t/openstack/build/c43054ff62f241ef88fed2a215796d33/log/controller/logs/screen-n-novnc-cell1.txt#18-19\nto port 44493\n\n,instance_uuid\u003d16edcc89-1650-4523-8fc6-302c4690397e,internal_access_path\u003dNone,port\u003d44493,tls_port\u003dNone,token\u003d\u0027***\u0027,updated_at\u003dNone)\n\nwhich is the vncport of the ironic node\n\nhttps://zuul.opendev.org/t/openstack/build/c43054ff62f241ef88fed2a215796d33/log/controller/logs/tempest_log.txt#1538-1539\n\nwhich i think proves this does in fact work end to end.","commit_id":"341c645104f2d5e601af63119d33554efeba74a7"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"d6ecbfc566c64611c9cb015be1f19242c2878193","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":10,"id":"04a29d65_3c085814","in_reply_to":"248d4918_c1eaaaf2","updated":"2026-01-27 00:48:27.000000000","message":"OK I\u0027ve done the following to actually run the console check in the scenario test\n- in ironic-tempest-plugin run job ironic-tempest-bios-ipmi-direct which is the same as ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa https://review.opendev.org/c/openstack/ironic-tempest-plugin/+/974780\n- The scenario test change is the next in the series, and depends on this nova change https://review.opendev.org/c/openstack/ironic-tempest-plugin/+/963643\n- The ironic-tempest-bios-ipmi-direct job is green and below is a link to nova logs enabling the graphical console based on scenario test activity.\n\nhttps://zuul.opendev.org/t/openstack/build/c43054ff62f241ef88fed2a215796d33/log/controller/logs/screen-n-cpu.txt#2511-2516\n\nAs an aside, I\u0027ve proposed a change to correct the name of the ironic job used by nova https://review.opendev.org/c/openstack/nova/+/974781","commit_id":"341c645104f2d5e601af63119d33554efeba74a7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cc9d6be35c095849dfce5f8fa14f6d06e5dd55dc","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":10,"id":"248d4918_c1eaaaf2","in_reply_to":"42b2fbf7_78b47e56","updated":"2026-01-26 20:06:48.000000000","message":"yep although it does not run the new tests your adding do we have a ci run of this even form a DNM patch that we can review to see it run end to end correctly?","commit_id":"341c645104f2d5e601af63119d33554efeba74a7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"39c5371a04a7359bd79f4f77c90c9eadec29024c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"22dbfed0_fde343d9","in_reply_to":"8795e5af_4c9b2fe7","updated":"2026-02-23 16:23:55.000000000","message":"Done","commit_id":"341c645104f2d5e601af63119d33554efeba74a7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"19ea56af38488dc0ce829cea7a9b885877099bfc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"16779f65_04a240a7","updated":"2026-02-23 16:23:34.000000000","message":"This looks good to me.","commit_id":"791310ae1e7f9e7c27c2bcdf9e3efb351f3a3d70"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"9f22b85897ab77ae7142ec2c38b56b4e05009c53","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"6c82ef60_bfb3c660","updated":"2026-01-28 03:28:50.000000000","message":"recheck nova-live-migration-ceph","commit_id":"791310ae1e7f9e7c27c2bcdf9e3efb351f3a3d70"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"e18adbab2955234a6150b97ca82dd26571ab6e40","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"f73176cc_1b955661","updated":"2026-01-27 19:16:26.000000000","message":"recheck nova-live-migration-ceph, likely unrelated","commit_id":"791310ae1e7f9e7c27c2bcdf9e3efb351f3a3d70"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"edc8a2fdf3b558962a75e0c0504f4fd753db4e7b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"4406990a_4abaaabc","in_reply_to":"6c82ef60_bfb3c660","updated":"2026-01-28 14:03:19.000000000","message":"ya the ceph issue is somethin wee need to look into but its not related to yoru code\n\nits been unstable for the last 2-3 weeks typiclly faliling in the cephadm operations so we may need to look at the version of ceph we are installing and or why that has regressed but that not nova speicifc.","commit_id":"791310ae1e7f9e7c27c2bcdf9e3efb351f3a3d70"}],"doc/source/admin/configuration/hypervisor-ironic.rst":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ae8037cefc354cea88dc1ef8872ad68394d6604d","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"The nova noVNC VNC console service can connect to bare metal nodes when"},{"line_number":31,"context_line":"ironic has"},{"line_number":32,"context_line":":ironic-doc:`Graphical console support\u003cinstall/graphical-console.html\u003e``"},{"line_number":33,"context_line":"enabled and configured."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Configuration"}],"source_content_type":"text/x-rst","patch_set":7,"id":"b439c285_9bb550a7","line":32,"updated":"2025-12-17 14:57:30.000000000","message":"I was curious why the docs build was failing, and noticed the extra character at the end of line. Turns out that was why.","commit_id":"49a018c6c7fca6c7f60371c6fa2a26c9d5eafda8"}],"doc/source/admin/remote-console-access.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9612f426f7d03609e57fa6e7f606a010f20c0b76","unresolved":true,"context_lines":[{"line_number":280,"context_line":".. note::"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    Enabling ``vencrypt`` is not yet implemented for ironic, so this is not"},{"line_number":283,"context_line":"    yet supported for the ironic hypervisor driver."},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"The :oslo.config:option:`vnc.auth_schemes` values should be listed in order"},{"line_number":286,"context_line":"of preference. If enabling VeNCrypt on an existing deployment which already has"}],"source_content_type":"text/x-rst","patch_set":8,"id":"8750f063_58dff7fb","line":283,"updated":"2025-12-17 15:48:48.000000000","message":"ack so this is a preferentially ordered list of auth schemas\nso as long as the ironic driver fallsback to none when \n\n`auth_schemes\u003dvencrypt,none` then it fine.\n\nit would likely be good to raise a error if it was just \n`auth_schemes\u003dvencrypt`\n\nbut its ok if vencrypt is not initially supported.","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dfbcb2d8dfd29b5fda132b5a20e048189a4a0fa7","unresolved":false,"context_lines":[{"line_number":280,"context_line":".. note::"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    Enabling ``vencrypt`` is not yet implemented for ironic, so this is not"},{"line_number":283,"context_line":"    yet supported for the ironic hypervisor driver."},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"The :oslo.config:option:`vnc.auth_schemes` values should be listed in order"},{"line_number":286,"context_line":"of preference. If enabling VeNCrypt on an existing deployment which already has"}],"source_content_type":"text/x-rst","patch_set":8,"id":"525737dd_a772fd29","line":283,"in_reply_to":"8750f063_58dff7fb","updated":"2026-01-23 15:18:53.000000000","message":"Acknowledged","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"}],"doc/source/user/support-matrix.ini":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9612f426f7d03609e57fa6e7f606a010f20c0b76","unresolved":false,"context_lines":[{"line_number":1017,"context_line":"driver.libvirt-qemu-x86\u003dcomplete"},{"line_number":1018,"context_line":"driver.libvirt-lxc\u003dmissing"},{"line_number":1019,"context_line":"driver.vmware\u003dcomplete"},{"line_number":1020,"context_line":"driver.ironic\u003dpartial"},{"line_number":1021,"context_line":"driver.libvirt-vz-vm\u003dcomplete"},{"line_number":1022,"context_line":"driver.libvirt-vz-ct\u003dcomplete"},{"line_number":1023,"context_line":"driver.zvm\u003dmissing"}],"source_content_type":"text/x-properties","patch_set":8,"id":"afa9e76d_f57586c7","line":1020,"updated":"2025-12-17 15:48:48.000000000","message":"+1 so techinnlay it was partil before because you could use novnc to conenct to shellinabox to have access to teh terminal over ipmi before but that was remvoed on the ironic side a few years ago.\n\nbut certenly updating it to partial makes sense","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"}],"nova/conf/ironic.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"99e706b22a1aa89d5830ea5a2041029b3ceb885c","unresolved":true,"context_lines":[{"line_number":73,"context_line":"        default\u003d60,"},{"line_number":74,"context_line":"        min\u003d0,"},{"line_number":75,"context_line":"        help\u003d\u0027Timeout (seconds) to wait for node VNC console state \u0027"},{"line_number":76,"context_line":"             \u0027changed. Set to 0 to disable timeout.\u0027),"},{"line_number":77,"context_line":"    cfg.StrOpt("},{"line_number":78,"context_line":"        \u0027conductor_group\u0027,"},{"line_number":79,"context_line":"        deprecated_name\u003d\u0027partition_key\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"14cd6a87_0fec7caf","line":76,"updated":"2025-11-10 17:16:06.000000000","message":"i agree with the ablity to diable the timeout mainly for consitency with the serial config option but i assume we woudl not advise that in production\n\ndo we want to take this opertunity to renfoce that in teh help text\n\nfeel free to ignore this comment just asking this while we are here.","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"33ba178575a1356da86423917ece22825478450b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        default\u003d60,"},{"line_number":74,"context_line":"        min\u003d0,"},{"line_number":75,"context_line":"        help\u003d\u0027Timeout (seconds) to wait for node VNC console state \u0027"},{"line_number":76,"context_line":"             \u0027changed. Set to 0 to disable timeout.\u0027),"},{"line_number":77,"context_line":"    cfg.StrOpt("},{"line_number":78,"context_line":"        \u0027conductor_group\u0027,"},{"line_number":79,"context_line":"        deprecated_name\u003d\u0027partition_key\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3c2a3faa_05fd5109","line":76,"in_reply_to":"14cd6a87_0fec7caf","updated":"2025-11-12 01:47:19.000000000","message":"Done","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"}],"nova/tests/unit/virt/ironic/test_driver.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"99e706b22a1aa89d5830ea5a2041029b3ceb885c","unresolved":true,"context_lines":[{"line_number":3511,"context_line":"            return self._create_console_data("},{"line_number":3512,"context_line":"                enabled\u003dtemp_data[\u0027target_mode\u0027],"},{"line_number":3513,"context_line":"                console_type\u003d\u0027vnc\u0027,"},{"line_number":3514,"context_line":"                url\u003d\u0027http://127.0.0.1:10001/vnc_lite.html\u0027)"},{"line_number":3515,"context_line":""},{"line_number":3516,"context_line":"        def _fake_enable_node_console(node_uuid):"},{"line_number":3517,"context_line":"            temp_data[\u0027target_mode\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":6,"id":"da544d3c_b9a750ef","line":3514,"updated":"2025-11-10 17:16:06.000000000","message":"so in the actual real code this url obviouly need to be genreated form a template config option or looked up form the ironic api and managed on the ironic side.\n\nwe also need to ensure that we do not return teh dirct vnc console url to the end user and all taffic is routed vai the nova novnc proxy server instance.","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9612f426f7d03609e57fa6e7f606a010f20c0b76","unresolved":false,"context_lines":[{"line_number":3511,"context_line":"            return self._create_console_data("},{"line_number":3512,"context_line":"                enabled\u003dtemp_data[\u0027target_mode\u0027],"},{"line_number":3513,"context_line":"                console_type\u003d\u0027vnc\u0027,"},{"line_number":3514,"context_line":"                url\u003d\u0027http://127.0.0.1:10001/vnc_lite.html\u0027)"},{"line_number":3515,"context_line":""},{"line_number":3516,"context_line":"        def _fake_enable_node_console(node_uuid):"},{"line_number":3517,"context_line":"            temp_data[\u0027target_mode\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":6,"id":"74231b7a_98d5f86b","line":3514,"in_reply_to":"6bc64c37_6906bbd5","updated":"2025-12-17 15:48:48.000000000","message":"Acknowledged","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"33ba178575a1356da86423917ece22825478450b","unresolved":true,"context_lines":[{"line_number":3511,"context_line":"            return self._create_console_data("},{"line_number":3512,"context_line":"                enabled\u003dtemp_data[\u0027target_mode\u0027],"},{"line_number":3513,"context_line":"                console_type\u003d\u0027vnc\u0027,"},{"line_number":3514,"context_line":"                url\u003d\u0027http://127.0.0.1:10001/vnc_lite.html\u0027)"},{"line_number":3515,"context_line":""},{"line_number":3516,"context_line":"        def _fake_enable_node_console(node_uuid):"},{"line_number":3517,"context_line":"            temp_data[\u0027target_mode\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":6,"id":"6bc64c37_6906bbd5","line":3514,"in_reply_to":"da544d3c_b9a750ef","updated":"2025-11-12 01:47:19.000000000","message":"This represents a link to ironic\u0027s novnc-proxy which the ironic hypervisor driver ignores and queries the node\u0027s actual VNC address. This is why the below asserts never check for port 10001","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9612f426f7d03609e57fa6e7f606a010f20c0b76","unresolved":true,"context_lines":[{"line_number":3513,"context_line":"                console_type\u003d\u0027vnc\u0027,"},{"line_number":3514,"context_line":"                url\u003d\u0027http://127.0.0.1:10001/vnc_lite.html\u0027)"},{"line_number":3515,"context_line":""},{"line_number":3516,"context_line":"        def _fake_enable_node_console(node_uuid):"},{"line_number":3517,"context_line":"            temp_data[\u0027target_mode\u0027] \u003d True"},{"line_number":3518,"context_line":""},{"line_number":3519,"context_line":"        self.mock_conn.enable_node_console.side_effect \u003d \\"},{"line_number":3520,"context_line":"            _fake_enable_node_console"},{"line_number":3521,"context_line":""},{"line_number":3522,"context_line":"        self.mock_conn.get_node_console.side_effect \u003d _fake_get_console"},{"line_number":3523,"context_line":"        self.mock_conn.get_node.return_value \u003d _get_cached_node("},{"line_number":3524,"context_line":"            driver_internal_info\u003d{"},{"line_number":3525,"context_line":"                \u0027vnc_host\u0027: \u0027127.0.0.1\u0027,"},{"line_number":3526,"context_line":"                \u0027vnc_port\u0027: 10000})"},{"line_number":3527,"context_line":""},{"line_number":3528,"context_line":"        result \u003d self.driver.get_vnc_console(self.ctx, self.instance)"},{"line_number":3529,"context_line":""},{"line_number":3530,"context_line":"        self.assertGreater(self.mock_conn.get_node_console.call_count, 1)"},{"line_number":3531,"context_line":"        self.assertEqual(1, self.mock_conn.enable_node_console.call_count)"},{"line_number":3532,"context_line":"        self.assertIsInstance(result, console_type.ConsoleVNC)"},{"line_number":3533,"context_line":"        self.assertEqual(\u0027127.0.0.1\u0027, result.host)"},{"line_number":3534,"context_line":"        self.assertEqual(10000, result.port)"},{"line_number":3535,"context_line":""},{"line_number":3536,"context_line":"    def test_get_vnc_console_enabled(self):"},{"line_number":3537,"context_line":"        temp_data \u003d {\u0027target_mode\u0027: True}"}],"source_content_type":"text/x-python","patch_set":8,"id":"f50a4ea9_ff540e10","line":3534,"range":{"start_line":3516,"start_character":0,"end_line":3534,"end_character":44},"updated":"2025-12-17 15:48:48.000000000","message":"this is consistent with the style in the file.\n\nit reads a little oddly compare to nova unit test in general because we typically \n\nset up fixuters/mock in setUP when they are common and don\u0027t need to be modified in tests and if they are test sepcific we create teh mock in the test to keep locality of the mock with the test that consumes it.\n\nanway it better to be consitent with the rest of the file so this is fine\n\nthe imporant thing is you are properly breakign ut teh test cases and group each test case int the mock setup , invockation and assert and this looks pretty clean over all so\n\n\n_fake_get_console, _fake_enable_node_console and   _fake_disable_node_console\n\nprobaly shoudl be in the test class as helper not inine since you are mostly jsut repeatign the same code in each test but this can bee treated as a nit.","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f0b8dce884e127f52831123ec3b897e03630aace","unresolved":false,"context_lines":[{"line_number":3513,"context_line":"                console_type\u003d\u0027vnc\u0027,"},{"line_number":3514,"context_line":"                url\u003d\u0027http://127.0.0.1:10001/vnc_lite.html\u0027)"},{"line_number":3515,"context_line":""},{"line_number":3516,"context_line":"        def _fake_enable_node_console(node_uuid):"},{"line_number":3517,"context_line":"            temp_data[\u0027target_mode\u0027] \u003d True"},{"line_number":3518,"context_line":""},{"line_number":3519,"context_line":"        self.mock_conn.enable_node_console.side_effect \u003d \\"},{"line_number":3520,"context_line":"            _fake_enable_node_console"},{"line_number":3521,"context_line":""},{"line_number":3522,"context_line":"        self.mock_conn.get_node_console.side_effect \u003d _fake_get_console"},{"line_number":3523,"context_line":"        self.mock_conn.get_node.return_value \u003d _get_cached_node("},{"line_number":3524,"context_line":"            driver_internal_info\u003d{"},{"line_number":3525,"context_line":"                \u0027vnc_host\u0027: \u0027127.0.0.1\u0027,"},{"line_number":3526,"context_line":"                \u0027vnc_port\u0027: 10000})"},{"line_number":3527,"context_line":""},{"line_number":3528,"context_line":"        result \u003d self.driver.get_vnc_console(self.ctx, self.instance)"},{"line_number":3529,"context_line":""},{"line_number":3530,"context_line":"        self.assertGreater(self.mock_conn.get_node_console.call_count, 1)"},{"line_number":3531,"context_line":"        self.assertEqual(1, self.mock_conn.enable_node_console.call_count)"},{"line_number":3532,"context_line":"        self.assertIsInstance(result, console_type.ConsoleVNC)"},{"line_number":3533,"context_line":"        self.assertEqual(\u0027127.0.0.1\u0027, result.host)"},{"line_number":3534,"context_line":"        self.assertEqual(10000, result.port)"},{"line_number":3535,"context_line":""},{"line_number":3536,"context_line":"    def test_get_vnc_console_enabled(self):"},{"line_number":3537,"context_line":"        temp_data \u003d {\u0027target_mode\u0027: True}"}],"source_content_type":"text/x-python","patch_set":8,"id":"2033d675_488823f8","line":3534,"range":{"start_line":3516,"start_character":0,"end_line":3534,"end_character":44},"in_reply_to":"f50a4ea9_ff540e10","updated":"2026-01-05 04:12:09.000000000","message":"The inline functions really weren\u0027t adding functionality or clarity. I\u0027ve updated it with more conventional mocking.","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dfbcb2d8dfd29b5fda132b5a20e048189a4a0fa7","unresolved":false,"context_lines":[{"line_number":3517,"context_line":"                enabled\u003dTrue,"},{"line_number":3518,"context_line":"                console_type\u003d\u0027vnc\u0027,"},{"line_number":3519,"context_line":"                url\u003d\u0027http://127.0.0.1:10001/vnc_lite.html\u0027)"},{"line_number":3520,"context_line":""},{"line_number":3521,"context_line":"        self.mock_conn.get_node_console.side_effect \u003d ["},{"line_number":3522,"context_line":"            console_data_disabled,"},{"line_number":3523,"context_line":"            console_data_disabled,"}],"source_content_type":"text/x-python","patch_set":9,"id":"46a5ed43_152148fe","line":3520,"in_reply_to":"ba1ff599_447955c4","updated":"2026-01-23 15:18:53.000000000","message":"\u003e Mock usage without autospec\u003dTrue in VNC console tests\n\u003e \n\u003e **Severity**: HIGH | **Confidence**: 0.8\n\u003e \n\u003e **Risk**: H210 violation - mock patches without autospec\u003dTrue can create unreliable tests that don\u0027t catch interface changes\n\u003e \n\u003e **Priority**: Before merge\n\u003e **Why This Matters**: The autospec\u003dTrue parameter ensures mocks maintain the correct interface and prevents test failures when the real API changes\n\u003e \n\u003e **Recommendation**:\n\u003e Add autospec\u003dTrue to all @mock.patch decorators in the VNC console test methods: test_get_vnc_console_disabled, test_get_vnc_console_enable_timeout, test_get_vnc_console_enabled, test_get_vnc_console_missing_internal_info, test_get_vnc_console_wrong_type, test_get_vnc_console_api_error, test_get_vnc_console_enable_api_error\n\nyes that is the general recommeandation to ensure we are not usign incorrect filed or method names ectra but while that is nice to have its generally considred a nit.","commit_id":"6f652bf71dbbfabc1af3e6e107c1158553ea1d11"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"99e706b22a1aa89d5830ea5a2041029b3ceb885c","unresolved":true,"context_lines":[{"line_number":1966,"context_line":""},{"line_number":1967,"context_line":"            # Waiting for the console state to be enabled"},{"line_number":1968,"context_line":"            try:"},{"line_number":1969,"context_line":"                timer \u003d loopingcall.BackOffLoopingCall(_wait_state)"},{"line_number":1970,"context_line":"                return timer.start("},{"line_number":1971,"context_line":"                    starting_interval\u003d_CONSOLE_STATE_CHECKING_INTERVAL,"},{"line_number":1972,"context_line":"                    timeout\u003dCONF.ironic.vnc_console_state_timeout,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5e014c7e_772c576a","line":1969,"updated":"2025-11-10 17:16:06.000000000","message":"hum im realsizing that the ironic deiver is swaping backgound task using ironic looping call interface which we do not use elsewhere in nova or at least we do not use commonly anywehre else in nova\n\n@gibizer@gmail.com ^ so this should use thread or eventlets based on which oslo service backend is enabled but this might be one areay that need some review when it comes to the eventlet removal series.\n\nin general we were expecting the ironic driver to have minimal code that would need to be refactored but this may be one case.\n\ni also wonder if this timer pater is something we can  resues elswhere or will it just not work  in threadign mode and need to be refactored to use executors and futures directly like everything else?","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"27d0a33d72c3fb8052e5644aeaf229386ef2404a","unresolved":false,"context_lines":[{"line_number":1966,"context_line":""},{"line_number":1967,"context_line":"            # Waiting for the console state to be enabled"},{"line_number":1968,"context_line":"            try:"},{"line_number":1969,"context_line":"                timer \u003d loopingcall.BackOffLoopingCall(_wait_state)"},{"line_number":1970,"context_line":"                return timer.start("},{"line_number":1971,"context_line":"                    starting_interval\u003d_CONSOLE_STATE_CHECKING_INTERVAL,"},{"line_number":1972,"context_line":"                    timeout\u003dCONF.ironic.vnc_console_state_timeout,"}],"source_content_type":"text/x-python","patch_set":6,"id":"d8b9e323_810d7354","line":1969,"in_reply_to":"5e014c7e_772c576a","updated":"2026-01-08 16:18:50.000000000","message":"Acknowledged","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"99e706b22a1aa89d5830ea5a2041029b3ceb885c","unresolved":true,"context_lines":[{"line_number":2022,"context_line":""},{"line_number":2023,"context_line":"        node \u003d self.ironic_connection.get_node("},{"line_number":2024,"context_line":"            instance.node, fields\u003d(\u0027uuid\u0027, \u0027driver_internal_info\u0027))"},{"line_number":2025,"context_line":"        try:"},{"line_number":2026,"context_line":"            host \u003d node.driver_internal_info.get(\u0027vnc_host\u0027)"},{"line_number":2027,"context_line":"            port \u003d node.driver_internal_info.get(\u0027vnc_port\u0027)"},{"line_number":2028,"context_line":"            if not (host and port):"},{"line_number":2029,"context_line":"                raise AssertionError()"},{"line_number":2030,"context_line":"        except (ValueError, AssertionError):"},{"line_number":2031,"context_line":"            LOG.error(\u0027Invalid VNC console URL \"%(url)s\" \u0027"},{"line_number":2032,"context_line":"                      \u0027(ironic node %(node)s)\u0027,"},{"line_number":2033,"context_line":"                      {\u0027url\u0027: console_info[\"url\"],"},{"line_number":2034,"context_line":"                       \u0027node\u0027: node.id},"},{"line_number":2035,"context_line":"                      instance\u003dinstance)"},{"line_number":2036,"context_line":"            raise exception.ConsoleTypeUnavailable(console_type\u003d\u0027vnc\u0027)"},{"line_number":2037,"context_line":""},{"line_number":2038,"context_line":"        return console_type.ConsoleVNC(host\u003dhost, port\u003dport)"},{"line_number":2039,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"401c6e04_44c88556","line":2036,"range":{"start_line":2025,"start_character":0,"end_line":2036,"end_character":70},"updated":"2025-11-10 17:16:06.000000000","message":"we do not use assersion erros in nova liek this.\n\nyou shoudl create and raise an explcity error type instead.\n\nyou coudl also rais an ValueError here instead however this is rather ineefeince\nwhile we coudl do \n\n\n```\n            host \u003d node.driver_internal_info.get(\u0027vnc_host\u0027)\n            port \u003d node.driver_internal_info.get(\u0027vnc_port\u0027)\n            if host is None or port is None:\n                raise ValueError(\"host and port are required\")\n```\n\nwe sould instead do \n\n\n```suggestion\n        host \u003d node.driver_internal_info.get(\u0027vnc_host\u0027)\n        port \u003d node.driver_internal_info.get(\u0027vnc_port\u0027)\n        if host is None or port is None:\n            LOG.error(\u0027Invalid VNC console URL \"%(url)s\" \u0027\n                      \u0027(ironic node %(node)s)\u0027,\n                      {\u0027url\u0027: console_info[\"url\"],\n                       \u0027node\u0027: node.id},\n                      instance\u003dinstance)\n            raise exception.ConsoleTypeUnavailable(console_type\u003d\u0027vnc\u0027)\n```\n\ni.e. remove the try except entirly and just raise the explicit exception.","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"33ba178575a1356da86423917ece22825478450b","unresolved":false,"context_lines":[{"line_number":2022,"context_line":""},{"line_number":2023,"context_line":"        node \u003d self.ironic_connection.get_node("},{"line_number":2024,"context_line":"            instance.node, fields\u003d(\u0027uuid\u0027, \u0027driver_internal_info\u0027))"},{"line_number":2025,"context_line":"        try:"},{"line_number":2026,"context_line":"            host \u003d node.driver_internal_info.get(\u0027vnc_host\u0027)"},{"line_number":2027,"context_line":"            port \u003d node.driver_internal_info.get(\u0027vnc_port\u0027)"},{"line_number":2028,"context_line":"            if not (host and port):"},{"line_number":2029,"context_line":"                raise AssertionError()"},{"line_number":2030,"context_line":"        except (ValueError, AssertionError):"},{"line_number":2031,"context_line":"            LOG.error(\u0027Invalid VNC console URL \"%(url)s\" \u0027"},{"line_number":2032,"context_line":"                      \u0027(ironic node %(node)s)\u0027,"},{"line_number":2033,"context_line":"                      {\u0027url\u0027: console_info[\"url\"],"},{"line_number":2034,"context_line":"                       \u0027node\u0027: node.id},"},{"line_number":2035,"context_line":"                      instance\u003dinstance)"},{"line_number":2036,"context_line":"            raise exception.ConsoleTypeUnavailable(console_type\u003d\u0027vnc\u0027)"},{"line_number":2037,"context_line":""},{"line_number":2038,"context_line":"        return console_type.ConsoleVNC(host\u003dhost, port\u003dport)"},{"line_number":2039,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ea7397e1_bc97f7ae","line":2036,"range":{"start_line":2025,"start_character":0,"end_line":2036,"end_character":70},"in_reply_to":"401c6e04_44c88556","updated":"2025-11-12 01:47:19.000000000","message":"This was adapted from get_serial_console below but I agree that it is an uncommon pattern. I\u0027ll change it","commit_id":"36074ccb65d411e8f1aa0df9fcdca895052e3db6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9612f426f7d03609e57fa6e7f606a010f20c0b76","unresolved":true,"context_lines":[{"line_number":1936,"context_line":"            \"\"\"Request to acquire node console.\"\"\""},{"line_number":1937,"context_line":"            try:"},{"line_number":1938,"context_line":"                return self.ironic_connection.get_node_console(node_id)"},{"line_number":1939,"context_line":"            except sdk_exc.SDKException as e:"},{"line_number":1940,"context_line":"                LOG.error(\u0027Failed to acquire console information for \u0027"},{"line_number":1941,"context_line":"                          \u0027instance %(inst)s: %(reason)s\u0027,"},{"line_number":1942,"context_line":"                          {\u0027inst\u0027: instance.uuid, \u0027reason\u0027: e})"},{"line_number":1943,"context_line":"                raise exception.ConsoleNotAvailable()"},{"line_number":1944,"context_line":""},{"line_number":1945,"context_line":"        def _wait_state():"},{"line_number":1946,"context_line":"            \"\"\"Wait for the console to be enabled\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"44b1fdde_4d085fa2","line":1943,"range":{"start_line":1939,"start_character":3,"end_line":1943,"end_character":53},"updated":"2025-12-17 15:48:48.000000000","message":"so in general you are missing unit test for the excption pathts for the new code\n\nhttps://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_20f/openstack/20f7a7b6d06c4c66aa9551251a5bb302/cover/z_1089aa535cd39db4_driver_py.html#t1946\n\nis this something your planning to adress?\n\nyou do have a test for the wrong console type but not for the connection api call failing","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f0b8dce884e127f52831123ec3b897e03630aace","unresolved":false,"context_lines":[{"line_number":1936,"context_line":"            \"\"\"Request to acquire node console.\"\"\""},{"line_number":1937,"context_line":"            try:"},{"line_number":1938,"context_line":"                return self.ironic_connection.get_node_console(node_id)"},{"line_number":1939,"context_line":"            except sdk_exc.SDKException as e:"},{"line_number":1940,"context_line":"                LOG.error(\u0027Failed to acquire console information for \u0027"},{"line_number":1941,"context_line":"                          \u0027instance %(inst)s: %(reason)s\u0027,"},{"line_number":1942,"context_line":"                          {\u0027inst\u0027: instance.uuid, \u0027reason\u0027: e})"},{"line_number":1943,"context_line":"                raise exception.ConsoleNotAvailable()"},{"line_number":1944,"context_line":""},{"line_number":1945,"context_line":"        def _wait_state():"},{"line_number":1946,"context_line":"            \"\"\"Wait for the console to be enabled\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"95f83f89_977292f6","line":1943,"range":{"start_line":1939,"start_character":3,"end_line":1943,"end_character":53},"in_reply_to":"44b1fdde_4d085fa2","updated":"2026-01-05 04:12:09.000000000","message":"Done","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9612f426f7d03609e57fa6e7f606a010f20c0b76","unresolved":true,"context_lines":[{"line_number":1945,"context_line":"        def _wait_state():"},{"line_number":1946,"context_line":"            \"\"\"Wait for the console to be enabled\"\"\""},{"line_number":1947,"context_line":"            console \u003d _get_console()"},{"line_number":1948,"context_line":"            if console[\u0027console_enabled\u0027]:"},{"line_number":1949,"context_line":"                raise loopingcall.LoopingCallDone(retvalue\u003dconsole)"},{"line_number":1950,"context_line":""},{"line_number":1951,"context_line":"            _log_ironic_polling(\u0027set vnc console mode\u0027, node, instance)"}],"source_content_type":"text/x-python","patch_set":8,"id":"39a14940_8c2d4b7d","line":1948,"updated":"2025-12-17 15:48:48.000000000","message":"you also dont simulate this ever looping so this is curretnly alwasy ture in each test.\n\ncan we use side_effect with a list of return values so that it false on the first invocation and true on the second.","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f0b8dce884e127f52831123ec3b897e03630aace","unresolved":false,"context_lines":[{"line_number":1945,"context_line":"        def _wait_state():"},{"line_number":1946,"context_line":"            \"\"\"Wait for the console to be enabled\"\"\""},{"line_number":1947,"context_line":"            console \u003d _get_console()"},{"line_number":1948,"context_line":"            if console[\u0027console_enabled\u0027]:"},{"line_number":1949,"context_line":"                raise loopingcall.LoopingCallDone(retvalue\u003dconsole)"},{"line_number":1950,"context_line":""},{"line_number":1951,"context_line":"            _log_ironic_polling(\u0027set vnc console mode\u0027, node, instance)"}],"source_content_type":"text/x-python","patch_set":8,"id":"faf39e46_e320270d","line":1948,"in_reply_to":"39a14940_8c2d4b7d","updated":"2026-01-05 04:12:09.000000000","message":"Done","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9612f426f7d03609e57fa6e7f606a010f20c0b76","unresolved":true,"context_lines":[{"line_number":1957,"context_line":"            \"\"\"Request to enable/disable node console.\"\"\""},{"line_number":1958,"context_line":"            try:"},{"line_number":1959,"context_line":"                self.ironic_connection.enable_node_console(node_id)"},{"line_number":1960,"context_line":"            except sdk_exc.SDKException as e:"},{"line_number":1961,"context_line":"                LOG.error(\u0027Failed to set console mode to \"True\" \u0027"},{"line_number":1962,"context_line":"                          \u0027for instance %(inst)s: %(reason)s\u0027,"},{"line_number":1963,"context_line":"                          {\u0027inst\u0027: instance.uuid,"}],"source_content_type":"text/x-python","patch_set":8,"id":"6bd985cd_58a13a59","line":1960,"updated":"2025-12-17 15:48:48.000000000","message":"same here this is not tested","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f0b8dce884e127f52831123ec3b897e03630aace","unresolved":false,"context_lines":[{"line_number":1957,"context_line":"            \"\"\"Request to enable/disable node console.\"\"\""},{"line_number":1958,"context_line":"            try:"},{"line_number":1959,"context_line":"                self.ironic_connection.enable_node_console(node_id)"},{"line_number":1960,"context_line":"            except sdk_exc.SDKException as e:"},{"line_number":1961,"context_line":"                LOG.error(\u0027Failed to set console mode to \"True\" \u0027"},{"line_number":1962,"context_line":"                          \u0027for instance %(inst)s: %(reason)s\u0027,"},{"line_number":1963,"context_line":"                          {\u0027inst\u0027: instance.uuid,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5ca92226_116082f6","line":1960,"in_reply_to":"6bd985cd_58a13a59","updated":"2026-01-05 04:12:09.000000000","message":"Done","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9612f426f7d03609e57fa6e7f606a010f20c0b76","unresolved":true,"context_lines":[{"line_number":1971,"context_line":"                    starting_interval\u003d_CONSOLE_STATE_CHECKING_INTERVAL,"},{"line_number":1972,"context_line":"                    timeout\u003dCONF.ironic.vnc_console_state_timeout,"},{"line_number":1973,"context_line":"                    jitter\u003d0.5).wait()"},{"line_number":1974,"context_line":"            except loopingcall.LoopingCallTimeOut:"},{"line_number":1975,"context_line":"                LOG.error(\u0027Timeout while waiting for console_enabled to be \u0027"},{"line_number":1976,"context_line":"                          \u0027set to \"True\" on node %(node)s\u0027,"},{"line_number":1977,"context_line":"                          {\u0027node\u0027: node_id})"}],"source_content_type":"text/x-python","patch_set":8,"id":"6f0efda4_e2ccd244","line":1974,"updated":"2025-12-17 15:48:48.000000000","message":"or this","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f0b8dce884e127f52831123ec3b897e03630aace","unresolved":false,"context_lines":[{"line_number":1971,"context_line":"                    starting_interval\u003d_CONSOLE_STATE_CHECKING_INTERVAL,"},{"line_number":1972,"context_line":"                    timeout\u003dCONF.ironic.vnc_console_state_timeout,"},{"line_number":1973,"context_line":"                    jitter\u003d0.5).wait()"},{"line_number":1974,"context_line":"            except loopingcall.LoopingCallTimeOut:"},{"line_number":1975,"context_line":"                LOG.error(\u0027Timeout while waiting for console_enabled to be \u0027"},{"line_number":1976,"context_line":"                          \u0027set to \"True\" on node %(node)s\u0027,"},{"line_number":1977,"context_line":"                          {\u0027node\u0027: node_id})"}],"source_content_type":"text/x-python","patch_set":8,"id":"89fb0682_52931aed","line":1974,"in_reply_to":"6f0efda4_e2ccd244","updated":"2026-01-05 04:12:09.000000000","message":"Done","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9612f426f7d03609e57fa6e7f606a010f20c0b76","unresolved":true,"context_lines":[{"line_number":1989,"context_line":"        else:"},{"line_number":1990,"context_line":"            LOG.debug(\u0027Console is disabled for instance %s\u0027,"},{"line_number":1991,"context_line":"                      instance.uuid)"},{"line_number":1992,"context_line":"            raise exception.ConsoleNotAvailable()"},{"line_number":1993,"context_line":""},{"line_number":1994,"context_line":"    def get_vnc_console(self, context, instance):"},{"line_number":1995,"context_line":"        \"\"\"Acquire VNC console information."}],"source_content_type":"text/x-python","patch_set":8,"id":"c56ca8b7_e0bedaf2","line":1992,"updated":"2025-12-17 15:48:48.000000000","message":"or this","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"27d0a33d72c3fb8052e5644aeaf229386ef2404a","unresolved":false,"context_lines":[{"line_number":1989,"context_line":"        else:"},{"line_number":1990,"context_line":"            LOG.debug(\u0027Console is disabled for instance %s\u0027,"},{"line_number":1991,"context_line":"                      instance.uuid)"},{"line_number":1992,"context_line":"            raise exception.ConsoleNotAvailable()"},{"line_number":1993,"context_line":""},{"line_number":1994,"context_line":"    def get_vnc_console(self, context, instance):"},{"line_number":1995,"context_line":"        \"\"\"Acquire VNC console information."}],"source_content_type":"text/x-python","patch_set":8,"id":"e1778933_f3faf361","line":1992,"in_reply_to":"878de1f9_eb146bcc","updated":"2026-01-08 16:18:50.000000000","message":"Acknowledged","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f0b8dce884e127f52831123ec3b897e03630aace","unresolved":true,"context_lines":[{"line_number":1989,"context_line":"        else:"},{"line_number":1990,"context_line":"            LOG.debug(\u0027Console is disabled for instance %s\u0027,"},{"line_number":1991,"context_line":"                      instance.uuid)"},{"line_number":1992,"context_line":"            raise exception.ConsoleNotAvailable()"},{"line_number":1993,"context_line":""},{"line_number":1994,"context_line":"    def get_vnc_console(self, context, instance):"},{"line_number":1995,"context_line":"        \"\"\"Acquire VNC console information."}],"source_content_type":"text/x-python","patch_set":8,"id":"878de1f9_eb146bcc","line":1992,"in_reply_to":"c56ca8b7_e0bedaf2","updated":"2026-01-05 04:12:09.000000000","message":"Actually now that I have full coverage it is clear this path is not touched. I\u0027ll remove it.","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9612f426f7d03609e57fa6e7f606a010f20c0b76","unresolved":true,"context_lines":[{"line_number":2003,"context_line":"        LOG.debug(\u0027Getting VNC console\u0027, instance\u003dinstance)"},{"line_number":2004,"context_line":"        try:"},{"line_number":2005,"context_line":"            result \u003d self._get_vnc_console(instance)"},{"line_number":2006,"context_line":"        except exception.ConsoleNotAvailable:"},{"line_number":2007,"context_line":"            raise exception.ConsoleTypeUnavailable(console_type\u003d\u0027vnc\u0027)"},{"line_number":2008,"context_line":""},{"line_number":2009,"context_line":"        console_info \u003d result[\u0027console_info\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"77dadd35_df35a6fa","line":2006,"updated":"2025-12-17 15:48:48.000000000","message":"and this","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f0b8dce884e127f52831123ec3b897e03630aace","unresolved":false,"context_lines":[{"line_number":2003,"context_line":"        LOG.debug(\u0027Getting VNC console\u0027, instance\u003dinstance)"},{"line_number":2004,"context_line":"        try:"},{"line_number":2005,"context_line":"            result \u003d self._get_vnc_console(instance)"},{"line_number":2006,"context_line":"        except exception.ConsoleNotAvailable:"},{"line_number":2007,"context_line":"            raise exception.ConsoleTypeUnavailable(console_type\u003d\u0027vnc\u0027)"},{"line_number":2008,"context_line":""},{"line_number":2009,"context_line":"        console_info \u003d result[\u0027console_info\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"e15f7210_82a01aa2","line":2006,"in_reply_to":"77dadd35_df35a6fa","updated":"2026-01-05 04:12:09.000000000","message":"Done","commit_id":"4de53a317a423f258b75e49f169971a176eed41c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dfbcb2d8dfd29b5fda132b5a20e048189a4a0fa7","unresolved":false,"context_lines":[{"line_number":1919,"context_line":"                      instance.uuid)"},{"line_number":1920,"context_line":"            raise exception.ConsoleNotAvailable()"},{"line_number":1921,"context_line":""},{"line_number":1922,"context_line":"    def _get_vnc_console(self, instance):"},{"line_number":1923,"context_line":"        \"\"\"Acquire novnc console information for an instance."},{"line_number":1924,"context_line":""},{"line_number":1925,"context_line":"        :param instance: nova instance"}],"source_content_type":"text/x-python","patch_set":9,"id":"846f7788_cd768607","line":1922,"in_reply_to":"022a4da5_a68cc916","updated":"2026-01-23 15:18:53.000000000","message":"this is our of scope","commit_id":"6f652bf71dbbfabc1af3e6e107c1158553ea1d11"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dfbcb2d8dfd29b5fda132b5a20e048189a4a0fa7","unresolved":false,"context_lines":[{"line_number":1995,"context_line":"        :raise ConsoleTypeUnavailable: if VNC console is unavailable"},{"line_number":1996,"context_line":"            for the instance"},{"line_number":1997,"context_line":"        \"\"\""},{"line_number":1998,"context_line":"        LOG.debug(\u0027Getting VNC console\u0027, instance\u003dinstance)"},{"line_number":1999,"context_line":"        try:"},{"line_number":2000,"context_line":"            result \u003d self._get_vnc_console(instance)"},{"line_number":2001,"context_line":"        except exception.ConsoleNotAvailable:"}],"source_content_type":"text/x-python","patch_set":9,"id":"330b0d33_5245df7c","line":1998,"in_reply_to":"9ca41320_64fee066","updated":"2026-01-23 15:18:53.000000000","message":"\u003e Error handling consistency between VNC and serial console methods\n\u003e \n\u003e **Severity**: WARNING | **Confidence**: 0.8\n\u003e \n\u003e **Impact**: Code maintainability and consistency\n\u003e \n\u003e **Suggestion**:\n\u003e Align the exception handling pattern in get_vnc_console with the existing pattern in get_serial_console method for better consistency across console implementations\n\nthis looks consitent to me","commit_id":"6f652bf71dbbfabc1af3e6e107c1158553ea1d11"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dfbcb2d8dfd29b5fda132b5a20e048189a4a0fa7","unresolved":false,"context_lines":[{"line_number":1995,"context_line":"        :raise ConsoleTypeUnavailable: if VNC console is unavailable"},{"line_number":1996,"context_line":"            for the instance"},{"line_number":1997,"context_line":"        \"\"\""},{"line_number":1998,"context_line":"        LOG.debug(\u0027Getting VNC console\u0027, instance\u003dinstance)"},{"line_number":1999,"context_line":"        try:"},{"line_number":2000,"context_line":"            result \u003d self._get_vnc_console(instance)"},{"line_number":2001,"context_line":"        except exception.ConsoleNotAvailable:"}],"source_content_type":"text/x-python","patch_set":9,"id":"236fad23_c2ed7877","line":1998,"in_reply_to":"e288484f_0b9696b0","updated":"2026-01-23 15:18:53.000000000","message":"this is incorrect\n\nthere ar eno bare excption on this line of this reviosn\n\nthere is in the same line prior to this change.\n\nso this is a bug in how its reviweing and reporting the issues.\n\nthis shoudl be on the \"b\" side of the diff but its also cominitng on code you did not modify in this patch so its out os scope \nhttps://review.opendev.org/c/openstack/nova/+/942528/9/nova/virt/ironic/driver.py#b1992","commit_id":"6f652bf71dbbfabc1af3e6e107c1158553ea1d11"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dfbcb2d8dfd29b5fda132b5a20e048189a4a0fa7","unresolved":false,"context_lines":[{"line_number":2017,"context_line":""},{"line_number":2018,"context_line":"        node \u003d self.ironic_connection.get_node("},{"line_number":2019,"context_line":"            instance.node, fields\u003d(\u0027uuid\u0027, \u0027driver_internal_info\u0027))"},{"line_number":2020,"context_line":"        host \u003d node.driver_internal_info.get(\u0027vnc_host\u0027)"},{"line_number":2021,"context_line":"        port \u003d node.driver_internal_info.get(\u0027vnc_port\u0027)"},{"line_number":2022,"context_line":"        if host is None or port is None:"},{"line_number":2023,"context_line":"            LOG.error(\u0027Invalid VNC console URL \"%(url)s\" \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"ab820b3b_f500f62d","line":2020,"in_reply_to":"dbcbd034_876b9986","updated":"2026-01-23 15:18:53.000000000","message":"\u003e Add comprehensive input validation for VNC host and port values\n\u003e \n\u003e **Severity**: SUGGESTION | **Confidence**: 0.7\n\u003e \n\u003e **Benefit**: Enhanced security and robustness\n\u003e \n\u003e **Recommendation**:\n\u003e Add validation to ensure the VNC host and port values are valid before returning the ConsoleVNC object, similar to how the serial console validates URL components\n\nwhile we coudl i dont think we should\n\nwe coudl aprse it to ensure it a valid hostname/fqdn/ip  but if it was not it would be a bug in ironic.\n\nfor the port we coudl assert its an int in the expected range fo valid tcp port but again this woudl be a ironic bug and i dont think we shoudl second guess its return value as there is no way to recover on the nova side.","commit_id":"6f652bf71dbbfabc1af3e6e107c1158553ea1d11"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"19ea56af38488dc0ce829cea7a9b885877099bfc","unresolved":false,"context_lines":[{"line_number":2030,"context_line":"            LOG.error(\u0027Invalid VNC console URL \"%(url)s\" \u0027"},{"line_number":2031,"context_line":"                    \u0027(ironic node %(node)s)\u0027,"},{"line_number":2032,"context_line":"                    {\u0027url\u0027: console_info[\"url\"],"},{"line_number":2033,"context_line":"                    \u0027node\u0027: node.id},"},{"line_number":2034,"context_line":"                    instance\u003dinstance)"},{"line_number":2035,"context_line":"            raise exception.ConsoleTypeUnavailable(console_type\u003d\u0027vnc\u0027)"},{"line_number":2036,"context_line":"        return console_type.ConsoleVNC(host\u003dhost, port\u003dport)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7d608536_b57aa16d","line":2033,"updated":"2026-02-23 16:23:34.000000000","message":"note to self: we\u0027re not listing `id` is `fields` above, but `id` is resolved to `uuid` in the `openstack.baremetal.v1.node.Node` class 👌","commit_id":"791310ae1e7f9e7c27c2bcdf9e3efb351f3a3d70"}],"releasenotes/notes/ironic_vnc_console-bce48b742cb7e520.yaml":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dfbcb2d8dfd29b5fda132b5a20e048189a4a0fa7","unresolved":true,"context_lines":[{"line_number":5,"context_line":"    pre-requesites for this being available for a node is:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    - Ironic is configured to enable graphical consoles"},{"line_number":8,"context_line":"    - The node ``console_interface`` is a graphical driver such as"},{"line_number":9,"context_line":"      ``redrish-graphical`` or ``fake-graphical``"},{"line_number":10,"context_line":"    - ``nova-novncproxy`` can make network connections to the VNC servers"},{"line_number":11,"context_line":"      which run adjacent to ``ironic-conductor``"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"896d9bc3_8e7efcad","line":8,"in_reply_to":"211ed3e3_8d40bf95","updated":"2026-01-23 15:18:53.000000000","message":"\u003e Documentation typo in release notes\n\u003e \n\u003e **Severity**: WARNING | **Confidence**: 0.9\n\u003e \n\u003e **Impact**: Documentation accuracy and user understanding\n\u003e \n\u003e **Suggestion**:\n\u003e Fix typo \u0027redrish-graphical\u0027 to \u0027redfish-graphical\u0027 in the release notes to match the correct Ironic console interface name\n\nyep this is valid","commit_id":"6f652bf71dbbfabc1af3e6e107c1158553ea1d11"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"47d28c723ac748745fbd3755bf31ae894d381938","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    pre-requesites for this being available for a node is:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    - Ironic is configured to enable graphical consoles"},{"line_number":8,"context_line":"    - The node ``console_interface`` is a graphical driver such as"},{"line_number":9,"context_line":"      ``redrish-graphical`` or ``fake-graphical``"},{"line_number":10,"context_line":"    - ``nova-novncproxy`` can make network connections to the VNC servers"},{"line_number":11,"context_line":"      which run adjacent to ``ironic-conductor``"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"f8604175_b65de498","line":8,"in_reply_to":"896d9bc3_8e7efcad","updated":"2026-01-25 22:49:19.000000000","message":"Done","commit_id":"6f652bf71dbbfabc1af3e6e107c1158553ea1d11"}]}
