)]}'
{"/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":"168f3f60daa70f2c47030855cdddfcb86d1787d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"868bde40_5eae9f32","updated":"2025-02-24 19:18:36.000000000","message":"recheck unstable CI","commit_id":"389765b7cdaf906754bd23efa8cbd9a95c74b8df"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"4ad1fbe63f39ea6ca4f952c98585820bfe13e7f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"872e291a_677e08b4","updated":"2025-02-26 14:12:11.000000000","message":"recheck glance fix merged","commit_id":"af12e3871701200c7914c2b6062afaff128af91a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fd62a1072cc408d5ed70025458b3336eed5ee46e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"ecaa8f4c_8a77e656","updated":"2025-02-27 14:26:10.000000000","message":"recheck need fresh ci results","commit_id":"af12e3871701200c7914c2b6062afaff128af91a"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"e55224d9214f66d8a950cae6c3045479068d158d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"f9c5ddf9_e81fe417","updated":"2025-03-03 21:48:03.000000000","message":"recheck","commit_id":"48557942acb0b5d7f0fbe2e68552245692c7890a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"16f15222aacf6a99b1eb9835dd62e29744fc7ef4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"f6b5ab82_8451d7d1","updated":"2025-03-04 17:33:26.000000000","message":"recheck metal3 failed possibly unstable now.","commit_id":"48557942acb0b5d7f0fbe2e68552245692c7890a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"69ed0781f5250b05ca409f2fbe8a043eadd02fd0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"746dd77e_0121e6e8","updated":"2025-03-05 00:37:28.000000000","message":"recheck several ci fixes have merged","commit_id":"48557942acb0b5d7f0fbe2e68552245692c7890a"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"2d3bf4ff027cf566544fea8ff993745444797444","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"0759b63b_2f742ac3","updated":"2025-03-04 07:28:15.000000000","message":"why does this need to be per conductor? why not per conductor group for example?","commit_id":"48557942acb0b5d7f0fbe2e68552245692c7890a"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"9e1a32e58630886d829b7dd48984a3d8a0500180","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"dd878830_0bb5632b","in_reply_to":"0759b63b_2f742ac3","updated":"2025-03-04 14:18:07.000000000","message":"this can probably be discussed separately","commit_id":"48557942acb0b5d7f0fbe2e68552245692c7890a"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"14c021076d7b10a832b0cdff9f9df3220203747b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"1e4ea3bf_aa423401","in_reply_to":"dd878830_0bb5632b","updated":"2025-03-04 20:18:38.000000000","message":"The only actual constraint is that the ironic-novncproxy a conductor is configured for needs to be able to connect to console containers which that conductor initiates. So there could be a single ironic-novncproxy for a conductor group, and a custom external console container provider could manage console containers as an aggregate group.\n\nI\u0027m not sure how to document this without ending up with guidance too vague to follow. A follow-up to https://review.opendev.org/c/openstack/ironic/+/943122 could elaborate on this.","commit_id":"48557942acb0b5d7f0fbe2e68552245692c7890a"}],"ironic/cmd/singleprocess.py":[{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"2d3bf4ff027cf566544fea8ff993745444797444","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":11,"id":"7d4c95aa_1a633a56","side":"PARENT","line":60,"updated":"2025-03-04 07:28:15.000000000","message":"should this not be in an earlier patch in the series?","commit_id":"5e22704dad877e3a5822926f4abd64e27877da19"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"9e1a32e58630886d829b7dd48984a3d8a0500180","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":11,"id":"e3a45ed8_bb4f158a","side":"PARENT","line":60,"in_reply_to":"7d4c95aa_1a633a56","updated":"2025-03-04 14:18:07.000000000","message":"if I\u0027m not mistaken this is the first patch in the series","commit_id":"5e22704dad877e3a5822926f4abd64e27877da19"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"712b30b5dcbae6b0721f76f8f211ef0007591d46","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":11,"id":"833b0529_29a38c0d","side":"PARENT","line":60,"in_reply_to":"7facb3bc_07c7a0e9","updated":"2025-03-04 19:24:57.000000000","message":"Here is the context for this follow-up change https://review.opendev.org/c/openstack/ironic/+/939191/16/ironic/cmd/singleprocess.py","commit_id":"5e22704dad877e3a5822926f4abd64e27877da19"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"06bec5197402235aeedd3c55eeb20e896827a178","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":11,"id":"7facb3bc_07c7a0e9","side":"PARENT","line":60,"in_reply_to":"e3a45ed8_bb4f158a","updated":"2025-03-04 17:32:43.000000000","message":"This is like the third or forth... This is in response to Dmitry provided feedback from earlier on if I\u0027m recalling correctly.","commit_id":"5e22704dad877e3a5822926f4abd64e27877da19"}],"ironic/conductor/rpc_service.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":"e2cb140adda68685a11482e95acedca7f4acbb1b","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        rpc.set_global_manager(None)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def _stop_console_containers(self):"},{"line_number":96,"context_line":"        if not CONF.vnc.enabled:"},{"line_number":97,"context_line":"            return"},{"line_number":98,"context_line":"        provider \u003d console_factory.ConsoleContainerFactory.provider"},{"line_number":99,"context_line":"        provider.stop_all_containers()"}],"source_content_type":"text/x-python","patch_set":5,"id":"cbd5a001_8fa0c1aa","line":96,"updated":"2025-02-18 15:47:06.000000000","message":"I guess the thing I\u0027m worrying is if someone changed the config, we might end up orphaning containers. But... [vnc]enabled is not mutable so maybe I\u0027m just being overly concerned. Marking resolved, but we might want to put a note in the config about maybe *not* changing the option to mutable...","commit_id":"7395896232fa6530d0f447cadd45ee0bc7204d15"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"2f5feb219bb38c7f86dc4d2725c07c09c5bfc7dc","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        rpc.set_global_manager(None)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def _stop_console_containers(self):"},{"line_number":96,"context_line":"        if not CONF.vnc.enabled:"},{"line_number":97,"context_line":"            return"},{"line_number":98,"context_line":"        provider \u003d console_factory.ConsoleContainerFactory.provider"},{"line_number":99,"context_line":"        provider.stop_all_containers()"}],"source_content_type":"text/x-python","patch_set":5,"id":"111c9835_2da40b80","line":96,"in_reply_to":"cbd5a001_8fa0c1aa","updated":"2025-02-18 19:48:11.000000000","message":"One mitigation is that the containers disappear over reboot, well at least for the systemd provider.\n\nWe could call stop_all_containers here regardless, the default provider is fake","commit_id":"7395896232fa6530d0f447cadd45ee0bc7204d15"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"2f5feb219bb38c7f86dc4d2725c07c09c5bfc7dc","unresolved":true,"context_lines":[{"line_number":95,"context_line":"    def _stop_console_containers(self):"},{"line_number":96,"context_line":"        if not CONF.vnc.enabled:"},{"line_number":97,"context_line":"            return"},{"line_number":98,"context_line":"        provider \u003d console_factory.ConsoleContainerFactory.provider"},{"line_number":99,"context_line":"        provider.stop_all_containers()"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def _shutdown_timeout_reached(self, initial_time):"}],"source_content_type":"text/x-python","patch_set":5,"id":"23f8109b_8dbcfed9","line":98,"updated":"2025-02-18 19:48:11.000000000","message":"This should be ConsoleContainerFactory()","commit_id":"7395896232fa6530d0f447cadd45ee0bc7204d15"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"902c044ed30248505e3daeb0d340e71c49818582","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def _stop_console_containers(self):"},{"line_number":96,"context_line":"        if not CONF.vnc.enabled:"},{"line_number":97,"context_line":"            return"},{"line_number":98,"context_line":"        provider \u003d console_factory.ConsoleContainerFactory.provider"},{"line_number":99,"context_line":"        provider.stop_all_containers()"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def _shutdown_timeout_reached(self, initial_time):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5b6057cc_95fe4db5","line":98,"in_reply_to":"23f8109b_8dbcfed9","updated":"2025-02-19 03:09:45.000000000","message":"Done","commit_id":"7395896232fa6530d0f447cadd45ee0bc7204d15"}],"ironic/conf/vnc.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":"e2cb140adda68685a11482e95acedca7f4acbb1b","unresolved":true,"context_lines":[{"line_number":111,"context_line":"             \u0027as a drop-in.\u0027),"},{"line_number":112,"context_line":"    cfg.StrOpt("},{"line_number":113,"context_line":"        \u0027systemd_container_publish_port\u0027,"},{"line_number":114,"context_line":"        default\u003d\u0027$my_ip::5900\u0027,"},{"line_number":115,"context_line":"        help\u003d\u0027Equivalent to the podman run --port argument for the \u0027"},{"line_number":116,"context_line":"             \u0027mapping of VNC port 5900 to the host. An IP address is \u0027"},{"line_number":117,"context_line":"             \u0027required to bind to, defaulting to $my_ip. The VNC port \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"8e12a802_3551320f","line":114,"updated":"2025-02-18 15:47:06.000000000","message":"We likely need to make this v6 friendly on the backend since it is not unheard of. That being said, doesn\u0027t have to be done in this patch. Just... eventually.","commit_id":"7395896232fa6530d0f447cadd45ee0bc7204d15"}],"ironic/console/container/systemd.py":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"d549d834d7368030e5944c8b4852a31d373d3766","unresolved":true,"context_lines":[{"line_number":56,"context_line":"                          \u0027it is mandatory to use this provider.\u0027)"},{"line_number":57,"context_line":"            raise exception.ConsoleContainerError(provider\u003d\u0027systemd\u0027, reason\u003de)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        # Write container files to /run/user/{uid}/containers/systemd."},{"line_number":60,"context_line":"        # It is not desirable for containers to persist across reboots."},{"line_number":61,"context_line":"        # Containers are stateless and can be run rootless as user"},{"line_number":62,"context_line":"        # containers."}],"source_content_type":"text/x-python","patch_set":5,"id":"48e71d74_65f278d5","line":59,"updated":"2025-02-18 22:40:26.000000000","message":"I\u0027m going to have to move this to /etc/containers/systemd/users/{uid}/containers/systemd because support for /run/user/{uid}/containers/systemd was added in podman 5.3 and Ubuntu 24.04 only has podman 4.9.3.\n\nThis means that containers will persist across reboots, so the container delete on conductor startup will have to suffice.","commit_id":"7395896232fa6530d0f447cadd45ee0bc7204d15"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"902c044ed30248505e3daeb0d340e71c49818582","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                          \u0027it is mandatory to use this provider.\u0027)"},{"line_number":57,"context_line":"            raise exception.ConsoleContainerError(provider\u003d\u0027systemd\u0027, reason\u003de)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        # Write container files to /run/user/{uid}/containers/systemd."},{"line_number":60,"context_line":"        # It is not desirable for containers to persist across reboots."},{"line_number":61,"context_line":"        # Containers are stateless and can be run rootless as user"},{"line_number":62,"context_line":"        # containers."}],"source_content_type":"text/x-python","patch_set":5,"id":"c8bb3d46_18f9ee33","line":59,"in_reply_to":"48e71d74_65f278d5","updated":"2025-02-19 03:09:45.000000000","message":"Done","commit_id":"7395896232fa6530d0f447cadd45ee0bc7204d15"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"175e321c5e271e5f08812090097f87ac72ebee70","unresolved":true,"context_lines":[{"line_number":194,"context_line":"                os.makedirs(template_dropin_dir)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"            # Write the drop-in to define the PublishPort value"},{"line_number":197,"context_line":"            port_dropin \u003d os.path.join(template_dropin_dir, \u002720-port.conf\u0027)"},{"line_number":198,"context_line":"            with open(port_dropin, \u0027wt\u0027) as fp:"},{"line_number":199,"context_line":"                fp.write(\u0027[Container]\\n\u0027)"},{"line_number":200,"context_line":"                fp.write(\"PublishPort\u003d\""}],"source_content_type":"text/x-python","patch_set":5,"id":"d086b57c_399189fa","line":197,"updated":"2025-02-18 22:55:14.000000000","message":"Ugh, and dropin directory support was added in podman 5.0.0, so this will have to be a single templated .container file for Ubuntu 24.04","commit_id":"7395896232fa6530d0f447cadd45ee0bc7204d15"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"902c044ed30248505e3daeb0d340e71c49818582","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                os.makedirs(template_dropin_dir)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"            # Write the drop-in to define the PublishPort value"},{"line_number":197,"context_line":"            port_dropin \u003d os.path.join(template_dropin_dir, \u002720-port.conf\u0027)"},{"line_number":198,"context_line":"            with open(port_dropin, \u0027wt\u0027) as fp:"},{"line_number":199,"context_line":"                fp.write(\u0027[Container]\\n\u0027)"},{"line_number":200,"context_line":"                fp.write(\"PublishPort\u003d\""}],"source_content_type":"text/x-python","patch_set":5,"id":"14105fb9_2e73e80d","line":197,"in_reply_to":"d086b57c_399189fa","updated":"2025-02-19 03:09:45.000000000","message":"Done","commit_id":"7395896232fa6530d0f447cadd45ee0bc7204d15"}],"releasenotes/notes/console_container_systemd-9aba9a603e3fa94c.yaml":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e2cb140adda68685a11482e95acedca7f4acbb1b","unresolved":true,"context_lines":[{"line_number":10,"context_line":"    rootless podman containers. Having ``podman`` installed is also a"},{"line_number":11,"context_line":"    dependency for this provider. See ``ironic.conf`` ``[vnc]`` options"},{"line_number":12,"context_line":"    to see how this provider can be configured."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    The ``systemd`` provider is opinionated and will not be appropriate for"},{"line_number":15,"context_line":"    some Ironic deployment methods, especially those which run Ironic inside"},{"line_number":16,"context_line":"    containers. External implementations of ``ironic.console.container`` are"},{"line_number":17,"context_line":"    encouraged to integrate with other deployment / management methods."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"be930f56_f729ab66","line":17,"range":{"start_line":13,"start_character":0,"end_line":17,"end_character":71},"updated":"2025-02-18 15:47:06.000000000","message":"Thank you for putting this here. We can\u0027t solve every case in the blind, and the best thing we can do is to encourage others to solve problems based upon their cases and maybe... hopefully... submit code back to the community.","commit_id":"7395896232fa6530d0f447cadd45ee0bc7204d15"}]}
