)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"131abd54c9f5e1a8d6436321b86a6f3e2265a498","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add local_root to block_device_info"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"block_device_info currently doesn\u0027t contain a driver BDM for a local"},{"line_number":10,"context_line":"root disk, meaning it isn\u0027t available to drivers. We need this in"},{"line_number":11,"context_line":"order to later expose uuid to drivers."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Part of bp local-disk-serial-numbers"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5f93b717_e92125fd","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":38},"updated":"2018-01-26 14:43:24.000000000","message":"a.k.a.\n\n  Expose an instance\u0027s local root disk as a BDM via the\n  \u0027nova.virt.driver.block_device_info\u0027 function.","commit_id":"7150ad0ff4f997571e2b50fb2743e96b84821fea"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cb22de8869145678606eb7a0c10819d538b95bca","unresolved":false,"context_lines":[{"line_number":3398,"context_line":"            \u0027disk_bus\u0027: \u0027virtio\u0027,"},{"line_number":3399,"context_line":"            \u0027delete_on_termination\u0027: True,"},{"line_number":3400,"context_line":"            \u0027guest_format\u0027: None,"},{"line_number":3401,"context_line":"            \u0027volume_size\u0027: 1,"},{"line_number":3402,"context_line":"            \u0027boot_index\u0027: 0,"},{"line_number":3403,"context_line":"        })"},{"line_number":3404,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_89b2b793","line":3401,"range":{"start_line":3401,"start_character":12,"end_line":3401,"end_character":29},"updated":"2018-05-09 19:12:30.000000000","message":"nit: I\u0027m pretty sure this would always be None for local image BDMs.","commit_id":"0d09c873e79c734e9727088c7e30c8b00133d119"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b022b636aaa0b7411466131d55f21a7e3c6a80a8","unresolved":false,"context_lines":[{"line_number":3429,"context_line":""},{"line_number":3430,"context_line":"            mock_get_by_instance_uuid.assert_called_once_with(self.context,"},{"line_number":3431,"context_line":"                                                              instance[\u0027uuid\u0027])"},{"line_number":3432,"context_line":"            self.assertEqual(expected_block_device_info, block_device_info)"},{"line_number":3433,"context_line":""},{"line_number":3434,"context_line":"    def test_inject_network_info(self):"},{"line_number":3435,"context_line":"        # Ensure we can inject network info."}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_6955db1c","line":3432,"updated":"2018-05-09 19:20:44.000000000","message":"I think this is failing because we\u0027re using the fake virt driver which doesn\u0027t override the \"need_legacy_block_device_info\" property from the base compute driver class and the legacy transformation removes all of the field values you care about.","commit_id":"0d09c873e79c734e9727088c7e30c8b00133d119"}],"nova/virt/driver.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b8d59c8366b6b73266ba2b3ba4d144519d10a578","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    Virt drivers expect block device mapping to be presented in the format"},{"line_number":41,"context_line":"    of a dict containing the following keys:"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    - root_device_name: device name of the root disk"},{"line_number":44,"context_line":"    - ephemerals: a (potentially empty) list of DriverEphemeralBlockDevice"},{"line_number":45,"context_line":"                  instances"},{"line_number":46,"context_line":"    - swap: An instance of DriverSwapBlockDevice or None"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_068d687a","line":43,"updated":"2018-05-07 20:00:03.000000000","message":"Please update the docstring with the new local_root output.","commit_id":"c8edf291de48587ace02375c2cd16bd069e48318"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"02adb2bb57f63ce1c827abcac6d4eb4d91d9f39e","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    Virt drivers expect block device mapping to be presented in the format"},{"line_number":41,"context_line":"    of a dict containing the following keys:"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    - root_device_name: device name of the root disk"},{"line_number":44,"context_line":"    - ephemerals: a (potentially empty) list of DriverEphemeralBlockDevice"},{"line_number":45,"context_line":"                  instances"},{"line_number":46,"context_line":"    - swap: An instance of DriverSwapBlockDevice or None"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_d5d12acf","line":43,"in_reply_to":"5f7c97a3_068d687a","updated":"2018-05-09 16:13:01.000000000","message":"Done.","commit_id":"c8edf291de48587ace02375c2cd16bd069e48318"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b8d59c8366b6b73266ba2b3ba4d144519d10a578","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    return block_device_info"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def block_device_info_get_root_device(block_device_info):"},{"line_number":71,"context_line":"    block_device_info \u003d block_device_info or {}"},{"line_number":72,"context_line":"    return block_device_info.get(\u0027root_device_name\u0027)"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_06bb280e","line":70,"range":{"start_line":70,"start_character":0,"end_line":70,"end_character":38},"updated":"2018-05-07 20:00:03.000000000","message":"suffice to say that having a function called block_device_info_get_root_device() that returns something different from a function called block_device_info_get_root() is *exceedingly* confusing.","commit_id":"c8edf291de48587ace02375c2cd16bd069e48318"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"02adb2bb57f63ce1c827abcac6d4eb4d91d9f39e","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    return block_device_info"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def block_device_info_get_root_device(block_device_info):"},{"line_number":71,"context_line":"    block_device_info \u003d block_device_info or {}"},{"line_number":72,"context_line":"    return block_device_info.get(\u0027root_device_name\u0027)"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_f586a6db","line":70,"range":{"start_line":70,"start_character":0,"end_line":70,"end_character":38},"in_reply_to":"5f7c97a3_06bb280e","updated":"2018-05-09 16:13:01.000000000","message":"Agreed. I\u0027ve added prior change Ieae385ba to rename it.","commit_id":"c8edf291de48587ace02375c2cd16bd069e48318"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b022b636aaa0b7411466131d55f21a7e3c6a80a8","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    swap \u003d virt_block_device.get_swap(swap_list)"},{"line_number":59,"context_line":"    volumes \u003d virt_block_device.convert_all_volumes(*block_device_mapping)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    block_device_info \u003d {"},{"line_number":62,"context_line":"        \u0027root_device_name\u0027: instance.root_device_name,"},{"line_number":63,"context_line":"        \u0027local_root\u0027: local_root,"},{"line_number":64,"context_line":"        \u0027ephemerals\u0027: ephemerals,"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_69039b10","line":61,"updated":"2018-05-09 19:20:44.000000000","message":"This is now not matching the \"legacy\" block_device_info created in the compute manager, see:\n\nComputeManager._block_device_info_to_legacy","commit_id":"0d09c873e79c734e9727088c7e30c8b00133d119"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cb22de8869145678606eb7a0c10819d538b95bca","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    return swap and swap[\u0027device_name\u0027] and swap[\u0027swap_size\u0027] \u003e 0"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def block_device_info_get_root(block_device_info):"},{"line_number":88,"context_line":"    from nova import block_device"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    if block_device_info is None:"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_c9eaef73","line":87,"range":{"start_line":87,"start_character":4,"end_line":87,"end_character":30},"updated":"2018-05-09 19:12:30.000000000","message":"nit: a docstring on this would be nice to indicate this is a common way to get the root bdm for both image-backed and volume-backed instances.","commit_id":"0d09c873e79c734e9727088c7e30c8b00133d119"}]}
