)]}'
{"networking_generic_switch/devices/netconf_devices/netconf_switch.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3551498a0b34b765b513c9135eb6b8d73b02e784","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        :raises: GenericSwitchNetconfConnectError on SSH or authentication"},{"line_number":157,"context_line":"            failure."},{"line_number":158,"context_line":"        \"\"\""},{"line_number":159,"context_line":"        # https://github.com/ncclient/ncclient/issues/525"},{"line_number":160,"context_line":"        _ignore_close_issue_525 \u003d False"},{"line_number":161,"context_line":"        try:"},{"line_number":162,"context_line":"            with manager.connect(**self._ncclient_args) as nc_client:"}],"source_content_type":"text/x-python","patch_set":6,"id":"4a800330_a14e4b57","line":159,"updated":"2026-07-03 14:55:53.000000000","message":"Sigh. We really cannot have nice things, can we?","commit_id":"61a9a85aca760fc052b712537db0762cb528a148"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3551498a0b34b765b513c9135eb6b8d73b02e784","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                _ignore_close_issue_525 \u003d True"},{"line_number":165,"context_line":"        except SessionCloseError as e:"},{"line_number":166,"context_line":"            if not _ignore_close_issue_525:"},{"line_number":167,"context_line":"                raise e"},{"line_number":168,"context_line":"        except (SSHError, AuthenticationError) as e:"},{"line_number":169,"context_line":"            raise exc.GenericSwitchNetconfConnectError("},{"line_number":170,"context_line":"                device\u003dself.device_name, error\u003de)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9b70ee3e_3778f933","line":167,"updated":"2026-07-03 14:55:53.000000000","message":"nit: just \"raise\", else you lose the traceback","commit_id":"61a9a85aca760fc052b712537db0762cb528a148"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3551498a0b34b765b513c9135eb6b8d73b02e784","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                _ignore_close_issue_525 \u003d True"},{"line_number":190,"context_line":"        except SessionCloseError as e:"},{"line_number":191,"context_line":"            if not _ignore_close_issue_525:"},{"line_number":192,"context_line":"                raise e"},{"line_number":193,"context_line":"        except RPCError as e:"},{"line_number":194,"context_line":"            LOG.error(\u0027Netconf XML: %s\u0027, q_filter)"},{"line_number":195,"context_line":"            raise e"}],"source_content_type":"text/x-python","patch_set":6,"id":"06fbf0d5_89244b3c","line":192,"updated":"2026-07-03 14:55:53.000000000","message":"same","commit_id":"61a9a85aca760fc052b712537db0762cb528a148"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3551498a0b34b765b513c9135eb6b8d73b02e784","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                raise e"},{"line_number":193,"context_line":"        except RPCError as e:"},{"line_number":194,"context_line":"            LOG.error(\u0027Netconf XML: %s\u0027, q_filter)"},{"line_number":195,"context_line":"            raise e"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        return reply.data_xml"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ca4c529f_d27e145c","line":195,"updated":"2026-07-03 14:55:53.000000000","message":"same","commit_id":"61a9a85aca760fc052b712537db0762cb528a148"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3551498a0b34b765b513c9135eb6b8d73b02e784","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        try:"},{"line_number":218,"context_line":"            with client.locked(source):"},{"line_number":219,"context_line":"                xml_config \u003d ncutils.config_to_xml(config)"},{"line_number":220,"context_line":"                LOG.info("},{"line_number":221,"context_line":"                    \u0027Sending configuration to Netconf device %(dev)s: \u0027"},{"line_number":222,"context_line":"                    \u0027%(conf)s\u0027,"},{"line_number":223,"context_line":"                    {\u0027dev\u0027: self.device_name, \u0027conf\u0027: xml_config})"}],"source_content_type":"text/x-python","patch_set":6,"id":"4bfc3b26_41630003","line":220,"updated":"2026-07-03 14:55:53.000000000","message":"There is a lot of INFO logging in this file, I wonder if most of it should be DEBUG to avoid polluting Ironic logs","commit_id":"61a9a85aca760fc052b712537db0762cb528a148"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3551498a0b34b765b513c9135eb6b8d73b02e784","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                xml_config \u003d ncutils.config_to_xml(config)"},{"line_number":220,"context_line":"                LOG.info("},{"line_number":221,"context_line":"                    \u0027Sending configuration to Netconf device %(dev)s: \u0027"},{"line_number":222,"context_line":"                    \u0027%(conf)s\u0027,"},{"line_number":223,"context_line":"                    {\u0027dev\u0027: self.device_name, \u0027conf\u0027: xml_config})"},{"line_number":224,"context_line":"                if source \u003d\u003d ncconst.CANDIDATE:"},{"line_number":225,"context_line":"                    client.discard_changes()"}],"source_content_type":"text/x-python","patch_set":6,"id":"fdff1bd1_ad32adfa","line":222,"updated":"2026-07-03 14:55:53.000000000","message":"Please tell me \"conf\" never contains any credentials we shouldn\u0027t be logging","commit_id":"61a9a85aca760fc052b712537db0762cb528a148"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3551498a0b34b765b513c9135eb6b8d73b02e784","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                raise exc.GenericSwitchNetconfLockDenied()"},{"line_number":244,"context_line":"            else:"},{"line_number":245,"context_line":"                LOG.error(\u0027Netconf XML: %s\u0027, ncutils.config_to_xml(config))"},{"line_number":246,"context_line":"                raise err"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def _save_running_config(self, client):"},{"line_number":249,"context_line":"        \"\"\"Persist running configuration after a direct edit."}],"source_content_type":"text/x-python","patch_set":6,"id":"46a146ab_f9c06f53","line":246,"updated":"2026-07-03 14:55:53.000000000","message":"nit: \"raise\"","commit_id":"61a9a85aca760fc052b712537db0762cb528a148"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3551498a0b34b765b513c9135eb6b8d73b02e784","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        :param config: Configuration object or list of configuration objects."},{"line_number":297,"context_line":"            Each must implement ``to_xml_element()``."},{"line_number":298,"context_line":"        \"\"\""},{"line_number":299,"context_line":"        # https://github.com/ncclient/ncclient/issues/525"},{"line_number":300,"context_line":"        _ignore_close_issue_525 \u003d False"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        if not isinstance(config, list):"}],"source_content_type":"text/x-python","patch_set":6,"id":"4ed0c0f7_10c13b66","line":299,"updated":"2026-07-03 14:55:53.000000000","message":"Maybe create a helper (e.g. a context manager, maybe a wrapper around connect) to handle this? like\n\n```\nwith connect_and_ignore_issue525(**self._ncclient_args) as client:\n    ...\n```","commit_id":"61a9a85aca760fc052b712537db0762cb528a148"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3551498a0b34b765b513c9135eb6b8d73b02e784","unresolved":false,"context_lines":[{"line_number":313,"context_line":"                        _ignore_close_issue_525 \u003d True"},{"line_number":314,"context_line":"        except SessionCloseError as e:"},{"line_number":315,"context_line":"            if not _ignore_close_issue_525:"},{"line_number":316,"context_line":"                raise e"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    @staticmethod"},{"line_number":319,"context_line":"    def _get_lock_session_id(err_info):"}],"source_content_type":"text/x-python","patch_set":6,"id":"82678630_59d66be2","line":316,"updated":"2026-07-03 14:55:53.000000000","message":"\"raise\"","commit_id":"61a9a85aca760fc052b712537db0762cb528a148"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3551498a0b34b765b513c9135eb6b8d73b02e784","unresolved":false,"context_lines":[{"line_number":340,"context_line":"            the physical network, or None if convergence is not active."},{"line_number":341,"context_line":"        \"\"\""},{"line_number":342,"context_line":"        if not self._do_vlan_management():"},{"line_number":343,"context_line":"            LOG.info(\"Skipping add network for %s\", segmentation_id)"},{"line_number":344,"context_line":"            return"},{"line_number":345,"context_line":"        network_id \u003d uuid.UUID(network_id).hex"},{"line_number":346,"context_line":"        network_name \u003d self._get_network_name(network_id, segmentation_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7fe0e902_08246f98","line":343,"updated":"2026-07-03 14:55:53.000000000","message":"Re logging: this is most likely either DEBUG or WARNING depending on how significant this condition is","commit_id":"61a9a85aca760fc052b712537db0762cb528a148"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3551498a0b34b765b513c9135eb6b8d73b02e784","unresolved":false,"context_lines":[{"line_number":376,"context_line":"            the physical network, or None if convergence is not active."},{"line_number":377,"context_line":"        \"\"\""},{"line_number":378,"context_line":"        if not self._do_vlan_management():"},{"line_number":379,"context_line":"            LOG.info(\"Skipping delete network for %s\", segmentation_id)"},{"line_number":380,"context_line":"            return"},{"line_number":381,"context_line":"        config \u003d []"},{"line_number":382,"context_line":"        trunk_ports \u003d self.get_trunk_ports()"}],"source_content_type":"text/x-python","patch_set":6,"id":"bb731d3e_cc6da79e","line":379,"updated":"2026-07-03 14:55:53.000000000","message":"same","commit_id":"61a9a85aca760fc052b712537db0762cb528a148"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3551498a0b34b765b513c9135eb6b8d73b02e784","unresolved":false,"context_lines":[{"line_number":483,"context_line":"            self.send_config_to_device(config)"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"    #"},{"line_number":486,"context_line":"    # L2VNI — unsupported for now"},{"line_number":487,"context_line":"    #"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"    def plug_switch_to_network(self, vni, segmentation_id, physnet\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"da7ac8a7_e4dfbd75","line":486,"updated":"2026-07-03 14:55:53.000000000","message":"#sadpanda","commit_id":"61a9a85aca760fc052b712537db0762cb528a148"}]}
