)]}'
{"ironic_python_agent/extensions/image.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":"5ba19dcc40d70b680931896a1fa7db2b416ff096","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        if hardware._is_md_device(device):"},{"line_number":56,"context_line":"            LOG.info(\"Installing on first partition of md device %s\","},{"line_number":57,"context_line":"                     device)"},{"line_number":58,"context_line":"            return device + \u0027p1\u0027"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        lsblk \u003d utils.execute(\u0027lsblk\u0027, \u0027-PbioKNAME,UUID,PARTUUID,TYPE\u0027, device)"},{"line_number":61,"context_line":"        report \u003d lsblk[0]"}],"source_content_type":"text/x-python","patch_set":6,"id":"5fc1f717_d37bd1f1","line":58,"updated":"2019-04-01 14:16:48.000000000","message":"Specifically for offering the iscsi partition for the mirror set? I guess this would work....","commit_id":"57391b72d2311078ab0c10df77129f30ca42ad24"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"04b2e9b56807d4a6681bbc12adc4ca3fd5c9ff7a","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        if hardware._is_md_device(device):"},{"line_number":56,"context_line":"            LOG.info(\"Installing on first partition of md device %s\","},{"line_number":57,"context_line":"                     device)"},{"line_number":58,"context_line":"            return device + \u0027p1\u0027"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        lsblk \u003d utils.execute(\u0027lsblk\u0027, \u0027-PbioKNAME,UUID,PARTUUID,TYPE\u0027, device)"},{"line_number":61,"context_line":"        report \u003d lsblk[0]"}],"source_content_type":"text/x-python","patch_set":6,"id":"5fc1f717_29197421","line":58,"in_reply_to":"5fc1f717_d37bd1f1","updated":"2019-04-02 09:18:56.000000000","message":"Hard coding this seems awkward, but I was (and still am) lacking understanding of how the UUID discovery works. The code works, but there is certainly room for improvement.","commit_id":"57391b72d2311078ab0c10df77129f30ca42ad24"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2eb47e3793fbfe1f28c27512fc0ae5273b31f3e8","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        for grub_disk in disks:"},{"line_number":151,"context_line":"            LOG.info(\"Installing on grub_disk %s\", grub_disk)"},{"line_number":152,"context_line":"            utils.execute(\u0027chroot %(path)s /bin/sh -c \u0027"},{"line_number":153,"context_line":"                          \u0027\"%(bin)s-install %(dev)s\"\u0027 %"},{"line_number":154,"context_line":"                          {\u0027path\u0027: path, \u0027bin\u0027: binary_name,"},{"line_number":155,"context_line":"                           \u0027dev\u0027: grub_disk},"},{"line_number":156,"context_line":"                          shell\u003dTrue, env_variables\u003d{\u0027PATH\u0027: path_variable})"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fce034c_81f5e1cd","line":153,"updated":"2019-04-12 21:23:28.000000000","message":"So this is updating the nvram, except I think the nvram only ends up holding the last disk\u0027s record. I\u0027m not sure I understand... then again it also places the fallback file which should be able to be found in the event of the first disk being lost...","commit_id":"10a5d2ddfe1cb9a001023e550080ba91d58524df"},{"author":{"_account_id":11929,"name":"Michael Turek","email":"mjturek@linux.vnet.ibm.com","username":"mjturek"},"change_message_id":"626e9367e727719b188e87da26de11d0943e9456","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            device \u003d _get_partition(device, uuid\u003dprep_boot_part_uuid)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # If the root device is an md device (or partition), restart the device"},{"line_number":115,"context_line":"        # (to help grub finding it) and identify the underlying holder disks"},{"line_number":116,"context_line":"        # to install grub."},{"line_number":117,"context_line":"        disks \u003d []"},{"line_number":118,"context_line":"        if hardware._is_md_device(device):"}],"source_content_type":"text/x-python","patch_set":12,"id":"dfbec78f_1ffb3b47","line":115,"range":{"start_line":115,"start_character":24,"end_line":115,"end_character":31},"updated":"2019-05-10 19:54:54.000000000","message":"nit: s/finding/find","commit_id":"d9fb8d4b62f87cea8a10e7387a1ae65c7a75db5a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0be87e6babedd3708c8a101e0aab7aecb0cb4f9","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                        \"on device %s\", device)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        # If the deploy device is an md device, we want to install on"},{"line_number":52,"context_line":"        # the first partition. We clearly take a shortcut here for now."},{"line_number":53,"context_line":"        # TODO(arne_wiebalck): Would it possible to use the partition"},{"line_number":54,"context_line":"        #                      UUID and use the \"normal\" discovery instead?"},{"line_number":55,"context_line":"        if hardware._is_md_device(device):"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_3e1641f3","line":52,"updated":"2019-05-24 08:26:14.000000000","message":"I wonder if we can make root device hints play well with this..","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fc3aaf0e149647209a0223e49556e2260dc09ff9","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                        \"on device %s\", device)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        # If the deploy device is an md device, we want to install on"},{"line_number":52,"context_line":"        # the first partition. We clearly take a shortcut here for now."},{"line_number":53,"context_line":"        # TODO(arne_wiebalck): Would it possible to use the partition"},{"line_number":54,"context_line":"        #                      UUID and use the \"normal\" discovery instead?"},{"line_number":55,"context_line":"        if hardware._is_md_device(device):"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_b42f8986","line":52,"in_reply_to":"bfb3d3c7_3e1641f3","updated":"2019-05-28 10:36:47.000000000","message":"I think that is out of scope at this tim unless we want to tell it to override and use a detected md0... which we made possible last cycle :)","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0be87e6babedd3708c8a101e0aab7aecb0cb4f9","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        # the first partition. We clearly take a shortcut here for now."},{"line_number":53,"context_line":"        # TODO(arne_wiebalck): Would it possible to use the partition"},{"line_number":54,"context_line":"        #                      UUID and use the \"normal\" discovery instead?"},{"line_number":55,"context_line":"        if hardware._is_md_device(device):"},{"line_number":56,"context_line":"            LOG.info(\"Installing on first partition of md device %s\","},{"line_number":57,"context_line":"                     device)"},{"line_number":58,"context_line":"            return device + \u0027p1\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_ded4c522","line":55,"updated":"2019-05-24 08:26:14.000000000","message":"nit: we shouldn\u0027t be using private functions from other modules, rename to is_md_device","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"f1ab10ea20a141570be402c0acf049448273da53","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        # the first partition. We clearly take a shortcut here for now."},{"line_number":53,"context_line":"        # TODO(arne_wiebalck): Would it possible to use the partition"},{"line_number":54,"context_line":"        #                      UUID and use the \"normal\" discovery instead?"},{"line_number":55,"context_line":"        if hardware._is_md_device(device):"},{"line_number":56,"context_line":"            LOG.info(\"Installing on first partition of md device %s\","},{"line_number":57,"context_line":"                     device)"},{"line_number":58,"context_line":"            return device + \u0027p1\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_917b30f3","line":55,"in_reply_to":"bfb3d3c7_ded4c522","updated":"2019-05-31 11:09:50.000000000","message":"Done","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0be87e6babedd3708c8a101e0aab7aecb0cb4f9","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        # to install grub."},{"line_number":117,"context_line":"        disks \u003d []"},{"line_number":118,"context_line":"        if hardware._is_md_device(device):"},{"line_number":119,"context_line":"            hardware._md_restart(device)"},{"line_number":120,"context_line":"            disks \u003d hardware._get_holder_disks(device)"},{"line_number":121,"context_line":"        else:"},{"line_number":122,"context_line":"            disks.append(device)"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_fed98956","line":119,"updated":"2019-05-24 08:26:14.000000000","message":"ditto","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"f1ab10ea20a141570be402c0acf049448273da53","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        # to install grub."},{"line_number":117,"context_line":"        disks \u003d []"},{"line_number":118,"context_line":"        if hardware._is_md_device(device):"},{"line_number":119,"context_line":"            hardware._md_restart(device)"},{"line_number":120,"context_line":"            disks \u003d hardware._get_holder_disks(device)"},{"line_number":121,"context_line":"        else:"},{"line_number":122,"context_line":"            disks.append(device)"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_b17e74e1","line":119,"in_reply_to":"bfb3d3c7_fed98956","updated":"2019-05-31 11:09:50.000000000","message":"Done","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0be87e6babedd3708c8a101e0aab7aecb0cb4f9","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        disks \u003d []"},{"line_number":118,"context_line":"        if hardware._is_md_device(device):"},{"line_number":119,"context_line":"            hardware._md_restart(device)"},{"line_number":120,"context_line":"            disks \u003d hardware._get_holder_disks(device)"},{"line_number":121,"context_line":"        else:"},{"line_number":122,"context_line":"            disks.append(device)"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_9edacd48","line":120,"updated":"2019-05-24 08:26:14.000000000","message":"and ditto","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"f1ab10ea20a141570be402c0acf049448273da53","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        disks \u003d []"},{"line_number":118,"context_line":"        if hardware._is_md_device(device):"},{"line_number":119,"context_line":"            hardware._md_restart(device)"},{"line_number":120,"context_line":"            disks \u003d hardware._get_holder_disks(device)"},{"line_number":121,"context_line":"        else:"},{"line_number":122,"context_line":"            disks.append(device)"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_518138c2","line":120,"in_reply_to":"bfb3d3c7_9edacd48","updated":"2019-05-31 11:09:50.000000000","message":"Done","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0be87e6babedd3708c8a101e0aab7aecb0cb4f9","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        # Install grub. Normally, grub goes to one disk only. In case of"},{"line_number":148,"context_line":"        # md devices, grub goes to all underlying holder (RAID-1) disks."},{"line_number":149,"context_line":"        LOG.info(\"GRUB2 will be installed on disks %s\", disks)"},{"line_number":150,"context_line":"        for grub_disk in disks:"},{"line_number":151,"context_line":"            LOG.info(\"Installing on grub_disk %s\", grub_disk)"},{"line_number":152,"context_line":"            utils.execute(\u0027chroot %(path)s /bin/sh -c \u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_bedf9138","line":149,"updated":"2019-05-24 08:26:14.000000000","message":"nit: s/info/debug/","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"f1ab10ea20a141570be402c0acf049448273da53","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        # Install grub. Normally, grub goes to one disk only. In case of"},{"line_number":148,"context_line":"        # md devices, grub goes to all underlying holder (RAID-1) disks."},{"line_number":149,"context_line":"        LOG.info(\"GRUB2 will be installed on disks %s\", disks)"},{"line_number":150,"context_line":"        for grub_disk in disks:"},{"line_number":151,"context_line":"            LOG.info(\"Installing on grub_disk %s\", grub_disk)"},{"line_number":152,"context_line":"            utils.execute(\u0027chroot %(path)s /bin/sh -c \u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_71847cd3","line":149,"in_reply_to":"bfb3d3c7_bedf9138","updated":"2019-05-31 11:09:50.000000000","message":"Done","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0be87e6babedd3708c8a101e0aab7aecb0cb4f9","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        # md devices, grub goes to all underlying holder (RAID-1) disks."},{"line_number":149,"context_line":"        LOG.info(\"GRUB2 will be installed on disks %s\", disks)"},{"line_number":150,"context_line":"        for grub_disk in disks:"},{"line_number":151,"context_line":"            LOG.info(\"Installing on grub_disk %s\", grub_disk)"},{"line_number":152,"context_line":"            utils.execute(\u0027chroot %(path)s /bin/sh -c \u0027"},{"line_number":153,"context_line":"                          \u0027\"%(bin)s-install %(dev)s\"\u0027 %"},{"line_number":154,"context_line":"                          {\u0027path\u0027: path, \u0027bin\u0027: binary_name,"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_5ee8d5e0","line":151,"updated":"2019-05-24 08:26:14.000000000","message":"nit: s/info/debug/","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"f1ab10ea20a141570be402c0acf049448273da53","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        # md devices, grub goes to all underlying holder (RAID-1) disks."},{"line_number":149,"context_line":"        LOG.info(\"GRUB2 will be installed on disks %s\", disks)"},{"line_number":150,"context_line":"        for grub_disk in disks:"},{"line_number":151,"context_line":"            LOG.info(\"Installing on grub_disk %s\", grub_disk)"},{"line_number":152,"context_line":"            utils.execute(\u0027chroot %(path)s /bin/sh -c \u0027"},{"line_number":153,"context_line":"                          \u0027\"%(bin)s-install %(dev)s\"\u0027 %"},{"line_number":154,"context_line":"                          {\u0027path\u0027: path, \u0027bin\u0027: binary_name,"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_116f402b","line":151,"in_reply_to":"bfb3d3c7_5ee8d5e0","updated":"2019-05-31 11:09:50.000000000","message":"Done","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6cf3177329921973ac7228facc6ed431a5d17302","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        # TODO(arne_wiebalck): Would it possible to use the partition"},{"line_number":54,"context_line":"        #                      UUID and use the \"normal\" discovery instead?"},{"line_number":55,"context_line":"        if hardware.is_md_device(device):"},{"line_number":56,"context_line":"            LOG.info(\"Installing on first partition of md device %s\","},{"line_number":57,"context_line":"                     device)"},{"line_number":58,"context_line":"            return device + \u0027p1\u0027"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"9fb8cfa7_98f6bd8f","line":56,"range":{"start_line":56,"start_character":22,"end_line":56,"end_character":51},"updated":"2019-06-04 07:40:43.000000000","message":"There is nothing that is getting installed in this method.","commit_id":"0a8b4937d57266163ddc817ab44cd3f4880dfec8"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6cf3177329921973ac7228facc6ed431a5d17302","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        # TODO(arne_wiebalck): Would it possible to use the partition"},{"line_number":54,"context_line":"        #                      UUID and use the \"normal\" discovery instead?"},{"line_number":55,"context_line":"        if hardware.is_md_device(device):"},{"line_number":56,"context_line":"            LOG.info(\"Installing on first partition of md device %s\","},{"line_number":57,"context_line":"                     device)"},{"line_number":58,"context_line":"            return device + \u0027p1\u0027"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"9fb8cfa7_b8ff0166","line":56,"range":{"start_line":56,"start_character":12,"end_line":56,"end_character":20},"updated":"2019-06-04 07:40:43.000000000","message":"This could be a \u0027debug\u0027 message.","commit_id":"0a8b4937d57266163ddc817ab44cd3f4880dfec8"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"4eebb843a9d4ced007c8a3ad01aa48e8f00bde49","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        # TODO(arne_wiebalck): Would it possible to use the partition"},{"line_number":54,"context_line":"        #                      UUID and use the \"normal\" discovery instead?"},{"line_number":55,"context_line":"        if hardware.is_md_device(device):"},{"line_number":56,"context_line":"            LOG.info(\"Installing on first partition of md device %s\","},{"line_number":57,"context_line":"                     device)"},{"line_number":58,"context_line":"            return device + \u0027p1\u0027"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"9fb8cfa7_00e253d6","line":56,"range":{"start_line":56,"start_character":22,"end_line":56,"end_character":51},"in_reply_to":"9fb8cfa7_98f6bd8f","updated":"2019-06-04 11:40:15.000000000","message":"Done","commit_id":"0a8b4937d57266163ddc817ab44cd3f4880dfec8"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"4eebb843a9d4ced007c8a3ad01aa48e8f00bde49","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        # TODO(arne_wiebalck): Would it possible to use the partition"},{"line_number":54,"context_line":"        #                      UUID and use the \"normal\" discovery instead?"},{"line_number":55,"context_line":"        if hardware.is_md_device(device):"},{"line_number":56,"context_line":"            LOG.info(\"Installing on first partition of md device %s\","},{"line_number":57,"context_line":"                     device)"},{"line_number":58,"context_line":"            return device + \u0027p1\u0027"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"9fb8cfa7_40c28b35","line":56,"range":{"start_line":56,"start_character":12,"end_line":56,"end_character":20},"in_reply_to":"9fb8cfa7_b8ff0166","updated":"2019-06-04 11:40:15.000000000","message":"Done","commit_id":"0a8b4937d57266163ddc817ab44cd3f4880dfec8"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2444478f3c6820c672af5c52b5e494c52daebb2a","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        # Install grub. Normally, grub goes to one disk only. In case of"},{"line_number":148,"context_line":"        # md devices, grub goes to all underlying holder (RAID-1) disks."},{"line_number":149,"context_line":"        LOG.info(\"GRUB2 will be installed on disks %s\", disks)"},{"line_number":150,"context_line":"        for grub_disk in disks:"},{"line_number":151,"context_line":"            LOG.debug(\"Installing on grub_disk %s\", grub_disk)"},{"line_number":152,"context_line":"            utils.execute(\u0027chroot %(path)s /bin/sh -c \u0027"},{"line_number":153,"context_line":"                          \u0027\"%(bin)s-install %(dev)s\"\u0027 %"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fb8cfa7_edf5e184","line":150,"updated":"2019-05-31 17:58:25.000000000","message":"I think this is actually a good thing, because the  nvram record will end up not being the first disk... and when thigns fail horribly one day, the first disk will be tried again...","commit_id":"0a8b4937d57266163ddc817ab44cd3f4880dfec8"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"4eebb843a9d4ced007c8a3ad01aa48e8f00bde49","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        # Install grub. Normally, grub goes to one disk only. In case of"},{"line_number":148,"context_line":"        # md devices, grub goes to all underlying holder (RAID-1) disks."},{"line_number":149,"context_line":"        LOG.info(\"GRUB2 will be installed on disks %s\", disks)"},{"line_number":150,"context_line":"        for grub_disk in disks:"},{"line_number":151,"context_line":"            LOG.debug(\"Installing on grub_disk %s\", grub_disk)"},{"line_number":152,"context_line":"            utils.execute(\u0027chroot %(path)s /bin/sh -c \u0027"},{"line_number":153,"context_line":"                          \u0027\"%(bin)s-install %(dev)s\"\u0027 %"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fb8cfa7_c012fbb1","line":150,"in_reply_to":"9fb8cfa7_18c3adef","updated":"2019-06-04 11:40:15.000000000","message":"I\u0027m not sure I can follow the nvram point :S\n\nThe reason I install grub on all holder disks is that the system can boot from any disk (which will be needed if one of the disks break, but may also be needed in case the bios selects one of the disks over the other). I\u0027m happy to add a note here if you can shed some light on what it should say :)","commit_id":"0a8b4937d57266163ddc817ab44cd3f4880dfec8"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6cf3177329921973ac7228facc6ed431a5d17302","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        # Install grub. Normally, grub goes to one disk only. In case of"},{"line_number":148,"context_line":"        # md devices, grub goes to all underlying holder (RAID-1) disks."},{"line_number":149,"context_line":"        LOG.info(\"GRUB2 will be installed on disks %s\", disks)"},{"line_number":150,"context_line":"        for grub_disk in disks:"},{"line_number":151,"context_line":"            LOG.debug(\"Installing on grub_disk %s\", grub_disk)"},{"line_number":152,"context_line":"            utils.execute(\u0027chroot %(path)s /bin/sh -c \u0027"},{"line_number":153,"context_line":"                          \u0027\"%(bin)s-install %(dev)s\"\u0027 %"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fb8cfa7_18c3adef","line":150,"in_reply_to":"9fb8cfa7_edf5e184","updated":"2019-06-04 07:40:43.000000000","message":"This is useful. Would it be good if we add this information as a note here?","commit_id":"0a8b4937d57266163ddc817ab44cd3f4880dfec8"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6cf3177329921973ac7228facc6ed431a5d17302","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        # md devices, grub goes to all underlying holder (RAID-1) disks."},{"line_number":149,"context_line":"        LOG.info(\"GRUB2 will be installed on disks %s\", disks)"},{"line_number":150,"context_line":"        for grub_disk in disks:"},{"line_number":151,"context_line":"            LOG.debug(\"Installing on grub_disk %s\", grub_disk)"},{"line_number":152,"context_line":"            utils.execute(\u0027chroot %(path)s /bin/sh -c \u0027"},{"line_number":153,"context_line":"                          \u0027\"%(bin)s-install %(dev)s\"\u0027 %"},{"line_number":154,"context_line":"                          {\u0027path\u0027: path, \u0027bin\u0027: binary_name,"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fb8cfa7_384f91be","line":151,"range":{"start_line":151,"start_character":37,"end_line":151,"end_character":46},"updated":"2019-06-04 07:40:43.000000000","message":"s/ \u0027grub_disk\u0027 / \u0027GRUB2 on disk\u0027 /","commit_id":"0a8b4937d57266163ddc817ab44cd3f4880dfec8"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"4eebb843a9d4ced007c8a3ad01aa48e8f00bde49","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        # md devices, grub goes to all underlying holder (RAID-1) disks."},{"line_number":149,"context_line":"        LOG.info(\"GRUB2 will be installed on disks %s\", disks)"},{"line_number":150,"context_line":"        for grub_disk in disks:"},{"line_number":151,"context_line":"            LOG.debug(\"Installing on grub_disk %s\", grub_disk)"},{"line_number":152,"context_line":"            utils.execute(\u0027chroot %(path)s /bin/sh -c \u0027"},{"line_number":153,"context_line":"                          \u0027\"%(bin)s-install %(dev)s\"\u0027 %"},{"line_number":154,"context_line":"                          {\u0027path\u0027: path, \u0027bin\u0027: binary_name,"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fb8cfa7_c0ebdbad","line":151,"range":{"start_line":151,"start_character":37,"end_line":151,"end_character":46},"in_reply_to":"9fb8cfa7_384f91be","updated":"2019-06-04 11:40:15.000000000","message":"Done","commit_id":"0a8b4937d57266163ddc817ab44cd3f4880dfec8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"047bef6229ed1b5b507a97cd7a69576f825cb858","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        # TODO(arne_wiebalck): Would it possible to use the partition"},{"line_number":54,"context_line":"        #                      UUID and use the \"normal\" discovery instead?"},{"line_number":55,"context_line":"        if hardware.is_md_device(device):"},{"line_number":56,"context_line":"            md_partition \u003d device + \u0027p1\u0027"},{"line_number":57,"context_line":"            LOG.debug(\"Found md device with partition %s\", md_partition)"},{"line_number":58,"context_line":"            return md_partition"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9fb8cfa7_a87a3c21","line":56,"updated":"2019-06-05 06:19:54.000000000","message":"Do we need to check that it actually exists as a safeguard?","commit_id":"8fe390ecddd50ea6ab50bdb190feb948e8fd6fb5"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a7e58da586806434da21f0e41be55f8d1231636d","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        # TODO(arne_wiebalck): Would it possible to use the partition"},{"line_number":54,"context_line":"        #                      UUID and use the \"normal\" discovery instead?"},{"line_number":55,"context_line":"        if hardware.is_md_device(device):"},{"line_number":56,"context_line":"            md_partition \u003d device + \u0027p1\u0027"},{"line_number":57,"context_line":"            LOG.debug(\"Found md device with partition %s\", md_partition)"},{"line_number":58,"context_line":"            return md_partition"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9fb8cfa7_e72b757f","line":56,"in_reply_to":"9fb8cfa7_a87a3c21","updated":"2019-06-05 18:30:10.000000000","message":"It might make sense, I\u0027m just not sure what the recovery case ends up being if it is indeed missing.... Looks like the mount would just fail which seems like a legitimate secondary check because if it is truly indeed missing the failure was a long ways back and many other things should have failed by now.","commit_id":"8fe390ecddd50ea6ab50bdb190feb948e8fd6fb5"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"047bef6229ed1b5b507a97cd7a69576f825cb858","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            hardware.md_restart(device)"},{"line_number":120,"context_line":"            disks \u003d hardware.get_holder_disks(device)"},{"line_number":121,"context_line":"        else:"},{"line_number":122,"context_line":"            disks.append(device)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        utils.execute(\u0027mount\u0027, root_partition, path)"},{"line_number":125,"context_line":"        for fs in BIND_MOUNTS:"}],"source_content_type":"text/x-python","patch_set":17,"id":"9fb8cfa7_4877003c","line":122,"updated":"2019-06-05 06:19:54.000000000","message":"nit: disks \u003d [device] (and drop line 117)","commit_id":"8fe390ecddd50ea6ab50bdb190feb948e8fd6fb5"}],"ironic_python_agent/hardware.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"af2900914f21e8820d1da8434f0239acfe7a0664","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        component_devices \u003d _get_component_devices(raid_device)"},{"line_number":189,"context_line":"        cmd \u003d \"mdadm --stop {}\".format(raid_device)"},{"line_number":190,"context_line":"        utils.execute(cmd, shell\u003dTrue)"},{"line_number":191,"context_line":"        utils.execute(\"mdadm --assemble {} {}\".format("},{"line_number":192,"context_line":"                      raid_device, \u0027 \u0027.join(component_devices)),"},{"line_number":193,"context_line":"                      shell\u003dTrue)"},{"line_number":194,"context_line":"    except processutils.ProcessExecutionError as e:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fce034c_97a5d506","line":191,"range":{"start_line":191,"start_character":22,"end_line":191,"end_character":45},"updated":"2019-04-17 15:42:56.000000000","message":"I hope all the mdadm commands are synchronous as we are not checking anything after back to back mdadm commands. Also we perform next set of oeprations using mdadm commands after calling _md_restart().","commit_id":"10a5d2ddfe1cb9a001023e550080ba91d58524df"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2eb47e3793fbfe1f28c27512fc0ae5273b31f3e8","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        utils.execute(cmd, shell\u003dTrue)"},{"line_number":191,"context_line":"        utils.execute(\"mdadm --assemble {} {}\".format("},{"line_number":192,"context_line":"                      raid_device, \u0027 \u0027.join(component_devices)),"},{"line_number":193,"context_line":"                      shell\u003dTrue)"},{"line_number":194,"context_line":"    except processutils.ProcessExecutionError as e:"},{"line_number":195,"context_line":"        error_msg \u003d (\u0027Could not restart md device %(dev)s: %(err)s\u0027 %"},{"line_number":196,"context_line":"                     {\u0027dev\u0027: raid_device, \u0027err\u0027: e})"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fce034c_e12dc546","line":193,"updated":"2019-04-12 21:23:28.000000000","message":"I feel like superheros are going to appear here...","commit_id":"10a5d2ddfe1cb9a001023e550080ba91d58524df"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"af2900914f21e8820d1da8434f0239acfe7a0664","unresolved":false,"context_lines":[{"line_number":1276,"context_line":"            return {}"},{"line_number":1277,"context_line":""},{"line_number":1278,"context_line":"        # No \u0027software\u0027 controller: do nothing. If \u0027controller\u0027 is"},{"line_number":1279,"context_line":"        # set to \u0027software\u0027 on only one of the drives, the validation"},{"line_number":1280,"context_line":"        # code will catch it."},{"line_number":1281,"context_line":"        software_raid \u003d False"},{"line_number":1282,"context_line":"        logical_disks \u003d raid_config.get(\u0027logical_disks\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fce034c_a17e9368","line":1279,"range":{"start_line":1279,"start_character":36,"end_line":1279,"end_character":39},"updated":"2019-04-17 15:42:56.000000000","message":"s/ one / few /","commit_id":"10a5d2ddfe1cb9a001023e550080ba91d58524df"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"af2900914f21e8820d1da8434f0239acfe7a0664","unresolved":false,"context_lines":[{"line_number":1286,"context_line":"                break"},{"line_number":1287,"context_line":"        if not software_raid:"},{"line_number":1288,"context_line":"            LOG.debug(\"No Software RAID config found\")"},{"line_number":1289,"context_line":"            return {}"},{"line_number":1290,"context_line":""},{"line_number":1291,"context_line":"        LOG.info(\"Creating Software RAID\")"},{"line_number":1292,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fce034c_2faccf32","line":1289,"range":{"start_line":1289,"start_character":12,"end_line":1289,"end_character":21},"updated":"2019-04-17 15:42:56.000000000","message":"Not sure if this is right behavior of not creating RAID, but returning success. We could raise validation failure error indicating \u0027controller\u0027 value is expected. May be this block L1281-L1289 is not needed as validate_configuration() would fail at L1294 if \u0027controller\u0027 value is absent.","commit_id":"10a5d2ddfe1cb9a001023e550080ba91d58524df"},{"author":{"_account_id":24843,"name":"Adam Kimball","email":"baha@linux.vnet.ibm.com","username":"baha"},"change_message_id":"bebbdcfa9158ead6106d90812f0eddbee672c432","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    return component_devices"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"def _get_holder_disks(raid_device):"},{"line_number":140,"context_line":"    \"\"\"Get the holder disks of a Software RAID device."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    Examine an md device and return its underlying disks."}],"source_content_type":"text/x-python","patch_set":12,"id":"dfbec78f_ce0baf21","line":139,"range":{"start_line":139,"start_character":4,"end_line":139,"end_character":21},"updated":"2019-05-10 20:01:12.000000000","message":"nit: I find the usage of \u0027holder_disks\u0027 here potentially confusing for readability - these disks aren\u0027t placeholder disks, right? They\u0027re actual disks used in the md* device? Wondering if something like soft_raid_disks might be more appropriate.","commit_id":"d9fb8d4b62f87cea8a10e7387a1ae65c7a75db5a"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"2fdc444879827b86cc462143d2a27bcd18181536","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    return component_devices"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"def _get_holder_disks(raid_device):"},{"line_number":140,"context_line":"    \"\"\"Get the holder disks of a Software RAID device."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    Examine an md device and return its underlying disks."}],"source_content_type":"text/x-python","patch_set":12,"id":"bfb3d3c7_17035b11","line":139,"range":{"start_line":139,"start_character":4,"end_line":139,"end_character":21},"in_reply_to":"dfbec78f_ce0baf21","updated":"2019-05-21 19:51:21.000000000","message":"What the function returns are the \"real\" disks on top of which the RAID is built. So, for a RAID device called md0, which consists of component devices sda1 and sdb1, the holder disks are sda and sdb. Not sure there is a technical term for this ...","commit_id":"d9fb8d4b62f87cea8a10e7387a1ae65c7a75db5a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0be87e6babedd3708c8a101e0aab7aecb0cb4f9","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        return []"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    holder_disks \u003d []"},{"line_number":151,"context_line":"    out, _ \u003d utils.execute(\u0027mdadm\u0027, \u0027--detail\u0027, raid_device)"},{"line_number":152,"context_line":"    lines \u003d out.splitlines()"},{"line_number":153,"context_line":"    for line in lines:"},{"line_number":154,"context_line":"        if \u0027active sync\u0027 not in line:"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_be2a3129","line":151,"updated":"2019-05-24 08:26:14.000000000","message":"use_standard_local\u003dTrue","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"f1ab10ea20a141570be402c0acf049448273da53","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        return []"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    holder_disks \u003d []"},{"line_number":151,"context_line":"    out, _ \u003d utils.execute(\u0027mdadm\u0027, \u0027--detail\u0027, raid_device)"},{"line_number":152,"context_line":"    lines \u003d out.splitlines()"},{"line_number":153,"context_line":"    for line in lines:"},{"line_number":154,"context_line":"        if \u0027active sync\u0027 not in line:"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_f16f0c25","line":151,"in_reply_to":"bfb3d3c7_be2a3129","updated":"2019-05-31 11:09:50.000000000","message":"Done","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0be87e6babedd3708c8a101e0aab7aecb0cb4f9","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    \"\"\""},{"line_number":170,"context_line":"    try:"},{"line_number":171,"context_line":"        utils.execute(\"mdadm --detail {}\".format(raid_device), shell\u003dTrue)"},{"line_number":172,"context_line":"        LOG.info(\"%s is an md device\", raid_device)"},{"line_number":173,"context_line":"        return True"},{"line_number":174,"context_line":"    except processutils.ProcessExecutionError:"},{"line_number":175,"context_line":"        LOG.info(\"%s is not an md device\", raid_device)"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_5e23f556","line":172,"updated":"2019-05-24 08:26:14.000000000","message":"s/info/debug/","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"f1ab10ea20a141570be402c0acf049448273da53","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    \"\"\""},{"line_number":170,"context_line":"    try:"},{"line_number":171,"context_line":"        utils.execute(\"mdadm --detail {}\".format(raid_device), shell\u003dTrue)"},{"line_number":172,"context_line":"        LOG.info(\"%s is an md device\", raid_device)"},{"line_number":173,"context_line":"        return True"},{"line_number":174,"context_line":"    except processutils.ProcessExecutionError:"},{"line_number":175,"context_line":"        LOG.info(\"%s is not an md device\", raid_device)"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_b167544d","line":172,"in_reply_to":"bfb3d3c7_5e23f556","updated":"2019-05-31 11:09:50.000000000","message":"Done","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0be87e6babedd3708c8a101e0aab7aecb0cb4f9","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        LOG.info(\"%s is an md device\", raid_device)"},{"line_number":173,"context_line":"        return True"},{"line_number":174,"context_line":"    except processutils.ProcessExecutionError:"},{"line_number":175,"context_line":"        LOG.info(\"%s is not an md device\", raid_device)"},{"line_number":176,"context_line":"        return False"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_7e203949","line":175,"updated":"2019-05-24 08:26:14.000000000","message":"ditto","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"f1ab10ea20a141570be402c0acf049448273da53","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        LOG.info(\"%s is an md device\", raid_device)"},{"line_number":173,"context_line":"        return True"},{"line_number":174,"context_line":"    except processutils.ProcessExecutionError:"},{"line_number":175,"context_line":"        LOG.info(\"%s is not an md device\", raid_device)"},{"line_number":176,"context_line":"        return False"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_515a9882","line":175,"in_reply_to":"bfb3d3c7_7e203949","updated":"2019-05-31 11:09:50.000000000","message":"Done","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0be87e6babedd3708c8a101e0aab7aecb0cb4f9","unresolved":false,"context_lines":[{"line_number":1437,"context_line":"        # All disks need to be flagged for Software RAID"},{"line_number":1438,"context_line":"        for logical_disk in logical_disks:"},{"line_number":1439,"context_line":"            if logical_disk.get(\u0027controller\u0027) !\u003d \u0027software\u0027:"},{"line_number":1440,"context_line":"                return False"},{"line_number":1441,"context_line":""},{"line_number":1442,"context_line":"        # Only one or two RAID devices are supported for now."},{"line_number":1443,"context_line":"        if len(logical_disks) not in [1, 2]:"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_1e19fd20","line":1440,"updated":"2019-05-24 08:26:14.000000000","message":"This should be moved to the parent patch","commit_id":"63805ad4e51b6051c6f2713f886c29c1fc768958"}],"ironic_python_agent/tests/unit/extensions/test_image.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":"5ba19dcc40d70b680931896a1fa7db2b416ff096","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            mock_is_md_device, mock_execute, mock_dispatch):"},{"line_number":242,"context_line":"        mock_get_part_uuid.side_effect \u003d [self.fake_root_part,"},{"line_number":243,"context_line":"                                          self.fake_efi_system_part]"},{"line_number":244,"context_line":"        mock_is_md_device.side_effect \u003d [False]"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        def umount_raise_func(*args, **kwargs):"},{"line_number":247,"context_line":"            if args[0] \u003d\u003d \u0027umount\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5fc1f717_b392c5fb","line":244,"range":{"start_line":244,"start_character":26,"end_line":244,"end_character":38},"updated":"2019-04-01 14:16:48.000000000","message":"Why not return_value?","commit_id":"57391b72d2311078ab0c10df77129f30ca42ad24"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"04b2e9b56807d4a6681bbc12adc4ca3fd5c9ff7a","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            mock_is_md_device, mock_execute, mock_dispatch):"},{"line_number":242,"context_line":"        mock_get_part_uuid.side_effect \u003d [self.fake_root_part,"},{"line_number":243,"context_line":"                                          self.fake_efi_system_part]"},{"line_number":244,"context_line":"        mock_is_md_device.side_effect \u003d [False]"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        def umount_raise_func(*args, **kwargs):"},{"line_number":247,"context_line":"            if args[0] \u003d\u003d \u0027umount\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5fc1f717_c4e9b7b7","line":244,"range":{"start_line":244,"start_character":26,"end_line":244,"end_character":38},"in_reply_to":"5fc1f717_b392c5fb","updated":"2019-04-02 09:18:56.000000000","message":"No reason, fixed :)","commit_id":"57391b72d2311078ab0c10df77129f30ca42ad24"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2444478f3c6820c672af5c52b5e494c52daebb2a","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        mock_get_part_uuid.side_effect \u003d [self.fake_root_part,"},{"line_number":187,"context_line":"                                          self.fake_efi_system_part]"},{"line_number":188,"context_line":"        environ_mock.get.return_value \u003d \u0027/sbin\u0027"},{"line_number":189,"context_line":"        mock_is_md_device.side_effect \u003d [False]"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        image._install_grub2("},{"line_number":192,"context_line":"            self.fake_dev, root_uuid\u003dself.fake_root_uuid,"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fb8cfa7_0d34f549","line":189,"updated":"2019-05-31 17:58:25.000000000","message":"list of false?","commit_id":"0a8b4937d57266163ddc817ab44cd3f4880dfec8"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"4eebb843a9d4ced007c8a3ad01aa48e8f00bde49","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        mock_get_part_uuid.side_effect \u003d [self.fake_root_part,"},{"line_number":187,"context_line":"                                          self.fake_efi_system_part]"},{"line_number":188,"context_line":"        environ_mock.get.return_value \u003d \u0027/sbin\u0027"},{"line_number":189,"context_line":"        mock_is_md_device.side_effect \u003d [False]"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        image._install_grub2("},{"line_number":192,"context_line":"            self.fake_dev, root_uuid\u003dself.fake_root_uuid,"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fb8cfa7_8024030f","line":189,"in_reply_to":"9fb8cfa7_0d34f549","updated":"2019-06-04 11:40:15.000000000","message":"Done","commit_id":"0a8b4937d57266163ddc817ab44cd3f4880dfec8"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2444478f3c6820c672af5c52b5e494c52daebb2a","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            mock_is_md_device, mock_execute, mock_dispatch):"},{"line_number":242,"context_line":"        mock_get_part_uuid.side_effect \u003d [self.fake_root_part,"},{"line_number":243,"context_line":"                                          self.fake_efi_system_part]"},{"line_number":244,"context_line":"        mock_is_md_device.return_value \u003d False"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        def umount_raise_func(*args, **kwargs):"},{"line_number":247,"context_line":"            if args[0] \u003d\u003d \u0027umount\u0027:"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fb8cfa7_cd3d7d2d","line":244,"updated":"2019-05-31 17:58:25.000000000","message":"vs this?","commit_id":"0a8b4937d57266163ddc817ab44cd3f4880dfec8"}],"ironic_python_agent/tests/unit/test_hardware.py":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"6e98e3ae865375234ffb50ffc8cbd5e3910719cc","unresolved":false,"context_lines":[{"line_number":2295,"context_line":"                                           1073741824, True)"},{"line_number":2296,"context_line":"        component_devices \u003d hardware._get_holder_disks(raid_device.name)"},{"line_number":2297,"context_line":"        self.assertEqual([\u0027/dev/vde\u0027, \u0027/dev/vdf\u0027], component_devices)"},{"line_number":2298,"context_line":""},{"line_number":2299,"context_line":"    @mock.patch.object(hardware, \u0027list_all_block_devices\u0027, autospec\u003dTrue)"},{"line_number":2300,"context_line":"    @mock.patch.object(utils, \u0027execute\u0027, autospec\u003dTrue)"},{"line_number":2301,"context_line":"    def test_delete_configuration(self, mocked_execute, mocked_list):"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfbec78f_1604a67a","line":2298,"updated":"2019-05-09 10:36:54.000000000","message":"add tests for is_md_device and md_restart ?","commit_id":"17563ace7d6e6bd506dac8cd489e16d5cff55190"}]}
