)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"f04ca9897ced9b02ebd8cbc981ee11457c20dbe7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Julia Kreger \u003cjuliaashleykreger@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-08-16 11:16:01 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix mutli-device behavior"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"ATARAID is functionally a version of software"},{"line_number":10,"context_line":"RAID where the setup is managed by the controller"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_2e0c3b93","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":9},"updated":"2018-08-16 19:07:31.000000000","message":"s/mutli/multi","commit_id":"d7fd159d4861a48b79fe87f909317d42f3997bc2"}],"ironic_python_agent/hardware.py":[{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"f04ca9897ced9b02ebd8cbc981ee11457c20dbe7","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"def list_all_block_devices(block_type\u003d\u0027disk\u0027,"},{"line_number":115,"context_line":"                           ignore_raid\u003dFalse):"},{"line_number":116,"context_line":"    \"\"\"List all physical block devices"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    The switches we use for lsblk: P for KEY\u003d\"value\" output, b for size output"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_ae1febb5","line":115,"range":{"start_line":115,"start_character":27,"end_line":115,"end_character":44},"updated":"2018-08-16 19:07:31.000000000","message":"The parameter is only to define the signature (as the function does not do anything with it)?","commit_id":"d7fd159d4861a48b79fe87f909317d42f3997bc2"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"0d6260c2ef27632c761f93093b76a876b5acfc93","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"def list_all_block_devices(block_type\u003d\u0027disk\u0027,"},{"line_number":115,"context_line":"                           ignore_raid\u003dFalse):"},{"line_number":116,"context_line":"    \"\"\"List all physical block devices"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    The switches we use for lsblk: P for KEY\u003d\"value\" output, b for size output"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_1e93aaa5","line":115,"range":{"start_line":115,"start_character":27,"end_line":115,"end_character":44},"in_reply_to":"3f79a3b5_ae1febb5","updated":"2018-08-16 20:55:52.000000000","message":"doh! I meant to make the behavior optional in case we hit issues with cleaning.","commit_id":"d7fd159d4861a48b79fe87f909317d42f3997bc2"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"507165ad1badd8083da7212d63c0ef8b9317e909","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    columns \u003d [\u0027KNAME\u0027, \u0027MODEL\u0027, \u0027SIZE\u0027, \u0027ROTA\u0027, \u0027TYPE\u0027]"},{"line_number":157,"context_line":"    report \u003d utils.execute(\u0027lsblk\u0027, \u0027-Pbi\u0027, \u0027-o{}\u0027.format(\u0027,\u0027.join(columns)),"},{"line_number":158,"context_line":"                           check_exit_code\u003d[0])[0]"},{"line_number":159,"context_line":"    lines \u003d report.split(\u0027\\n\u0027)"},{"line_number":160,"context_line":"    context \u003d pyudev.Context()"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    devices \u003d []"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_ae1932d1","line":159,"range":{"start_line":159,"start_character":4,"end_line":159,"end_character":30},"updated":"2018-08-28 14:40:50.000000000","message":"As raid devices would appear multiple times in the lsblk output (once with each component device), how about adding\n\nlines \u003d list(set(lines))\n\nto remove double entries from device list?","commit_id":"860486ba111fe51785a91226b1e57c8e4a685fb7"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"507165ad1badd8083da7212d63c0ef8b9317e909","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    columns \u003d [\u0027KNAME\u0027, \u0027MODEL\u0027, \u0027SIZE\u0027, \u0027ROTA\u0027, \u0027TYPE\u0027]"},{"line_number":157,"context_line":"    report \u003d utils.execute(\u0027lsblk\u0027, \u0027-Pbi\u0027, \u0027-o{}\u0027.format(\u0027,\u0027.join(columns)),"},{"line_number":158,"context_line":"                           check_exit_code\u003d[0])[0]"},{"line_number":159,"context_line":"    lines \u003d report.split(\u0027\\n\u0027)"},{"line_number":160,"context_line":"    context \u003d pyudev.Context()"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    devices \u003d []"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_ced02e22","line":159,"range":{"start_line":159,"start_character":4,"end_line":159,"end_character":30},"updated":"2018-08-28 14:40:50.000000000","message":"To avoid an empty \"device\" at the end of the array I propose:\nlines \u003d report.splitlines()\n(happy to commit this independently as this line was not changed now)","commit_id":"860486ba111fe51785a91226b1e57c8e4a685fb7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"04842bcd11b64b46714567c2fc4dad827a88cb8b","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    columns \u003d [\u0027KNAME\u0027, \u0027MODEL\u0027, \u0027SIZE\u0027, \u0027ROTA\u0027, \u0027TYPE\u0027]"},{"line_number":157,"context_line":"    report \u003d utils.execute(\u0027lsblk\u0027, \u0027-Pbi\u0027, \u0027-o{}\u0027.format(\u0027,\u0027.join(columns)),"},{"line_number":158,"context_line":"                           check_exit_code\u003d[0])[0]"},{"line_number":159,"context_line":"    lines \u003d report.split(\u0027\\n\u0027)"},{"line_number":160,"context_line":"    context \u003d pyudev.Context()"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    devices \u003d []"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_20106ea8","line":159,"range":{"start_line":159,"start_character":4,"end_line":159,"end_character":30},"in_reply_to":"3f79a3b5_ced02e22","updated":"2018-08-31 19:06:24.000000000","message":"That seems like a good idea, since line ending could be different if someone was running a different platform, and that would address the various issues there with empty end of list possibilities.\n\nAs for the removal of duplicate entries, I\u0027m not terribly sure we need to do that... but I could be very wrong. I think we should move forward as-is, but I\u0027ll add  note just in case.","commit_id":"860486ba111fe51785a91226b1e57c8e4a685fb7"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"1d8284da56e8fbaaf9cc10f77d3b234cb0bba84d","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    columns \u003d [\u0027KNAME\u0027, \u0027MODEL\u0027, \u0027SIZE\u0027, \u0027ROTA\u0027, \u0027TYPE\u0027]"},{"line_number":157,"context_line":"    report \u003d utils.execute(\u0027lsblk\u0027, \u0027-Pbi\u0027, \u0027-o{}\u0027.format(\u0027,\u0027.join(columns)),"},{"line_number":158,"context_line":"                           check_exit_code\u003d[0])[0]"},{"line_number":159,"context_line":"    # NOTE(TheJulia): With raid, there can be duplicate entries of the devices"},{"line_number":160,"context_line":"    # which may not be an issue with this, as always pick the smallest device,"},{"line_number":161,"context_line":"    # which would concievably always be the actual raid device, not just the"},{"line_number":162,"context_line":"    # parts of which it is built."},{"line_number":163,"context_line":"    lines \u003d report.splitlines()"},{"line_number":164,"context_line":"    context \u003d pyudev.Context()"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_86d95a23","line":162,"range":{"start_line":159,"start_character":0,"end_line":162,"end_character":33},"updated":"2018-08-31 20:28:01.000000000","message":"Removing duplicate entries here would avoid that the same device is processed unnecessarily multiple times later, for instance when comparing with the root devices hints. If the list is not uniq\u0027ified, an md device would otherwise undergo the same checking once for each of its components (which for larger md variants like RAID-6 will sum up). Also, there were no duplicates in this list before, so I think it\u0027d be actually safer to not introduce them now.","commit_id":"2a916afbf55a14b523cb4de6afd7d269a8cc5a2b"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"d2d38ed86c5145e629ef3164d3a42ca02f9cb1d9","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    columns \u003d [\u0027KNAME\u0027, \u0027MODEL\u0027, \u0027SIZE\u0027, \u0027ROTA\u0027, \u0027TYPE\u0027]"},{"line_number":157,"context_line":"    report \u003d utils.execute(\u0027lsblk\u0027, \u0027-Pbi\u0027, \u0027-o{}\u0027.format(\u0027,\u0027.join(columns)),"},{"line_number":158,"context_line":"                           check_exit_code\u003d[0])[0]"},{"line_number":159,"context_line":"    # NOTE(TheJulia): With raid, there can be duplicate entries of the devices"},{"line_number":160,"context_line":"    # which may not be an issue with this, as always pick the smallest device,"},{"line_number":161,"context_line":"    # which would concievably always be the actual raid device, not just the"},{"line_number":162,"context_line":"    # parts of which it is built."},{"line_number":163,"context_line":"    lines \u003d report.splitlines()"},{"line_number":164,"context_line":"    context \u003d pyudev.Context()"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_5f1d800e","line":162,"range":{"start_line":159,"start_character":0,"end_line":162,"end_character":33},"in_reply_to":"3f79a3b5_2cc8a71f","updated":"2018-09-25 06:37:42.000000000","message":"I noticed that the function is called often during clean/deploy, but wasn\u0027t aware that a stable device order is important. Anyway, this was just a side remark, as mentioned before the patch itself works.","commit_id":"2a916afbf55a14b523cb4de6afd7d269a8cc5a2b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"0c1c3e33792abd437eb6fc63a705c4d3572a6538","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    columns \u003d [\u0027KNAME\u0027, \u0027MODEL\u0027, \u0027SIZE\u0027, \u0027ROTA\u0027, \u0027TYPE\u0027]"},{"line_number":157,"context_line":"    report \u003d utils.execute(\u0027lsblk\u0027, \u0027-Pbi\u0027, \u0027-o{}\u0027.format(\u0027,\u0027.join(columns)),"},{"line_number":158,"context_line":"                           check_exit_code\u003d[0])[0]"},{"line_number":159,"context_line":"    # NOTE(TheJulia): With raid, there can be duplicate entries of the devices"},{"line_number":160,"context_line":"    # which may not be an issue with this, as always pick the smallest device,"},{"line_number":161,"context_line":"    # which would concievably always be the actual raid device, not just the"},{"line_number":162,"context_line":"    # parts of which it is built."},{"line_number":163,"context_line":"    lines \u003d report.splitlines()"},{"line_number":164,"context_line":"    context \u003d pyudev.Context()"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_72ff0a02","line":162,"range":{"start_line":159,"start_character":0,"end_line":162,"end_character":33},"in_reply_to":"3f79a3b5_5f1d800e","updated":"2018-09-27 19:43:25.000000000","message":"It would have meant all the tests would have had to have been touched, which is kind of one of those \"only do as a last resort\" kind of things. *shrugs*","commit_id":"2a916afbf55a14b523cb4de6afd7d269a8cc5a2b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9f5e0e39d711210ab06be9d9f41ec28293ead733","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    columns \u003d [\u0027KNAME\u0027, \u0027MODEL\u0027, \u0027SIZE\u0027, \u0027ROTA\u0027, \u0027TYPE\u0027]"},{"line_number":157,"context_line":"    report \u003d utils.execute(\u0027lsblk\u0027, \u0027-Pbi\u0027, \u0027-o{}\u0027.format(\u0027,\u0027.join(columns)),"},{"line_number":158,"context_line":"                           check_exit_code\u003d[0])[0]"},{"line_number":159,"context_line":"    # NOTE(TheJulia): With raid, there can be duplicate entries of the devices"},{"line_number":160,"context_line":"    # which may not be an issue with this, as always pick the smallest device,"},{"line_number":161,"context_line":"    # which would concievably always be the actual raid device, not just the"},{"line_number":162,"context_line":"    # parts of which it is built."},{"line_number":163,"context_line":"    lines \u003d report.splitlines()"},{"line_number":164,"context_line":"    context \u003d pyudev.Context()"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_bde8d515","line":162,"range":{"start_line":159,"start_character":0,"end_line":162,"end_character":33},"in_reply_to":"3f79a3b5_86d95a23","updated":"2018-09-05 18:20:16.000000000","message":"Okay, I kind of agree with this. I guess I\u0027m wondering how we handle that or what the data might look at because then we would have to determine what the parent devices are....","commit_id":"2a916afbf55a14b523cb4de6afd7d269a8cc5a2b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5bd6e5f7188e868fb11b347f6bd08df4ddaeba20","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    columns \u003d [\u0027KNAME\u0027, \u0027MODEL\u0027, \u0027SIZE\u0027, \u0027ROTA\u0027, \u0027TYPE\u0027]"},{"line_number":157,"context_line":"    report \u003d utils.execute(\u0027lsblk\u0027, \u0027-Pbi\u0027, \u0027-o{}\u0027.format(\u0027,\u0027.join(columns)),"},{"line_number":158,"context_line":"                           check_exit_code\u003d[0])[0]"},{"line_number":159,"context_line":"    # NOTE(TheJulia): With raid, there can be duplicate entries of the devices"},{"line_number":160,"context_line":"    # which may not be an issue with this, as always pick the smallest device,"},{"line_number":161,"context_line":"    # which would concievably always be the actual raid device, not just the"},{"line_number":162,"context_line":"    # parts of which it is built."},{"line_number":163,"context_line":"    lines \u003d report.splitlines()"},{"line_number":164,"context_line":"    context \u003d pyudev.Context()"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_2cc8a71f","line":162,"range":{"start_line":159,"start_character":0,"end_line":162,"end_character":33},"in_reply_to":"3f79a3b5_bde8d515","updated":"2018-09-25 02:21:35.000000000","message":"Going back to the prior discussion, set is not going to work because the test orders are all going to change. On the other hand, deduping by known kernel device name seems to be ideal as that _should_ prevent MPIO issues from causing too much chaos (as long as multipathd is running at least).","commit_id":"2a916afbf55a14b523cb4de6afd7d269a8cc5a2b"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"c62bb26ed292592a8e8548281092856633a50bcb","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"def list_all_block_devices(block_type\u003d\u0027disk\u0027,"},{"line_number":115,"context_line":"                           ignore_raid\u003dFalse):"},{"line_number":116,"context_line":"    \"\"\"List all physical block devices"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    The switches we use for lsblk: P for KEY\u003d\"value\" output, b for size output"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_eaf83a7f","line":115,"updated":"2018-11-01 19:44:55.000000000","message":"We aren\u0027t using this parameter anywhere, nor are we testing it. What\u0027s the use of adding it? For out-of-tree HW managers to use?","commit_id":"c540731aee9016a7ad48380f43999094f126c355"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"6674ed356d984c0f76a06805e0c77c8ee91a8b7c","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"def list_all_block_devices(block_type\u003d\u0027disk\u0027,"},{"line_number":115,"context_line":"                           ignore_raid\u003dFalse):"},{"line_number":116,"context_line":"    \"\"\"List all physical block devices"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    The switches we use for lsblk: P for KEY\u003d\"value\" output, b for size output"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_6a48aab3","line":115,"in_reply_to":"3f79a3b5_4a128eb5","updated":"2018-11-01 19:52:29.000000000","message":"Right, I see it used here, just not in a call site. Wanted to make sure it was for out of tree stuff.","commit_id":"c540731aee9016a7ad48380f43999094f126c355"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9883ed05500fae4ca5fe171ad6594439bbaf9979","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"def list_all_block_devices(block_type\u003d\u0027disk\u0027,"},{"line_number":115,"context_line":"                           ignore_raid\u003dFalse):"},{"line_number":116,"context_line":"    \"\"\"List all physical block devices"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    The switches we use for lsblk: P for KEY\u003d\"value\" output, b for size output"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_4a128eb5","line":115,"in_reply_to":"3f79a3b5_eaf83a7f","updated":"2018-11-01 19:50:45.000000000","message":"Line 189. My thought was so that out of tree hardware managers could get a view where multi-device devices are filtered out.","commit_id":"c540731aee9016a7ad48380f43999094f126c355"}],"ironic_python_agent/tests/unit/test_hardware.py":[{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"c62bb26ed292592a8e8548281092856633a50bcb","unresolved":false,"context_lines":[{"line_number":858,"context_line":"        mock_cached_node.return_value \u003d None"},{"line_number":859,"context_line":"        mocked_execute.return_value \u003d (RAID_BLK_DEVICE_TEMPLATE, \u0027\u0027)"},{"line_number":860,"context_line":"        # This should ideally select the smallest device and in theory raid"},{"line_number":861,"context_line":"        # should always be smaller"},{"line_number":862,"context_line":"        self.assertEqual(\u0027/dev/md0\u0027, self.hardware.get_os_install_device())"},{"line_number":863,"context_line":"        mocked_execute.assert_called_once_with("},{"line_number":864,"context_line":"            \u0027lsblk\u0027, \u0027-Pbi\u0027, \u0027-oKNAME,MODEL,SIZE,ROTA,TYPE\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_eadfda08","line":861,"updated":"2018-11-01 19:44:55.000000000","message":"Well, RAID1, yes. Other RAID types could be larger.\n\nThough, I don\u0027t think this patch is trying to select RAID every time, rather just make it an option. So with root device hints, this doesn\u0027t block using RAID0 and such.","commit_id":"c540731aee9016a7ad48380f43999094f126c355"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"6674ed356d984c0f76a06805e0c77c8ee91a8b7c","unresolved":false,"context_lines":[{"line_number":858,"context_line":"        mock_cached_node.return_value \u003d None"},{"line_number":859,"context_line":"        mocked_execute.return_value \u003d (RAID_BLK_DEVICE_TEMPLATE, \u0027\u0027)"},{"line_number":860,"context_line":"        # This should ideally select the smallest device and in theory raid"},{"line_number":861,"context_line":"        # should always be smaller"},{"line_number":862,"context_line":"        self.assertEqual(\u0027/dev/md0\u0027, self.hardware.get_os_install_device())"},{"line_number":863,"context_line":"        mocked_execute.assert_called_once_with("},{"line_number":864,"context_line":"            \u0027lsblk\u0027, \u0027-Pbi\u0027, \u0027-oKNAME,MODEL,SIZE,ROTA,TYPE\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_cad0dec9","line":861,"in_reply_to":"3f79a3b5_4a604e35","updated":"2018-11-01 19:52:29.000000000","message":"Yep, just thought-streaming here more than anything. If the commit message was \"try to pick raid if available\" I\u0027d be complaining here :)","commit_id":"c540731aee9016a7ad48380f43999094f126c355"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a8a92e5f571b3954cad161adb4b36debcc7035e8","unresolved":false,"context_lines":[{"line_number":858,"context_line":"        mock_cached_node.return_value \u003d None"},{"line_number":859,"context_line":"        mocked_execute.return_value \u003d (RAID_BLK_DEVICE_TEMPLATE, \u0027\u0027)"},{"line_number":860,"context_line":"        # This should ideally select the smallest device and in theory raid"},{"line_number":861,"context_line":"        # should always be smaller"},{"line_number":862,"context_line":"        self.assertEqual(\u0027/dev/md0\u0027, self.hardware.get_os_install_device())"},{"line_number":863,"context_line":"        mocked_execute.assert_called_once_with("},{"line_number":864,"context_line":"            \u0027lsblk\u0027, \u0027-Pbi\u0027, \u0027-oKNAME,MODEL,SIZE,ROTA,TYPE\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_92076971","line":861,"in_reply_to":"3f79a3b5_cad0dec9","updated":"2018-11-02 13:21:48.000000000","message":"+++ I would be too. I just put the note in for clarity since that is a possibility... and not necessarily a bad one, but yeah.","commit_id":"c540731aee9016a7ad48380f43999094f126c355"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9883ed05500fae4ca5fe171ad6594439bbaf9979","unresolved":false,"context_lines":[{"line_number":858,"context_line":"        mock_cached_node.return_value \u003d None"},{"line_number":859,"context_line":"        mocked_execute.return_value \u003d (RAID_BLK_DEVICE_TEMPLATE, \u0027\u0027)"},{"line_number":860,"context_line":"        # This should ideally select the smallest device and in theory raid"},{"line_number":861,"context_line":"        # should always be smaller"},{"line_number":862,"context_line":"        self.assertEqual(\u0027/dev/md0\u0027, self.hardware.get_os_install_device())"},{"line_number":863,"context_line":"        mocked_execute.assert_called_once_with("},{"line_number":864,"context_line":"            \u0027lsblk\u0027, \u0027-Pbi\u0027, \u0027-oKNAME,MODEL,SIZE,ROTA,TYPE\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_4a604e35","line":861,"in_reply_to":"3f79a3b5_eadfda08","updated":"2018-11-01 19:50:45.000000000","message":"That is true, but we should still end up on the smallest device. A hint can override naturally. Previously I\u0027ve had cases where people have tried to use root device hints to select ataraid based devices and in Arne\u0027s case a multidevice they created in their hardware manager.","commit_id":"c540731aee9016a7ad48380f43999094f126c355"}]}
