)]}'
{"nova/virt/block_device.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6a0ce1562f768f0d87a858ee4f5d8c6d89583e09","unresolved":false,"context_lines":[{"line_number":454,"context_line":"        connection_info \u003d volume_api.initialize_connection(context,"},{"line_number":455,"context_line":"                                                           volume_id,"},{"line_number":456,"context_line":"                                                           connector)"},{"line_number":457,"context_line":"        update_connection_info("},{"line_number":458,"context_line":"            self[\u0027connection_info\u0027], connection_info, volume_id)"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"        # If do_driver_attach is False, we will attach a volume to an instance"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_9904b616","line":457,"range":{"start_line":457,"start_character":8,"end_line":457,"end_character":30},"updated":"2019-09-30 20:21:19.000000000","message":"so now this call *can\u0027t* set multiattach, even if self[\u0027connection_info\u0027] is somehow f\u0027ed up","commit_id":"820eec39c100888983b1df4a8ea071a7abb108a6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6a0ce1562f768f0d87a858ee4f5d8c6d89583e09","unresolved":false,"context_lines":[{"line_number":540,"context_line":"        connection_info \u003d volume_api.attachment_update("},{"line_number":541,"context_line":"            context, attachment_id, connector,"},{"line_number":542,"context_line":"            self[\u0027mount_device\u0027])[\u0027connection_info\u0027]"},{"line_number":543,"context_line":"        update_connection_info("},{"line_number":544,"context_line":"            self[\u0027connection_info\u0027], connection_info, volume_id,"},{"line_number":545,"context_line":"            multiattach\u003dvol_multiattach)"},{"line_number":546,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_992d9696","line":543,"range":{"start_line":543,"start_character":8,"end_line":543,"end_character":30},"updated":"2019-09-30 20:21:19.000000000","message":"and this one sets it based on vol_multiattach, which is almost the same, but the updating of connection_info is all done within the update_connection_info method","commit_id":"820eec39c100888983b1df4a8ea071a7abb108a6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6a0ce1562f768f0d87a858ee4f5d8c6d89583e09","unresolved":false,"context_lines":[{"line_number":655,"context_line":"                                                       self[\u0027attachment_id\u0027])"},{"line_number":656,"context_line":"            connection_info \u003d attachment_ref[\u0027connection_info\u0027]"},{"line_number":657,"context_line":""},{"line_number":658,"context_line":"        # The _volume_attach method stashes a \u0027multiattach\u0027 flag in the"},{"line_number":659,"context_line":"        # BlockDeviceMapping.connection_info which is not persisted back"},{"line_number":660,"context_line":"        # in cinder so we need to make sure and preserve the multiattach flag"},{"line_number":661,"context_line":"        # if it\u0027s set. Note that this is safe to do across refreshes because"},{"line_number":662,"context_line":"        # the multiattach capability of a volume cannot be changed while the"},{"line_number":663,"context_line":"        # volume is in-use."},{"line_number":664,"context_line":"        multiattach \u003d self[\u0027connection_info\u0027].get(\u0027multiattach\u0027, False)"},{"line_number":665,"context_line":"        update_connection_info("},{"line_number":666,"context_line":"            self[\u0027connection_info\u0027], connection_info, self.volume_id,"},{"line_number":667,"context_line":"            multiattach\u003dmultiattach)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_f93daac3","line":664,"range":{"start_line":658,"start_character":0,"end_line":664,"end_character":71},"updated":"2019-09-30 20:21:19.000000000","message":"I guess this could have stayed inside the `else` above (and initialize multiattach to None otherwise), but point is determining whether to multiattach is calculated here rather than in the helper","commit_id":"820eec39c100888983b1df4a8ea071a7abb108a6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6a0ce1562f768f0d87a858ee4f5d8c6d89583e09","unresolved":false,"context_lines":[{"line_number":932,"context_line":""},{"line_number":933,"context_line":""},{"line_number":934,"context_line":"def update_connection_info(old_conn_info, new_conn_info, volume_id,"},{"line_number":935,"context_line":"                           multiattach\u003dNone):"},{"line_number":936,"context_line":"    \"\"\"Helper function to preserve serial, multipath_id and multiattach keys."},{"line_number":937,"context_line":""},{"line_number":938,"context_line":"    :param old_conn_info: dict of existing BlockDeviceMapping.connection_info."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_1939a6d5","line":935,"range":{"start_line":935,"start_character":27,"end_line":935,"end_character":43},"updated":"2019-09-30 20:21:19.000000000","message":"this","commit_id":"820eec39c100888983b1df4a8ea071a7abb108a6"}]}
