)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"88c02ae667c1a2ff7b06bd5f78a3c3c1ab8ea8bc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"837dcd98_b080d6a9","updated":"2025-01-09 13:30:39.000000000","message":"Great effort, thank you! I\u0027ve left a bunch of comments that should be addressed here or shortly afterwards. The -1 is only because of the missing bcrypt dependency.","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"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":"996954335edf51ecf35912fe815f51b70784d63c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"817b1823_13facea1","updated":"2025-01-13 17:21:48.000000000","message":"recheck strange failure? Neutron security group didn\u0027t exist during cleanup","commit_id":"74d239d4ebfde3e66d838c0cb74992bae0f7c00c"}],"doc/source/admin/metrics.rst":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"88c02ae667c1a2ff7b06bd5f78a3c3c1ab8ea8bc","unresolved":true,"context_lines":[{"line_number":87,"context_line":"   Ironic service model. A separate webserver process presently does not have"},{"line_number":88,"context_line":"   the capability of triggering the call to retrieve and transmit the data."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":".. NOTE::"},{"line_number":91,"context_line":"   This functionality requires either ironic-lib version 5.4.0 to be installed"},{"line_number":92,"context_line":"   or the use of an ironic release greater than 26.2 which does not use"},{"line_number":93,"context_line":"   ironic-lib."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Types of Metrics Emitted"},{"line_number":96,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"b1af4777_fe85a1fe","line":93,"range":{"start_line":90,"start_character":0,"end_line":93,"end_character":14},"updated":"2025-01-09 13:30:39.000000000","message":"This note is so old that I wonder if we can just remove it.","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"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":"72a902ac79abe612a4297b122c8a7546cb089083","unresolved":false,"context_lines":[{"line_number":87,"context_line":"   Ironic service model. A separate webserver process presently does not have"},{"line_number":88,"context_line":"   the capability of triggering the call to retrieve and transmit the data."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":".. NOTE::"},{"line_number":91,"context_line":"   This functionality requires either ironic-lib version 5.4.0 to be installed"},{"line_number":92,"context_line":"   or the use of an ironic release greater than 26.2 which does not use"},{"line_number":93,"context_line":"   ironic-lib."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Types of Metrics Emitted"},{"line_number":96,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"11b94e18_42203997","line":93,"range":{"start_line":90,"start_character":0,"end_line":93,"end_character":14},"in_reply_to":"b1af4777_fe85a1fe","updated":"2025-01-13 17:18:42.000000000","message":"Done","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"}],"ironic/common/exception.py":[{"author":{"_account_id":35929,"name":"Mahnoor Asghar","display_name":"Mahnoor Asghar","email":"masghar@redhat.com","username":"mahnoorasghar"},"change_message_id":"e78746d70ab8e79e6519baf3f68539b7df1a8980","unresolved":true,"context_lines":[{"line_number":52,"context_line":"        for serializer, msg in serializers:"},{"line_number":53,"context_line":"            try:"},{"line_number":54,"context_line":"                serializable_kwargs[k] \u003d serializer(v)"},{"line_number":55,"context_line":"                exceptions.pop(k, None)"},{"line_number":56,"context_line":"                break"},{"line_number":57,"context_line":"            except Exception as e:"},{"line_number":58,"context_line":"                exceptions[k].append("}],"source_content_type":"text/x-python","patch_set":4,"id":"cf8d1356_735a14cb","line":55,"updated":"2025-01-08 12:14:28.000000000","message":"I think this line is not needed?","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"author":{"_account_id":35929,"name":"Mahnoor Asghar","display_name":"Mahnoor Asghar","email":"masghar@redhat.com","username":"mahnoorasghar"},"change_message_id":"860ea33ada02b7d38f1e7147e2d0f19d623fe4b1","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        for serializer, msg in serializers:"},{"line_number":53,"context_line":"            try:"},{"line_number":54,"context_line":"                serializable_kwargs[k] \u003d serializer(v)"},{"line_number":55,"context_line":"                exceptions.pop(k, None)"},{"line_number":56,"context_line":"                break"},{"line_number":57,"context_line":"            except Exception as e:"},{"line_number":58,"context_line":"                exceptions[k].append("}],"source_content_type":"text/x-python","patch_set":4,"id":"fe16b5b9_03793b1c","line":55,"in_reply_to":"b7d43dbe_3df7c0f5","updated":"2025-01-09 18:20:12.000000000","message":"Acknowledged, that does make sense, thank you!","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"88c02ae667c1a2ff7b06bd5f78a3c3c1ab8ea8bc","unresolved":true,"context_lines":[{"line_number":52,"context_line":"        for serializer, msg in serializers:"},{"line_number":53,"context_line":"            try:"},{"line_number":54,"context_line":"                serializable_kwargs[k] \u003d serializer(v)"},{"line_number":55,"context_line":"                exceptions.pop(k, None)"},{"line_number":56,"context_line":"                break"},{"line_number":57,"context_line":"            except Exception as e:"},{"line_number":58,"context_line":"                exceptions[k].append("}],"source_content_type":"text/x-python","patch_set":4,"id":"b7d43dbe_3df7c0f5","line":55,"in_reply_to":"cf8d1356_735a14cb","updated":"2025-01-09 13:30:39.000000000","message":"This is a somewhat overengineered code to try json.dumps and fall back to str. The pop call removes exceptions from previous attempts (in fact, only one attempt).\n\nThe whole functions could be like 5 lines. But I think we simplify it after the migration.","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"}],"ironic/common/json_rpc/client.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"88c02ae667c1a2ff7b06bd5f78a3c3c1ab8ea8bc","unresolved":true,"context_lines":[{"line_number":44,"context_line":"            auth_type \u003d \u0027none\u0027 if auth_strategy \u003d\u003d \u0027noauth\u0027 else auth_strategy"},{"line_number":45,"context_line":"            CONF.set_default(\u0027auth_type\u0027, auth_type, group\u003d\u0027json_rpc\u0027)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"            # Deprecated, remove in W"},{"line_number":48,"context_line":"            if auth_strategy \u003d\u003d \u0027http_basic\u0027:"},{"line_number":49,"context_line":"                if CONF.json_rpc.http_basic_username:"},{"line_number":50,"context_line":"                    kwargs[\u0027username\u0027] \u003d CONF.json_rpc.http_basic_username"}],"source_content_type":"text/x-python","patch_set":4,"id":"81e67067_a574cf91","line":47,"updated":"2025-01-09 13:30:39.000000000","message":"Mental note: actually do remove","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"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":"72a902ac79abe612a4297b122c8a7546cb089083","unresolved":true,"context_lines":[{"line_number":44,"context_line":"            auth_type \u003d \u0027none\u0027 if auth_strategy \u003d\u003d \u0027noauth\u0027 else auth_strategy"},{"line_number":45,"context_line":"            CONF.set_default(\u0027auth_type\u0027, auth_type, group\u003d\u0027json_rpc\u0027)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"            # Deprecated, remove in W"},{"line_number":48,"context_line":"            if auth_strategy \u003d\u003d \u0027http_basic\u0027:"},{"line_number":49,"context_line":"                if CONF.json_rpc.http_basic_username:"},{"line_number":50,"context_line":"                    kwargs[\u0027username\u0027] \u003d CONF.json_rpc.http_basic_username"}],"source_content_type":"text/x-python","patch_set":4,"id":"76d8a267_12fc12b6","line":47,"in_reply_to":"5c13cecd_85d61f4a","updated":"2025-01-13 17:18:42.000000000","message":"This will be done in another change; I don\u0027t want to mix too many things together.","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"author":{"_account_id":35929,"name":"Mahnoor Asghar","display_name":"Mahnoor Asghar","email":"masghar@redhat.com","username":"mahnoorasghar"},"change_message_id":"b620e52d6494d582720649e61a6bcd5cfca7b1ff","unresolved":true,"context_lines":[{"line_number":44,"context_line":"            auth_type \u003d \u0027none\u0027 if auth_strategy \u003d\u003d \u0027noauth\u0027 else auth_strategy"},{"line_number":45,"context_line":"            CONF.set_default(\u0027auth_type\u0027, auth_type, group\u003d\u0027json_rpc\u0027)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"            # Deprecated, remove in W"},{"line_number":48,"context_line":"            if auth_strategy \u003d\u003d \u0027http_basic\u0027:"},{"line_number":49,"context_line":"                if CONF.json_rpc.http_basic_username:"},{"line_number":50,"context_line":"                    kwargs[\u0027username\u0027] \u003d CONF.json_rpc.http_basic_username"}],"source_content_type":"text/x-python","patch_set":4,"id":"5c13cecd_85d61f4a","line":47,"in_reply_to":"81e67067_a574cf91","updated":"2025-01-10 09:45:13.000000000","message":"++ if Wallaby is gone from everywhere now","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"}],"ironic/common/json_rpc/server.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"88c02ae667c1a2ff7b06bd5f78a3c3c1ab8ea8bc","unresolved":true,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"try:"},{"line_number":26,"context_line":"    from keystonemiddleware import auth_token"},{"line_number":27,"context_line":"except ImportError:"},{"line_number":28,"context_line":"    auth_token \u003d None"},{"line_number":29,"context_line":"from oslo_config import cfg"},{"line_number":30,"context_line":"try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"e3e1f397_e6b73f8e","line":27,"updated":"2025-01-09 13:30:39.000000000","message":"This logic can be dropped now (it was to avoid a hard dependency)","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"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":"72a902ac79abe612a4297b122c8a7546cb089083","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"try:"},{"line_number":26,"context_line":"    from keystonemiddleware import auth_token"},{"line_number":27,"context_line":"except ImportError:"},{"line_number":28,"context_line":"    auth_token \u003d None"},{"line_number":29,"context_line":"from oslo_config import cfg"},{"line_number":30,"context_line":"try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"4c132001_b23f09b2","line":27,"in_reply_to":"e3e1f397_e6b73f8e","updated":"2025-01-13 17:18:42.000000000","message":"Done","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"88c02ae667c1a2ff7b06bd5f78a3c3c1ab8ea8bc","unresolved":true,"context_lines":[{"line_number":29,"context_line":"from oslo_config import cfg"},{"line_number":30,"context_line":"try:"},{"line_number":31,"context_line":"    import oslo_messaging"},{"line_number":32,"context_line":"except ImportError:"},{"line_number":33,"context_line":"    oslo_messaging \u003d None"},{"line_number":34,"context_line":"from oslo_utils import strutils"},{"line_number":35,"context_line":"import webob"}],"source_content_type":"text/x-python","patch_set":4,"id":"181ded42_204fd815","line":32,"updated":"2025-01-09 13:30:39.000000000","message":"Same (although I hope to make oslo.messaging optional in Ironic eventually, it\u0027s not optionan now)","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"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":"72a902ac79abe612a4297b122c8a7546cb089083","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from oslo_config import cfg"},{"line_number":30,"context_line":"try:"},{"line_number":31,"context_line":"    import oslo_messaging"},{"line_number":32,"context_line":"except ImportError:"},{"line_number":33,"context_line":"    oslo_messaging \u003d None"},{"line_number":34,"context_line":"from oslo_utils import strutils"},{"line_number":35,"context_line":"import webob"}],"source_content_type":"text/x-python","patch_set":4,"id":"cdd393c8_ab8ab5bf","line":32,"in_reply_to":"181ded42_204fd815","updated":"2025-01-13 17:18:42.000000000","message":"Done","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"}],"ironic/common/mdns.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"88c02ae667c1a2ff7b06bd5f78a3c3c1ab8ea8bc","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"bcf7e4d8_5024cdde","updated":"2025-01-09 13:30:39.000000000","message":"I keep wondering if we should kill this functionality with fire.","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"95db930f9a4fceba7efc287126629ecb9ae36dba","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3e935ba0_f5f2817b","in_reply_to":"bcf7e4d8_5024cdde","updated":"2025-01-14 16:01:27.000000000","message":"likely makes sense to build a poll of features, with mdns on the list and make a data driven determination from there.","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"88c02ae667c1a2ff7b06bd5f78a3c3c1ab8ea8bc","unresolved":true,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        self._registered.append(info)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def get_endpoint(self, service_type, skip_loopback\u003dTrue,  # noqa: C901"},{"line_number":119,"context_line":"                     skip_link_local\u003dFalse):"},{"line_number":120,"context_line":"        \"\"\"Get an endpoint and its properties from mDNS."},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"542af335_ce01483f","line":118,"updated":"2025-01-09 13:30:39.000000000","message":"I don\u0027t think we need the get_endpoint part in Ironic, by the way. This is the part to migrate to IPA only.","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"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":"72a902ac79abe612a4297b122c8a7546cb089083","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        self._registered.append(info)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def get_endpoint(self, service_type, skip_loopback\u003dTrue,  # noqa: C901"},{"line_number":119,"context_line":"                     skip_link_local\u003dFalse):"},{"line_number":120,"context_line":"        \"\"\"Get an endpoint and its properties from mDNS."},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"2d8b870b_90dd6637","line":118,"in_reply_to":"542af335_ce01483f","updated":"2025-01-13 17:18:42.000000000","message":"Done","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"}],"ironic/common/utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"88c02ae667c1a2ff7b06bd5f78a3c3c1ab8ea8bc","unresolved":true,"context_lines":[{"line_number":924,"context_line":"    return root_device"},{"line_number":925,"context_line":""},{"line_number":926,"context_line":""},{"line_number":927,"context_line":"def parse_root_device_hints(root_device):"},{"line_number":928,"context_line":"    \"\"\"Parse the root_device property of a node."},{"line_number":929,"context_line":""},{"line_number":930,"context_line":"    Parses and validates the root_device property of a node. These are"}],"source_content_type":"text/x-python","patch_set":4,"id":"c6963b89_287f6015","line":927,"updated":"2025-01-09 13:30:39.000000000","message":"This file is exceeding 1000 lines already, could you maybe group the entire root device hints business under ironic.common.root_device_hints or something?\n\nOr we can do it in a follow-up.","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"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":"72a902ac79abe612a4297b122c8a7546cb089083","unresolved":true,"context_lines":[{"line_number":924,"context_line":"    return root_device"},{"line_number":925,"context_line":""},{"line_number":926,"context_line":""},{"line_number":927,"context_line":"def parse_root_device_hints(root_device):"},{"line_number":928,"context_line":"    \"\"\"Parse the root_device property of a node."},{"line_number":929,"context_line":""},{"line_number":930,"context_line":"    Parses and validates the root_device property of a node. These are"}],"source_content_type":"text/x-python","patch_set":4,"id":"790eeacc_6dab12c9","line":927,"in_reply_to":"c6963b89_287f6015","updated":"2025-01-13 17:18:42.000000000","message":"I suggest we save it for a follow-up.","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"88c02ae667c1a2ff7b06bd5f78a3c3c1ab8ea8bc","unresolved":true,"context_lines":[{"line_number":991,"context_line":"    return _append_operator_to_hints(root_device)"},{"line_number":992,"context_line":""},{"line_number":993,"context_line":""},{"line_number":994,"context_line":"def find_devices_by_hints(devices, root_device_hints):"},{"line_number":995,"context_line":"    \"\"\"Find all devices that match the root device hints."},{"line_number":996,"context_line":""},{"line_number":997,"context_line":"    Try to find devices that match the root device hints. In order"}],"source_content_type":"text/x-python","patch_set":4,"id":"d3afe5ae_4995850f","line":994,"updated":"2025-01-09 13:30:39.000000000","message":"I was going to object to migrating this function but realized we use it in inspection.. okay, I guess.","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"88c02ae667c1a2ff7b06bd5f78a3c3c1ab8ea8bc","unresolved":true,"context_lines":[{"line_number":1150,"context_line":""},{"line_number":1151,"context_line":""},{"line_number":1152,"context_line":"@contextlib.contextmanager"},{"line_number":1153,"context_line":"def mounted(source, dest\u003dNone, opts\u003dNone, fs_type\u003dNone,"},{"line_number":1154,"context_line":"            mount_attempts\u003d1, umount_attempts\u003d3):"},{"line_number":1155,"context_line":"    \"\"\"A context manager for a temporary mount."},{"line_number":1156,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"87c9ff58_a0ae2da9","line":1153,"updated":"2025-01-09 13:30:39.000000000","message":"This call cannot be used in Ironic without root and should not be migrated.","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"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":"72a902ac79abe612a4297b122c8a7546cb089083","unresolved":false,"context_lines":[{"line_number":1150,"context_line":""},{"line_number":1151,"context_line":""},{"line_number":1152,"context_line":"@contextlib.contextmanager"},{"line_number":1153,"context_line":"def mounted(source, dest\u003dNone, opts\u003dNone, fs_type\u003dNone,"},{"line_number":1154,"context_line":"            mount_attempts\u003d1, umount_attempts\u003d3):"},{"line_number":1155,"context_line":"    \"\"\"A context manager for a temporary mount."},{"line_number":1156,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7185263f_82068bdb","line":1153,"in_reply_to":"87c9ff58_a0ae2da9","updated":"2025-01-13 17:18:42.000000000","message":"Done","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"88c02ae667c1a2ff7b06bd5f78a3c3c1ab8ea8bc","unresolved":true,"context_lines":[{"line_number":1204,"context_line":"                    {\u0027dest\u0027: dest, \u0027err\u0027: exc})"},{"line_number":1205,"context_line":""},{"line_number":1206,"context_line":""},{"line_number":1207,"context_line":"def parse_device_tags(output):"},{"line_number":1208,"context_line":"    \"\"\"Parse tags from the lsblk/blkid output."},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"    Parses format KEY\u003d\"VALUE\" KEY2\u003d\"VALUE2\"."}],"source_content_type":"text/x-python","patch_set":4,"id":"d98ffca7_b8a73646","line":1207,"updated":"2025-01-09 13:30:39.000000000","message":"This call is specific to lsblk handling which we don\u0027t do in ironic","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"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":"72a902ac79abe612a4297b122c8a7546cb089083","unresolved":false,"context_lines":[{"line_number":1204,"context_line":"                    {\u0027dest\u0027: dest, \u0027err\u0027: exc})"},{"line_number":1205,"context_line":""},{"line_number":1206,"context_line":""},{"line_number":1207,"context_line":"def parse_device_tags(output):"},{"line_number":1208,"context_line":"    \"\"\"Parse tags from the lsblk/blkid output."},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"    Parses format KEY\u003d\"VALUE\" KEY2\u003d\"VALUE2\"."}],"source_content_type":"text/x-python","patch_set":4,"id":"18a496bd_9c8b43be","line":1207,"in_reply_to":"d98ffca7_b8a73646","updated":"2025-01-13 17:18:42.000000000","message":"Done","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"}],"ironic/conf/json_rpc.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"88c02ae667c1a2ff7b06bd5f78a3c3c1ab8ea8bc","unresolved":true,"context_lines":[{"line_number":18,"context_line":"from ironic.common import keystone"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class Octal(cfg_types.Integer):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def __call__(self, value):"},{"line_number":24,"context_line":"        if isinstance(value, int):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fae9dcd9_4a836dfb","line":21,"updated":"2025-01-09 13:30:39.000000000","message":"This class already exists in ironic.conf.api","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"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":"72a902ac79abe612a4297b122c8a7546cb089083","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from ironic.common import keystone"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class Octal(cfg_types.Integer):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def __call__(self, value):"},{"line_number":24,"context_line":"        if isinstance(value, int):"}],"source_content_type":"text/x-python","patch_set":4,"id":"152675d8_834db4d0","line":21,"in_reply_to":"fae9dcd9_4a836dfb","updated":"2025-01-13 17:18:42.000000000","message":"Done","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"88c02ae667c1a2ff7b06bd5f78a3c3c1ab8ea8bc","unresolved":true,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def auth_strategy():"},{"line_number":88,"context_line":"    # NOTE(dtantsur): this expects [DEFAULT]auth_strategy to be provided by the"},{"line_number":89,"context_line":"    # service configuration."},{"line_number":90,"context_line":"    return CONF.json_rpc.auth_strategy or CONF.auth_strategy"}],"source_content_type":"text/x-python","patch_set":4,"id":"4075255c_451e412c","line":89,"updated":"2025-01-09 13:30:39.000000000","message":"nit: this comment is outdated with the migration","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"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":"72a902ac79abe612a4297b122c8a7546cb089083","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def auth_strategy():"},{"line_number":88,"context_line":"    # NOTE(dtantsur): this expects [DEFAULT]auth_strategy to be provided by the"},{"line_number":89,"context_line":"    # service configuration."},{"line_number":90,"context_line":"    return CONF.json_rpc.auth_strategy or CONF.auth_strategy"}],"source_content_type":"text/x-python","patch_set":4,"id":"c6e8b6c4_fbf0586b","line":89,"in_reply_to":"4075255c_451e412c","updated":"2025-01-13 17:18:42.000000000","message":"Done","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"}],"ironic/conf/opts.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"88c02ae667c1a2ff7b06bd5f78a3c3c1ab8ea8bc","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    (\u0027service_catalog\u0027, ironic.conf.service_catalog.list_opts()),"},{"line_number":51,"context_line":"    (\u0027snmp\u0027, ironic.conf.snmp.opts),"},{"line_number":52,"context_line":"    (\u0027swift\u0027, ironic.conf.swift.list_opts()),"},{"line_number":53,"context_line":"    (\u0027errors\u0027, ironic.conf.exception.opts)"},{"line_number":54,"context_line":"]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ab4983ef_17103ad4","line":53,"updated":"2025-01-09 13:30:39.000000000","message":"nit: keep the list sorted (well, best effort, given that we already have anaconda in the middle somehow)","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"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":"72a902ac79abe612a4297b122c8a7546cb089083","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    (\u0027service_catalog\u0027, ironic.conf.service_catalog.list_opts()),"},{"line_number":51,"context_line":"    (\u0027snmp\u0027, ironic.conf.snmp.opts),"},{"line_number":52,"context_line":"    (\u0027swift\u0027, ironic.conf.swift.list_opts()),"},{"line_number":53,"context_line":"    (\u0027errors\u0027, ironic.conf.exception.opts)"},{"line_number":54,"context_line":"]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"56d7dae8_069ea301","line":53,"in_reply_to":"ab4983ef_17103ad4","updated":"2025-01-13 17:18:42.000000000","message":"I\u0027ll do a full sort of it now, and comment to keep it that way.","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"}],"ironic/drivers/modules/redfish/raid.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"88c02ae667c1a2ff7b06bd5f78a3c3c1ab8ea8bc","unresolved":true,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from ironic.common import exception"},{"line_number":25,"context_line":"from ironic.common.i18n import _"},{"line_number":26,"context_line":"from ironic.common import raid as raid_common"},{"line_number":27,"context_line":"from ironic.common import raid"},{"line_number":28,"context_line":"from ironic.common import states"},{"line_number":29,"context_line":"from ironic.conductor import periodics"},{"line_number":30,"context_line":"from ironic.conductor import utils as manager_utils"}],"source_content_type":"text/x-python","patch_set":4,"id":"6eb20a44_daf771e8","side":"PARENT","line":27,"range":{"start_line":26,"start_character":0,"end_line":27,"end_character":30},"updated":"2025-01-09 13:30:39.000000000","message":"LOL","commit_id":"9479347cf49a9cf4419f3ad43385140ec44f8063"},{"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":"72a902ac79abe612a4297b122c8a7546cb089083","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from ironic.common import exception"},{"line_number":25,"context_line":"from ironic.common.i18n import _"},{"line_number":26,"context_line":"from ironic.common import raid as raid_common"},{"line_number":27,"context_line":"from ironic.common import raid"},{"line_number":28,"context_line":"from ironic.common import states"},{"line_number":29,"context_line":"from ironic.conductor import periodics"},{"line_number":30,"context_line":"from ironic.conductor import utils as manager_utils"}],"source_content_type":"text/x-python","patch_set":4,"id":"f2438896_ad762394","side":"PARENT","line":27,"range":{"start_line":26,"start_character":0,"end_line":27,"end_character":30},"in_reply_to":"6eb20a44_daf771e8","updated":"2025-01-13 17:18:42.000000000","message":"Done","commit_id":"9479347cf49a9cf4419f3ad43385140ec44f8063"}],"releasenotes/notes/ironic-lib-deprecation-422f7ef145acb74f.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"88c02ae667c1a2ff7b06bd5f78a3c3c1ab8ea8bc","unresolved":true,"context_lines":[{"line_number":1,"context_line":"upgrade:"},{"line_number":2,"context_line":"  - The configuration option ``fatal_exception_format_errors`` has been removed"},{"line_number":3,"context_line":"    from the ``[DEFAULT]]`` group."},{"line_number":4,"context_line":"  - The ironic-lib library has been retired and is no longer required for"},{"line_number":5,"context_line":"    operation of Ironic."},{"line_number":6,"context_line":"deprecations:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"5941b9b6_356b8511","line":3,"updated":"2025-01-09 13:30:39.000000000","message":"Duplicate ]","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"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":"72a902ac79abe612a4297b122c8a7546cb089083","unresolved":false,"context_lines":[{"line_number":1,"context_line":"upgrade:"},{"line_number":2,"context_line":"  - The configuration option ``fatal_exception_format_errors`` has been removed"},{"line_number":3,"context_line":"    from the ``[DEFAULT]]`` group."},{"line_number":4,"context_line":"  - The ironic-lib library has been retired and is no longer required for"},{"line_number":5,"context_line":"    operation of Ironic."},{"line_number":6,"context_line":"deprecations:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"1473b493_776d9899","line":3,"in_reply_to":"5941b9b6_356b8511","updated":"2025-01-13 17:18:42.000000000","message":"Done","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"}],"requirements.txt":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"88c02ae667c1a2ff7b06bd5f78a3c3c1ab8ea8bc","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c1c7cfd8_4aa946ca","line":49,"updated":"2025-01-09 13:30:39.000000000","message":"I think you need to add bcrypt for the basic auth","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"},{"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":"72a902ac79abe612a4297b122c8a7546cb089083","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"cc116c63_0a701ed8","line":49,"in_reply_to":"c1c7cfd8_4aa946ca","updated":"2025-01-13 17:18:42.000000000","message":"Done","commit_id":"205d671b37f684aae858ad363f2e3a6fa5dc7877"}]}
