)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fe7111801f580e193d6555d1b0a84333f06c383d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Choe, Cheng-Dae \u003cwhitekid@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-08-18 01:37:23 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"tuning extended volume extensions"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"extended volume extensions has poor performance becuase it reterives"},{"line_number":10,"context_line":"block device mapping information one by one query."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa1b9901_45d0db53","line":7,"updated":"2015-08-17 19:54:42.000000000","message":"s/extensions/extension/","commit_id":"f0177243c3021de99606f746b8a54f6aa0d69d41"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fe7111801f580e193d6555d1b0a84333f06c383d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"tuning extended volume extensions"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"extended volume extensions has poor performance becuase it reterives"},{"line_number":10,"context_line":"block device mapping information one by one query."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"with this changes, it reterive block device mapping informace at once."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa1b9901_25cfe7b1","line":9,"updated":"2015-08-17 19:54:42.000000000","message":"s/extensions/extension/\n\ns/becuase/because/\n\ns/reterives/retrieves/","commit_id":"f0177243c3021de99606f746b8a54f6aa0d69d41"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fe7111801f580e193d6555d1b0a84333f06c383d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"extended volume extensions has poor performance becuase it reterives"},{"line_number":10,"context_line":"block device mapping information one by one query."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"with this changes, it reterive block device mapping informace at once."},{"line_number":13,"context_line":"so it improves performance."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1483335"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa1b9901_85bef3fd","line":12,"updated":"2015-08-17 19:54:42.000000000","message":"s/reterive/retrieve/\n\n\"at once\" - you could better explain that this is doing a bulk query with all of the instances in the request rather than one DB API query per instance.","commit_id":"f0177243c3021de99606f746b8a54f6aa0d69d41"},{"author":{"_account_id":5003,"name":"Choe, Cheng-Dae","email":"whitekid@gmail.com","username":"whitekid"},"change_message_id":"6e9104c50987b1e3221d33f439ae752fce61e9a2","unresolved":false,"context_lines":[{"line_number":9,"context_line":"extended volume extensions has poor performance becuase it reterives"},{"line_number":10,"context_line":"block device mapping information one by one query."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"with this changes, it reterive block device mapping informace at once."},{"line_number":13,"context_line":"so it improves performance."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1483335"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa1b9901_a10de438","line":12,"in_reply_to":"fa1b9901_85bef3fd","updated":"2015-08-19 07:33:51.000000000","message":"thanks.","commit_id":"f0177243c3021de99606f746b8a54f6aa0d69d41"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fe7111801f580e193d6555d1b0a84333f06c383d","unresolved":false,"context_lines":[{"line_number":10,"context_line":"block device mapping information one by one query."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"with this changes, it reterive block device mapping informace at once."},{"line_number":13,"context_line":"so it improves performance."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1483335"},{"line_number":16,"context_line":"Change-Id: Ib192e8b51c702e605e53e64daeacaab39f73a34b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa1b9901_650abfd4","line":13,"updated":"2015-08-17 19:54:42.000000000","message":"Do you have actual numbers to justify this change?  That could be documented here or in the bug report, but it\u0027d be good to actually justify the performance gain if we\u0027re going to change the API code rather than just basing this on a feeling that it\u0027s going to be significantly better.","commit_id":"f0177243c3021de99606f746b8a54f6aa0d69d41"},{"author":{"_account_id":5003,"name":"Choe, Cheng-Dae","email":"whitekid@gmail.com","username":"whitekid"},"change_message_id":"6e9104c50987b1e3221d33f439ae752fce61e9a2","unresolved":false,"context_lines":[{"line_number":10,"context_line":"block device mapping information one by one query."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"with this changes, it reterive block device mapping informace at once."},{"line_number":13,"context_line":"so it improves performance."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1483335"},{"line_number":16,"context_line":"Change-Id: Ib192e8b51c702e605e53e64daeacaab39f73a34b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa1b9901_1e03d110","line":13,"in_reply_to":"fa1b9901_650abfd4","updated":"2015-08-19 07:33:51.000000000","message":"In our case, we have 2000 instance, origianl code takes 6 second.\nwith bulkk query it taks 2 second.","commit_id":"f0177243c3021de99606f746b8a54f6aa0d69d41"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"9edc47eabf473a39a88467671ca1e422cf4fd2dd","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"tuning extended volume extension"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"extended volume extension has poor performance becuase it reterives"},{"line_number":10,"context_line":"block device mapping information one by one query."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"with this changes, it retrieve block device mapping informtion with bulk"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"fa1b9901_e5509dd6","line":9,"updated":"2015-09-11 17:53:17.000000000","message":"s/reterives/retrieves/ (femtonit; spelling correction)","commit_id":"4f0772256f429f0ba59ad1e6dee88c490d4a6152"}],"nova/api/openstack/compute/contrib/extended_volumes.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ffb12e9e8f3d5c650ac6d4feebfafcfc04bb5fc9","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    def _extend_server(self, context, servers):"},{"line_number":29,"context_line":"        uuids \u003d [server[\u0027id\u0027] for server in servers]"},{"line_number":30,"context_line":"        bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":31,"context_line":"                context, uuids)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        key \u003d \"%s:volumes_attached\" % Extended_volumes.alias"},{"line_number":34,"context_line":"        for server in servers:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_ea039240","line":31,"updated":"2015-08-11 16:07:53.000000000","message":"So we\u0027re changing the interface of get_by_instance_uuid() to take a list of UUIDs instead of a single UUID?  That bothers me.  If we\u0027re going to change the method to take a list like this, then we should probably also alter the method name to pluralize it, e.g., get_by_instance_uuids().  (That also allows the easy addition of a backwards-compat method that takes a single UUID and calls the new get_by_instance_uuids() with a list of one element.)","commit_id":"4f832ca87251d28effd87bfd87a6e6e93abdd839"},{"author":{"_account_id":5003,"name":"Choe, Cheng-Dae","email":"whitekid@gmail.com","username":"whitekid"},"change_message_id":"761bd38ebde157c1ea72f82f54d6a85e00ed727e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    def _extend_server(self, context, servers):"},{"line_number":29,"context_line":"        uuids \u003d [server[\u0027id\u0027] for server in servers]"},{"line_number":30,"context_line":"        bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":31,"context_line":"                context, uuids)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        key \u003d \"%s:volumes_attached\" % Extended_volumes.alias"},{"line_number":34,"context_line":"        for server in servers:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_287662d7","line":31,"in_reply_to":"1a4dcd0f_ea039240","updated":"2015-08-12 01:50:23.000000000","message":"Good point.. I wil revert get_by_instance_uuid() and create new get_by_instance_uuids()","commit_id":"4f832ca87251d28effd87bfd87a6e6e93abdd839"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ffb12e9e8f3d5c650ac6d4feebfafcfc04bb5fc9","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        key \u003d \"%s:volumes_attached\" % Extended_volumes.alias"},{"line_number":34,"context_line":"        for server in servers:"},{"line_number":35,"context_line":"            _dbms \u003d []"},{"line_number":36,"context_line":"            for bdm in bdms:"},{"line_number":37,"context_line":"                if not bdm.volume_id:"},{"line_number":38,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_aa74aafd","line":35,"updated":"2015-08-11 16:07:53.000000000","message":"I\u0027d suggest a more descriptive variable name; we usually use the convention of a leading underscore for local variables and parameters when we don\u0027t intend to use that variable.  Perhaps \"bdms_from_db\" or \"db_bdms\"?","commit_id":"4f832ca87251d28effd87bfd87a6e6e93abdd839"},{"author":{"_account_id":5003,"name":"Choe, Cheng-Dae","email":"whitekid@gmail.com","username":"whitekid"},"change_message_id":"761bd38ebde157c1ea72f82f54d6a85e00ed727e","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        key \u003d \"%s:volumes_attached\" % Extended_volumes.alias"},{"line_number":34,"context_line":"        for server in servers:"},{"line_number":35,"context_line":"            _dbms \u003d []"},{"line_number":36,"context_line":"            for bdm in bdms:"},{"line_number":37,"context_line":"                if not bdm.volume_id:"},{"line_number":38,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_48416e62","line":35,"in_reply_to":"1a4dcd0f_aa74aafd","updated":"2015-08-12 01:50:23.000000000","message":"db_bdms looks good","commit_id":"4f832ca87251d28effd87bfd87a6e6e93abdd839"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ffb12e9e8f3d5c650ac6d4feebfafcfc04bb5fc9","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                if not bdm.instance_uuid \u003d\u003d server[\u0027id\u0027]:"},{"line_number":40,"context_line":"                    continue"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"                _dbms.append(bdm)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"            volume_ids \u003d [bdm.volume_id for bdm in _dbms]"},{"line_number":45,"context_line":"            server[key] \u003d [{\u0027id\u0027: volume_id} for volume_id in volume_ids]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_2a417a63","line":42,"updated":"2015-08-11 16:07:53.000000000","message":"You can turn this loop into a comprehension easily enough; using one of my suggestions for renaming _dbms:\n\n    db_bdms \u003d [bdm for bdm in bdms if bdm.volume_id and\n               bdm.instance_uuid \u003d\u003d server[\u0027id\u0027]]","commit_id":"4f832ca87251d28effd87bfd87a6e6e93abdd839"},{"author":{"_account_id":5003,"name":"Choe, Cheng-Dae","email":"whitekid@gmail.com","username":"whitekid"},"change_message_id":"761bd38ebde157c1ea72f82f54d6a85e00ed727e","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                if not bdm.instance_uuid \u003d\u003d server[\u0027id\u0027]:"},{"line_number":40,"context_line":"                    continue"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"                _dbms.append(bdm)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"            volume_ids \u003d [bdm.volume_id for bdm in _dbms]"},{"line_number":45,"context_line":"            server[key] \u003d [{\u0027id\u0027: volume_id} for volume_id in volume_ids]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_2371a576","line":42,"in_reply_to":"1a4dcd0f_2a417a63","updated":"2015-08-12 01:50:23.000000000","message":"looks good. thanks","commit_id":"4f832ca87251d28effd87bfd87a6e6e93abdd839"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ffb12e9e8f3d5c650ac6d4feebfafcfc04bb5fc9","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"                _dbms.append(bdm)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"            volume_ids \u003d [bdm.volume_id for bdm in _dbms]"},{"line_number":45,"context_line":"            server[key] \u003d [{\u0027id\u0027: volume_id} for volume_id in volume_ids]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    @wsgi.extends"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_0d129857","line":44,"updated":"2015-08-11 16:07:53.000000000","message":"Once you use my suggestion for the comprehension above, you can combine it with this comprehension and eliminate the temporary variable:\n\n    volume_ids \u003d [bdm.volume_id for bdm in bdms\n                  if bdm.volume_id and bdm.instance_uuid \u003d\u003d server[\u0027id\u0027]]","commit_id":"4f832ca87251d28effd87bfd87a6e6e93abdd839"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ffb12e9e8f3d5c650ac6d4feebfafcfc04bb5fc9","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                _dbms.append(bdm)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"            volume_ids \u003d [bdm.volume_id for bdm in _dbms]"},{"line_number":45,"context_line":"            server[key] \u003d [{\u0027id\u0027: volume_id} for volume_id in volume_ids]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    @wsgi.extends"},{"line_number":48,"context_line":"    def show(self, req, resp_obj, id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_edb08c45","line":45,"updated":"2015-08-11 16:07:53.000000000","message":"And again, simple to combine comprehensions\n\n    server[key] \u003d [{\u0027id\u0027: bdm.volume_id} for bdm in bdms\n                   if bdm.volume_id and bdm.instance_uuid \u003d\u003d server[\u0027id\u0027]]\n\nThat means we have something like 10 lines reduced to 2, and they\u0027re still pretty easy to understand :)","commit_id":"4f832ca87251d28effd87bfd87a6e6e93abdd839"},{"author":{"_account_id":5003,"name":"Choe, Cheng-Dae","email":"whitekid@gmail.com","username":"whitekid"},"change_message_id":"761bd38ebde157c1ea72f82f54d6a85e00ed727e","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                _dbms.append(bdm)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"            volume_ids \u003d [bdm.volume_id for bdm in _dbms]"},{"line_number":45,"context_line":"            server[key] \u003d [{\u0027id\u0027: volume_id} for volume_id in volume_ids]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    @wsgi.extends"},{"line_number":48,"context_line":"    def show(self, req, resp_obj, id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_23cd2585","line":45,"in_reply_to":"1a4dcd0f_edb08c45","updated":"2015-08-12 01:50:23.000000000","message":"Yeap.. list comprehension make short statement. But it make hard to read to me.. :D..\nI will apply that","commit_id":"4f832ca87251d28effd87bfd87a6e6e93abdd839"}],"nova/api/openstack/compute/legacy_v2/contrib/extended_volumes.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fe7111801f580e193d6555d1b0a84333f06c383d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":26,"context_line":"        super(ExtendedVolumesController, self).__init__(*args, **kwargs)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def _extend_server(self, context, servers):"},{"line_number":29,"context_line":"        uuids \u003d [server[\u0027id\u0027] for server in servers]"},{"line_number":30,"context_line":"        bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuids("},{"line_number":31,"context_line":"                context, uuids)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_85e7d33f","line":28,"updated":"2015-08-17 19:54:42.000000000","message":"What about the v2.1 API?\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/api/openstack/compute/extended_volumes.py#n30\n\nYour change is only touching the v2 API but would also need to update the v2.1 API which is the more current API version.","commit_id":"f0177243c3021de99606f746b8a54f6aa0d69d41"},{"author":{"_account_id":5003,"name":"Choe, Cheng-Dae","email":"whitekid@gmail.com","username":"whitekid"},"change_message_id":"6e9104c50987b1e3221d33f439ae752fce61e9a2","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":26,"context_line":"        super(ExtendedVolumesController, self).__init__(*args, **kwargs)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def _extend_server(self, context, servers):"},{"line_number":29,"context_line":"        uuids \u003d [server[\u0027id\u0027] for server in servers]"},{"line_number":30,"context_line":"        bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuids("},{"line_number":31,"context_line":"                context, uuids)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_21aa3471","line":28,"in_reply_to":"fa1b9901_85e7d33f","updated":"2015-08-19 07:33:51.000000000","message":"Yes. I will..","commit_id":"f0177243c3021de99606f746b8a54f6aa0d69d41"}],"nova/db/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fe7111801f580e193d6555d1b0a84333f06c383d","unresolved":false,"context_lines":[{"line_number":1195,"context_line":""},{"line_number":1196,"context_line":"def block_device_mapping_get_all_by_instances(context, instance_uuids,"},{"line_number":1197,"context_line":"                                              use_slave\u003dFalse):"},{"line_number":1198,"context_line":"    \"\"\"Get all block device mapping belonging to an instances.\"\"\""},{"line_number":1199,"context_line":"    return IMPL.block_device_mapping_get_all_by_instances(context,"},{"line_number":1200,"context_line":"                                                          instance_uuids,"},{"line_number":1201,"context_line":"                                                          use_slave)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_65315fa2","line":1198,"updated":"2015-08-17 19:54:42.000000000","message":"s/to an instances/for a list of instances/","commit_id":"f0177243c3021de99606f746b8a54f6aa0d69d41"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ffb12e9e8f3d5c650ac6d4feebfafcfc04bb5fc9","unresolved":false,"context_lines":[{"line_number":3958,"context_line":"@require_context"},{"line_number":3959,"context_line":"def block_device_mapping_get_all_by_instance(context, instance_uuid,"},{"line_number":3960,"context_line":"                                             use_slave\u003dFalse):"},{"line_number":3961,"context_line":"    if not isinstance(instance_uuid, collections.Sequence) or \\"},{"line_number":3962,"context_line":"        isinstance(instance_uuid, six.string_types):"},{"line_number":3963,"context_line":"        instance_uuid \u003d [instance_uuid]"},{"line_number":3964,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_0df7f88b","line":3961,"updated":"2015-08-11 16:07:53.000000000","message":"I like to eliminate backslash continuations wherever possible.  While it\u0027s often not possible to eliminate them in the method chaining case that appears all over the place in this file, we can definitely eliminate them from \u0027if\u0027 conditions by using parentheses:\n\n    if (not isinstance(instance_uuid, collections.Sequence) or\n            isinstance(instance_uuid, six.string_types)):\n        instance_uuid \u003d [instance_uuid]\n\nDo you have any performance data regarding how this change impacts the single-instance_uuid case?","commit_id":"4f832ca87251d28effd87bfd87a6e6e93abdd839"},{"author":{"_account_id":5003,"name":"Choe, Cheng-Dae","email":"whitekid@gmail.com","username":"whitekid"},"change_message_id":"761bd38ebde157c1ea72f82f54d6a85e00ed727e","unresolved":false,"context_lines":[{"line_number":3958,"context_line":"@require_context"},{"line_number":3959,"context_line":"def block_device_mapping_get_all_by_instance(context, instance_uuid,"},{"line_number":3960,"context_line":"                                             use_slave\u003dFalse):"},{"line_number":3961,"context_line":"    if not isinstance(instance_uuid, collections.Sequence) or \\"},{"line_number":3962,"context_line":"        isinstance(instance_uuid, six.string_types):"},{"line_number":3963,"context_line":"        instance_uuid \u003d [instance_uuid]"},{"line_number":3964,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_63000d67","line":3961,"in_reply_to":"1a4dcd0f_0df7f88b","updated":"2015-08-12 01:50:23.000000000","message":"In our case, we have 1700 instance, single-instance_uuid taks 6 seconds, and list-instance_uuids takes just 2 seconds.","commit_id":"4f832ca87251d28effd87bfd87a6e6e93abdd839"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"cb6d13097ceade56d479a777ed4c9e087ffabee1","unresolved":false,"context_lines":[{"line_number":3964,"context_line":""},{"line_number":3965,"context_line":""},{"line_number":3966,"context_line":"@require_context"},{"line_number":3967,"context_line":"def block_device_mapping_get_all_by_instances(context, instance_uuids,"},{"line_number":3968,"context_line":"                                              use_slave\u003dFalse):"},{"line_number":3969,"context_line":"    return _block_device_mapping_get_query(context, use_slave\u003duse_slave).\\"},{"line_number":3970,"context_line":"        filter(models.BlockDeviceMapping.instance_uuid.in_(instance_uuids)).\\"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_090fb537","line":3967,"updated":"2015-08-12 15:22:46.000000000","message":"There should probably be tests added to nova/tests/unit/db/test_db_api.py to cover the new function…","commit_id":"091df78545b2c08c1d4d757fe418143fa644ec33"},{"author":{"_account_id":5003,"name":"Choe, Cheng-Dae","email":"whitekid@gmail.com","username":"whitekid"},"change_message_id":"85422af95f50a4425269b1f47088997aa373f741","unresolved":false,"context_lines":[{"line_number":3964,"context_line":""},{"line_number":3965,"context_line":""},{"line_number":3966,"context_line":"@require_context"},{"line_number":3967,"context_line":"def block_device_mapping_get_all_by_instances(context, instance_uuids,"},{"line_number":3968,"context_line":"                                              use_slave\u003dFalse):"},{"line_number":3969,"context_line":"    return _block_device_mapping_get_query(context, use_slave\u003duse_slave).\\"},{"line_number":3970,"context_line":"        filter(models.BlockDeviceMapping.instance_uuid.in_(instance_uuids)).\\"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_2462af3e","line":3967,"in_reply_to":"1a4dcd0f_090fb537","updated":"2015-08-13 10:08:28.000000000","message":"Ok.. I will...","commit_id":"091df78545b2c08c1d4d757fe418143fa644ec33"}],"nova/objects/block_device.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2d32db5c461f72f8492d30f419291c239650c728","unresolved":false,"context_lines":[{"line_number":263,"context_line":"    # Version 1.12: BlockDeviceMapping \u003c\u003d version 1.11"},{"line_number":264,"context_line":"    # Version 1.13: BlockDeviceMapping \u003c\u003d version 1.12"},{"line_number":265,"context_line":"    # Version 1.14: BlockDeviceMapping \u003c\u003d version 1.13"},{"line_number":266,"context_line":"    # Version 1.15: BlockDeviceMapping \u003c\u003d version 1.14"},{"line_number":267,"context_line":"    VERSION \u003d \u00271.15\u0027"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_6c3bfed1","line":266,"updated":"2015-08-12 08:35:21.000000000","message":"you need bump the object version","commit_id":"14ebd3ff0ed0fd324b519635010e3859f1e1a411"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"cb6d13097ceade56d479a777ed4c9e087ffabee1","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    # Version 1.13: BlockDeviceMapping \u003c\u003d version 1.12"},{"line_number":265,"context_line":"    # Version 1.14: BlockDeviceMapping \u003c\u003d version 1.13"},{"line_number":266,"context_line":"    # Version 1.15: BlockDeviceMapping \u003c\u003d version 1.14"},{"line_number":267,"context_line":"    VERSION \u003d \u00271.15\u0027"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    fields \u003d {"},{"line_number":270,"context_line":"        \u0027objects\u0027: fields.ListOfObjectsField(\u0027BlockDeviceMapping\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_c9a8ed22","line":267,"updated":"2015-08-12 15:22:46.000000000","message":"Still need to bump the version…","commit_id":"091df78545b2c08c1d4d757fe418143fa644ec33"},{"author":{"_account_id":5003,"name":"Choe, Cheng-Dae","email":"whitekid@gmail.com","username":"whitekid"},"change_message_id":"85422af95f50a4425269b1f47088997aa373f741","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    # Version 1.13: BlockDeviceMapping \u003c\u003d version 1.12"},{"line_number":265,"context_line":"    # Version 1.14: BlockDeviceMapping \u003c\u003d version 1.13"},{"line_number":266,"context_line":"    # Version 1.15: BlockDeviceMapping \u003c\u003d version 1.14"},{"line_number":267,"context_line":"    VERSION \u003d \u00271.15\u0027"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    fields \u003d {"},{"line_number":270,"context_line":"        \u0027objects\u0027: fields.ListOfObjectsField(\u0027BlockDeviceMapping\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_84de23d8","line":267,"in_reply_to":"1a4dcd0f_c9a8ed22","updated":"2015-08-13 10:08:28.000000000","message":"You meat that.. I should be 1.16?","commit_id":"091df78545b2c08c1d4d757fe418143fa644ec33"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"85ea2b89e45707b4e5d487d466f30911a1ee9bc5","unresolved":false,"context_lines":[{"line_number":263,"context_line":"    # Version 1.12: BlockDeviceMapping \u003c\u003d version 1.11"},{"line_number":264,"context_line":"    # Version 1.13: BlockDeviceMapping \u003c\u003d version 1.12"},{"line_number":265,"context_line":"    # Version 1.14: BlockDeviceMapping \u003c\u003d version 1.13"},{"line_number":266,"context_line":"    # Version 1.15: BlockDeviceMapping \u003c\u003d version 1.14"},{"line_number":267,"context_line":"    VERSION \u003d \u00271.15\u0027"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_9f3745e2","line":266,"updated":"2015-08-13 11:59:03.000000000","message":"you need bump this version to 1.16. There is similar patch https://review.openstack.org/#/c/211288/4  although it is not finished, but I guess you can learn something from there.","commit_id":"395d6a4852257c2485bb017eeb0f4689f7b68858"},{"author":{"_account_id":5003,"name":"Choe, Cheng-Dae","email":"whitekid@gmail.com","username":"whitekid"},"change_message_id":"21b39d877b6d85e86acbae13d646017d85ac66e8","unresolved":false,"context_lines":[{"line_number":263,"context_line":"    # Version 1.12: BlockDeviceMapping \u003c\u003d version 1.11"},{"line_number":264,"context_line":"    # Version 1.13: BlockDeviceMapping \u003c\u003d version 1.12"},{"line_number":265,"context_line":"    # Version 1.14: BlockDeviceMapping \u003c\u003d version 1.13"},{"line_number":266,"context_line":"    # Version 1.15: BlockDeviceMapping \u003c\u003d version 1.14"},{"line_number":267,"context_line":"    VERSION \u003d \u00271.15\u0027"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_04851c58","line":266,"in_reply_to":"1a4dcd0f_9f3745e2","updated":"2015-08-13 16:56:08.000000000","message":"@Alex Thansk. I will bump version.","commit_id":"395d6a4852257c2485bb017eeb0f4689f7b68858"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fe7111801f580e193d6555d1b0a84333f06c383d","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    # Version 1.13: BlockDeviceMapping \u003c\u003d version 1.12"},{"line_number":265,"context_line":"    # Version 1.14: BlockDeviceMapping \u003c\u003d version 1.13"},{"line_number":266,"context_line":"    # Version 1.15: BlockDeviceMapping \u003c\u003d version 1.14"},{"line_number":267,"context_line":"    # Version 1.16: BlockDeviceMapping \u003c\u003d version 1.15"},{"line_number":268,"context_line":"    VERSION \u003d \u00271.16\u0027"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_a5ee97ea","line":267,"updated":"2015-08-17 19:54:42.000000000","message":"This is wrong, the BlockDeviceMapping object version isn\u0027t changing here, only the BDMList object version.","commit_id":"f0177243c3021de99606f746b8a54f6aa0d69d41"},{"author":{"_account_id":5003,"name":"Choe, Cheng-Dae","email":"whitekid@gmail.com","username":"whitekid"},"change_message_id":"6e9104c50987b1e3221d33f439ae752fce61e9a2","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    # Version 1.13: BlockDeviceMapping \u003c\u003d version 1.12"},{"line_number":265,"context_line":"    # Version 1.14: BlockDeviceMapping \u003c\u003d version 1.13"},{"line_number":266,"context_line":"    # Version 1.15: BlockDeviceMapping \u003c\u003d version 1.14"},{"line_number":267,"context_line":"    # Version 1.16: BlockDeviceMapping \u003c\u003d version 1.15"},{"line_number":268,"context_line":"    VERSION \u003d \u00271.16\u0027"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_c764a823","line":267,"in_reply_to":"fa1b9901_a5ee97ea","updated":"2015-08-19 07:33:51.000000000","message":"Thanks.","commit_id":"f0177243c3021de99606f746b8a54f6aa0d69d41"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fe7111801f580e193d6555d1b0a84333f06c383d","unresolved":false,"context_lines":[{"line_number":276,"context_line":"                    (\u00271.6\u0027, \u00271.5\u0027), (\u00271.7\u0027, \u00271.6\u0027), (\u00271.8\u0027, \u00271.7\u0027),"},{"line_number":277,"context_line":"                    (\u00271.9\u0027, \u00271.8\u0027), (\u00271.10\u0027, \u00271.9\u0027), (\u00271.11\u0027, \u00271.10\u0027),"},{"line_number":278,"context_line":"                    (\u00271.12\u0027, \u00271.11\u0027), (\u00271.13\u0027, \u00271.12\u0027), (\u00271.14\u0027, \u00271.13\u0027),"},{"line_number":279,"context_line":"                    (\u00271.15\u0027, \u00271.14\u0027)],"},{"line_number":280,"context_line":"    }"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    @base.remotable_classmethod"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_e5924f57","line":279,"updated":"2015-08-17 19:54:42.000000000","message":"I believe this needs to be updated to include (\u00271.16\u0027, \u00271.14\u0027).","commit_id":"f0177243c3021de99606f746b8a54f6aa0d69d41"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9ea276642e36c41e2d8dbc9c5e3688c6a72f92d4","unresolved":false,"context_lines":[{"line_number":276,"context_line":"                    (\u00271.6\u0027, \u00271.5\u0027), (\u00271.7\u0027, \u00271.6\u0027), (\u00271.8\u0027, \u00271.7\u0027),"},{"line_number":277,"context_line":"                    (\u00271.9\u0027, \u00271.8\u0027), (\u00271.10\u0027, \u00271.9\u0027), (\u00271.11\u0027, \u00271.10\u0027),"},{"line_number":278,"context_line":"                    (\u00271.12\u0027, \u00271.11\u0027), (\u00271.13\u0027, \u00271.12\u0027), (\u00271.14\u0027, \u00271.13\u0027),"},{"line_number":279,"context_line":"                    (\u00271.15\u0027, \u00271.14\u0027)],"},{"line_number":280,"context_line":"    }"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    @base.remotable_classmethod"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_c53f0b24","line":279,"in_reply_to":"fa1b9901_e5924f57","updated":"2015-08-17 19:58:22.000000000","message":"I was told in IRC that you don\u0027t need to update this, the 1.16 BDMList will use 1.14 of BDM since that\u0027s the latest in this list.","commit_id":"f0177243c3021de99606f746b8a54f6aa0d69d41"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"fb7af74265d458a813148df7c0aaa3156d651927","unresolved":false,"context_lines":[{"line_number":263,"context_line":"    # Version 1.12: BlockDeviceMapping \u003c\u003d version 1.11"},{"line_number":264,"context_line":"    # Version 1.13: BlockDeviceMapping \u003c\u003d version 1.12"},{"line_number":265,"context_line":"    # Version 1.14: BlockDeviceMapping \u003c\u003d version 1.13"},{"line_number":266,"context_line":"    # Version 1.15: BlockDeviceMapping \u003c\u003d version 1.14"},{"line_number":267,"context_line":"    VERSION \u003d \u00271.16\u0027"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba15a1d1_2cdb6b1d","line":266,"updated":"2015-09-12 08:39:02.000000000","message":"you need update the comment.","commit_id":"4f0772256f429f0ba59ad1e6dee88c490d4a6152"}],"nova/tests/unit/api/openstack/compute/contrib/test_extended_volumes.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ffb12e9e8f3d5c650ac6d4feebfafcfc04bb5fc9","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def fake_bdms_get_all_by_instance(*args, **kwargs):"},{"line_number":54,"context_line":"    context, instance_uuid \u003d args"},{"line_number":55,"context_line":"    if isinstance(instance_uuid, collections.Sequence) and \\"},{"line_number":56,"context_line":"        not isinstance(instance_uuid, six.string_types):"},{"line_number":57,"context_line":"        instance_uuid \u003d instance_uuid[0]"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_cd4350ae","line":55,"updated":"2015-08-11 16:07:53.000000000","message":"Again, please use parentheses to eliminate the backslash continuation in the \u0027if\u0027 condition.","commit_id":"4f832ca87251d28effd87bfd87a6e6e93abdd839"},{"author":{"_account_id":5003,"name":"Choe, Cheng-Dae","email":"whitekid@gmail.com","username":"whitekid"},"change_message_id":"761bd38ebde157c1ea72f82f54d6a85e00ed727e","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def fake_bdms_get_all_by_instance(*args, **kwargs):"},{"line_number":54,"context_line":"    context, instance_uuid \u003d args"},{"line_number":55,"context_line":"    if isinstance(instance_uuid, collections.Sequence) and \\"},{"line_number":56,"context_line":"        not isinstance(instance_uuid, six.string_types):"},{"line_number":57,"context_line":"        instance_uuid \u003d instance_uuid[0]"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_e343bdad","line":55,"in_reply_to":"1a4dcd0f_cd4350ae","updated":"2015-08-12 01:50:23.000000000","message":"Yeap.. thanks","commit_id":"4f832ca87251d28effd87bfd87a6e6e93abdd839"}]}
