)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"8eab85fc1eeeabc76dd4b1911f5172986ae83e6c","unresolved":false,"context_lines":[{"line_number":12,"context_line":"space formatting within the code"},{"line_number":13,"context_line":"Fixing the identation for continuation line"},{"line_number":14,"context_line":"Adding test cases for querying snapshot based on"},{"line_number":15,"context_line":"metaadata. Adding support to API V3."},{"line_number":16,"context_line":"Adding a new microversion for this."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"DocImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba5da102_b646ef4c","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":9},"updated":"2016-11-02 17:03:10.000000000","message":"\u0027metadata\u0027 misprint","commit_id":"35134606db75714df72ccf801420e7bc27c1103b"},{"author":{"_account_id":19774,"name":"Vivek Agrawal","email":"vivek.agrawal@veritas.com","username":"viveksagrawal"},"change_message_id":"1832abc21a6eb23787dd4c8882f9eee72bebcc41","unresolved":false,"context_lines":[{"line_number":12,"context_line":"space formatting within the code"},{"line_number":13,"context_line":"Fixing the identation for continuation line"},{"line_number":14,"context_line":"Adding test cases for querying snapshot based on"},{"line_number":15,"context_line":"metaadata. Adding support to API V3."},{"line_number":16,"context_line":"Adding a new microversion for this."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"DocImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba5da102_62a2d19a","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":9},"in_reply_to":"ba5da102_b646ef4c","updated":"2016-11-02 18:38:05.000000000","message":"Done","commit_id":"35134606db75714df72ccf801420e7bc27c1103b"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"5794b173abd7ddf7e7b86598c1a7e34b1ee1e40e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Adds metadata in search option for snapshot"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"With this change one should be able to search snapshots"},{"line_number":10,"context_line":"based on snapshot metadata keys as well"},{"line_number":11,"context_line":"Fixing the issue of too many characters in line and"},{"line_number":12,"context_line":"space formatting within the code"},{"line_number":13,"context_line":"Fixing the identation for continuation line"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"ba5da102_4f4e63c2","line":10,"range":{"start_line":10,"start_character":34,"end_line":10,"end_character":39},"updated":"2016-11-07 01:42:16.000000000","message":"well.","commit_id":"6f329ce18257e2482153d5cdb2ff0bc0b49a3cfd"},{"author":{"_account_id":19774,"name":"Vivek Agrawal","email":"vivek.agrawal@veritas.com","username":"viveksagrawal"},"change_message_id":"bf039daca794461c173913f3ecdca993a74d22f1","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Adds metadata in search option for snapshot"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"With this change one should be able to search snapshots"},{"line_number":10,"context_line":"based on snapshot metadata keys as well"},{"line_number":11,"context_line":"Fixing the issue of too many characters in line and"},{"line_number":12,"context_line":"space formatting within the code"},{"line_number":13,"context_line":"Fixing the identation for continuation line"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"ba5da102_f57624d7","line":10,"range":{"start_line":10,"start_character":34,"end_line":10,"end_character":39},"in_reply_to":"ba5da102_4f4e63c2","updated":"2016-11-07 03:33:50.000000000","message":"Done","commit_id":"6f329ce18257e2482153d5cdb2ff0bc0b49a3cfd"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"91b18f2c2a0171da86b91e54b640707d16973c30","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"With this change one should be able to search snapshots"},{"line_number":10,"context_line":"based on snapshot metadata keys too."},{"line_number":11,"context_line":"Fixing the issue of too many characters in line and"},{"line_number":12,"context_line":"space formatting within the code"},{"line_number":13,"context_line":"Fixing the identation for continuation line"},{"line_number":14,"context_line":"Adding test cases for querying snapshot based on"},{"line_number":15,"context_line":"metadata. Adding support to API V3."},{"line_number":16,"context_line":"Adding a new microversion for this."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"1a6eadb0_d00aa6d1","line":13,"range":{"start_line":11,"start_character":0,"end_line":13,"end_character":43},"updated":"2016-12-21 16:38:53.000000000","message":"Remove these.","commit_id":"e427137dd2647aa3b961811da3860f627a2770e0"},{"author":{"_account_id":19774,"name":"Vivek Agrawal","email":"vivek.agrawal@veritas.com","username":"viveksagrawal"},"change_message_id":"867de1e8ad0a7a33897cd3a6c6bdacbe03e0d431","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"With this change one should be able to search snapshots"},{"line_number":10,"context_line":"based on snapshot metadata keys too."},{"line_number":11,"context_line":"Fixing the issue of too many characters in line and"},{"line_number":12,"context_line":"space formatting within the code"},{"line_number":13,"context_line":"Fixing the identation for continuation line"},{"line_number":14,"context_line":"Adding test cases for querying snapshot based on"},{"line_number":15,"context_line":"metadata. Adding support to API V3."},{"line_number":16,"context_line":"Adding a new microversion for this."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"da4df55a_2ba315a0","line":13,"range":{"start_line":11,"start_character":0,"end_line":13,"end_character":43},"in_reply_to":"1a6eadb0_d00aa6d1","updated":"2016-12-21 22:21:56.000000000","message":"Done","commit_id":"e427137dd2647aa3b961811da3860f627a2770e0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"91b18f2c2a0171da86b91e54b640707d16973c30","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Adding test cases for querying snapshot based on"},{"line_number":15,"context_line":"metadata. Adding support to API V3."},{"line_number":16,"context_line":"Adding a new microversion for this."},{"line_number":17,"context_line":"Addressing review comment for test case, \u0027.\u0027 in rst"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"DocImpact"},{"line_number":20,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"1a6eadb0_105a5ef2","line":17,"updated":"2016-12-21 16:38:53.000000000","message":"Please remove the sentence \"Addressing review comment…\"","commit_id":"e427137dd2647aa3b961811da3860f627a2770e0"},{"author":{"_account_id":19774,"name":"Vivek Agrawal","email":"vivek.agrawal@veritas.com","username":"viveksagrawal"},"change_message_id":"867de1e8ad0a7a33897cd3a6c6bdacbe03e0d431","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Adding test cases for querying snapshot based on"},{"line_number":15,"context_line":"metadata. Adding support to API V3."},{"line_number":16,"context_line":"Adding a new microversion for this."},{"line_number":17,"context_line":"Addressing review comment for test case, \u0027.\u0027 in rst"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"DocImpact"},{"line_number":20,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"da4df55a_4ba05991","line":17,"in_reply_to":"1a6eadb0_105a5ef2","updated":"2016-12-21 22:21:56.000000000","message":"Done","commit_id":"e427137dd2647aa3b961811da3860f627a2770e0"}],"cinder/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"5794b173abd7ddf7e7b86598c1a7e34b1ee1e40e","unresolved":false,"context_lines":[{"line_number":191,"context_line":"------------------------"},{"line_number":192,"context_line":"  Added injecting the response\u0027s `Etag` header to avoid the lost update"},{"line_number":193,"context_line":"  problem with volume metadata."},{"line_number":194,"context_line":"---"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"3.16"},{"line_number":197,"context_line":"  Added support to filter snapshot list based on metadata of snapshot"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ba5da102_afcb7f1d","line":194,"updated":"2016-11-07 01:42:16.000000000","message":"3.16\n----","commit_id":"6f329ce18257e2482153d5cdb2ff0bc0b49a3cfd"},{"author":{"_account_id":19774,"name":"Vivek Agrawal","email":"vivek.agrawal@veritas.com","username":"viveksagrawal"},"change_message_id":"bf039daca794461c173913f3ecdca993a74d22f1","unresolved":false,"context_lines":[{"line_number":191,"context_line":"------------------------"},{"line_number":192,"context_line":"  Added injecting the response\u0027s `Etag` header to avoid the lost update"},{"line_number":193,"context_line":"  problem with volume metadata."},{"line_number":194,"context_line":"---"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"3.16"},{"line_number":197,"context_line":"  Added support to filter snapshot list based on metadata of snapshot"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ba5da102_5590b0ec","line":194,"in_reply_to":"ba5da102_afcb7f1d","updated":"2016-11-07 03:33:50.000000000","message":"Done","commit_id":"6f329ce18257e2482153d5cdb2ff0bc0b49a3cfd"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"8d6315d7b4c9db2c6fd39afcd072043fdde47d67","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"3.16"},{"line_number":196,"context_line":"----"},{"line_number":197,"context_line":"  Added support to filter snapshot list based on metadata of snapshot"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a71b18c_de546eff","line":197,"range":{"start_line":197,"start_character":68,"end_line":197,"end_character":69},"updated":"2016-12-05 20:57:35.000000000","message":"If you do another update, please add a period to the end.","commit_id":"d07836352250eb1c0cdd7256531d258f946d9dbb"},{"author":{"_account_id":19774,"name":"Vivek Agrawal","email":"vivek.agrawal@veritas.com","username":"viveksagrawal"},"change_message_id":"3fa061eb7e08dd10c0e2568d38e96fadecbe8a52","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"3.16"},{"line_number":196,"context_line":"----"},{"line_number":197,"context_line":"  Added support to filter snapshot list based on metadata of snapshot"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a71b18c_fa9693ee","line":197,"range":{"start_line":197,"start_character":68,"end_line":197,"end_character":69},"in_reply_to":"3a71b18c_de546eff","updated":"2016-12-05 22:36:48.000000000","message":"Done","commit_id":"d07836352250eb1c0cdd7256531d258f946d9dbb"}],"cinder/api/v2/snapshots.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"783cb7573fb0fb2b2bae3418eafc4e4ba67c1da4","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import webob"},{"line_number":22,"context_line":"from webob import exc"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"import ast"},{"line_number":25,"context_line":"from cinder.api import common"},{"line_number":26,"context_line":"from cinder.api.openstack import wsgi"},{"line_number":27,"context_line":"from cinder.api.views import snapshots as snapshot_views"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a98d1f4_0bd66d4e","line":24,"updated":"2016-10-03 17:48:24.000000000","message":"According to the hacking rules, this import should be before importing of 3rd-party libs","commit_id":"ab3725ec19c17f06b4872d11d33e027c71b02c06"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"783cb7573fb0fb2b2bae3418eafc4e4ba67c1da4","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        utils.remove_invalid_filter_options(context, search_opts,"},{"line_number":90,"context_line":"                                            allowed_search_options)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        if \u0027metadata\u0027 in search_opts.keys():"},{"line_number":93,"context_line":"            try:"},{"line_number":94,"context_line":"                search_opts[\u0027metadata\u0027] \u003d ast.literal_eval("},{"line_number":95,"context_line":"                    search_opts[\u0027metadata\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a98d1f4_eb3941a5","line":92,"updated":"2016-10-03 17:48:24.000000000","message":"V2 API is deprecated, please, move it to microversion in V3","commit_id":"ab3725ec19c17f06b4872d11d33e027c71b02c06"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"0b601e55123714eb1c99b58ddf3b22f0a3fb6c51","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        \"\"\"Returns a detailed list of snapshots.\"\"\""},{"line_number":75,"context_line":"        return self._items(req, is_detail\u003dTrue)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def _get_snapshot_filter_options(self):"},{"line_number":78,"context_line":"        \"\"\"returns tuple of valid filter options\"\"\""},{"line_number":79,"context_line":"        return \u0027status\u0027, \u0027volume_id\u0027, \u0027name\u0027"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a71b18c_1dcee92d","line":77,"updated":"2016-12-05 23:03:37.000000000","message":"These three functions should be removed, and should not be added to API v2.\nOnly add new functionality to API v3.","commit_id":"054576751c7aaf51af7b33f8669baf6773c355a3"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"fb784fe43717da37b616e1966e2dbd3eeba40dab","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        \"\"\"Returns a detailed list of snapshots.\"\"\""},{"line_number":75,"context_line":"        return self._items(req, is_detail\u003dTrue)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def _get_snapshot_filter_options(self):"},{"line_number":78,"context_line":"        \"\"\"returns tuple of valid filter options\"\"\""},{"line_number":79,"context_line":"        return \u0027status\u0027, \u0027volume_id\u0027, \u0027name\u0027"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a71b18c_a0dcec73","line":77,"in_reply_to":"3a71b18c_1d6a69ee","updated":"2016-12-05 23:23:16.000000000","message":"I don\u0027t see what the gain is from refactoring.","commit_id":"054576751c7aaf51af7b33f8669baf6773c355a3"},{"author":{"_account_id":19774,"name":"Vivek Agrawal","email":"vivek.agrawal@veritas.com","username":"viveksagrawal"},"change_message_id":"0a4d5adcdf9ac1cf30a6484f5b28167a98b78bf4","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        \"\"\"Returns a detailed list of snapshots.\"\"\""},{"line_number":75,"context_line":"        return self._items(req, is_detail\u003dTrue)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def _get_snapshot_filter_options(self):"},{"line_number":78,"context_line":"        \"\"\"returns tuple of valid filter options\"\"\""},{"line_number":79,"context_line":"        return \u0027status\u0027, \u0027volume_id\u0027, \u0027name\u0027"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a71b18c_1d6a69ee","line":77,"in_reply_to":"3a71b18c_1dcee92d","updated":"2016-12-05 23:11:29.000000000","message":"Hi Scott, V3 extends from V2. Here I am not adding any new functionality to V2. Just doing some refactoring which helps in better code. Functionality is getting added to only V3.","commit_id":"054576751c7aaf51af7b33f8669baf6773c355a3"},{"author":{"_account_id":19774,"name":"Vivek Agrawal","email":"vivek.agrawal@veritas.com","username":"viveksagrawal"},"change_message_id":"69837b7df11b865afeae48e26a9b69c518104421","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        \"\"\"Returns a detailed list of snapshots.\"\"\""},{"line_number":75,"context_line":"        return self._items(req, is_detail\u003dTrue)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def _get_snapshot_filter_options(self):"},{"line_number":78,"context_line":"        \"\"\"returns tuple of valid filter options\"\"\""},{"line_number":79,"context_line":"        return \u0027status\u0027, \u0027volume_id\u0027, \u0027name\u0027"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a71b18c_20961c3f","line":77,"in_reply_to":"3a71b18c_a0dcec73","updated":"2016-12-05 23:36:54.000000000","message":"IMO code readability experience remains same for both V2 and V3. We have to just make sure that no test cases fail for V2.","commit_id":"054576751c7aaf51af7b33f8669baf6773c355a3"}],"cinder/api/v3/snapshots.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ef1c4b7a3ca04d676aeed322faba076068136beb","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    _view_builder_class \u003d snapshot_views.ViewBuilder"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def _get_snapshot_filter_options(self):"},{"line_number":36,"context_line":"        \"\"\"returns tuple of valid filter options\"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        return \u0027status\u0027, \u0027volume_id\u0027, \u0027name\u0027, \u0027metadata\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5da102_38845a09","line":35,"updated":"2016-11-03 17:52:27.000000000","message":"nit: we can use property here","commit_id":"6d5494a15ab17df64acaad0206f1a4a55284bebe"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"8d6315d7b4c9db2c6fd39afcd072043fdde47d67","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":50,"context_line":"                LOG.debug(\u0027Could not evaluate value %s, assuming string\u0027,"},{"line_number":51,"context_line":"                          search_opts[\u0027metadata\u0027])"},{"line_number":52,"context_line":"        return"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _process_filters(self, req, context, search_opts):"},{"line_number":55,"context_line":"        \"\"\"Formats allowed filters\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_bea172fa","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":14},"updated":"2016-12-05 20:57:35.000000000","message":"return not needed here.","commit_id":"d07836352250eb1c0cdd7256531d258f946d9dbb"},{"author":{"_account_id":19774,"name":"Vivek Agrawal","email":"vivek.agrawal@veritas.com","username":"viveksagrawal"},"change_message_id":"3fa061eb7e08dd10c0e2568d38e96fadecbe8a52","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":50,"context_line":"                LOG.debug(\u0027Could not evaluate value %s, assuming string\u0027,"},{"line_number":51,"context_line":"                          search_opts[\u0027metadata\u0027])"},{"line_number":52,"context_line":"        return"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _process_filters(self, req, context, search_opts):"},{"line_number":55,"context_line":"        \"\"\"Formats allowed filters\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_7a8b63c3","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":14},"in_reply_to":"3a71b18c_bea172fa","updated":"2016-12-05 22:36:48.000000000","message":"Done","commit_id":"d07836352250eb1c0cdd7256531d258f946d9dbb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"567a64a65f937959f6afec84fe4184c181849946","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        \"\"\"Formats allowed filters\"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        req_version \u003d req.api_version_request"},{"line_number":58,"context_line":"        # if the max version is less than or same as 3.20"},{"line_number":59,"context_line":"        # metadata based filtering is not supported"},{"line_number":60,"context_line":"        if req_version.matches(None, \"3.21\"):"},{"line_number":61,"context_line":"            search_opts.pop(\u0027metadata\u0027, None)"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5201f7_8602e109","line":58,"updated":"2017-01-04 02:35:27.000000000","message":"It\u0027s a comment, but it\u0027s better to fix it to avoid confusion.\n\ns/3.20/3.21","commit_id":"53b70dde0ad78f57f28080d4196be6f376a7a298"},{"author":{"_account_id":19774,"name":"Vivek Agrawal","email":"vivek.agrawal@veritas.com","username":"viveksagrawal"},"change_message_id":"78ffb8d8ceaf024da0f185cb8315a5e081e6d15f","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        \"\"\"Formats allowed filters\"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        req_version \u003d req.api_version_request"},{"line_number":58,"context_line":"        # if the max version is less than or same as 3.20"},{"line_number":59,"context_line":"        # metadata based filtering is not supported"},{"line_number":60,"context_line":"        if req_version.matches(None, \"3.21\"):"},{"line_number":61,"context_line":"            search_opts.pop(\u0027metadata\u0027, None)"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5201f7_ed3b89cf","line":58,"in_reply_to":"ba5201f7_8602e109","updated":"2017-01-04 04:26:24.000000000","message":"Done","commit_id":"53b70dde0ad78f57f28080d4196be6f376a7a298"}],"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"75b3539e23882a32f477020dfdc6adadba85a784","unresolved":false,"context_lines":[{"line_number":2788,"context_line":"                    return None"},{"line_number":2789,"context_line":"                continue"},{"line_number":2790,"context_line":""},{"line_number":2791,"context_line":"            if exclude_list and key in exclude_list:"},{"line_number":2792,"context_line":"                continue"},{"line_number":2793,"context_line":""},{"line_number":2794,"context_line":"            # for keys in filter other than metadata and exclude_list"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba5201f7_5cdc65e4","line":2791,"updated":"2017-01-03 13:04:09.000000000","message":"Since you are setting exclude_list in L#2779, you don\u0027t need to check for existence of exclude_list here.","commit_id":"7eab649faacf0a43aac3e704308ffe3b0d44a381"},{"author":{"_account_id":19774,"name":"Vivek Agrawal","email":"vivek.agrawal@veritas.com","username":"viveksagrawal"},"change_message_id":"2ea11bc42119a2495f4c00b89ce7e8dddabb32c1","unresolved":false,"context_lines":[{"line_number":2788,"context_line":"                    return None"},{"line_number":2789,"context_line":"                continue"},{"line_number":2790,"context_line":""},{"line_number":2791,"context_line":"            if exclude_list and key in exclude_list:"},{"line_number":2792,"context_line":"                continue"},{"line_number":2793,"context_line":""},{"line_number":2794,"context_line":"            # for keys in filter other than metadata and exclude_list"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba5201f7_b4d3965e","line":2791,"in_reply_to":"ba5201f7_5cdc65e4","updated":"2017-01-03 20:58:54.000000000","message":"Done","commit_id":"7eab649faacf0a43aac3e704308ffe3b0d44a381"}],"cinder/tests/unit/api/v3/test_snapshots.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"8d6315d7b4c9db2c6fd39afcd072043fdde47d67","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        # verify no snapshot is returned"},{"line_number":148,"context_line":"        self.assertEqual(0, len(res_dict[\u0027snapshots\u0027]))"},{"line_number":149,"context_line":"        return"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def test_snapshot_list_with_multiple_metadata_in_filter(self):"},{"line_number":152,"context_line":"        # Create snapshot with metadata key1: value1, key2: value2"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_3e956286","line":149,"range":{"start_line":149,"start_character":8,"end_line":149,"end_character":14},"updated":"2016-12-05 20:57:35.000000000","message":"Remove","commit_id":"d07836352250eb1c0cdd7256531d258f946d9dbb"},{"author":{"_account_id":19774,"name":"Vivek Agrawal","email":"vivek.agrawal@veritas.com","username":"viveksagrawal"},"change_message_id":"3fa061eb7e08dd10c0e2568d38e96fadecbe8a52","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        # verify no snapshot is returned"},{"line_number":148,"context_line":"        self.assertEqual(0, len(res_dict[\u0027snapshots\u0027]))"},{"line_number":149,"context_line":"        return"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def test_snapshot_list_with_multiple_metadata_in_filter(self):"},{"line_number":152,"context_line":"        # Create snapshot with metadata key1: value1, key2: value2"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_da8e37cf","line":149,"range":{"start_line":149,"start_character":8,"end_line":149,"end_character":14},"in_reply_to":"3a71b18c_3e956286","updated":"2016-12-05 22:36:48.000000000","message":"Done","commit_id":"d07836352250eb1c0cdd7256531d258f946d9dbb"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"8d6315d7b4c9db2c6fd39afcd072043fdde47d67","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        # verify if the medadata of the returned snapshot is key1: value1"},{"line_number":180,"context_line":"        self.assertDictMatch({\"key1\": \"val1\", \"key11\": \"val11\"}, res_dict["},{"line_number":181,"context_line":"            \u0027snapshots\u0027][0][\u0027metadata\u0027])"},{"line_number":182,"context_line":"        return"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def test_snapshot_list_with_metadata_unsupported_microversion(self):"},{"line_number":185,"context_line":"        # Create snapshot with metadata key1: value1"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_9eeaf60d","line":182,"range":{"start_line":182,"start_character":8,"end_line":182,"end_character":14},"updated":"2016-12-05 20:57:35.000000000","message":"Remove","commit_id":"d07836352250eb1c0cdd7256531d258f946d9dbb"},{"author":{"_account_id":19774,"name":"Vivek Agrawal","email":"vivek.agrawal@veritas.com","username":"viveksagrawal"},"change_message_id":"3fa061eb7e08dd10c0e2568d38e96fadecbe8a52","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        # verify if the medadata of the returned snapshot is key1: value1"},{"line_number":180,"context_line":"        self.assertDictMatch({\"key1\": \"val1\", \"key11\": \"val11\"}, res_dict["},{"line_number":181,"context_line":"            \u0027snapshots\u0027][0][\u0027metadata\u0027])"},{"line_number":182,"context_line":"        return"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def test_snapshot_list_with_metadata_unsupported_microversion(self):"},{"line_number":185,"context_line":"        # Create snapshot with metadata key1: value1"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_fabdb368","line":182,"range":{"start_line":182,"start_character":8,"end_line":182,"end_character":14},"in_reply_to":"3a71b18c_9eeaf60d","updated":"2016-12-05 22:36:48.000000000","message":"Done","commit_id":"d07836352250eb1c0cdd7256531d258f946d9dbb"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"8d6315d7b4c9db2c6fd39afcd072043fdde47d67","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        res_dict \u003d self.controller.detail(req)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        # verify some snapshot is returned"},{"line_number":196,"context_line":"        self.assertIsNot(0, len(res_dict[\u0027snapshots\u0027]))"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_3ec3a28a","line":196,"range":{"start_line":196,"start_character":13,"end_line":196,"end_character":24},"updated":"2016-12-05 20:57:35.000000000","message":"assertIsNot evaluates whether (a, b) are the same objects. You want assertNotEqual here.","commit_id":"d07836352250eb1c0cdd7256531d258f946d9dbb"},{"author":{"_account_id":19774,"name":"Vivek Agrawal","email":"vivek.agrawal@veritas.com","username":"viveksagrawal"},"change_message_id":"3fa061eb7e08dd10c0e2568d38e96fadecbe8a52","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        res_dict \u003d self.controller.detail(req)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        # verify some snapshot is returned"},{"line_number":196,"context_line":"        self.assertIsNot(0, len(res_dict[\u0027snapshots\u0027]))"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_1ac34fee","line":196,"range":{"start_line":196,"start_character":13,"end_line":196,"end_character":24},"in_reply_to":"3a71b18c_3ec3a28a","updated":"2016-12-05 22:36:48.000000000","message":"Done","commit_id":"d07836352250eb1c0cdd7256531d258f946d9dbb"}],"releasenotes/notes/support-metadata-based-snapshot-list-filtering-6e6df68a7ce981f5.yaml":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"567a64a65f937959f6afec84fe4184c181849946","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added support to querying snapshots filtered by metadata key/value"},{"line_number":4,"context_line":"    using \u0027metadata\u0027 optional URL parameter."},{"line_number":5,"context_line":"    For example, \"/v3/snapshots?metadata\u003d\u003d{\"key1\":\"value1\"}\"."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"ba5201f7_04650ae0","line":5,"range":{"start_line":5,"start_character":17,"end_line":5,"end_character":60},"updated":"2017-01-04 02:35:27.000000000","message":"nit: Change the inner quotes to single quotes.\n\n\"/v3/snapshots?metadata\u003d\u003d{\u0027key1\u0027:\u0027value1\u0027}\"","commit_id":"53b70dde0ad78f57f28080d4196be6f376a7a298"},{"author":{"_account_id":19774,"name":"Vivek Agrawal","email":"vivek.agrawal@veritas.com","username":"viveksagrawal"},"change_message_id":"78ffb8d8ceaf024da0f185cb8315a5e081e6d15f","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added support to querying snapshots filtered by metadata key/value"},{"line_number":4,"context_line":"    using \u0027metadata\u0027 optional URL parameter."},{"line_number":5,"context_line":"    For example, \"/v3/snapshots?metadata\u003d\u003d{\"key1\":\"value1\"}\"."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"ba5201f7_0d37ede3","line":5,"range":{"start_line":5,"start_character":17,"end_line":5,"end_character":60},"in_reply_to":"ba5201f7_04650ae0","updated":"2017-01-04 04:26:24.000000000","message":"Done","commit_id":"53b70dde0ad78f57f28080d4196be6f376a7a298"}]}
