)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"5e382625e34945aede6474b26ba638eeb791ad19","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Steve Baker \u003csbaker@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2025-02-14 13:51:02 +1300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add ironic-novncproxy service"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is a forklift of the nova novncproxy service to act as the noVNC"},{"line_number":10,"context_line":"front-end to graphical consoles."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"fcf5408b_672e79aa","line":7,"updated":"2025-02-18 15:46:59.000000000","message":"I\u0027m not going to let this opinion influence my code review here, because I know it\u0027s a medium+-term ask.\n\nShould we work with Nova team to unify these codebases somewhat (e.g. oslo.vncproxy?)? I could easily see a situation in the future where we find a CVE in novncproxy and it doesn\u0027t get funnelled to the ironic copy.","commit_id":"8b091d9110ae13fc698e4d64d39e9eb3d7a6047b"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f929ca288ff5da37084aca8ca61fb4c937bc22e6","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Steve Baker \u003csbaker@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2025-02-14 13:51:02 +1300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add ironic-novncproxy service"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is a forklift of the nova novncproxy service to act as the noVNC"},{"line_number":10,"context_line":"front-end to graphical consoles."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"d581cf23_c974e2da","line":7,"in_reply_to":"fcf5408b_672e79aa","updated":"2025-02-18 20:03:47.000000000","message":"It would certainly be possible to break this out into a library later. A counter point, our usage of ironic-lib made fixing our own CVEs harder","commit_id":"8b091d9110ae13fc698e4d64d39e9eb3d7a6047b"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"9c23ee956f189dc94b3cdd1691f22890196079b4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"2e2385e2_8f859689","updated":"2025-02-11 19:28:04.000000000","message":"recheck weird unit test failure","commit_id":"a507677226890931572905cc9479edb1546f8482"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"31b46b856865520e7808f253afd2831c20bceacb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"71fd5022_96934e14","updated":"2025-02-18 15:24:21.000000000","message":"Overall, +2. A few minor things I\u0027d like to see cleaned up but don\u0027t see why that cannot happen in a follow-up.","commit_id":"412124a2971405d11a087e799320ab31d6ea76b6"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"57621f70d5f7cc3ef1394835d2ecd5fb3e82ff9e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"42561eeb_eb99b5b0","updated":"2025-02-19 03:07:30.000000000","message":"no change rebase","commit_id":"cd810743acd2cb02ac1eea94fdb42436611a0169"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"be432f9be4f24a2d914176911f40c1454f858787","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"89e6684a_6abd2f93","updated":"2025-02-19 18:34:20.000000000","message":"recheck ironic-tempest-bios-ipmi-direct-tinyipa","commit_id":"cd810743acd2cb02ac1eea94fdb42436611a0169"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"eb585bfffbd1df84ee8633b55230751ec50e2bc8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"43836885_dcdef531","updated":"2025-02-24 14:31:56.000000000","message":"recheck cirros vm networking didn\u0027t appear to start up.","commit_id":"beaaf405d3a6e1195ab0260eeed4a416f59ab028"}],"devstack/lib/ironic":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"d8b170fb99de88661d641bc7b0842a31220598ca","unresolved":true,"context_lines":[{"line_number":1966,"context_line":""},{"line_number":1967,"context_line":"    novnc_url\u003d$service_protocol://$SERVICE_HOST:$service_port/vnc_auto.html"},{"line_number":1968,"context_line":"    iniset $IRONIC_CONF_FILE vnc enabled True"},{"line_number":1969,"context_line":"    iniset $IRONIC_CONF_FILE vnc public_url $novnc_url"},{"line_number":1970,"context_line":""},{"line_number":1971,"context_line":"}"},{"line_number":1972,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":9,"id":"f5899570_d5e76064","line":1969,"updated":"2025-02-02 22:34:57.000000000","message":"This is missing host_ip and port","commit_id":"22a030b5b0e06562e23700dfef18d8debe15ba02"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"cef13db5a24af7bc401a399c5d890984ec8db4f5","unresolved":false,"context_lines":[{"line_number":1966,"context_line":""},{"line_number":1967,"context_line":"    novnc_url\u003d$service_protocol://$SERVICE_HOST:$service_port/vnc_auto.html"},{"line_number":1968,"context_line":"    iniset $IRONIC_CONF_FILE vnc enabled True"},{"line_number":1969,"context_line":"    iniset $IRONIC_CONF_FILE vnc public_url $novnc_url"},{"line_number":1970,"context_line":""},{"line_number":1971,"context_line":"}"},{"line_number":1972,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":9,"id":"e6ebd3ae_64846127","line":1969,"in_reply_to":"f5899570_d5e76064","updated":"2025-02-12 21:46:50.000000000","message":"Done","commit_id":"22a030b5b0e06562e23700dfef18d8debe15ba02"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"31b46b856865520e7808f253afd2831c20bceacb","unresolved":true,"context_lines":[{"line_number":1240,"context_line":"    fi"},{"line_number":1241,"context_line":""},{"line_number":1242,"context_line":"    if is_service_enabled ir-novnc; then"},{"line_number":1243,"context_line":"        # a websockets/html5 or flash powered VNC console for vm instances"},{"line_number":1244,"context_line":"        NOVNC_FROM_PACKAGE\u003d$(trueorfalse False NOVNC_FROM_PACKAGE)"},{"line_number":1245,"context_line":"        if [ \"$NOVNC_FROM_PACKAGE\" \u003d \"True\" ]; then"},{"line_number":1246,"context_line":"            # Installing novnc on Debian bullseye breaks the global pip"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"5de3cae0_33285609","line":1243,"range":{"start_line":1243,"start_character":62,"end_line":1243,"end_character":64},"updated":"2025-02-18 15:24:21.000000000","message":"nit: not a vm ;)","commit_id":"412124a2971405d11a087e799320ab31d6ea76b6"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f929ca288ff5da37084aca8ca61fb4c937bc22e6","unresolved":true,"context_lines":[{"line_number":1240,"context_line":"    fi"},{"line_number":1241,"context_line":""},{"line_number":1242,"context_line":"    if is_service_enabled ir-novnc; then"},{"line_number":1243,"context_line":"        # a websockets/html5 or flash powered VNC console for vm instances"},{"line_number":1244,"context_line":"        NOVNC_FROM_PACKAGE\u003d$(trueorfalse False NOVNC_FROM_PACKAGE)"},{"line_number":1245,"context_line":"        if [ \"$NOVNC_FROM_PACKAGE\" \u003d \"True\" ]; then"},{"line_number":1246,"context_line":"            # Installing novnc on Debian bullseye breaks the global pip"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"9b7debc2_626f930f","line":1243,"range":{"start_line":1243,"start_character":62,"end_line":1243,"end_character":64},"in_reply_to":"5de3cae0_33285609","updated":"2025-02-18 20:03:47.000000000","message":"not flash powered either, I\u0027ll fix this in the last change","commit_id":"412124a2971405d11a087e799320ab31d6ea76b6"}],"ironic/api/controllers/v1/node.py":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"60d1ce67995facc842c79e9fe41b47c1a4a669a5","unresolved":true,"context_lines":[{"line_number":1843,"context_line":"            node[\u0027instance_info\u0027][\u0027image_url\u0027] \u003d \"******\""},{"line_number":1844,"context_line":""},{"line_number":1845,"context_line":"    if \u0027driver_internal_info\u0027 in node_keys and not show_driver_secrets:"},{"line_number":1846,"context_line":"        node[\u0027driver_internal_info\u0027] \u003d strutils.mask_dict_password("},{"line_number":1847,"context_line":"            node[\u0027driver_internal_info\u0027], \"******\")"},{"line_number":1848,"context_line":""},{"line_number":1849,"context_line":"    if \u0027provision_state\u0027 in node_keys:"}],"source_content_type":"text/x-python","patch_set":3,"id":"8ee61d07_08aeaf53","line":1846,"range":{"start_line":1846,"start_character":48,"end_line":1846,"end_character":66},"updated":"2025-01-15 22:48:03.000000000","message":"I think not using mask_dict_password here is an oversight and maybe this should be broken down into its own change","commit_id":"e5ed50a724748e78e05a5b4b17cb178967fbf690"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"1340a2b49d706e1399d24f0562dd63d86cf67fbf","unresolved":false,"context_lines":[{"line_number":1843,"context_line":"            node[\u0027instance_info\u0027][\u0027image_url\u0027] \u003d \"******\""},{"line_number":1844,"context_line":""},{"line_number":1845,"context_line":"    if \u0027driver_internal_info\u0027 in node_keys and not show_driver_secrets:"},{"line_number":1846,"context_line":"        node[\u0027driver_internal_info\u0027] \u003d strutils.mask_dict_password("},{"line_number":1847,"context_line":"            node[\u0027driver_internal_info\u0027], \"******\")"},{"line_number":1848,"context_line":""},{"line_number":1849,"context_line":"    if \u0027provision_state\u0027 in node_keys:"}],"source_content_type":"text/x-python","patch_set":3,"id":"336ad743_bf40c35e","line":1846,"range":{"start_line":1846,"start_character":48,"end_line":1846,"end_character":66},"in_reply_to":"8ee61d07_08aeaf53","updated":"2025-01-21 22:51:04.000000000","message":"Done","commit_id":"e5ed50a724748e78e05a5b4b17cb178967fbf690"}],"ironic/cmd/novncproxy.py":[{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"f1e3a11fa2e7ca743e2b1a4bd07a2924d10dbd34","unresolved":true,"context_lines":[{"line_number":45,"context_line":"    launcher \u003d ironic_service.process_launcher()"},{"line_number":46,"context_line":"    server \u003d novncproxy_service.NoVNCProxyService()"},{"line_number":47,"context_line":"    launcher.launch_service(server)"},{"line_number":48,"context_line":"    sys.exit(launcher.wait())"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"}],"source_content_type":"text/x-python","patch_set":9,"id":"d284409f_835ebae6","line":48,"updated":"2025-01-30 20:39:27.000000000","message":"return instead of sys.exit?","commit_id":"22a030b5b0e06562e23700dfef18d8debe15ba02"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"b27e063b1a4ba4fc93a3ff2cc0f0d9c03d047568","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    launcher \u003d ironic_service.process_launcher()"},{"line_number":46,"context_line":"    server \u003d novncproxy_service.NoVNCProxyService()"},{"line_number":47,"context_line":"    launcher.launch_service(server)"},{"line_number":48,"context_line":"    sys.exit(launcher.wait())"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"}],"source_content_type":"text/x-python","patch_set":9,"id":"8ed7ca1f_a3212327","line":48,"in_reply_to":"86a5694f_b302dbbe","updated":"2025-01-31 16:43:53.000000000","message":"Okay. Just seems wrong in light of how it\u0027s wrapped.","commit_id":"22a030b5b0e06562e23700dfef18d8debe15ba02"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"605f2d1f17f0f0d9b2ab3c6ae743d94edc16ca0e","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    launcher \u003d ironic_service.process_launcher()"},{"line_number":46,"context_line":"    server \u003d novncproxy_service.NoVNCProxyService()"},{"line_number":47,"context_line":"    launcher.launch_service(server)"},{"line_number":48,"context_line":"    sys.exit(launcher.wait())"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"}],"source_content_type":"text/x-python","patch_set":9,"id":"c2b080eb_4cbbeb86","line":48,"in_reply_to":"8ed7ca1f_a3212327","updated":"2025-02-02 23:13:02.000000000","message":"I do see a problem with process management now that I have a devstack environment to develop against, stay tuned","commit_id":"22a030b5b0e06562e23700dfef18d8debe15ba02"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"0541ceb13f99ed9e6d5096e65a6e47b006038d42","unresolved":true,"context_lines":[{"line_number":45,"context_line":"    launcher \u003d ironic_service.process_launcher()"},{"line_number":46,"context_line":"    server \u003d novncproxy_service.NoVNCProxyService()"},{"line_number":47,"context_line":"    launcher.launch_service(server)"},{"line_number":48,"context_line":"    sys.exit(launcher.wait())"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"}],"source_content_type":"text/x-python","patch_set":9,"id":"86a5694f_b302dbbe","line":48,"in_reply_to":"d284409f_835ebae6","updated":"2025-01-30 21:04:06.000000000","message":"This is how the other services are terminated, https://opendev.org/openstack/ironic/src/branch/master/ironic/cmd/api.py#L53-L58","commit_id":"22a030b5b0e06562e23700dfef18d8debe15ba02"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"f1e3a11fa2e7ca743e2b1a4bd07a2924d10dbd34","unresolved":true,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":52,"context_line":"    sys.exit(main())"}],"source_content_type":"text/x-python","patch_set":9,"id":"5ec6ec23_a43b596c","line":52,"updated":"2025-01-30 20:39:27.000000000","message":"catch the exception and log it and exiting with non-zero?","commit_id":"22a030b5b0e06562e23700dfef18d8debe15ba02"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"b27e063b1a4ba4fc93a3ff2cc0f0d9c03d047568","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":52,"context_line":"    sys.exit(main())"}],"source_content_type":"text/x-python","patch_set":9,"id":"271483f0_8f70e1e9","line":52,"in_reply_to":"0bb873fa_26a5610b","updated":"2025-01-31 16:43:53.000000000","message":"Acknowledged","commit_id":"22a030b5b0e06562e23700dfef18d8debe15ba02"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"605f2d1f17f0f0d9b2ab3c6ae743d94edc16ca0e","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":52,"context_line":"    sys.exit(main())"}],"source_content_type":"text/x-python","patch_set":9,"id":"2e1f03c5_b0a2ac08","line":52,"in_reply_to":"271483f0_8f70e1e9","updated":"2025-02-02 23:13:02.000000000","message":"Nothing actually hits this path unless a developer runs this script manually. The cmd wrapper does something similar:\n\n    cat /opt/stack/data/venv/bin/ironic-novncproxy\n    #!/opt/stack/data/venv/bin/python3.12\n    # -*- coding: utf-8 -*-\n    import re\n    import sys\n    from ironic.cmd.novncproxy import main\n    if __name__ \u003d\u003d \u0027__main__\u0027:\n        sys.argv[0] \u003d re.sub(r\u0027(-script\\.pyw|\\.exe)?$\u0027, \u0027\u0027, sys.argv[0])\n        sys.exit(main())","commit_id":"22a030b5b0e06562e23700dfef18d8debe15ba02"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"0541ceb13f99ed9e6d5096e65a6e47b006038d42","unresolved":true,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":52,"context_line":"    sys.exit(main())"}],"source_content_type":"text/x-python","patch_set":9,"id":"0bb873fa_26a5610b","line":52,"in_reply_to":"5ec6ec23_a43b596c","updated":"2025-01-30 21:04:06.000000000","message":"ditto","commit_id":"22a030b5b0e06562e23700dfef18d8debe15ba02"}],"ironic/cmd/singleprocess.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8ef5ba783d32de1302c2138fd765eaa972872cdb","unresolved":true,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    if CONF.vnc.enabled:"},{"line_number":59,"context_line":"        # Build and start the websocket proxy"},{"line_number":60,"context_line":"        launcher \u003d ironic_service.process_launcher()"},{"line_number":61,"context_line":"        novncproxy \u003d novncproxy_service.NoVNCProxyService()"},{"line_number":62,"context_line":"        launcher.launch_service(novncproxy)"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"18f0672e_dd3ab472","line":60,"updated":"2025-02-18 15:43:32.000000000","message":"This overrides the launcher object created on line 42, so on line 64 you\u0027re going to wait for only the proxy. Any reason not to use the same launcher?","commit_id":"412124a2971405d11a087e799320ab31d6ea76b6"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f929ca288ff5da37084aca8ca61fb4c937bc22e6","unresolved":true,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    if CONF.vnc.enabled:"},{"line_number":59,"context_line":"        # Build and start the websocket proxy"},{"line_number":60,"context_line":"        launcher \u003d ironic_service.process_launcher()"},{"line_number":61,"context_line":"        novncproxy \u003d novncproxy_service.NoVNCProxyService()"},{"line_number":62,"context_line":"        launcher.launch_service(novncproxy)"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9e2d7ba5_226cca63","line":60,"in_reply_to":"18f0672e_dd3ab472","updated":"2025-02-18 20:03:47.000000000","message":"yeah this is suspect. I\u0027ll fix this in the next change in this series","commit_id":"412124a2971405d11a087e799320ab31d6ea76b6"}],"ironic/conf/vnc.py":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"9df78b956ad8a1da947e87c2f718b1c8ada2e9f5","unresolved":true,"context_lines":[{"line_number":75,"context_line":"        min\u003d10,"},{"line_number":76,"context_line":"        help\u003d\u0027The lifetime of a console auth token (in seconds).\u0027),"},{"line_number":77,"context_line":"    cfg.BoolOpt("},{"line_number":78,"context_line":"        \u0027enforce_session_timeout\u0027,"},{"line_number":79,"context_line":"        default\u003dFalse,"},{"line_number":80,"context_line":"        help\u003d\u0027Enable or disable enforce session timeout for VM console.\u0027"},{"line_number":81,"context_line":"             \u0027When set to True, Ironic will automatically close the console \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"32a12821_b6bff266","line":78,"updated":"2025-02-14 00:50:07.000000000","message":"I think this option and functionality should be removed. Session timeout will be enforced by default because the container that novncproxy is attached to will be stopped. We don\u0027t need to do that inside novncproxy too.","commit_id":"9464ca579c3a010006369a28da40378e45457ab9"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"73aab583e4ab60c965ce85a3c396dc39c4404f85","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        min\u003d10,"},{"line_number":76,"context_line":"        help\u003d\u0027The lifetime of a console auth token (in seconds).\u0027),"},{"line_number":77,"context_line":"    cfg.BoolOpt("},{"line_number":78,"context_line":"        \u0027enforce_session_timeout\u0027,"},{"line_number":79,"context_line":"        default\u003dFalse,"},{"line_number":80,"context_line":"        help\u003d\u0027Enable or disable enforce session timeout for VM console.\u0027"},{"line_number":81,"context_line":"             \u0027When set to True, Ironic will automatically close the console \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"d01c0933_c4ab1e4e","line":78,"in_reply_to":"32a12821_b6bff266","updated":"2025-02-14 02:26:19.000000000","message":"Done","commit_id":"9464ca579c3a010006369a28da40378e45457ab9"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"31b46b856865520e7808f253afd2831c20bceacb","unresolved":true,"context_lines":[{"line_number":24,"context_line":"             \u0027Guests will get created with graphical devices to support \u0027"},{"line_number":25,"context_line":"             \u0027this. Clients (for example Horizon) can then establish a \u0027"},{"line_number":26,"context_line":"             \u0027VNC connection to the guest.\u0027),"},{"line_number":27,"context_line":"    cfg.HostAddressOpt("},{"line_number":28,"context_line":"        \u0027host_ip\u0027,"},{"line_number":29,"context_line":"        default\u003d\u00270.0.0.0\u0027,"},{"line_number":30,"context_line":"        help\u003d\u0027The IP address or hostname on which ironic-novncproxy \u0027"},{"line_number":31,"context_line":"             \u0027listens.\u0027),"},{"line_number":32,"context_line":"    cfg.PortOpt("},{"line_number":33,"context_line":"        \u0027port\u0027,"},{"line_number":34,"context_line":"        default\u003d6090,"}],"source_content_type":"text/x-python","patch_set":14,"id":"6d222af4_21f85707","line":31,"range":{"start_line":27,"start_character":0,"end_line":31,"end_character":25},"updated":"2025-02-18 15:24:21.000000000","message":"aside: we should really lean towards binding on ::0 by default.","commit_id":"412124a2971405d11a087e799320ab31d6ea76b6"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f929ca288ff5da37084aca8ca61fb4c937bc22e6","unresolved":true,"context_lines":[{"line_number":24,"context_line":"             \u0027Guests will get created with graphical devices to support \u0027"},{"line_number":25,"context_line":"             \u0027this. Clients (for example Horizon) can then establish a \u0027"},{"line_number":26,"context_line":"             \u0027VNC connection to the guest.\u0027),"},{"line_number":27,"context_line":"    cfg.HostAddressOpt("},{"line_number":28,"context_line":"        \u0027host_ip\u0027,"},{"line_number":29,"context_line":"        default\u003d\u00270.0.0.0\u0027,"},{"line_number":30,"context_line":"        help\u003d\u0027The IP address or hostname on which ironic-novncproxy \u0027"},{"line_number":31,"context_line":"             \u0027listens.\u0027),"},{"line_number":32,"context_line":"    cfg.PortOpt("},{"line_number":33,"context_line":"        \u0027port\u0027,"},{"line_number":34,"context_line":"        default\u003d6090,"}],"source_content_type":"text/x-python","patch_set":14,"id":"c436f137_60ef579b","line":31,"range":{"start_line":27,"start_character":0,"end_line":31,"end_character":25},"in_reply_to":"6d222af4_21f85707","updated":"2025-02-18 20:03:47.000000000","message":"yep, but [api]host_ip would need to switch at the same time","commit_id":"412124a2971405d11a087e799320ab31d6ea76b6"}],"ironic/console/novncproxy_service.py":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"34b9d49d3a96979d7deb716ef78871ca9619bf4f","unresolved":true,"context_lines":[{"line_number":47,"context_line":"            self._started \u003d True"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def handle_signal(self):"},{"line_number":50,"context_line":"        pass"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _real_start(self):"},{"line_number":53,"context_line":"        kwargs \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"5ebb442b_88c47287","line":50,"updated":"2025-02-03 01:42:44.000000000","message":"WebSockifyServer replaces the signal handling with an approach that oslo_service doesn\u0027t handle. I\u0027ve got a cleanup for this in the next revision","commit_id":"22a030b5b0e06562e23700dfef18d8debe15ba02"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"d47bbfc2ccfa9cdf31ff6dc65c301f496637f8b1","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            self._started \u003d True"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def handle_signal(self):"},{"line_number":50,"context_line":"        pass"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _real_start(self):"},{"line_number":53,"context_line":"        kwargs \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"90f1044c_2f9cda80","line":50,"in_reply_to":"5ebb442b_88c47287","updated":"2025-02-04 23:03:13.000000000","message":"Done","commit_id":"22a030b5b0e06562e23700dfef18d8debe15ba02"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"31b46b856865520e7808f253afd2831c20bceacb","unresolved":true,"context_lines":[{"line_number":50,"context_line":"        kwargs \u003d {"},{"line_number":51,"context_line":"            \u0027listen_host\u0027: CONF.vnc.host_ip,"},{"line_number":52,"context_line":"            \u0027listen_port\u0027: CONF.vnc.port,"},{"line_number":53,"context_line":"            \u0027source_is_ipv6\u0027: bool(CONF.my_ipv6),"},{"line_number":54,"context_line":"            \u0027record\u0027: CONF.vnc.novnc_record,"},{"line_number":55,"context_line":"            \u0027web\u0027: CONF.vnc.novnc_web,"},{"line_number":56,"context_line":"            \u0027file_only\u0027: True,"}],"source_content_type":"text/x-python","patch_set":14,"id":"b6be240d_7b37e7aa","line":53,"range":{"start_line":53,"start_character":12,"end_line":53,"end_character":49},"updated":"2025-02-18 15:24:21.000000000","message":"I guess this is used by websockify.\n\nHonestly, I\u0027d drop the use of my_ipv6 as a variable and just classify the listen_host. oslo_utils.netutils might be useful for such.","commit_id":"412124a2971405d11a087e799320ab31d6ea76b6"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f929ca288ff5da37084aca8ca61fb4c937bc22e6","unresolved":true,"context_lines":[{"line_number":50,"context_line":"        kwargs \u003d {"},{"line_number":51,"context_line":"            \u0027listen_host\u0027: CONF.vnc.host_ip,"},{"line_number":52,"context_line":"            \u0027listen_port\u0027: CONF.vnc.port,"},{"line_number":53,"context_line":"            \u0027source_is_ipv6\u0027: bool(CONF.my_ipv6),"},{"line_number":54,"context_line":"            \u0027record\u0027: CONF.vnc.novnc_record,"},{"line_number":55,"context_line":"            \u0027web\u0027: CONF.vnc.novnc_web,"},{"line_number":56,"context_line":"            \u0027file_only\u0027: True,"}],"source_content_type":"text/x-python","patch_set":14,"id":"054bb885_0e1fcdfd","line":53,"range":{"start_line":53,"start_character":12,"end_line":53,"end_character":49},"in_reply_to":"b6be240d_7b37e7aa","updated":"2025-02-18 20:03:47.000000000","message":"I think source refers to the VNC servers this will connect to, not host_ip. In our case this will be containers which we manage. I\u0027ve made a note to follow up on this","commit_id":"412124a2971405d11a087e799320ab31d6ea76b6"}],"ironic/console/websocketproxy.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":"31b46b856865520e7808f253afd2831c20bceacb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":14,"id":"f5ae8c79_621aa91d","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":41},"updated":"2025-02-18 15:24:21.000000000","message":"wow...\n\nGiven this is \"new\" and \"modified\" to fit the ironic case. If it is over half changed since this original date, which I suspect git history might show in nova, this can be dropped most likely.\n\nThe code which should have this copyright claim is super limited in the code base as it was rooted in the asset transfer to the Foundation in the very early days.","commit_id":"412124a2971405d11a087e799320ab31d6ea76b6"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f929ca288ff5da37084aca8ca61fb4c937bc22e6","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2012 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":14,"id":"4fe3bce3_6d54fe57","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":41},"in_reply_to":"f5ae8c79_621aa91d","updated":"2025-02-18 20:03:47.000000000","message":"There is quite a few line deletions but the only substantial addition is the function _get_node, so I made a judgement that leaving this in is appropriate","commit_id":"412124a2971405d11a087e799320ab31d6ea76b6"}],"ironic/tests/unit/console/securityproxy/test_rfb.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":"31b46b856865520e7808f253afd2831c20bceacb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014-2016 Red Hat, Inc"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":14,"id":"58639214_dbfcf25a","line":1,"updated":"2025-02-18 15:24:21.000000000","message":"nit: Uhh... 2025 ;)","commit_id":"412124a2971405d11a087e799320ab31d6ea76b6"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f929ca288ff5da37084aca8ca61fb4c937bc22e6","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014-2016 Red Hat, Inc"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":14,"id":"692e5846_15178e21","line":1,"in_reply_to":"58639214_dbfcf25a","updated":"2025-02-18 20:03:47.000000000","message":"These tests were forklifted from nova and I think are similar enough to justify keeping the copyright","commit_id":"412124a2971405d11a087e799320ab31d6ea76b6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e7c670bd0ef28d125693e74a4a4b302595657415","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014-2016 Red Hat, Inc"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":14,"id":"57bcc9a2_f48b7c29","line":1,"in_reply_to":"692e5846_15178e21","updated":"2025-02-18 21:05:30.000000000","message":"cool cool","commit_id":"412124a2971405d11a087e799320ab31d6ea76b6"}],"ironic/tests/unit/console/securityproxy/test_websocketproxy.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":"31b46b856865520e7808f253afd2831c20bceacb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# All Rights Reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":14,"id":"4ebb51cb_67b2a99b","line":1,"updated":"2025-02-18 15:24:21.000000000","message":"Nit, Everyone attempts reserves rights, but when it doesn\u0027t say who does, it is not in force.","commit_id":"412124a2971405d11a087e799320ab31d6ea76b6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e7c670bd0ef28d125693e74a4a4b302595657415","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# All Rights Reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":14,"id":"8226be02_09a8988f","line":1,"in_reply_to":"489fa714_2117ef45","updated":"2025-02-18 21:05:30.000000000","message":"cool cool","commit_id":"412124a2971405d11a087e799320ab31d6ea76b6"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"f929ca288ff5da37084aca8ca61fb4c937bc22e6","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# All Rights Reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":14,"id":"489fa714_2117ef45","line":1,"in_reply_to":"4ebb51cb_67b2a99b","updated":"2025-02-18 20:03:47.000000000","message":"I think this is another copy from nova, the code is mostly the same","commit_id":"412124a2971405d11a087e799320ab31d6ea76b6"}]}
