)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":20191,"name":"Dinesh Bhor","email":"bhordinesh07@gmail.com","username":"dineshbhor"},"change_message_id":"9aca59d948de43fee7732a2a7c14c010c370b0d2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Return metadata in volume summary"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Cinder supports filter volumes withe metadata, but in some case,"},{"line_number":10,"context_line":"users don\u0027t know what metadata the volumes contain or what metadata"},{"line_number":11,"context_line":"is valid to filter volumes."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"ff0f0b1f_becea12a","line":9,"range":{"start_line":9,"start_character":31,"end_line":9,"end_character":36},"updated":"2017-05-22 13:41:44.000000000","message":"s/withe/with","commit_id":"081c3c52ed9b5b7ca6fcf6b514b1cb9916deeaca"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"764fa0fa677ffbf8590eb94531c9c45afc3e0abe","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Return metadata in volume summary"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Cinder supports filter volumes withe metadata, but in some case,"},{"line_number":10,"context_line":"users don\u0027t know what metadata the volumes contain or what metadata"},{"line_number":11,"context_line":"is valid to filter volumes."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"ff0f0b1f_7639f7d4","line":9,"range":{"start_line":9,"start_character":31,"end_line":9,"end_character":36},"in_reply_to":"ff0f0b1f_becea12a","updated":"2017-05-24 17:07:20.000000000","message":"Done","commit_id":"081c3c52ed9b5b7ca6fcf6b514b1cb9916deeaca"},{"author":{"_account_id":20191,"name":"Dinesh Bhor","email":"bhordinesh07@gmail.com","username":"dineshbhor"},"change_message_id":"9aca59d948de43fee7732a2a7c14c010c370b0d2","unresolved":false,"context_lines":[{"line_number":11,"context_line":"is valid to filter volumes."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch updated volumes/summary API to return all valid metadata"},{"line_number":14,"context_line":"to users. Then users could use these metadatas to filer volumes easily."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This function is useful for dashboard, such as Horizon, as well."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"ff0f0b1f_5e02e53e","line":14,"range":{"start_line":14,"start_character":50,"end_line":14,"end_character":55},"updated":"2017-05-22 13:41:44.000000000","message":"s/filer/filter","commit_id":"081c3c52ed9b5b7ca6fcf6b514b1cb9916deeaca"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"764fa0fa677ffbf8590eb94531c9c45afc3e0abe","unresolved":false,"context_lines":[{"line_number":11,"context_line":"is valid to filter volumes."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch updated volumes/summary API to return all valid metadata"},{"line_number":14,"context_line":"to users. Then users could use these metadatas to filer volumes easily."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This function is useful for dashboard, such as Horizon, as well."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"ff0f0b1f_362fff88","line":14,"range":{"start_line":14,"start_character":50,"end_line":14,"end_character":55},"in_reply_to":"ff0f0b1f_5e02e53e","updated":"2017-05-24 17:07:20.000000000","message":"Done","commit_id":"081c3c52ed9b5b7ca6fcf6b514b1cb9916deeaca"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"0e89c811c87fcba111e98393510ecbd032fa1117","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This function is useful for dashboard, such as Horizon, as well."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"APIimpact"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Implements: blueprint metadata-for-volume-summary"},{"line_number":21,"context_line":"Change-Id: I33c77d9db88f70d8d3b8ea86c86c01220dcc537c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"ff0f0b1f_eb7e32ad","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":9},"updated":"2017-05-25 01:21:52.000000000","message":"APIImpact","commit_id":"7b3b44a995e51416b4da917fb0d852f2d269ab80"}],"cinder/api/v3/views/volumes.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2a49e4925174467b7b85636dc609768eef152f4b","unresolved":false,"context_lines":[{"line_number":27,"context_line":"                \u0027total_size\u0027: volume_size"},{"line_number":28,"context_line":"            }"},{"line_number":29,"context_line":"        }"},{"line_number":30,"context_line":"        if all_metadata is not None:"},{"line_number":31,"context_line":"            summary[\u0027volume-summary\u0027][\u0027all_metadata\u0027] \u003d all_metadata"},{"line_number":32,"context_line":"        return summary"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_028e87cf","line":30,"updated":"2017-05-19 09:58:08.000000000","message":"nit: could be simplified to:\nif all_metadata:","commit_id":"40f3aaa91177d09d3a2fb3b815caf59657cfc3a9"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"ae60f4e242e207ad8204d97e82fd42fa5b9394c3","unresolved":false,"context_lines":[{"line_number":27,"context_line":"                \u0027total_size\u0027: volume_size"},{"line_number":28,"context_line":"            }"},{"line_number":29,"context_line":"        }"},{"line_number":30,"context_line":"        if all_metadata is not None:"},{"line_number":31,"context_line":"            summary[\u0027volume-summary\u0027][\u0027all_metadata\u0027] \u003d all_metadata"},{"line_number":32,"context_line":"        return summary"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_b8e7f540","line":30,"in_reply_to":"ff0f0b1f_028e87cf","updated":"2017-05-20 03:29:18.000000000","message":"all_metadata has a default value {} and this should be returned to users. So I used \"is not None\" here.","commit_id":"40f3aaa91177d09d3a2fb3b815caf59657cfc3a9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f0f74ba36d1276946e213c32885947e1b5c516a0","unresolved":false,"context_lines":[{"line_number":28,"context_line":"            }"},{"line_number":29,"context_line":"        }"},{"line_number":30,"context_line":"        if all_metadata is not None:"},{"line_number":31,"context_line":"            summary[\u0027volume-summary\u0027][\u0027all_metadata\u0027] \u003d all_metadata"},{"line_number":32,"context_line":"        return summary"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def detail(self, request, volume):"}],"source_content_type":"text/x-python","patch_set":12,"id":"df140735_6dd794c1","line":31,"range":{"start_line":31,"start_character":39,"end_line":31,"end_character":51},"updated":"2017-05-30 12:34:56.000000000","message":"-1: This is a summary we shouldn\u0027t be returning all metadata, just a sample of the distinct values.","commit_id":"943c527f22d835fa5aea7f73500d97bb4e0aabe8"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"b2e390a8c7de1781320091fa2f7b57782d4ef9ca","unresolved":false,"context_lines":[{"line_number":28,"context_line":"            }"},{"line_number":29,"context_line":"        }"},{"line_number":30,"context_line":"        if all_metadata is not None:"},{"line_number":31,"context_line":"            summary[\u0027volume-summary\u0027][\u0027all_metadata\u0027] \u003d all_metadata"},{"line_number":32,"context_line":"        return summary"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def detail(self, request, volume):"}],"source_content_type":"text/x-python","patch_set":12,"id":"df140735_06a47656","line":31,"range":{"start_line":31,"start_character":39,"end_line":31,"end_character":51},"in_reply_to":"df140735_6dd794c1","updated":"2017-05-30 14:45:05.000000000","message":"Ok, will change the key name","commit_id":"943c527f22d835fa5aea7f73500d97bb4e0aabe8"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"650749f10c2440a4fa114eb461ad5b1149377583","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            }"},{"line_number":34,"context_line":"        }"},{"line_number":35,"context_line":"        if all_distinct_metadata is not None:"},{"line_number":36,"context_line":"            summary[\u0027volume-summary\u0027][\u0027all_distinct_metadata\u0027] \u003d \\"},{"line_number":37,"context_line":"                all_distinct_metadata"},{"line_number":38,"context_line":"        return summary"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"df140735_e3fef036","line":36,"range":{"start_line":36,"start_character":65,"end_line":36,"end_character":66},"updated":"2017-05-31 14:31:08.000000000","message":"-1: According to the guideline we should not be using \\ to split lines but parenthesis.","commit_id":"763f9491b35833b5d6a2605dbf5b7c08d7aabe6e"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"650749f10c2440a4fa114eb461ad5b1149377583","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            }"},{"line_number":34,"context_line":"        }"},{"line_number":35,"context_line":"        if all_distinct_metadata is not None:"},{"line_number":36,"context_line":"            summary[\u0027volume-summary\u0027][\u0027all_distinct_metadata\u0027] \u003d \\"},{"line_number":37,"context_line":"                all_distinct_metadata"},{"line_number":38,"context_line":"        return summary"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"df140735_83f05469","line":36,"range":{"start_line":36,"start_character":39,"end_line":36,"end_character":60},"updated":"2017-05-31 14:31:08.000000000","message":"I think we should be using \"metadata\" here, since this is a summary it\u0027s sensible to assume this is a summary of the data and not all the data.","commit_id":"763f9491b35833b5d6a2605dbf5b7c08d7aabe6e"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"91ea2ecd6e3b88a9172b7a03065c1b6cad872176","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            }"},{"line_number":34,"context_line":"        }"},{"line_number":35,"context_line":"        if all_distinct_metadata is not None:"},{"line_number":36,"context_line":"            summary[\u0027volume-summary\u0027][\u0027all_distinct_metadata\u0027] \u003d \\"},{"line_number":37,"context_line":"                all_distinct_metadata"},{"line_number":38,"context_line":"        return summary"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"df140735_c459b25a","line":36,"range":{"start_line":36,"start_character":65,"end_line":36,"end_character":66},"in_reply_to":"df140735_e3fef036","updated":"2017-05-31 15:46:18.000000000","message":"Done","commit_id":"763f9491b35833b5d6a2605dbf5b7c08d7aabe6e"}],"cinder/api/v3/volumes.py":[{"author":{"_account_id":20191,"name":"Dinesh Bhor","email":"bhordinesh07@gmail.com","username":"dineshbhor"},"change_message_id":"9aca59d948de43fee7732a2a7c14c010c370b0d2","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        volumes \u003d self.volume_api.get_volume_summary(context, filters\u003dfilters)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        req_version \u003d req.api_version_request"},{"line_number":157,"context_line":"        if req_version.matches(None, \"3.33\"):"},{"line_number":158,"context_line":"            all_metadata \u003d None"},{"line_number":159,"context_line":"        else:"},{"line_number":160,"context_line":"            all_metadata \u003d volumes[2]"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        return view_builder_v3.quick_summary(volumes[0], int(volumes[1]),"},{"line_number":163,"context_line":"                                             all_metadata)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff0f0b1f_9959b736","line":160,"range":{"start_line":157,"start_character":8,"end_line":160,"end_character":37},"updated":"2017-05-22 13:41:44.000000000","message":"This is little confusing. Could you please make it consistent with other micro-version implementations?\n\n\nif req_version.matches(\"3.34\", None):\n    all_metadata \u003d volumes[2]\nelse:\n    all_metadata \u003d None","commit_id":"081c3c52ed9b5b7ca6fcf6b514b1cb9916deeaca"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"764fa0fa677ffbf8590eb94531c9c45afc3e0abe","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        volumes \u003d self.volume_api.get_volume_summary(context, filters\u003dfilters)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        req_version \u003d req.api_version_request"},{"line_number":157,"context_line":"        if req_version.matches(None, \"3.33\"):"},{"line_number":158,"context_line":"            all_metadata \u003d None"},{"line_number":159,"context_line":"        else:"},{"line_number":160,"context_line":"            all_metadata \u003d volumes[2]"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        return view_builder_v3.quick_summary(volumes[0], int(volumes[1]),"},{"line_number":163,"context_line":"                                             all_metadata)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff0f0b1f_bb153a4b","line":160,"range":{"start_line":157,"start_character":8,"end_line":160,"end_character":37},"in_reply_to":"ff0f0b1f_9959b736","updated":"2017-05-24 17:07:20.000000000","message":"Done","commit_id":"081c3c52ed9b5b7ca6fcf6b514b1cb9916deeaca"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f0f74ba36d1276946e213c32885947e1b5c516a0","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        volumes \u003d self.volume_api.get_volume_summary(context, filters\u003dfilters)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        req_version \u003d req.api_version_request"},{"line_number":154,"context_line":"        if req_version.matches(\"3.35\", None):"},{"line_number":155,"context_line":"            all_metadata \u003d volumes[2]"},{"line_number":156,"context_line":"        else:"},{"line_number":157,"context_line":"            all_metadata \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"df140735_92cfa97e","line":154,"range":{"start_line":154,"start_character":37,"end_line":154,"end_character":43},"updated":"2017-05-30 12:34:56.000000000","message":"nit: None is unnecessary","commit_id":"943c527f22d835fa5aea7f73500d97bb4e0aabe8"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"b2e390a8c7de1781320091fa2f7b57782d4ef9ca","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        volumes \u003d self.volume_api.get_volume_summary(context, filters\u003dfilters)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        req_version \u003d req.api_version_request"},{"line_number":154,"context_line":"        if req_version.matches(\"3.35\", None):"},{"line_number":155,"context_line":"            all_metadata \u003d volumes[2]"},{"line_number":156,"context_line":"        else:"},{"line_number":157,"context_line":"            all_metadata \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"df140735_e68862c7","line":154,"range":{"start_line":154,"start_character":37,"end_line":154,"end_character":43},"in_reply_to":"df140735_92cfa97e","updated":"2017-05-30 14:45:05.000000000","message":"Done","commit_id":"943c527f22d835fa5aea7f73500d97bb4e0aabe8"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"650749f10c2440a4fa114eb461ad5b1149377583","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        utils.remove_invalid_filter_options(context, filters,"},{"line_number":149,"context_line":"                                            self._get_volume_filter_options())"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        volumes \u003d self.volume_api.get_volume_summary(context, filters\u003dfilters)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        req_version \u003d req.api_version_request"},{"line_number":154,"context_line":"        if req_version.matches(\"3.35\"):"}],"source_content_type":"text/x-python","patch_set":16,"id":"df140735_436d9c02","line":151,"updated":"2017-05-31 14:31:08.000000000","message":"nit: Now that we have 3 fields being returned it would be clearer changing this to:\n\n num_vols, sum_size, metadata \u003d self.volume_api.get_volume_summary(context, filters\u003dfilters)","commit_id":"763f9491b35833b5d6a2605dbf5b7c08d7aabe6e"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"91ea2ecd6e3b88a9172b7a03065c1b6cad872176","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        utils.remove_invalid_filter_options(context, filters,"},{"line_number":149,"context_line":"                                            self._get_volume_filter_options())"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        volumes \u003d self.volume_api.get_volume_summary(context, filters\u003dfilters)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        req_version \u003d req.api_version_request"},{"line_number":154,"context_line":"        if req_version.matches(\"3.35\"):"}],"source_content_type":"text/x-python","patch_set":16,"id":"df140735_8463ba1a","line":151,"in_reply_to":"df140735_436d9c02","updated":"2017-05-31 15:46:18.000000000","message":"Done","commit_id":"763f9491b35833b5d6a2605dbf5b7c08d7aabe6e"}],"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f0f74ba36d1276946e213c32885947e1b5c516a0","unresolved":false,"context_lines":[{"line_number":2102,"context_line":""},{"line_number":2103,"context_line":"    query_metadata \u003d model_query("},{"line_number":2104,"context_line":"        context, models.VolumeMetadata.key, models.VolumeMetadata.value,"},{"line_number":2105,"context_line":"        models.VolumeMetadata.volume_id, read_deleted\u003d\"no\").join("},{"line_number":2106,"context_line":"        models.Volume,"},{"line_number":2107,"context_line":"        models.Volume.id \u003d\u003d models.VolumeMetadata.volume_id).group_by("},{"line_number":2108,"context_line":"        models.VolumeMetadata.key, models.VolumeMetadata.value)"}],"source_content_type":"text/x-python","patch_set":12,"id":"df140735_cd27c064","line":2105,"range":{"start_line":2105,"start_character":8,"end_line":2105,"end_character":40},"updated":"2017-05-30 12:34:56.000000000","message":"-1: You are not using this value, so why retrieve it?","commit_id":"943c527f22d835fa5aea7f73500d97bb4e0aabe8"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"b2e390a8c7de1781320091fa2f7b57782d4ef9ca","unresolved":false,"context_lines":[{"line_number":2102,"context_line":""},{"line_number":2103,"context_line":"    query_metadata \u003d model_query("},{"line_number":2104,"context_line":"        context, models.VolumeMetadata.key, models.VolumeMetadata.value,"},{"line_number":2105,"context_line":"        models.VolumeMetadata.volume_id, read_deleted\u003d\"no\").join("},{"line_number":2106,"context_line":"        models.Volume,"},{"line_number":2107,"context_line":"        models.Volume.id \u003d\u003d models.VolumeMetadata.volume_id).group_by("},{"line_number":2108,"context_line":"        models.VolumeMetadata.key, models.VolumeMetadata.value)"}],"source_content_type":"text/x-python","patch_set":12,"id":"df140735_864526b6","line":2105,"range":{"start_line":2105,"start_character":8,"end_line":2105,"end_character":40},"in_reply_to":"df140735_cd27c064","updated":"2017-05-30 14:45:05.000000000","message":"My fault here. It should be removed.","commit_id":"943c527f22d835fa5aea7f73500d97bb4e0aabe8"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f0f74ba36d1276946e213c32885947e1b5c516a0","unresolved":false,"context_lines":[{"line_number":2104,"context_line":"        context, models.VolumeMetadata.key, models.VolumeMetadata.value,"},{"line_number":2105,"context_line":"        models.VolumeMetadata.volume_id, read_deleted\u003d\"no\").join("},{"line_number":2106,"context_line":"        models.Volume,"},{"line_number":2107,"context_line":"        models.Volume.id \u003d\u003d models.VolumeMetadata.volume_id).group_by("},{"line_number":2108,"context_line":"        models.VolumeMetadata.key, models.VolumeMetadata.value)"},{"line_number":2109,"context_line":"    if project_only:"},{"line_number":2110,"context_line":"        query_metadata \u003d query_metadata.filter_by("}],"source_content_type":"text/x-python","patch_set":12,"id":"df140735_ad87ecd7","line":2107,"range":{"start_line":2107,"start_character":61,"end_line":2107,"end_character":69},"updated":"2017-05-30 12:34:56.000000000","message":"-1: We should only retrieve distinct values","commit_id":"943c527f22d835fa5aea7f73500d97bb4e0aabe8"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f0f74ba36d1276946e213c32885947e1b5c516a0","unresolved":false,"context_lines":[{"line_number":2103,"context_line":"    query_metadata \u003d model_query("},{"line_number":2104,"context_line":"        context, models.VolumeMetadata.key, models.VolumeMetadata.value,"},{"line_number":2105,"context_line":"        models.VolumeMetadata.volume_id, read_deleted\u003d\"no\").join("},{"line_number":2106,"context_line":"        models.Volume,"},{"line_number":2107,"context_line":"        models.Volume.id \u003d\u003d models.VolumeMetadata.volume_id).group_by("},{"line_number":2108,"context_line":"        models.VolumeMetadata.key, models.VolumeMetadata.value)"},{"line_number":2109,"context_line":"    if project_only:"},{"line_number":2110,"context_line":"        query_metadata \u003d query_metadata.filter_by("}],"source_content_type":"text/x-python","patch_set":12,"id":"df140735_eda5e4b6","line":2107,"range":{"start_line":2106,"start_character":0,"end_line":2107,"end_character":59},"updated":"2017-05-30 12:34:56.000000000","message":"-1: this is only useful if we are going to filter by project_id","commit_id":"943c527f22d835fa5aea7f73500d97bb4e0aabe8"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f0f74ba36d1276946e213c32885947e1b5c516a0","unresolved":false,"context_lines":[{"line_number":2106,"context_line":"        models.Volume,"},{"line_number":2107,"context_line":"        models.Volume.id \u003d\u003d models.VolumeMetadata.volume_id).group_by("},{"line_number":2108,"context_line":"        models.VolumeMetadata.key, models.VolumeMetadata.value)"},{"line_number":2109,"context_line":"    if project_only:"},{"line_number":2110,"context_line":"        query_metadata \u003d query_metadata.filter_by("},{"line_number":2111,"context_line":"            project_id\u003dcontext.project_id)"},{"line_number":2112,"context_line":"    result_metadata \u003d query_metadata.all()"},{"line_number":2113,"context_line":""},{"line_number":2114,"context_line":"    result_metadata_list \u003d {}"}],"source_content_type":"text/x-python","patch_set":12,"id":"df140735_4d77303c","line":2111,"range":{"start_line":2109,"start_character":0,"end_line":2111,"end_character":42},"updated":"2017-05-30 12:34:56.000000000","message":"-1: This is not the right way to do it, you should just pass this to the model_quey and do the matching of Volume.id like you are doing now.","commit_id":"943c527f22d835fa5aea7f73500d97bb4e0aabe8"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"258e52f625c5825ff4eba470ae023e63e0459179","unresolved":false,"context_lines":[{"line_number":2106,"context_line":"        models.Volume,"},{"line_number":2107,"context_line":"        models.Volume.id \u003d\u003d models.VolumeMetadata.volume_id).group_by("},{"line_number":2108,"context_line":"        models.VolumeMetadata.key, models.VolumeMetadata.value)"},{"line_number":2109,"context_line":"    if project_only:"},{"line_number":2110,"context_line":"        query_metadata \u003d query_metadata.filter_by("},{"line_number":2111,"context_line":"            project_id\u003dcontext.project_id)"},{"line_number":2112,"context_line":"    result_metadata \u003d query_metadata.all()"},{"line_number":2113,"context_line":""},{"line_number":2114,"context_line":"    result_metadata_list \u003d {}"}],"source_content_type":"text/x-python","patch_set":12,"id":"df140735_69b8a3c7","line":2111,"range":{"start_line":2109,"start_character":0,"end_line":2111,"end_character":42},"in_reply_to":"df140735_4d77303c","updated":"2017-05-30 14:54:30.000000000","message":"thanks. I\u0027m wrong here.","commit_id":"943c527f22d835fa5aea7f73500d97bb4e0aabe8"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f0f74ba36d1276946e213c32885947e1b5c516a0","unresolved":false,"context_lines":[{"line_number":2111,"context_line":"            project_id\u003dcontext.project_id)"},{"line_number":2112,"context_line":"    result_metadata \u003d query_metadata.all()"},{"line_number":2113,"context_line":""},{"line_number":2114,"context_line":"    result_metadata_list \u003d {}"},{"line_number":2115,"context_line":"    for metadata in result_metadata:"},{"line_number":2116,"context_line":"        if not result_metadata_list.get(metadata[0]):"},{"line_number":2117,"context_line":"            result_metadata_list[metadata[0]] \u003d [metadata[1]]"},{"line_number":2118,"context_line":"        else:"},{"line_number":2119,"context_line":"            result_metadata_list[metadata[0]].append(metadata[1])"},{"line_number":2120,"context_line":"    return (result[0] or 0, result[1] or 0, result_metadata_list)"},{"line_number":2121,"context_line":""},{"line_number":2122,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df140735_4dc5f03b","line":2119,"range":{"start_line":2114,"start_character":0,"end_line":2119,"end_character":65},"updated":"2017-05-30 12:34:56.000000000","message":"-1: Just use a default list dict (if we are getting distinct values only, otherwise it will return duplicates):\n\n result_metadata_list \u003d collections.defaultdict(list)\n for key, value in result_metadata:\n     result_metadata_list[key].add(value)","commit_id":"943c527f22d835fa5aea7f73500d97bb4e0aabe8"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"258e52f625c5825ff4eba470ae023e63e0459179","unresolved":false,"context_lines":[{"line_number":2111,"context_line":"            project_id\u003dcontext.project_id)"},{"line_number":2112,"context_line":"    result_metadata \u003d query_metadata.all()"},{"line_number":2113,"context_line":""},{"line_number":2114,"context_line":"    result_metadata_list \u003d {}"},{"line_number":2115,"context_line":"    for metadata in result_metadata:"},{"line_number":2116,"context_line":"        if not result_metadata_list.get(metadata[0]):"},{"line_number":2117,"context_line":"            result_metadata_list[metadata[0]] \u003d [metadata[1]]"},{"line_number":2118,"context_line":"        else:"},{"line_number":2119,"context_line":"            result_metadata_list[metadata[0]].append(metadata[1])"},{"line_number":2120,"context_line":"    return (result[0] or 0, result[1] or 0, result_metadata_list)"},{"line_number":2121,"context_line":""},{"line_number":2122,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df140735_e9cb9350","line":2119,"range":{"start_line":2114,"start_character":0,"end_line":2119,"end_character":65},"in_reply_to":"df140735_4dc5f03b","updated":"2017-05-30 14:54:30.000000000","message":"Done","commit_id":"943c527f22d835fa5aea7f73500d97bb4e0aabe8"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"650749f10c2440a4fa114eb461ad5b1149377583","unresolved":false,"context_lines":[{"line_number":2107,"context_line":"            read_deleted\u003d\"no\").join("},{"line_number":2108,"context_line":"            models.Volume,"},{"line_number":2109,"context_line":"            models.Volume.id \u003d\u003d models.VolumeMetadata.volume_id).filter_by("},{"line_number":2110,"context_line":"            project_id\u003dcontext.project_id).group_by("},{"line_number":2111,"context_line":"            models.VolumeMetadata.key, models.VolumeMetadata.value)"},{"line_number":2112,"context_line":"    else:"},{"line_number":2113,"context_line":"        query_metadata \u003d model_query(context, models.VolumeMetadata.key,"}],"source_content_type":"text/x-python","patch_set":16,"id":"df140735_3e419f0c","line":2110,"updated":"2017-05-31 14:31:08.000000000","message":"-1: This is not returning distinct values","commit_id":"763f9491b35833b5d6a2605dbf5b7c08d7aabe6e"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"650749f10c2440a4fa114eb461ad5b1149377583","unresolved":false,"context_lines":[{"line_number":2101,"context_line":""},{"line_number":2102,"context_line":"    result \u003d query.first()"},{"line_number":2103,"context_line":""},{"line_number":2104,"context_line":"    if project_only:"},{"line_number":2105,"context_line":"        query_metadata \u003d model_query("},{"line_number":2106,"context_line":"            context, models.VolumeMetadata.key, models.VolumeMetadata.value,"},{"line_number":2107,"context_line":"            read_deleted\u003d\"no\").join("},{"line_number":2108,"context_line":"            models.Volume,"},{"line_number":2109,"context_line":"            models.Volume.id \u003d\u003d models.VolumeMetadata.volume_id).filter_by("},{"line_number":2110,"context_line":"            project_id\u003dcontext.project_id).group_by("},{"line_number":2111,"context_line":"            models.VolumeMetadata.key, models.VolumeMetadata.value)"},{"line_number":2112,"context_line":"    else:"},{"line_number":2113,"context_line":"        query_metadata \u003d model_query(context, models.VolumeMetadata.key,"},{"line_number":2114,"context_line":"                                     models.VolumeMetadata.value,"},{"line_number":2115,"context_line":"                                     read_deleted\u003d\"no\").distinct()"},{"line_number":2116,"context_line":"    result_metadata \u003d query_metadata.all()"},{"line_number":2117,"context_line":""},{"line_number":2118,"context_line":"    result_metadata_list \u003d collections.defaultdict(list)"},{"line_number":2119,"context_line":"    for key, value in result_metadata:"}],"source_content_type":"text/x-python","patch_set":16,"id":"df140735_be1b6f19","line":2116,"range":{"start_line":2104,"start_character":0,"end_line":2116,"end_character":42},"updated":"2017-05-31 14:31:08.000000000","message":"Looks this code, from L2104, can be somewhat simplified:\n\n\n    query_metadata \u003d model_query(\n            context, models.VolumeMetadata.key, models.VolumeMetadata.value,\n            read_deleted\u003d\"no\",\n            project_only\u003dproject_only)\n    if project_only:\n        query_metadata \u003d query_metadata.join(\n            models.Volume,\n            models.Volume.id \u003d\u003d models.VolumeMetadata.volume_id)\n\n    result_metadata \u003d query_metadata.distinct().all()","commit_id":"763f9491b35833b5d6a2605dbf5b7c08d7aabe6e"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"91ea2ecd6e3b88a9172b7a03065c1b6cad872176","unresolved":false,"context_lines":[{"line_number":2101,"context_line":""},{"line_number":2102,"context_line":"    result \u003d query.first()"},{"line_number":2103,"context_line":""},{"line_number":2104,"context_line":"    if project_only:"},{"line_number":2105,"context_line":"        query_metadata \u003d model_query("},{"line_number":2106,"context_line":"            context, models.VolumeMetadata.key, models.VolumeMetadata.value,"},{"line_number":2107,"context_line":"            read_deleted\u003d\"no\").join("},{"line_number":2108,"context_line":"            models.Volume,"},{"line_number":2109,"context_line":"            models.Volume.id \u003d\u003d models.VolumeMetadata.volume_id).filter_by("},{"line_number":2110,"context_line":"            project_id\u003dcontext.project_id).group_by("},{"line_number":2111,"context_line":"            models.VolumeMetadata.key, models.VolumeMetadata.value)"},{"line_number":2112,"context_line":"    else:"},{"line_number":2113,"context_line":"        query_metadata \u003d model_query(context, models.VolumeMetadata.key,"},{"line_number":2114,"context_line":"                                     models.VolumeMetadata.value,"},{"line_number":2115,"context_line":"                                     read_deleted\u003d\"no\").distinct()"},{"line_number":2116,"context_line":"    result_metadata \u003d query_metadata.all()"},{"line_number":2117,"context_line":""},{"line_number":2118,"context_line":"    result_metadata_list \u003d collections.defaultdict(list)"},{"line_number":2119,"context_line":"    for key, value in result_metadata:"}],"source_content_type":"text/x-python","patch_set":16,"id":"df140735_449fe202","line":2116,"range":{"start_line":2104,"start_character":0,"end_line":2116,"end_character":42},"in_reply_to":"df140735_be1b6f19","updated":"2017-05-31 15:46:18.000000000","message":"wow, I don\u0027t know that distinct can be used if the db line is not all the same. Thanks for teaching me.\n\nBTW,  I used \"filter_by\" after \"join\" because that \"project_only\" here can\u0027t be used by model_query, because the VolumeMetadata table doesn\u0027t contain \"project_id\" column.","commit_id":"763f9491b35833b5d6a2605dbf5b7c08d7aabe6e"}],"cinder/tests/unit/api/v3/test_volumes.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"2a49e4925174467b7b85636dc609768eef152f4b","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        req \u003d self._fake_volumes_summary_request(version\u003dsummary_api_version)"},{"line_number":192,"context_line":"        res_dict \u003d self.controller.summary(req)"},{"line_number":193,"context_line":"        expected \u003d {\u0027volume-summary\u0027: {\u0027total_size\u0027: 0.0, \u0027total_count\u0027: 0}}"},{"line_number":194,"context_line":"        if summary_api_version \u003d\u003d \u00273.32\u0027:"},{"line_number":195,"context_line":"            expected[\u0027volume-summary\u0027][\u0027all_metadata\u0027] \u003d {}"},{"line_number":196,"context_line":"        self.assertEqual(expected, res_dict)"},{"line_number":197,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_7d3cc8c7","line":194,"updated":"2017-05-19 09:58:08.000000000","message":"expected results should be also moved to ddt data to remove unnecessary if statements from the test","commit_id":"40f3aaa91177d09d3a2fb3b815caf59657cfc3a9"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"ae60f4e242e207ad8204d97e82fd42fa5b9394c3","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        req \u003d self._fake_volumes_summary_request(version\u003dsummary_api_version)"},{"line_number":192,"context_line":"        res_dict \u003d self.controller.summary(req)"},{"line_number":193,"context_line":"        expected \u003d {\u0027volume-summary\u0027: {\u0027total_size\u0027: 0.0, \u0027total_count\u0027: 0}}"},{"line_number":194,"context_line":"        if summary_api_version \u003d\u003d \u00273.32\u0027:"},{"line_number":195,"context_line":"            expected[\u0027volume-summary\u0027][\u0027all_metadata\u0027] \u003d {}"},{"line_number":196,"context_line":"        self.assertEqual(expected, res_dict)"},{"line_number":197,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_38f405f2","line":194,"in_reply_to":"ff0f0b1f_7d3cc8c7","updated":"2017-05-20 03:29:18.000000000","message":"Done","commit_id":"40f3aaa91177d09d3a2fb3b815caf59657cfc3a9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"32ee5458611a07d62a9d529582ef423a61ec1674","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    def _fake_volumes_summary_request(self, version\u003d\u00273.12\u0027, all_tenant\u003dFalse):"},{"line_number":160,"context_line":"        req_url \u003d \u0027/v3/volumes/summary\u0027"},{"line_number":161,"context_line":"        if all_tenant:"},{"line_number":162,"context_line":"            req_url \u003d \u0027/v3/volumes/summary?all_tenant\u003dTrue\u0027"},{"line_number":163,"context_line":"        req \u003d fakes.HTTPRequest.blank(req_url)"},{"line_number":164,"context_line":"        req.headers \u003d {\u0027OpenStack-API-Version\u0027: \u0027volume \u0027 + version}"},{"line_number":165,"context_line":"        req.api_version_request \u003d api_version.APIVersionRequest(version)"}],"source_content_type":"text/x-python","patch_set":18,"id":"df140735_3185365b","line":162,"range":{"start_line":162,"start_character":12,"end_line":162,"end_character":59},"updated":"2017-06-01 10:23:02.000000000","message":"nit: req_url +\u003d \u0027?all_tenant\u003dTrue\u0027","commit_id":"969785870f991b745342be0cf245ce522aceac12"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"425aa2f0046a4a8d18c8369ed27bdaa85ce304e3","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    def _fake_volumes_summary_request(self, version\u003d\u00273.12\u0027, all_tenant\u003dFalse):"},{"line_number":160,"context_line":"        req_url \u003d \u0027/v3/volumes/summary\u0027"},{"line_number":161,"context_line":"        if all_tenant:"},{"line_number":162,"context_line":"            req_url \u003d \u0027/v3/volumes/summary?all_tenant\u003dTrue\u0027"},{"line_number":163,"context_line":"        req \u003d fakes.HTTPRequest.blank(req_url)"},{"line_number":164,"context_line":"        req.headers \u003d {\u0027OpenStack-API-Version\u0027: \u0027volume \u0027 + version}"},{"line_number":165,"context_line":"        req.api_version_request \u003d api_version.APIVersionRequest(version)"}],"source_content_type":"text/x-python","patch_set":18,"id":"df140735_9f13e95c","line":162,"range":{"start_line":162,"start_character":12,"end_line":162,"end_character":59},"in_reply_to":"df140735_3185365b","updated":"2017-06-01 12:29:02.000000000","message":"Done","commit_id":"969785870f991b745342be0cf245ce522aceac12"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"32ee5458611a07d62a9d529582ef423a61ec1674","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                                     \u0027total_count\u0027: 0,"},{"line_number":197,"context_line":"                                     \u0027metadata\u0027: {}}}))"},{"line_number":198,"context_line":"    @ddt.unpack"},{"line_number":199,"context_line":"    def test_volume_summary_return_metadata(self, summary_api_version,"},{"line_number":200,"context_line":"                                            expect_result):"},{"line_number":201,"context_line":"        req \u003d self._fake_volumes_summary_request(version\u003dsummary_api_version)"},{"line_number":202,"context_line":"        res_dict \u003d self.controller.summary(req)"}],"source_content_type":"text/x-python","patch_set":18,"id":"df140735_91c1a283","line":199,"updated":"2017-06-01 10:23:02.000000000","message":"-1: This test needs modifications:\n\n- We should only test 1 thing in each test, and here we are testing the no volumes case as well as having 2 volumes.\n- We shouldn\u0027t be using the `controller.create` method to create volumes, we have cinder.tests.unit.utils:create_volume for that.\n- If we are using ddts we should not need to modify the expected results in the middle of the test.","commit_id":"969785870f991b745342be0cf245ce522aceac12"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"425aa2f0046a4a8d18c8369ed27bdaa85ce304e3","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                                     \u0027total_count\u0027: 0,"},{"line_number":197,"context_line":"                                     \u0027metadata\u0027: {}}}))"},{"line_number":198,"context_line":"    @ddt.unpack"},{"line_number":199,"context_line":"    def test_volume_summary_return_metadata(self, summary_api_version,"},{"line_number":200,"context_line":"                                            expect_result):"},{"line_number":201,"context_line":"        req \u003d self._fake_volumes_summary_request(version\u003dsummary_api_version)"},{"line_number":202,"context_line":"        res_dict \u003d self.controller.summary(req)"}],"source_content_type":"text/x-python","patch_set":18,"id":"df140735_7f6ff591","line":199,"in_reply_to":"df140735_91c1a283","updated":"2017-06-01 12:29:02.000000000","message":"Done","commit_id":"969785870f991b745342be0cf245ce522aceac12"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"32ee5458611a07d62a9d529582ef423a61ec1674","unresolved":false,"context_lines":[{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        self.assertEqual(expect_result, res_dict)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def test_volume_summary_return_metadata_all_tenant(self):"},{"line_number":230,"context_line":"        vol1 \u003d v2_test_volumes.VolumeApiTest._vol_in_request_body("},{"line_number":231,"context_line":"            availability_zone\u003d\"nova\", metadata\u003d{\u0027name\u0027: \u0027test_name1\u0027,"},{"line_number":232,"context_line":"                                                \u0027age\u0027: \u0027test_age\u0027})"}],"source_content_type":"text/x-python","patch_set":18,"id":"df140735_7155eec5","line":229,"updated":"2017-06-01 10:23:02.000000000","message":"-1: This test needs modifications:\n\n- Why aren\u0027t we testing with microversion 3.34?\n- We shouldn\u0027t be using the `controller.create` method to create volumes, we have cinder.tests.unit.utils:create_volume for that.","commit_id":"969785870f991b745342be0cf245ce522aceac12"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"425aa2f0046a4a8d18c8369ed27bdaa85ce304e3","unresolved":false,"context_lines":[{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        self.assertEqual(expect_result, res_dict)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def test_volume_summary_return_metadata_all_tenant(self):"},{"line_number":230,"context_line":"        vol1 \u003d v2_test_volumes.VolumeApiTest._vol_in_request_body("},{"line_number":231,"context_line":"            availability_zone\u003d\"nova\", metadata\u003d{\u0027name\u0027: \u0027test_name1\u0027,"},{"line_number":232,"context_line":"                                                \u0027age\u0027: \u0027test_age\u0027})"}],"source_content_type":"text/x-python","patch_set":18,"id":"df140735_5f6e7195","line":229,"in_reply_to":"df140735_7155eec5","updated":"2017-06-01 12:29:02.000000000","message":"Done","commit_id":"969785870f991b745342be0cf245ce522aceac12"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"e38563a4b86d217e00daecaf1bdd4bfe96353e60","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                                                  \u0027age\u0027: \u0027test_age\u0027})"},{"line_number":220,"context_line":"        vol2 \u003d test_utils.create_volume(self.ctxt,"},{"line_number":221,"context_line":"                                        metadata\u003d{\u0027name\u0027: \u0027test_name2\u0027,"},{"line_number":222,"context_line":"                                                  \u0027age\u0027: \u0027test_age\u0027})"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        req \u003d self._fake_volumes_summary_request(version\u003dsummary_api_version)"},{"line_number":225,"context_line":"        res_dict \u003d self.controller.summary(req)"}],"source_content_type":"text/x-python","patch_set":19,"id":"df140735_3a8d0b7b","line":222,"updated":"2017-06-01 12:43:28.000000000","message":"nit: How about adding a volume from another user to verify that the project filtering is working as expected?","commit_id":"3f273ce792c1be3795836c6e9b92a6ce8a4293f1"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"dfa23b7c89fda8c83762afcb5e8a9e09c8eeef22","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                                                  \u0027age\u0027: \u0027test_age\u0027})"},{"line_number":220,"context_line":"        vol2 \u003d test_utils.create_volume(self.ctxt,"},{"line_number":221,"context_line":"                                        metadata\u003d{\u0027name\u0027: \u0027test_name2\u0027,"},{"line_number":222,"context_line":"                                                  \u0027age\u0027: \u0027test_age\u0027})"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        req \u003d self._fake_volumes_summary_request(version\u003dsummary_api_version)"},{"line_number":225,"context_line":"        res_dict \u003d self.controller.summary(req)"}],"source_content_type":"text/x-python","patch_set":19,"id":"df140735_e55c947f","line":222,"in_reply_to":"df140735_3a8d0b7b","updated":"2017-06-01 13:37:51.000000000","message":"Sure.\n.","commit_id":"3f273ce792c1be3795836c6e9b92a6ce8a4293f1"}]}
