)]}'
{"/PATCHSET_LEVEL":[{"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":"7114c81111cf3b15d58fa015fb601c96e9f96283","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3d5afc73_e8894e79","updated":"2024-02-07 20:45:08.000000000","message":"I\u0027m not sure if this is ready yet, but it has the hashtag. Just making sure we remember to drop the [WIP] from the commit before landing this 😊","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"7c28c36b1c2534e041181ebe8aeb9a7d9c413aad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ccd679ba_e42e7d06","in_reply_to":"3d5afc73_e8894e79","updated":"2024-02-07 20:50:31.000000000","message":"Yeah, need to still update things, I added the hashtag for visibility so I could get feedback about the approach \u003d)","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"}],"ironic_python_agent/hardware.py":[{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"3a5df95b5d6cd5a33d9fe0d70143a58cb12b2208","unresolved":true,"context_lines":[{"line_number":225,"context_line":"        # identify/enumerate paths by combining what it can detect and what"},{"line_number":226,"context_line":"        # it already knows. This may be useful, and in theory this should be"},{"line_number":227,"context_line":"        # logged in the IPA log should it be needed."},{"line_number":228,"context_line":"        il_utils.execute(\u0027multipath\u0027, \u0027-ll\u0027)"},{"line_number":229,"context_line":"    except FileNotFoundError as e:"},{"line_number":230,"context_line":"        LOG.warning(\u0027Attempted to determine if multipath tools were present. \u0027"},{"line_number":231,"context_line":"                    \u0027Not detected. Error recorded: %s\u0027, e)"}],"source_content_type":"text/x-python","patch_set":2,"id":"16f3971f_2c44c1d4","line":228,"updated":"2023-11-30 15:28:30.000000000","message":"Maybe is a crazy idea, but this would multipath -ll gives output all disks, wondering if we could just go trough everything here and not do any il_utils.execute(\u0027multipath\u0027, \u0027-c\u0027, check_device) and out, _ \u003d il_utils.execute(\u0027multipath\u0027, \u0027-ll\u0027, check_device) in _get_multipath_parent_device... \n```\nmpatha (\u003cID\u003e) dm-1 SEAGATE,\u003cSOMETHING\u003e\nsize\u003d15T features\u003d\u00270\u0027 hwhandler\u003d\u00270\u0027 wp\u003drw\n|-+- policy\u003d\u0027service-time 0\u0027 prio\u003d1 status\u003dactive\n| `- 1:0:1:0    sd     8:16    active ready running\n|-+- policy\u003d\u0027service-time 0\u0027 prio\u003d1 status\u003denabled\n| `- 1:0:90:0   sdch    69:80   active ready running\n|-+- policy\u003d\u0027service-time 0\u0027 prio\u003d1 status\u003denabled\n| `- 19:0:1:0   sdfn    130:144 active ready running\n`-+- policy\u003d\u0027service-time 0\u0027 prio\u003d1 status\u003denabled\n  `- 19:0:90:0  sdit    135:208 active ready running\nmpathaa (\u003cID\u003e) dm-27 SEAGATE,\u003cSOMETHING\u003e\nsize\u003d15T features\u003d\u00270\u0027 hwhandler\u003d\u00270\u0027 wp\u003drw\n|-+- policy\u003d\u0027service-time 0\u0027 prio\u003d1 status\u003dactive\n| `- 1:0:18:0   sdr     65:16   active ready running\n|-+- policy\u003d\u0027service-time 0\u0027 prio\u003d1 status\u003denabled\n| `- 1:0:107:0  sdcx    70:80   active ready running\n|-+- policy\u003d\u0027service-time 0\u0027 prio\u003d1 status\u003denabled\n| `- 19:0:18:0  sdgd    131:144 active ready running\n`-+- policy\u003d\u0027service-time 0\u0027 prio\u003d1 status\u003denabled\n  `- 19:0:107:0 sdjj    8:464   active ready running\n```","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ff5e7c33ae3980e90d2486855e0dc4416c8da421","unresolved":true,"context_lines":[{"line_number":225,"context_line":"        # identify/enumerate paths by combining what it can detect and what"},{"line_number":226,"context_line":"        # it already knows. This may be useful, and in theory this should be"},{"line_number":227,"context_line":"        # logged in the IPA log should it be needed."},{"line_number":228,"context_line":"        il_utils.execute(\u0027multipath\u0027, \u0027-ll\u0027)"},{"line_number":229,"context_line":"    except FileNotFoundError as e:"},{"line_number":230,"context_line":"        LOG.warning(\u0027Attempted to determine if multipath tools were present. \u0027"},{"line_number":231,"context_line":"                    \u0027Not detected. Error recorded: %s\u0027, e)"}],"source_content_type":"text/x-python","patch_set":2,"id":"d7a8f9cc_f71d930f","line":228,"in_reply_to":"16f3971f_2c44c1d4","updated":"2023-12-13 15:41:31.000000000","message":"In theory, yes. When I wrote the code originally, I wanted it to be very defensive for cases where someone had an unstable fabric, or were changing their fabric, or *changed* their fabric with a long running agent.\n\nThe latter case, likely is a reason to maybe generalize the re-run and just keep an age, I dunno.","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"23315611a84d61600986b05c48e8ecad01161f0a","unresolved":true,"context_lines":[{"line_number":225,"context_line":"        # identify/enumerate paths by combining what it can detect and what"},{"line_number":226,"context_line":"        # it already knows. This may be useful, and in theory this should be"},{"line_number":227,"context_line":"        # logged in the IPA log should it be needed."},{"line_number":228,"context_line":"        il_utils.execute(\u0027multipath\u0027, \u0027-ll\u0027)"},{"line_number":229,"context_line":"    except FileNotFoundError as e:"},{"line_number":230,"context_line":"        LOG.warning(\u0027Attempted to determine if multipath tools were present. \u0027"},{"line_number":231,"context_line":"                    \u0027Not detected. Error recorded: %s\u0027, e)"}],"source_content_type":"text/x-python","patch_set":2,"id":"54c3fd9d_e737caa3","line":228,"in_reply_to":"49e03c31_fa61119c","updated":"2024-01-26 23:16:53.000000000","message":"afaik, no. At least once, we\u0027ve observed syntax changes bassed upon the base devices as well. 😭","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e67c882c4818bae3b247c4adb2e68f8314205f28","unresolved":true,"context_lines":[{"line_number":225,"context_line":"        # identify/enumerate paths by combining what it can detect and what"},{"line_number":226,"context_line":"        # it already knows. This may be useful, and in theory this should be"},{"line_number":227,"context_line":"        # logged in the IPA log should it be needed."},{"line_number":228,"context_line":"        il_utils.execute(\u0027multipath\u0027, \u0027-ll\u0027)"},{"line_number":229,"context_line":"    except FileNotFoundError as e:"},{"line_number":230,"context_line":"        LOG.warning(\u0027Attempted to determine if multipath tools were present. \u0027"},{"line_number":231,"context_line":"                    \u0027Not detected. Error recorded: %s\u0027, e)"}],"source_content_type":"text/x-python","patch_set":2,"id":"49e03c31_fa61119c","line":228,"in_reply_to":"c759c561_523583c7","updated":"2023-12-21 11:19:03.000000000","message":"I honestly like idea of a cache with TTL (several minutes at least). My only concern would be parsing this output. Does it have a machine-readable version?","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"11884ad1d8475b2c499481eb3196a103e773d43a","unresolved":true,"context_lines":[{"line_number":225,"context_line":"        # identify/enumerate paths by combining what it can detect and what"},{"line_number":226,"context_line":"        # it already knows. This may be useful, and in theory this should be"},{"line_number":227,"context_line":"        # logged in the IPA log should it be needed."},{"line_number":228,"context_line":"        il_utils.execute(\u0027multipath\u0027, \u0027-ll\u0027)"},{"line_number":229,"context_line":"    except FileNotFoundError as e:"},{"line_number":230,"context_line":"        LOG.warning(\u0027Attempted to determine if multipath tools were present. \u0027"},{"line_number":231,"context_line":"                    \u0027Not detected. Error recorded: %s\u0027, e)"}],"source_content_type":"text/x-python","patch_set":2,"id":"c759c561_523583c7","line":228,"in_reply_to":"d7a8f9cc_f71d930f","updated":"2023-12-19 12:07:54.000000000","message":"Thanks for the explanation Julia, I think it\u0027s ok to keep this part (we only execute once based on what I saw from logs, so we could only cache things in _get_multipath_parent_device \u003d)\n\nRegarding keeping an age I have no idea atm on how we could implement this.","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77d9de50b05854d09f09ffbb00e5f20e9636e488","unresolved":true,"context_lines":[{"line_number":244,"context_line":"        return"},{"line_number":245,"context_line":"    check_device \u003d os.path.join(\u0027/dev\u0027, str(device))"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    global MAP_MULTIPATH_PARENT_DEVICE"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    if MAP_MULTIPATH_PARENT_DEVICE.get(device):"},{"line_number":250,"context_line":"        parent_dev \u003d MAP_MULTIPATH_PARENT_DEVICE.get(device)"}],"source_content_type":"text/x-python","patch_set":2,"id":"48f81156_b3789068","line":247,"updated":"2024-02-05 11:16:00.000000000","message":"nit: not needed","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e67c882c4818bae3b247c4adb2e68f8314205f28","unresolved":true,"context_lines":[{"line_number":247,"context_line":"    global MAP_MULTIPATH_PARENT_DEVICE"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    if MAP_MULTIPATH_PARENT_DEVICE.get(device):"},{"line_number":250,"context_line":"        parent_dev \u003d MAP_MULTIPATH_PARENT_DEVICE.get(device)"},{"line_number":251,"context_line":"        LOG.debug(\u0027The device %(dev)s has a \u0027"},{"line_number":252,"context_line":"                  \u0027multipath parent device %(parent_dev)s\u0027,"},{"line_number":253,"context_line":"                  {\u0027dev\u0027: device, \u0027parent_dev\u0027: parent_dev})"}],"source_content_type":"text/x-python","patch_set":2,"id":"be4f7991_a35eb980","line":250,"updated":"2023-12-21 11:19:03.000000000","message":"nit: use try.. except KeyError.. instead of 2 gets in a row.","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"075d4ca375dda1f4bb5dd6fe66cdfbaea500c1ea","unresolved":false,"context_lines":[{"line_number":247,"context_line":"    global MAP_MULTIPATH_PARENT_DEVICE"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    if MAP_MULTIPATH_PARENT_DEVICE.get(device):"},{"line_number":250,"context_line":"        parent_dev \u003d MAP_MULTIPATH_PARENT_DEVICE.get(device)"},{"line_number":251,"context_line":"        LOG.debug(\u0027The device %(dev)s has a \u0027"},{"line_number":252,"context_line":"                  \u0027multipath parent device %(parent_dev)s\u0027,"},{"line_number":253,"context_line":"                  {\u0027dev\u0027: device, \u0027parent_dev\u0027: parent_dev})"}],"source_content_type":"text/x-python","patch_set":2,"id":"0ddf79ae_863c1b2c","line":250,"in_reply_to":"be4f7991_a35eb980","updated":"2023-12-21 11:56:59.000000000","message":"Acknowledged","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"137b65c642279b08a057fe324f8581a91295a33c","unresolved":true,"context_lines":[{"line_number":298,"context_line":"                parent_device \u003d mpath_device"},{"line_number":299,"context_line":"                break"},{"line_number":300,"context_line":"        for out in lines[1:]:"},{"line_number":301,"context_line":"            if \u0027active ready running\u0027 in out:"},{"line_number":302,"context_line":"                child_info \u003d out.split(\u0027 \u0027)"},{"line_number":303,"context_line":"                for info in child_info:"},{"line_number":304,"context_line":"                    if info.startswith(\"sd\"):"}],"source_content_type":"text/x-python","patch_set":2,"id":"d45baade_549b68f0","line":301,"range":{"start_line":301,"start_character":12,"end_line":301,"end_character":45},"updated":"2023-11-29 21:49:33.000000000","message":"why not just record every device, regardless if it is in use or not, and then you end up with\n\n{\u0027sdxj\u0027: \u0027/dev/mpath/0001\u0027,\n \u0027sdac\u0027: /dev/mpath/0001\u0027}","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"11884ad1d8475b2c499481eb3196a103e773d43a","unresolved":false,"context_lines":[{"line_number":298,"context_line":"                parent_device \u003d mpath_device"},{"line_number":299,"context_line":"                break"},{"line_number":300,"context_line":"        for out in lines[1:]:"},{"line_number":301,"context_line":"            if \u0027active ready running\u0027 in out:"},{"line_number":302,"context_line":"                child_info \u003d out.split(\u0027 \u0027)"},{"line_number":303,"context_line":"                for info in child_info:"},{"line_number":304,"context_line":"                    if info.startswith(\"sd\"):"}],"source_content_type":"text/x-python","patch_set":2,"id":"12b7f1ab_3dbcbd2e","line":301,"range":{"start_line":301,"start_character":12,"end_line":301,"end_character":45},"in_reply_to":"6bf91d36_826cadbb","updated":"2023-12-19 12:07:54.000000000","message":"Acknowledged","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"43b5a2b60af9450f0d0e766b1b1b7d307d9f7753","unresolved":true,"context_lines":[{"line_number":298,"context_line":"                parent_device \u003d mpath_device"},{"line_number":299,"context_line":"                break"},{"line_number":300,"context_line":"        for out in lines[1:]:"},{"line_number":301,"context_line":"            if \u0027active ready running\u0027 in out:"},{"line_number":302,"context_line":"                child_info \u003d out.split(\u0027 \u0027)"},{"line_number":303,"context_line":"                for info in child_info:"},{"line_number":304,"context_line":"                    if info.startswith(\"sd\"):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da132eac_368f5de6","line":301,"range":{"start_line":301,"start_character":12,"end_line":301,"end_character":45},"in_reply_to":"d45baade_549b68f0","updated":"2023-11-30 14:56:17.000000000","message":"I guess this is a valid approach to take, just wondering if the information would be useful? (Couldn\u0027t really think of any use case, but we know how the world is \u003d) )","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ff5e7c33ae3980e90d2486855e0dc4416c8da421","unresolved":true,"context_lines":[{"line_number":298,"context_line":"                parent_device \u003d mpath_device"},{"line_number":299,"context_line":"                break"},{"line_number":300,"context_line":"        for out in lines[1:]:"},{"line_number":301,"context_line":"            if \u0027active ready running\u0027 in out:"},{"line_number":302,"context_line":"                child_info \u003d out.split(\u0027 \u0027)"},{"line_number":303,"context_line":"                for info in child_info:"},{"line_number":304,"context_line":"                    if info.startswith(\"sd\"):"}],"source_content_type":"text/x-python","patch_set":2,"id":"6bf91d36_826cadbb","line":301,"range":{"start_line":301,"start_character":12,"end_line":301,"end_character":45},"in_reply_to":"da132eac_368f5de6","updated":"2023-12-13 15:41:31.000000000","message":"Well, it is useful because we should never use the base device like sdxj or sdac, we should always use the mpath device itself since the mpath device results in the de-duplication of paths down to the multipath handler device which has the logic to do the right thing if a path to say, sdxj breaks and sudden sdac is the active path when it was not when we recorded the paths.","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"137b65c642279b08a057fe324f8581a91295a33c","unresolved":true,"context_lines":[{"line_number":301,"context_line":"            if \u0027active ready running\u0027 in out:"},{"line_number":302,"context_line":"                child_info \u003d out.split(\u0027 \u0027)"},{"line_number":303,"context_line":"                for info in child_info:"},{"line_number":304,"context_line":"                    if info.startswith(\"sd\"):"},{"line_number":305,"context_line":"                        MAP_MULTIPATH_PARENT_DEVICE[info] \u003d parent_device"},{"line_number":306,"context_line":"        return parent_device"},{"line_number":307,"context_line":"    except IndexError:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fd7c2832_3b0ff3ea","line":304,"range":{"start_line":304,"start_character":19,"end_line":304,"end_character":45},"updated":"2023-11-29 21:49:33.000000000","message":"I guess this is kind of safe.... I\u0027mnot sure you really need to guard it that way though.","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"23315611a84d61600986b05c48e8ecad01161f0a","unresolved":true,"context_lines":[{"line_number":301,"context_line":"            if \u0027active ready running\u0027 in out:"},{"line_number":302,"context_line":"                child_info \u003d out.split(\u0027 \u0027)"},{"line_number":303,"context_line":"                for info in child_info:"},{"line_number":304,"context_line":"                    if info.startswith(\"sd\"):"},{"line_number":305,"context_line":"                        MAP_MULTIPATH_PARENT_DEVICE[info] \u003d parent_device"},{"line_number":306,"context_line":"        return parent_device"},{"line_number":307,"context_line":"    except IndexError:"}],"source_content_type":"text/x-python","patch_set":2,"id":"cd3624c3_c9a9086d","line":304,"range":{"start_line":304,"start_character":19,"end_line":304,"end_character":45},"in_reply_to":"4c7ac633_19afa9cc","updated":"2024-01-26 23:16:53.000000000","message":"I guess the thing which comes to mind is that they might not always be scsi devices, but I suspect there is a difference between practical and theoretical here.","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"045494f322dd0b205bc2122e8d89e91445823dde","unresolved":true,"context_lines":[{"line_number":301,"context_line":"            if \u0027active ready running\u0027 in out:"},{"line_number":302,"context_line":"                child_info \u003d out.split(\u0027 \u0027)"},{"line_number":303,"context_line":"                for info in child_info:"},{"line_number":304,"context_line":"                    if info.startswith(\"sd\"):"},{"line_number":305,"context_line":"                        MAP_MULTIPATH_PARENT_DEVICE[info] \u003d parent_device"},{"line_number":306,"context_line":"        return parent_device"},{"line_number":307,"context_line":"    except IndexError:"}],"source_content_type":"text/x-python","patch_set":2,"id":"0943537d_82b24afe","line":304,"range":{"start_line":304,"start_character":19,"end_line":304,"end_character":45},"in_reply_to":"a2732a1f_c96c11d8","updated":"2024-02-07 15:27:35.000000000","message":"Great question, so nvme does have multipathing, and for it to be visible to the multipath command, a plugin apparently needs to be enabled[0]. In part because it is kernel native for nvme and transparent to the user, apparently[1].\n\nFor this, it looks like nvme device naming is *not* consistent. Realistically, with multipathing in general, device naming may not be consistent, but RH has an kb solution posted on how to statically map names by WWN ID value[2].\n\n\n[0]: https://documentation.suse.com/sles/15-SP5/html/SLES-all/cha-multipath.html#sec-multipath-conf-misc\n[1]: https://documentation.suse.com/sles/15-SP5/html/SLES-all/cha-multipath.html#sec-multipath-hardware-implementations\n[2]: https://access.redhat.com/solutions/5384031\n\nSo.... Maybe we don\u0027t need to do anything here for nvme?","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"77d9de50b05854d09f09ffbb00e5f20e9636e488","unresolved":true,"context_lines":[{"line_number":301,"context_line":"            if \u0027active ready running\u0027 in out:"},{"line_number":302,"context_line":"                child_info \u003d out.split(\u0027 \u0027)"},{"line_number":303,"context_line":"                for info in child_info:"},{"line_number":304,"context_line":"                    if info.startswith(\"sd\"):"},{"line_number":305,"context_line":"                        MAP_MULTIPATH_PARENT_DEVICE[info] \u003d parent_device"},{"line_number":306,"context_line":"        return parent_device"},{"line_number":307,"context_line":"    except IndexError:"}],"source_content_type":"text/x-python","patch_set":2,"id":"a2732a1f_c96c11d8","line":304,"range":{"start_line":304,"start_character":19,"end_line":304,"end_character":45},"in_reply_to":"cd3624c3_c9a9086d","updated":"2024-02-05 11:16:00.000000000","message":"Cannot we have nvme devices eventually?","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"11884ad1d8475b2c499481eb3196a103e773d43a","unresolved":true,"context_lines":[{"line_number":301,"context_line":"            if \u0027active ready running\u0027 in out:"},{"line_number":302,"context_line":"                child_info \u003d out.split(\u0027 \u0027)"},{"line_number":303,"context_line":"                for info in child_info:"},{"line_number":304,"context_line":"                    if info.startswith(\"sd\"):"},{"line_number":305,"context_line":"                        MAP_MULTIPATH_PARENT_DEVICE[info] \u003d parent_device"},{"line_number":306,"context_line":"        return parent_device"},{"line_number":307,"context_line":"    except IndexError:"}],"source_content_type":"text/x-python","patch_set":2,"id":"4c7ac633_19afa9cc","line":304,"range":{"start_line":304,"start_character":19,"end_line":304,"end_character":45},"in_reply_to":"fd7c2832_3b0ff3ea","updated":"2023-12-19 12:07:54.000000000","message":"Maybe using regex or something to identify? (not 100% sure, just trying to keep things simple)","commit_id":"18fcd24c8d27af1f877d69c345146a542e2b42be"}]}
