)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"dce3bc948af0b81e40eba51e998c59b7c3822ebb","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add conditional graphical console validation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a new configuration option validate_graphical_console that controls"},{"line_number":10,"context_line":"whether graphical console validation tests execute. This will prevent"},{"line_number":11,"context_line":"test failures in jobs."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"validate_graphical_console defaults to false for backward compatibility. Jobs"},{"line_number":14,"context_line":"that enable the ir-novnc service should set this option to True in their"},{"line_number":15,"context_line":"tempest configuration."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"This re-introduces the console validation functionality that was"},{"line_number":18,"context_line":"previously reverted, but with proper configuration-based control to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7342efe0_e8c2ac33","line":15,"range":{"start_line":9,"start_character":0,"end_line":15,"end_character":22},"updated":"2026-03-26 22:12:18.000000000","message":"This commit text needs to be updated for the changed approach","commit_id":"3a73263baa837173a231f3a2cbd88af1d1321286"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"bb3fbe7fb825ccebab02e0bd2c808e85b1cc636b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add conditional graphical console validation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a new configuration option validate_graphical_console that controls"},{"line_number":10,"context_line":"whether graphical console validation tests execute. This will prevent"},{"line_number":11,"context_line":"test failures in jobs."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"validate_graphical_console defaults to false for backward compatibility. Jobs"},{"line_number":14,"context_line":"that enable the ir-novnc service should set this option to True in their"},{"line_number":15,"context_line":"tempest configuration."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"This re-introduces the console validation functionality that was"},{"line_number":18,"context_line":"previously reverted, but with proper configuration-based control to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"c17ab37a_0ade11db","line":15,"range":{"start_line":9,"start_character":0,"end_line":15,"end_character":22},"in_reply_to":"7342efe0_e8c2ac33","updated":"2026-03-29 21:22:34.000000000","message":"Done","commit_id":"3a73263baa837173a231f3a2cbd88af1d1321286"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"10e71e4c48fa347441bb1b86edf28bdc10772553","unresolved":true,"context_lines":[{"line_number":13,"context_line":"Depends-On: https://review.opendev.org/c/openstack/ironic/+/982270"},{"line_number":14,"context_line":"Related-Bug: 2086715"},{"line_number":15,"context_line":"Change-Id: Ifa27e2b24330ecb064288318060c1091a231a699"},{"line_number":16,"context_line":"Signed-off-by: Abhishek Bongale \u003cabhishekbongale@outlook.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"768f2c60_30d174a1","line":16,"updated":"2026-04-06 23:06:10.000000000","message":"It has been noticed that graphical console testing is currently being skipped and a bug has been raised. Please add the following to show this change is intended to enable it again:\n\nCloses-Bug: #2147206","commit_id":"34c20c08b2929c234631e21cd87d8f79c8f4f63b"},{"author":{"_account_id":37924,"name":"Abhishek Bongale","display_name":"abongale","email":"abhishekbongale@outlook.com","username":"abhibongale"},"change_message_id":"87cd518270de3219fa61ce4be022374cbada4e27","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Depends-On: https://review.opendev.org/c/openstack/ironic/+/982270"},{"line_number":14,"context_line":"Related-Bug: 2086715"},{"line_number":15,"context_line":"Change-Id: Ifa27e2b24330ecb064288318060c1091a231a699"},{"line_number":16,"context_line":"Signed-off-by: Abhishek Bongale \u003cabhishekbongale@outlook.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"87a846d1_a385b2d4","line":16,"in_reply_to":"768f2c60_30d174a1","updated":"2026-04-07 08:30:15.000000000","message":"Done","commit_id":"34c20c08b2929c234631e21cd87d8f79c8f4f63b"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fedb140bdf89ca3bfd93dc8a5a4cd52f33a06a74","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"bf74023b_60259cf1","updated":"2026-03-25 14:02:55.000000000","message":"I think, minimally, we need to guard rail on if there is something that can be actualized state wise via interface configuration on the node. There are *plenty* of folks who don\u0027t configure this today who run these tests as well, and generally adding a new default-off option is an antipattern to try and avoid as well.","commit_id":"fa0b7f5f3e940982f022f2a07c04dedcae6daf18"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"2f071d96424c485e74dea226ca70f42dfa43922c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"70ce1f8e_6cdd15bc","updated":"2026-03-26 22:11:27.000000000","message":"Looks good but https://review.opendev.org/c/openstack/ironic/+/982270 needs a Depends-On for this change","commit_id":"3a73263baa837173a231f3a2cbd88af1d1321286"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"bb3fbe7fb825ccebab02e0bd2c808e85b1cc636b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d3d8c29e_c7c6dbdc","updated":"2026-03-29 21:22:34.000000000","message":"I think this change should include an edit to zuul.d/project.yaml to add ironic-tempest-bios-ipmi-autodetect to the jobs run. Then we can actually see if these changes result in a passing job.","commit_id":"43f65606eac4aecdb7b18b6463f4e976a00e9d6a"},{"author":{"_account_id":37924,"name":"Abhishek Bongale","display_name":"abongale","email":"abhishekbongale@outlook.com","username":"abhibongale"},"change_message_id":"7269de29d640da3b503252741900610019e67b86","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"94cc9ea6_4aa8abd0","updated":"2026-03-27 09:37:18.000000000","message":"recheck","commit_id":"43f65606eac4aecdb7b18b6463f4e976a00e9d6a"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"66600671ae14eb08f95f765fff9817a9513f5757","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e294033c_2290ef03","updated":"2026-03-30 19:33:33.000000000","message":"Actually I\u0027m not sure the graphical console tests are being exercised, I can\u0027t see any graphical console activity in https://zuul.opendev.org/t/openstack/build/aa036b2531f34feeba34d6505c7c2fe6/log/controller/logs/screen-ir-cond.txt","commit_id":"688053d738cbd7b36b555b8d6696b03c94beab81"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"00dc3a86bf545bdb20882bcd9f62a1fcc37fa6ed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"1d22d98a_eeb42773","updated":"2026-03-30 19:25:36.000000000","message":"ironic-tempest-bios-ipmi-autodetect passes with this change, so it is now a matter of getting the depends-on change correct to make ironic-tempest-functional-python3 to pass","commit_id":"688053d738cbd7b36b555b8d6696b03c94beab81"},{"author":{"_account_id":37924,"name":"Abhishek Bongale","display_name":"abongale","email":"abhishekbongale@outlook.com","username":"abhibongale"},"change_message_id":"053971d0bc092e0014768036a8ad36a3a346a643","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"0f9ea6a2_707cec79","updated":"2026-03-30 15:48:04.000000000","message":"recheck","commit_id":"688053d738cbd7b36b555b8d6696b03c94beab81"},{"author":{"_account_id":37924,"name":"Abhishek Bongale","display_name":"abongale","email":"abhishekbongale@outlook.com","username":"abhibongale"},"change_message_id":"6d00817158497c564f7d5e4ccceefa7091690c9a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"7855c165_f4d8769f","updated":"2026-03-30 13:22:39.000000000","message":"recheck","commit_id":"688053d738cbd7b36b555b8d6696b03c94beab81"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"0f6761337f35891caa40783a1de9b5d898b614c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"7ebe83ed_e5427797","updated":"2026-03-31 19:55:30.000000000","message":"There is still a suspicious lack of console API calls happening in the scenario test, but lets focus on getting ironic-tempest-functional-python3 passing first","commit_id":"d17568614794f30fdec90e522f03d6cca53712b7"},{"author":{"_account_id":37924,"name":"Abhishek Bongale","display_name":"abongale","email":"abhishekbongale@outlook.com","username":"abhibongale"},"change_message_id":"ffeacea216f66520c141d7121e0d8ee86121a7a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"92b986fd_831432da","updated":"2026-03-31 21:23:00.000000000","message":"recheck","commit_id":"cc84a8ab80f883b204ffc407b639e1e9f3a16c4b"},{"author":{"_account_id":37924,"name":"Abhishek Bongale","display_name":"abongale","email":"abhishekbongale@outlook.com","username":"abhibongale"},"change_message_id":"1c1c06c9f9b44b58dfa6c83f11dd40884c849ccb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"961c743a_335df453","updated":"2026-04-01 13:46:25.000000000","message":"recheck","commit_id":"2d302f03b53e43722abe98d498b925406b7ea2f0"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"8db43b13957c12b424cd3dd724221b3875c3c383","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"270451ea_feec6034","updated":"2026-04-01 20:40:25.000000000","message":"It looks like console_interface needs to be added here https://opendev.org/openstack/ironic-tempest-plugin/src/branch/master/ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py#L635","commit_id":"5070c0b3c6c971a3091cf77dca827bd2e418a3af"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"10e71e4c48fa347441bb1b86edf28bdc10772553","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"a59c954f_f2767b09","updated":"2026-04-06 23:06:10.000000000","message":"The test is still not running so I have restored the DNM change to see what is going on https://review.opendev.org/c/openstack/ironic-tempest-plugin/+/983129","commit_id":"34c20c08b2929c234631e21cd87d8f79c8f4f63b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b34bba709ac627cf493e817e3bd98e475fa0a2b2","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":17,"id":"2c2c9401_4c873c7e","updated":"2026-04-02 16:20:59.000000000","message":"i dont see any evidce fo thei runign in teh tempst log\naslo this really shoudl be a seperate test not embded into the xisting boot test becuase it really hard to debug the logs today\n\nhere is the tempst log \n\nhttps://zuul.opendev.org/t/openstack/build/0a8f5476e3f94cbaa5bcbc52b1ba26f6/log/controller/logs/tempest_log.txt\n\nif the test runs correctly there will be output like this\n\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\nin the tempest log.\nas noted here before the test was reverted.\nhttps://review.opendev.org/c/openstack/nova/+/942528/comments/42b2fbf7_78b47e56?tab\u003dcomments\n\ni woudl suggest refatoring the test so that it create a new nova server just to test the vnc connectivity.\n\ncurrently the job only runs one test and even if that does a lot it very expsinvie to have a job withonly one test espiclly fi that is doing many hard to debug things","commit_id":"34c20c08b2929c234631e21cd87d8f79c8f4f63b"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"529c195bfb85658e58444361f4a4b00bf803b6c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"4636364b_b212e854","updated":"2026-04-06 23:11:29.000000000","message":"recheck for context","commit_id":"34c20c08b2929c234631e21cd87d8f79c8f4f63b"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"10e71e4c48fa347441bb1b86edf28bdc10772553","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":17,"id":"2e00658a_d3f16bbe","in_reply_to":"2c2c9401_4c873c7e","updated":"2026-04-06 23:06:10.000000000","message":"@smooney@redhat.com we\u0027re debugging what is going on in the next DNM change. Most likely we need a later microversion but lets see.\n\nRather than breaking up the tests I\u0027d suggest a follow-up change to add logging throughout BaremetalBasicOps to add context for what is actually currently being tested","commit_id":"34c20c08b2929c234631e21cd87d8f79c8f4f63b"},{"author":{"_account_id":37924,"name":"Abhishek Bongale","display_name":"abongale","email":"abhishekbongale@outlook.com","username":"abhibongale"},"change_message_id":"de86c03b11ab18f16503fbd66e4ad007d8c26ed2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"7bfa08d1_9e6d8765","in_reply_to":"2e00658a_d3f16bbe","updated":"2026-04-09 07:45:21.000000000","message":"Acknowledged","commit_id":"34c20c08b2929c234631e21cd87d8f79c8f4f63b"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f1c734a56a2c82b8ce54a15e945f241dbce242f9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"0752e52c_eb2dd6cd","updated":"2026-04-07 22:32:16.000000000","message":"We didn\u0027t set the microversion properly, see in the logs requests have these headers set \u0027x-openstack-ironic-api-minimum-version\u0027: \u00271.1\u0027, \u0027x-openstack-ironic-api-maximum-version\u0027: \u00271.111\u0027, \u0027x-openstack-ironic-api-version\u0027: \u00271.1\u0027\n\nhttps://zuul.opendev.org/t/openstack/build/8d3faca00f554cf2a6ba1bb1ca082148/log/controller/logs/tempest_log.txt#1526\n\nI\u0027ll make inline comments on how to fix this","commit_id":"3d94d6157baaa46a3eacac14faee71281c50dd41"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"13c0b76c34b6ac8a1bd0c9da8c08358577baf957","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"6732cdda_5fd72754","updated":"2026-04-14 21:24:07.000000000","message":"@smooney@redhat.com This test uses the ironic nova driver, so nova-novncproxy is used for console connections.\n\nironic-novncproxy is only used when managing ironic nodes directly. It is exercised in the job ironic-tempest-functional-python3 as this log demonstrates:\nhttps://zuul.opendev.org/t/openstack/build/f6810f54361444ca9766877e403931a8/log/controller/logs/screen-ir-novnc.txt\n\nI appreciate your comment about how scenario tests should be broken up. It is likely this way due to the overhead of standing up virtual baremetal and the constraints of CI resources. I\u0027m going to ask for a follow-up change which adds INFO logging throughout this test so that it will be much easier to line up timestamps in other logs","commit_id":"1dc0b2ccea1a84f2575e9941d6ba1e4588d7d1aa"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ea6422c9311f62b0477b66bf5d34d11ab9b40ecb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"f3356b5f_dfd706f1","updated":"2026-04-13 19:29:38.000000000","message":"Looks like it is working to me. I see changes and I see the appropriate response!","commit_id":"1dc0b2ccea1a84f2575e9941d6ba1e4588d7d1aa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bd415c27282b9ce7044e8cba2920e283dec668e1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"bd307457_77e5218d","updated":"2026-04-13 20:10:21.000000000","message":"it would still be nice if this was itw own test not part of \nironic_tempest_plugin.tests.scenario.test_baremetal_basic_ops.BaremetalBasicOpsAndRescue\nin a followup.\n\neven in senairo tests you ideally should have 1 test per feature.\n\nso there shoudl be a seprate sencario test explcivly to test the vnc concole funcitonatliy indepten of build and rescure .\n\nso the current test is very hard to debug and impantly its very easy for it to be green with missing test coverage\n\nfor example downstream we could not map this test case to valdiate this feature in tools like polarian cleanly becuase this test can trivally pass with a miscongurtaiton \n\nlookign at the raw logs we can see the call to nova to get the console url\nhttps://zuul.opendev.org/t/openstack/build/6efb7f66499c42e389edc566f6512d66/log/controller/logs/tempest_log.txt#1634\n\nwe can see the request to teh nova console service here\nhttps://zuul.opendev.org/t/openstack/build/6efb7f66499c42e389edc566f6512d66/log/controller/logs/screen-n-novnc-cell1.txt#17\ncorralated by  the token \u0027/?token\u003d7ab70558-0beb-4388-a120-e01ab7cca730\u0027\n\nwe can see ti proxies the connecton too 127.0.0.1:35833\n\nApr 12 22:17:04.792585 npa46be911901a4 nova-novncproxy[125336]: DEBUG nova.compute.rpcapi [None req-ffabc482-9275-4f24-8417-0e772dfffe29 None None] RPC: Sending the message to topic: compute-alt {{(pid\u003d125336) prepare_for_alt_rpcserver /opt/stack/nova/nova/compute/rpcapi.py:595}}\nApr 12 22:17:05.827366 npa46be911901a4 nova-novncproxy[125336]: INFO nova.console.websocketproxy [None req-ffabc482-9275-4f24-8417-0e772dfffe29 None None]   2: connect info: ConsoleAuthToken(access_url_base\u003d\u0027http://10.176.192.21:6080/vnc_lite.html\u0027,console_type\u003d\u0027novnc\u0027,created_at\u003d2026-04-12T22:17:03Z,expires\u003d1776032823,host\u003d\u0027127.0.0.1\u0027,id\u003d1,instance_uuid\u003dea247df7-19d3-4534-a9fc-fd6f0591fb38,internal_access_path\u003dNone,port\u003d35833,tls_port\u003dNone,token\u003d\u0027***\u0027,updated_at\u003dNone)\nApr 12 22:17:05.828050 npa46be911901a4 nova-novncproxy[125336]: INFO nova.console.websocketproxy [None req-ffabc482-9275-4f24-8417-0e772dfffe29 None None]   2: connecting to: 127.0.0.1:35833\n\n\ntaht atletas seams to mage teh \"vnc_host\": \"127.0.0.1\", \"vnc_port\": 35833\nof the ironic node\n\n        Body: None\n    Response - Headers: {\u0027date\u0027: \u0027Sun, 12 Apr 2026 22:17:56 GMT\u0027, \u0027server\u0027: \u0027Apache/2.4.58 (Ubuntu)\u0027, \u0027x-openstack-ironic-api-minimum-version\u0027: \u00271.1\u0027, \u0027x-openstack-ironic-api-maximum-version\u0027: \u00271.111\u0027, \u0027x-openstack-ironic-api-version\u0027: \u00271.65\u0027, \u0027content-length\u0027: \u00275259\u0027, \u0027content-type\u0027: \u0027application/json\u0027, \u0027x-openstack-request-id\u0027: \u0027req-61fa617d-e444-42af-b94c-8250c96fa193\u0027, \u0027openstack-request-id\u0027: \u0027req-61fa617d-e444-42af-b94c-8250c96fa193\u0027, \u0027connection\u0027: \u0027close\u0027, \u0027status\u0027: \u0027200\u0027, \u0027content-location\u0027: \u0027https://10.176.192.21/baremetal/v1/nodes/f75887c2-b3ad-41f5-a597-5bbf7353dbd8\u0027}\n        Body: b\u0027{\"uuid\": \"f75887c2-b3ad-41f5-a597-5bbf7353dbd8\", \"created_at\": \"2026-04-12T22:03:14+00:00\", \"updated_at\": \"2026-04-12T22:17:54+00:00\", \"automated_clean\": null, \"bios_interface\": \"no-bios\", \"boot_interface\": \"ipxe\", \"clean_step\": {}, \"conductor_group\": \"\", \"console_enabled\": true, \"console_interface\": \"fake-graphical\", \"deploy_interface\": \"direct\", \"deploy_step\": {}, \"description\": null, \"driver\": \"ipmi\", \"driver_info\": {\"ipmi_address\": \"10.176.192.21\", \"ipmi_username\": \"admin\", \"ipmi_password\": \"******\", \"ipmi_port\": 6230}, \"driver_internal_info\": {\"clean_steps\": null, \"automatic_lessee\": true, \"is_whole_disk_image\": true, \"original_deploy_interface\": \"autodetect\", \"deploy_steps\": null, \"last_power_state_change\": \"2026-04-12T22:17:35.895106\", \"agent_version\": \"11.6.0.dev7\", \"agent_last_heartbeat\": \"2026-04-12T22:15:21.982191\", \"hardware_manager_version\": {\"generic_hardware_manager\": \"1.2\"}, \"agent_cached_deploy_steps_refreshed\": \"2026-04-12T22:14:31.726110\", \"root_uuid_or_disk_id\": \"0x00000000\", \"vnc_host\": \"127.0.0.1\", \"vnc_port\": 35833, \"novnc_secret_token\": \"******\", \"novnc_secret_token_created\": \"******\", \"agent_start_attempted\": true}, \"extra\": {}, \"fault\": null, \"inspection_finished_at\": null, \"inspection_started_at\": null, \n\n\n\nthe ironic novnc proxy is runing on a diffent port so it also looks like the conection form the nova vnc proxy is going direct to the the ironic node instead of hiting the ironic proxy which will work if the nova vnc proxy server has direct access to the bmc netowrk or whereever the vnc service is exported.\n\ni do not see any related logs in teh ironic vnc proxy.\n\nApr 12 22:03:04.610436 npa46be911901a4 ironic-novncproxy[112329]:   import eventlet\nApr 12 22:03:05.556558 npa46be911901a4 ironic-novncproxy[112329]: DEBUG oslo_db.api [-] Loading backend \u0027sqlalchemy\u0027 from \u0027ironic.db.sqlalchemy.api\u0027 {{(pid\u003d112329) _load_backend /opt/stack/data/venv/lib/python3.12/site-packages/oslo_db/api.py:259}}\nApr 12 22:03:06.008242 npa46be911901a4 ironic-novncproxy[112329]: WARNING oslo_service.backend._threading.service [-] no_fork\u003dTrue: running service in main process\nApr 12 22:03:06.008913 npa46be911901a4 ironic-novncproxy[112329]: INFO ironic.console.websocketproxy [-] WebSocket server settings:\nApr 12 22:03:06.008913 npa46be911901a4 ironic-novncproxy[112329]: INFO ironic.console.websocketproxy [-]   - Listen on 10.176.192.21:6090\nApr 12 22:03:06.009305 npa46be911901a4 ironic-novncproxy[112329]: INFO ironic.console.websocketproxy [-]   - Web server (no directory listings). Web root: /opt/stack/novnc\nApr 12 22:03:06.009447 npa46be911901a4 ironic-novncproxy[112329]: INFO ironic.console.websocketproxy [-]   - SSL/TLS support\nApr 12 22:03:06.009721 npa46be911901a4 ironic-novncproxy[112329]: INFO ironic.console.websocketproxy [-]   - proxying from 10.176.192.21:6090 to None:None\n\nhttps://zuul.opendev.org/t/openstack/build/6efb7f66499c42e389edc566f6512d66/log/controller/logs/screen-ir-novnc.txt\n\ni dont know if this is exepcted but the test seams ot be more functionalt then it was previously.","commit_id":"1dc0b2ccea1a84f2575e9941d6ba1e4588d7d1aa"},{"author":{"_account_id":37924,"name":"Abhishek Bongale","display_name":"abongale","email":"abhishekbongale@outlook.com","username":"abhibongale"},"change_message_id":"f0f69893ea5100a003b76f98fe61bd26860902cd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"9fbd21a8_22f66af3","updated":"2026-04-20 08:23:16.000000000","message":"recheck InvocationError","commit_id":"1dc0b2ccea1a84f2575e9941d6ba1e4588d7d1aa"},{"author":{"_account_id":37924,"name":"Abhishek Bongale","display_name":"abongale","email":"abhishekbongale@outlook.com","username":"abhibongale"},"change_message_id":"06c95ad4e96171c378b959ed6059bc6f117fc17f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"c5140ab0_6223c82d","updated":"2026-04-20 11:44:35.000000000","message":"recheck NODE_FAILURE","commit_id":"1dc0b2ccea1a84f2575e9941d6ba1e4588d7d1aa"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"495bf6ab0c9c16c5785e9b3eaea6105f34647bb6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"c1840872_ee4853d4","in_reply_to":"6732cdda_5fd72754","updated":"2026-04-17 13:23:03.000000000","message":"Improved test logging, overall, would be *far* better. It is really an area we\u0027re hurting where we\u0027re relying upon tempest.","commit_id":"1dc0b2ccea1a84f2575e9941d6ba1e4588d7d1aa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"511cec681a0ec5c49d0c97c79e853cd7482e0c2a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":25,"id":"40e81910_987143fe","in_reply_to":"bd307457_77e5218d","updated":"2026-04-13 20:14:14.000000000","message":"by the way at a minim i think thie baremetal nodes is bing misconfiure to report the host as 127.0.0.1 that likely shoudl be a real routabel ip to beter match a real deployment wehre the novnce proxy may be on a diffent host or in a continer with a diffent ip.","commit_id":"1dc0b2ccea1a84f2575e9941d6ba1e4588d7d1aa"}],"ironic_tempest_plugin/config.py":[{"author":{"_account_id":34373,"name":"Jason Paroly","email":"jparoly@redhat.com","username":"jparoly"},"change_message_id":"3b4c7c77c81e70b54a950948762550c34d4d610e","unresolved":true,"context_lines":[{"line_number":265,"context_line":"    cfg.BoolOpt(\u0027validate_graphical_console\u0027,"},{"line_number":266,"context_line":"                default\u003dFalse,"},{"line_number":267,"context_line":"                help\u003d\"Whether to validate graphical console functionality. \""},{"line_number":268,"context_line":"                     \"This test requires the ir-novnc service to be enabled \""},{"line_number":269,"context_line":"                     \"and the fake-graphical console interface to be \""},{"line_number":270,"context_line":"                     \"configured. Jobs that enable graphical console support \""},{"line_number":271,"context_line":"                     \"should set this to True in their tempest configuration.\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"208ef2f0_3a08c243","line":268,"range":{"start_line":268,"start_character":22,"end_line":268,"end_character":31},"updated":"2026-03-25 16:13:33.000000000","message":"Since this is a config option, in theory it could be used by more than one test, so I would reword this to say something like \"Tests that require...\"","commit_id":"fa0b7f5f3e940982f022f2a07c04dedcae6daf18"},{"author":{"_account_id":37924,"name":"Abhishek Bongale","display_name":"abongale","email":"abhishekbongale@outlook.com","username":"abhibongale"},"change_message_id":"212af6f3ed680f92f6c2b41ec8d69970155eb9d4","unresolved":false,"context_lines":[{"line_number":265,"context_line":"    cfg.BoolOpt(\u0027validate_graphical_console\u0027,"},{"line_number":266,"context_line":"                default\u003dFalse,"},{"line_number":267,"context_line":"                help\u003d\"Whether to validate graphical console functionality. \""},{"line_number":268,"context_line":"                     \"This test requires the ir-novnc service to be enabled \""},{"line_number":269,"context_line":"                     \"and the fake-graphical console interface to be \""},{"line_number":270,"context_line":"                     \"configured. Jobs that enable graphical console support \""},{"line_number":271,"context_line":"                     \"should set this to True in their tempest configuration.\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"7c08ffa6_ce092c84","line":268,"range":{"start_line":268,"start_character":22,"end_line":268,"end_character":31},"in_reply_to":"208ef2f0_3a08c243","updated":"2026-03-30 11:18:35.000000000","message":"Done","commit_id":"fa0b7f5f3e940982f022f2a07c04dedcae6daf18"}],"ironic_tempest_plugin/tests/api/admin/test_nodes.py":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"0f6761337f35891caa40783a1de9b5d898b614c2","unresolved":true,"context_lines":[{"line_number":769,"context_line":"                # we need to not fail when that is the case."},{"line_number":770,"context_line":"                self.assertNotEqual(self.node[field], node[field])"},{"line_number":771,"context_line":"            else:"},{"line_number":772,"context_line":"                self.assertStartsWith(node[field], \u0027fake\u0027)"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"class TestResetInterfaces(TestHardwareInterfaces):"}],"source_content_type":"text/x-python","patch_set":9,"id":"433bf565_e829eb40","line":772,"updated":"2026-03-31 19:55:30.000000000","message":"This needs to be in a separate commit to this one. Either before this commit in the series, or on its own, so that the commit message for https://review.opendev.org/c/openstack/ironic/+/982270 can have a Depends-On to this change (to avoid a circular depends-on)\n\nAlso it looks like we don\u0027t have an assertStartsWith in this test class so it will have to be something like self.assertTrue(node[field].startswith(\u0027fake\u0027))","commit_id":"d17568614794f30fdec90e522f03d6cca53712b7"},{"author":{"_account_id":37924,"name":"Abhishek Bongale","display_name":"abongale","email":"abhishekbongale@outlook.com","username":"abhibongale"},"change_message_id":"de86c03b11ab18f16503fbd66e4ad007d8c26ed2","unresolved":false,"context_lines":[{"line_number":769,"context_line":"                # we need to not fail when that is the case."},{"line_number":770,"context_line":"                self.assertNotEqual(self.node[field], node[field])"},{"line_number":771,"context_line":"            else:"},{"line_number":772,"context_line":"                self.assertStartsWith(node[field], \u0027fake\u0027)"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"class TestResetInterfaces(TestHardwareInterfaces):"}],"source_content_type":"text/x-python","patch_set":9,"id":"f22b9129_f5234662","line":772,"in_reply_to":"1d1e8802_f73089fd","updated":"2026-04-09 07:45:21.000000000","message":"Done","commit_id":"d17568614794f30fdec90e522f03d6cca53712b7"},{"author":{"_account_id":37924,"name":"Abhishek Bongale","display_name":"abongale","email":"abhishekbongale@outlook.com","username":"abhibongale"},"change_message_id":"c9187be325b5a3dcb6de72c9065eb7f4ddb50307","unresolved":true,"context_lines":[{"line_number":769,"context_line":"                # we need to not fail when that is the case."},{"line_number":770,"context_line":"                self.assertNotEqual(self.node[field], node[field])"},{"line_number":771,"context_line":"            else:"},{"line_number":772,"context_line":"                self.assertStartsWith(node[field], \u0027fake\u0027)"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":""},{"line_number":775,"context_line":"class TestResetInterfaces(TestHardwareInterfaces):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1d1e8802_f73089fd","line":772,"in_reply_to":"433bf565_e829eb40","updated":"2026-03-31 20:43:12.000000000","message":"just out of curosity, why we need different PR for this?","commit_id":"d17568614794f30fdec90e522f03d6cca53712b7"}],"ironic_tempest_plugin/tests/scenario/baremetal_standalone_manager.py":[{"author":{"_account_id":34373,"name":"Jason Paroly","email":"jparoly@redhat.com","username":"jparoly"},"change_message_id":"d92c4c0830297898272a2dab699e9c84b09eab00","unresolved":true,"context_lines":[{"line_number":640,"context_line":"    # been set via a different test)."},{"line_number":641,"context_line":"    console_interface \u003d None"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"    # Boolean value specify if image is wholedisk or not."},{"line_number":644,"context_line":"    wholedisk_image \u003d None"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    # If we need to set provision state \u0027deleted\u0027 for the node  after test"}],"source_content_type":"text/x-python","patch_set":17,"id":"df70656e_20b4f313","line":643,"updated":"2026-04-02 14:32:48.000000000","message":"seems strange to me that it says boolean but the default value is None.  I know its not part of this PR but saw it so :shrug:","commit_id":"34c20c08b2929c234631e21cd87d8f79c8f4f63b"},{"author":{"_account_id":37924,"name":"Abhishek Bongale","display_name":"abongale","email":"abhishekbongale@outlook.com","username":"abhibongale"},"change_message_id":"bdda4f22059408e2ad7604e9b0d966b7dd377ee3","unresolved":false,"context_lines":[{"line_number":640,"context_line":"    # been set via a different test)."},{"line_number":641,"context_line":"    console_interface \u003d None"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"    # Boolean value specify if image is wholedisk or not."},{"line_number":644,"context_line":"    wholedisk_image \u003d None"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    # If we need to set provision state \u0027deleted\u0027 for the node  after test"}],"source_content_type":"text/x-python","patch_set":17,"id":"1253baae_96aa080c","line":643,"in_reply_to":"df70656e_20b4f313","updated":"2026-04-02 15:27:04.000000000","message":"nice catch, I guess since it\u0027s None (it will be false). In these context it make sense.\n\nhttps://stackoverflow.com/questions/58515437/what-is-the-difference-between-none-and-boolean-true-false-in-pythons-defaul#:~:text\u003dTrue%20and%20False%20are%20boolean,handy","commit_id":"34c20c08b2929c234631e21cd87d8f79c8f4f63b"}],"ironic_tempest_plugin/tests/scenario/test_baremetal_basic_ops.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"cae5e8c560d3145669b759ff714a13f689730a7f","unresolved":true,"context_lines":[{"line_number":248,"context_line":"        self.add_keypair()"},{"line_number":249,"context_line":"        self.instance, self.node \u003d self.boot_instance(image_id\u003dself.image_ref)"},{"line_number":250,"context_line":"        # Validate graphical console if configured"},{"line_number":251,"context_line":"        if CONF.baremetal.validate_graphical_console:"},{"line_number":252,"context_line":"            self.validate_console()"},{"line_number":253,"context_line":"        self.validate_image()"},{"line_number":254,"context_line":"        self.validate_ports()"}],"source_content_type":"text/x-python","patch_set":2,"id":"33e20da1_a2f79f52","line":251,"range":{"start_line":251,"start_character":8,"end_line":251,"end_character":53},"updated":"2026-03-25 13:53:00.000000000","message":"So, we can make this way smarter and rely upon overall operating state instead of \"test executor configuration\".\n\n1: Check if a graphical console is *even* enabled and a possible value node field \u0027console_interface\u0027.\n2: If not \u0027fake\u0027, and not a known serial console interface, then it could be assumed to be tried. The only issue then is to know if the ironic-novncproxy is enabled.... And maybe that is what we need a giant knob around.","commit_id":"fa0b7f5f3e940982f022f2a07c04dedcae6daf18"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"bb3fbe7fb825ccebab02e0bd2c808e85b1cc636b","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        self.add_keypair()"},{"line_number":249,"context_line":"        self.instance, self.node \u003d self.boot_instance(image_id\u003dself.image_ref)"},{"line_number":250,"context_line":"        # Validate graphical console if configured"},{"line_number":251,"context_line":"        if CONF.baremetal.validate_graphical_console:"},{"line_number":252,"context_line":"            self.validate_console()"},{"line_number":253,"context_line":"        self.validate_image()"},{"line_number":254,"context_line":"        self.validate_ports()"}],"source_content_type":"text/x-python","patch_set":2,"id":"d6e7af6f_bf5dd8b5","line":251,"range":{"start_line":251,"start_character":8,"end_line":251,"end_character":53},"in_reply_to":"04a657e4_a581ce79","updated":"2026-03-29 21:22:34.000000000","message":"Done","commit_id":"fa0b7f5f3e940982f022f2a07c04dedcae6daf18"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"44784802c366285a911f41fe24dc1f93d1d09bb0","unresolved":true,"context_lines":[{"line_number":248,"context_line":"        self.add_keypair()"},{"line_number":249,"context_line":"        self.instance, self.node \u003d self.boot_instance(image_id\u003dself.image_ref)"},{"line_number":250,"context_line":"        # Validate graphical console if configured"},{"line_number":251,"context_line":"        if CONF.baremetal.validate_graphical_console:"},{"line_number":252,"context_line":"            self.validate_console()"},{"line_number":253,"context_line":"        self.validate_image()"},{"line_number":254,"context_line":"        self.validate_ports()"}],"source_content_type":"text/x-python","patch_set":2,"id":"04a657e4_a581ce79","line":251,"range":{"start_line":251,"start_character":8,"end_line":251,"end_character":53},"in_reply_to":"33e20da1_a2f79f52","updated":"2026-03-25 20:35:33.000000000","message":"If the console_interface is allowed to be a graphical interface then I think it is safe to assume ironic-novncproxy will be enabled. Otherwise the ironic is misconfigured and this test *should* fail.\n\nIn that case, this test should run if the node console_interface\u003d\u003d\"fake-graphical\". Allowing \"redfish-graphical\" as well is risky currently as sushy-tools redfish virtual baremetal doesn\u0027t support vnc yet.","commit_id":"fa0b7f5f3e940982f022f2a07c04dedcae6daf18"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"4428ecf4a028c365593763f9797a5c4416e75607","unresolved":true,"context_lines":[{"line_number":251,"context_line":"        # Note: Only fake-graphical is tested (redfish-graphical excluded as"},{"line_number":252,"context_line":"        # sushy-tools doesn\u0027t support VNC yet). If configured but proxy is"},{"line_number":253,"context_line":"        # missing, test will fail revealing the misconfiguration."},{"line_number":254,"context_line":"        if self.node.get(\u0027console_interface\u0027) \u003d\u003d \u0027fake-graphical\u0027:"},{"line_number":255,"context_line":"            self.validate_console()"},{"line_number":256,"context_line":"        self.validate_image()"},{"line_number":257,"context_line":"        self.validate_ports()"}],"source_content_type":"text/x-python","patch_set":5,"id":"91393fff_7057bae1","line":254,"updated":"2026-03-30 20:57:36.000000000","message":"For this to work, \u0027console\u0027 needs to be added to https://opendev.org/openstack/ironic-tempest-plugin/src/branch/master/ironic_tempest_plugin/services/baremetal/base.py#L28\n\nSee ironic_tempest_plugin/services/baremetal/v1/json/baremetal_client.py line 40","commit_id":"688053d738cbd7b36b555b8d6696b03c94beab81"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"b66ed093e482b0979fe33ee8907e0db03884d2c2","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        # Note: Only fake-graphical is tested (redfish-graphical excluded as"},{"line_number":252,"context_line":"        # sushy-tools doesn\u0027t support VNC yet). If configured but proxy is"},{"line_number":253,"context_line":"        # missing, test will fail revealing the misconfiguration."},{"line_number":254,"context_line":"        if self.node.get(\u0027console_interface\u0027) \u003d\u003d \u0027fake-graphical\u0027:"},{"line_number":255,"context_line":"            self.validate_console()"},{"line_number":256,"context_line":"        self.validate_image()"},{"line_number":257,"context_line":"        self.validate_ports()"}],"source_content_type":"text/x-python","patch_set":5,"id":"a0b3e807_1faeb745","line":254,"in_reply_to":"91393fff_7057bae1","updated":"2026-04-08 23:26:25.000000000","message":"Done","commit_id":"688053d738cbd7b36b555b8d6696b03c94beab81"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f545618e99717d8f692ae1a9c5d821963f0a6980","unresolved":true,"context_lines":[{"line_number":53,"context_line":"    image_ref \u003d None"},{"line_number":54,"context_line":"    wholedisk_image \u003d None"},{"line_number":55,"context_line":"    auto_lease \u003d False"},{"line_number":56,"context_line":"    console_interface \u003d \u0027fake-graphical\u0027"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @classmethod"},{"line_number":59,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":16,"id":"4065b031_fae07612","line":56,"updated":"2026-04-01 22:43:09.000000000","message":"To get console_interface to show up in the node dict we need to raise the \n\nmin_microversion from the default 1.1 to a version which actually includes that data. Looking at the versions.py [1] I think we need version 1.31, so add the following to this test:\n\nmin_microversion \u003d \u00271.31\u0027\n\n[1] https://opendev.org/openstack/ironic/src/branch/master/ironic/api/controllers/v1/versions.py#L70","commit_id":"5bf2452ef6f217044d4cfa7addb1adee554f4504"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"b66ed093e482b0979fe33ee8907e0db03884d2c2","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    image_ref \u003d None"},{"line_number":54,"context_line":"    wholedisk_image \u003d None"},{"line_number":55,"context_line":"    auto_lease \u003d False"},{"line_number":56,"context_line":"    console_interface \u003d \u0027fake-graphical\u0027"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @classmethod"},{"line_number":59,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":16,"id":"a86bef7d_7a68030d","line":56,"in_reply_to":"4065b031_fae07612","updated":"2026-04-08 23:26:25.000000000","message":"Done","commit_id":"5bf2452ef6f217044d4cfa7addb1adee554f4504"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"d834535ff3e14d3149bb2885ac10d9fe588b3b26","unresolved":true,"context_lines":[{"line_number":21,"context_line":"from tempest.lib.common import api_version_request"},{"line_number":22,"context_line":"from tempest.lib import decorators"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from ironic_tempest_plugin.tests.scenario import baremetal_manager"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":"CONF \u003d config.CONF"}],"source_content_type":"text/x-python","patch_set":17,"id":"35a59b53_83e4172e","line":24,"updated":"2026-04-07 22:42:23.000000000","message":"from ironic_tempest_plugin.services.baremetal import base","commit_id":"34c20c08b2929c234631e21cd87d8f79c8f4f63b"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"b66ed093e482b0979fe33ee8907e0db03884d2c2","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from tempest.lib.common import api_version_request"},{"line_number":22,"context_line":"from tempest.lib import decorators"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from ironic_tempest_plugin.tests.scenario import baremetal_manager"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":"CONF \u003d config.CONF"}],"source_content_type":"text/x-python","patch_set":17,"id":"1be1f0ab_a08300f7","line":24,"in_reply_to":"35a59b53_83e4172e","updated":"2026-04-08 23:26:25.000000000","message":"Done","commit_id":"34c20c08b2929c234631e21cd87d8f79c8f4f63b"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"2d50fdb428dd43805b5dbd9225ed850a42e2b795","unresolved":true,"context_lines":[{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027, \u0027system_admin\u0027]"},{"line_number":51,"context_line":"    min_microversion \u003d \u00271.31\u0027"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    TEST_RESCUE_MODE \u003d False"},{"line_number":54,"context_line":"    image_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":17,"id":"f429fab3_fcb27ef1","line":51,"updated":"2026-04-08 23:50:16.000000000","message":"Lets try 1.65 to include lessee support","commit_id":"34c20c08b2929c234631e21cd87d8f79c8f4f63b"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"d834535ff3e14d3149bb2885ac10d9fe588b3b26","unresolved":true,"context_lines":[{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027, \u0027system_admin\u0027]"},{"line_number":51,"context_line":"    min_microversion \u003d \u00271.31\u0027"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    TEST_RESCUE_MODE \u003d False"},{"line_number":54,"context_line":"    image_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":17,"id":"117674d5_5ec3465d","line":51,"updated":"2026-04-07 22:42:23.000000000","message":"Setting this just skips the test if this microversion isn\u0027t available. We need to do more to actually set the microversion in the request.\n\nLets add a comment here about needing this microversion to access the node console_interface value","commit_id":"34c20c08b2929c234631e21cd87d8f79c8f4f63b"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"b66ed093e482b0979fe33ee8907e0db03884d2c2","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027, \u0027system_admin\u0027]"},{"line_number":51,"context_line":"    min_microversion \u003d \u00271.31\u0027"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    TEST_RESCUE_MODE \u003d False"},{"line_number":54,"context_line":"    image_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":17,"id":"4641a698_df9d7560","line":51,"in_reply_to":"117674d5_5ec3465d","updated":"2026-04-08 23:26:25.000000000","message":"Done","commit_id":"34c20c08b2929c234631e21cd87d8f79c8f4f63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2fb61c5a812856d6e7c820a6b4b6b02b4aa3504d","unresolved":true,"context_lines":[{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027, \u0027system_admin\u0027]"},{"line_number":51,"context_line":"    min_microversion \u003d \u00271.31\u0027"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    TEST_RESCUE_MODE \u003d False"},{"line_number":54,"context_line":"    image_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":17,"id":"040ca86b_1f111ccf","line":51,"in_reply_to":"117674d5_5ec3465d","updated":"2026-04-10 17:31:14.000000000","message":"We likely need to not explicitly pin it this way.","commit_id":"34c20c08b2929c234631e21cd87d8f79c8f4f63b"},{"author":{"_account_id":37924,"name":"Abhishek Bongale","display_name":"abongale","email":"abhishekbongale@outlook.com","username":"abhibongale"},"change_message_id":"62af2f7a75647011091c1c86fc1bb5222a9194a6","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027, \u0027system_admin\u0027]"},{"line_number":51,"context_line":"    min_microversion \u003d \u00271.31\u0027"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    TEST_RESCUE_MODE \u003d False"},{"line_number":54,"context_line":"    image_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":17,"id":"a5b2a61c_40561d93","line":51,"in_reply_to":"f429fab3_fcb27ef1","updated":"2026-04-09 07:44:07.000000000","message":"Done","commit_id":"34c20c08b2929c234631e21cd87d8f79c8f4f63b"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"d834535ff3e14d3149bb2885ac10d9fe588b3b26","unresolved":true,"context_lines":[{"line_number":72,"context_line":"            if rescue_if and rescue_if !\u003d \u0027no-rescue\u0027:"},{"line_number":73,"context_line":"                msg \u003d (\u0027Node rescue interface is enabled, but %s class \u0027"},{"line_number":74,"context_line":"                       \u0027cannot test rescue operations.\u0027 % cls.__name__)"},{"line_number":75,"context_line":"                raise cls.skipException(msg)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    @staticmethod"},{"line_number":78,"context_line":"    def _is_version_supported(version):"}],"source_content_type":"text/x-python","patch_set":17,"id":"c651c366_4ed71f0c","line":75,"updated":"2026-04-07 22:42:23.000000000","message":"I think something like the following is appropriate to set the microversion\n\n    @classmethod\n    def resource_setup(cls):\n        super(BaremetalBasicOps, cls).resource_setup()\n        base.set_baremetal_api_microversion(cls.min_microversion)\n        self.addCleanup(base.reset_baremetal_api_microversion)","commit_id":"34c20c08b2929c234631e21cd87d8f79c8f4f63b"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"b66ed093e482b0979fe33ee8907e0db03884d2c2","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            if rescue_if and rescue_if !\u003d \u0027no-rescue\u0027:"},{"line_number":73,"context_line":"                msg \u003d (\u0027Node rescue interface is enabled, but %s class \u0027"},{"line_number":74,"context_line":"                       \u0027cannot test rescue operations.\u0027 % cls.__name__)"},{"line_number":75,"context_line":"                raise cls.skipException(msg)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    @staticmethod"},{"line_number":78,"context_line":"    def _is_version_supported(version):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3500fd8b_28283844","line":75,"in_reply_to":"c651c366_4ed71f0c","updated":"2026-04-08 23:26:25.000000000","message":"Done","commit_id":"34c20c08b2929c234631e21cd87d8f79c8f4f63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2fb61c5a812856d6e7c820a6b4b6b02b4aa3504d","unresolved":true,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    # Note: 1.31 API microversion is needed to enable the graphical console."},{"line_number":54,"context_line":"    # So that we can validate the graphical console functionality."},{"line_number":55,"context_line":"    min_microversion \u003d \u00271.31\u0027"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    TEST_RESCUE_MODE \u003d False"},{"line_number":58,"context_line":"    image_ref \u003d None"}],"source_content_type":"text/x-python","patch_set":21,"id":"23c9d3eb_5d2b4ffd","line":55,"updated":"2026-04-10 17:31:14.000000000","message":"So,","commit_id":"748c79117273ca700c4812d7d59bf4dcf27a0dd6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2fb61c5a812856d6e7c820a6b4b6b02b4aa3504d","unresolved":true,"context_lines":[{"line_number":254,"context_line":"        # sushy-tools doesn\u0027t support VNC yet). If configured but proxy is"},{"line_number":255,"context_line":"        # missing, test will fail revealing the misconfiguration."},{"line_number":256,"context_line":"        if self.node.get(\u0027console_interface\u0027) \u003d\u003d \u0027fake-graphical\u0027:"},{"line_number":257,"context_line":"            self.validate_console()"},{"line_number":258,"context_line":"        self.validate_image()"},{"line_number":259,"context_line":"        self.validate_ports()"},{"line_number":260,"context_line":"        self.validate_scheduling()"}],"source_content_type":"text/x-python","patch_set":22,"id":"e90a9920_2d85db5d","line":257,"updated":"2026-04-10 17:31:14.000000000","message":"I suspect this might not be triggering at all in the job, I\u0027m not seeing any evidence of it actually being executed upon. I *bet* your not getting the detailed output via self.boot_instance, which would mean it doesn\u0027t match. Note if you look at the tempest execution log, you only get the graphical console being reported in detailed view\n\nhttps://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_c11/openstack/c116b8cde696432ca8d5d5f6d02ca776/controller/logs/tempest_log.txt\n\nCheckout this sniplet:\n\n2026-04-09 00:48:25.617 124706 DEBUG tempest.lib.common.rest_client [req-9a744a13-e98a-4051-a48b-126d6098f3b3 req-9a744a13-e98a-4051-a48b-126d6098f3b3 ] Request - Headers: {\u0027X-OpenStack-Ironic-API-Version\u0027: \u00271.37\u0027, \u0027Content-Type\u0027: \u0027application/json\u0027, \u0027Accept\u0027: \u0027application/json\u0027, \u0027X-Auth-Token\u0027: \u0027\u003comitted\u003e\u0027}\n        Body: None\n    Response - Headers: {\u0027date\u0027: \u0027Thu, 09 Apr 2026 00:48:25 GMT\u0027, \u0027server\u0027: \u0027Apache/2.4.58 (Ubuntu)\u0027, \u0027x-openstack-ironic-api-minimum-version\u0027: \u00271.1\u0027, \u0027x-openstack-ironic-api-maximum-version\u0027: \u00271.111\u0027, \u0027x-openstack-ironic-api-version\u0027: \u00271.37\u0027, \u0027content-length\u0027: \u00274674\u0027, \u0027content-type\u0027: \u0027application/json\u0027, \u0027x-openstack-request-id\u0027: \u0027req-9a744a13-e98a-4051-a48b-126d6098f3b3\u0027, \u0027openstack-request-id\u0027: \u0027req-9a744a13-e98a-4051-a48b-126d6098f3b3\u0027, \u0027connection\u0027: \u0027close\u0027, \u0027status\u0027: \u0027200\u0027, \u0027content-location\u0027: \u0027https://10.209.96.246/baremetal/nodes/detail?instance_uuid\u003d9e2a3f2c-1cfe-45bd-b993-d245db731be0\u0027}\n        Body: b\u0027{\"nodes\": [{\"uuid\": \"fd79cc6a-aae0-4783-82a7-9281c05543d4\", \"created_at\": \"2026-04-09T00:33:58+00:00\", \"updated_at\": \"2026-04-09T00:48:16+00:00\", \"boot_interface\": \"ipxe\", \"clean_step\": {}, \"console_enabled\": false, \"console_interface\": \"fake-graphical\", \"deploy_i...\n        \nIn that you\u0027ll see the request is going through with 1.37! And this is the only case where console interface is noted. Basically if you look further through the exchange, you\u0027ll see requests with no version being sent, which means the default response is 1.1, meaning no console_interface.\n\nExample;\n\n2026-04-09 00:49:38.142 124706 INFO tempest.lib.common.rest_client [req-e4850c03-ce75-4f91-a8de-4fd203712836 req-e4850c03-ce75-4f91-a8de-4fd203712836 ] Request (BaremetalBasicOpsAndRescue:test_baremetal_server_ops_wholedisk_image): 200 GET https://10.209.96.246/baremetal/v1/nodes/fd79cc6a-aae0-4783-82a7-9281c05543d4 0.036s\n2026-04-09 00:49:38.143 124706 DEBUG tempest.lib.common.rest_client [req-e4850c03-ce75-4f91-a8de-4fd203712836 req-e4850c03-ce75-4f91-a8de-4fd203712836 ] Request - Headers: {\u0027Content-Type\u0027: \u0027application/json\u0027, \u0027Accept\u0027: \u0027application/json\u0027, \u0027X-Auth-Token\u0027: \u0027\u003comitted\u003e\u0027}\n        Body: None\n    Response - Headers: {\u0027date\u0027: \u0027Thu, 09 Apr 2026 00:49:38 GMT\u0027, \u0027server\u0027: \u0027Apache/2.4.58 (Ubuntu)\u0027, \u0027x-openstack-ironic-api-minimum-version\u0027: \u00271.1\u0027, \u0027x-openstack-ironic-api-maximum-version\u0027: \u00271.111\u0027, \u0027x-openstack-ironic-api-version\u0027: \u00271.1\u0027, \u0027content-length\u0027: \u00273021\u0027, \u0027content-type\u0027: \u0027application/json\u0027, \u0027x-openstack-request-id\u0027: \u0027req-e4850c03-ce75-4f91-a8de-4fd203712836\u0027, \u0027openstack-request-id\u0027: \u0027req-e4850c03-ce75-4f91-a8de-4fd203712836\u0027, \u0027connection\u0027: \u0027close\u0027, \u0027status\u0027: \u0027200\u0027, \u0027content-location\u0027: \u0027https://10.209.96.246/baremetal/v1/nodes/fd79cc6a-aae0-4783-82a7-9281c05543d4\u0027}\n        Body: b\u0027{\"uuid\": \"fd79cc6a-aae0-4783-82a7-9281c05543d4\", \"created_at\": \"2026-04-09T00:33:58+00:00\", \"updated_at\": \"2026-04-09T00:49:17+00:00\", \"console_enabled\": false, \"driver\": \"ipmi\", \"driver_info\": {\"ipmi_address\": \"10.209.96.246\", \"ipmi_username\": \"admin\", \"ipmi_password\": \"******\", \"ipmi_port\": 6230}, \"extra\": {}, \"instance_info\": {\"image_source\": \"c4e498f0-7720-431f-a589-9ad8cc668df8\", \"root_gb\": \"4\", \"swap_mb\": \"0\", \"display_name\": \"tempest-BaremetalBasicOpsAndRescue-server-416864238\", \"vcpus\": \"2\", \"nova_host_id\": \"np284437aff8a24\", \"memory_mb\": \"2750\", \"local_gb\": \"0\", \"project_id\": \"59774ffad9fe43929a6227dd7e1b9b98\", \"project_name\": \"tempest-BaremetalBasicOpsAndRescue-615052587\", \"user_id\": \"f42eb759c4354fdebb9f47e7c6fe349f\", \"user_name\": \"tempest-BaremetalBasicOpsAndRescue-615052587-project-member\", \"flavor_name\": \"baremetal\", \"fixed_ips\": \"[{\\\\\"address\\\\\": \\\\\"fd98:7e4e:a97a:0:f816:3eff:fee1:5938\\\\\", \\\\\"type\\\\\": \\\\\"fixed\\\\\", \\\\\"version\\\\\": 6, \\\\\"meta\\\\\": {}, \\\\\"floating_ips\\\\\": []}, {\\\\\"address\\\\\": \\\\\"10.1.0.59\\\\\", \\\\\"type\\\\\": \\\\\"fixed\\\\\", \\\\\"version\\\\\": 4, \\\\\"meta\\\\\": {}, \\\\\"floating_ips\\\\\": []}]\", \"floating_ips\": \"[]\", \"capabilities\": \"{\\\\\"boot_mode\\\\\": \\\\\"bios\\\\\"}\", \"traits\": [\"CUSTOM_GOLD\"], \"image_type\": \"whole-disk\", \"configdrive\": \"******\", \"image_url\": \"******\", \"image_checksum\": \"0c839612eb3f2469420f2ccae990827f\", \"image_os_hash_algo\": null, \"image_os_hash_value\": null, \"image_disk_format\": \"qcow2\", \"image_container_format\": \"bare\", \"image_tags\": [], \"image_properties\": {\"owner_specified.openstack.md5\": \"\", \"owner_specified.openstack.object\": \"images/cirros-0.6.1-x86_64-disk\", \"owner_specified.openstack.sha256\": \"\", \"hash_value\": \"df88bac2791254f68941229792539621516bd480aa3d6fe4c0ca16057393d024a4944d644959f323dc01a25e3417c0b581776ab3c8db8da542039f2a67230579\", \"owner_id\": \"ba73d229905e4155a0d55c2d45dd2bca\", \"hash_algo\": \"sha512\", \"virtual_size\": 117440512, \"location\": {\"cloud\": \"\", \"region_name\": null, \"zone\": null, \"project\": {\"id\": null, \"name\": null, \"domain_id\": null, \"domain_name\": null}}}, \"rescue_password\": \"******\", \"hashed_rescue_password\": \"******\"}, \"instance_uuid\": \"9e2a3f2c-1cfe-45bd-b993-d245db731be0\", \"last_error\": null, \"maintenance\": false, \"maintenance_reason\": null, \"power_state\": \"power on\", \"properties\": {\"cpu_arch\": \"x86_64\", \"capabilities\": \"boot_mode:bios\", \"vendor\": \"unknown\"}, \"provision_state\": \"rescuing\", \"provision_updated_at\": \"2026-04-09T00:49:15+00:00\", \"reservation\": \"np284437aff8a24\", \"target_power_state\": null, \"target_provision_state\": \"rescue\", \"links\": [{\"href\": \"https://10.209.96.246/baremetal/v1/nodes/fd79cc6a-aae0-4783-82a7-9281c05543d4\", \"rel\": \"self\"}, {\"href\": \"https://10.209.96.246/baremetal/nodes/fd79cc6a-aae0-4783-82a7-9281c05543d4\", \"rel\": \"bookmark\"}], \"chassis_uuid\": \"228e6ecd-2f00-4198-b0cc-5f0854df2bcf\", \"ports\": [{\"href\": \"https://10.209.96.246/baremetal/v1/nodes/fd79cc6a-aae0-4783-82a7-9281c05543d4/ports\", \"rel\": \"self\"}, {\"href\": \"https://10.209.96.246/baremetal/nodes/fd79cc6a-aae0-4783-82a7-9281c05543d4/ports\", \"rel\": \"bookmark\"}]}\u0027 _log_request_full /opt/stack/tempest/tempest/lib/common/rest_client.py:489\n        \nSo, the tl;dr, is the flow of the test needs to properly assert the version to use. Otherwise the test falls to oldest which is the design. if the boot_instance resulting checks just hands back version 1.1\u0027s json for self.node, we\u0027ll never go down this path.","commit_id":"e95521115fac08c0acd0b118f883cfc0ec5b4fe4"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"13c0b76c34b6ac8a1bd0c9da8c08358577baf957","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        # sushy-tools doesn\u0027t support VNC yet). If configured but proxy is"},{"line_number":255,"context_line":"        # missing, test will fail revealing the misconfiguration."},{"line_number":256,"context_line":"        if self.node.get(\u0027console_interface\u0027) \u003d\u003d \u0027fake-graphical\u0027:"},{"line_number":257,"context_line":"            self.validate_console()"},{"line_number":258,"context_line":"        self.validate_image()"},{"line_number":259,"context_line":"        self.validate_ports()"},{"line_number":260,"context_line":"        self.validate_scheduling()"}],"source_content_type":"text/x-python","patch_set":22,"id":"39463500_b19008d1","line":257,"in_reply_to":"e90a9920_2d85db5d","updated":"2026-04-14 21:24:07.000000000","message":"Done","commit_id":"e95521115fac08c0acd0b118f883cfc0ec5b4fe4"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"13c0b76c34b6ac8a1bd0c9da8c08358577baf957","unresolved":true,"context_lines":[{"line_number":51,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027, \u0027system_admin\u0027]"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    # Note: 1.31 API microversion is needed to enable the graphical console."},{"line_number":54,"context_line":"    # So that we can validate the graphical console functionality."},{"line_number":55,"context_line":"    min_microversion \u003d \u00271.65\u0027"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    TEST_RESCUE_MODE \u003d False"}],"source_content_type":"text/x-python","patch_set":25,"id":"4886e03e_7ba37b2d","line":54,"updated":"2026-04-14 21:24:07.000000000","message":"There should be an additional comment that 1.65 is required for the lease validation. This can be done as a follow-up","commit_id":"1dc0b2ccea1a84f2575e9941d6ba1e4588d7d1aa"}]}
