)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"c5be842a96a86763b69248feed0598dfc3d55729","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Cao ShuFeng \u003ccaosf.fnst@cn.fujitsu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-05-30 10:21:35 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add filter support to get_pools"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Now cinder get-pools can show all backend\u0027s info. With filter support,"},{"line_number":10,"context_line":"api users can get info about one specified backend pool."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3aaa91ec_d94cc79f","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":3},"updated":"2016-06-28 13:42:54.000000000","message":"Add","commit_id":"fbf3a48ad0bc43959b5639012f0ab9a6ae78089c"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"c5be842a96a86763b69248feed0598dfc3d55729","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Now cinder get-pools can show all backend\u0027s info. With filter support,"},{"line_number":10,"context_line":"api users can get info about one specified backend pool."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"APIImpact"},{"line_number":13,"context_line":"Implements: blueprint allow-api-users-to-get-info-about-a-specified-pool"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3aaa91ec_992a3f8f","line":11,"updated":"2016-06-28 13:42:54.000000000","message":"Do you have links for the patch in Cinderclient if you have done that?","commit_id":"fbf3a48ad0bc43959b5639012f0ab9a6ae78089c"}],"cinder/api/contrib/scheduler_stats.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"cebc1acb9df21cdcd5a72c068f612b2e2725b950","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        authorize(context, \u0027get_pools\u0027)"},{"line_number":41,"context_line":"        req_version \u003d req.api_version_request"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        filters \u003d req.params.copy()"},{"line_number":44,"context_line":"        detail \u003d filters.pop(\u0027detail\u0027, False)"},{"line_number":45,"context_line":"        if req_version.matches(\u00273.7\u0027):"},{"line_number":46,"context_line":"            pools \u003d self.scheduler_api.get_pools(context, filters\u003dfilters)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_a848c2cd","line":43,"updated":"2016-07-08 03:31:10.000000000","message":"There is no need to do this unless we are api version 3.7 or greater.  I\u0027d put this inside the req_version.matches check","commit_id":"1cab4c78240cc99884ef898c3a54533e8cc128d5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"24102239b340477a9b323cc784c261d1c1cf4546","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        filters \u003d req.params.copy()"},{"line_number":44,"context_line":"        detail \u003d filters.pop(\u0027detail\u0027, False)"},{"line_number":45,"context_line":"        if req_version.matches(\u00273.7\u0027):"},{"line_number":46,"context_line":"            pools \u003d self.scheduler_api.get_pools(context, filters\u003dfilters)"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            pools \u003d self.scheduler_api.get_pools(context, filters\u003dNone)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_e59ba770","line":45,"range":{"start_line":45,"start_character":11,"end_line":45,"end_character":38},"updated":"2016-07-05 19:44:46.000000000","message":"I\u0027m not familiar with API version, but, does this requires the request to be the exact 3.7 version? How about later versions?","commit_id":"1cab4c78240cc99884ef898c3a54533e8cc128d5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d4f9ccfa1ddf4db846295651fb2448ed2f228f20","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        filters \u003d req.params.copy()"},{"line_number":44,"context_line":"        detail \u003d filters.pop(\u0027detail\u0027, False)"},{"line_number":45,"context_line":"        if req_version.matches(\u00273.7\u0027):"},{"line_number":46,"context_line":"            pools \u003d self.scheduler_api.get_pools(context, filters\u003dfilters)"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            pools \u003d self.scheduler_api.get_pools(context, filters\u003dNone)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_60e4a1ab","line":45,"range":{"start_line":45,"start_character":11,"end_line":45,"end_character":38},"in_reply_to":"1aa78d24_0ffb6548","updated":"2016-07-06 12:11:02.000000000","message":"Good! Thanks for explaining.","commit_id":"1cab4c78240cc99884ef898c3a54533e8cc128d5"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"f5cf0275a236aff30c185706e2e343a7436ba88b","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        filters \u003d req.params.copy()"},{"line_number":44,"context_line":"        detail \u003d filters.pop(\u0027detail\u0027, False)"},{"line_number":45,"context_line":"        if req_version.matches(\u00273.7\u0027):"},{"line_number":46,"context_line":"            pools \u003d self.scheduler_api.get_pools(context, filters\u003dfilters)"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            pools \u003d self.scheduler_api.get_pools(context, filters\u003dNone)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_0ffb6548","line":45,"range":{"start_line":45,"start_character":11,"end_line":45,"end_character":38},"in_reply_to":"1aa78d24_e59ba770","updated":"2016-07-06 01:00:43.000000000","message":"Hi, Erlon:\n     Thanks for your review.\n      Here req_version.matches(\u00273.7\u0027) means version higher than 3.7 and there is no max limit.\n      ref: https://github.com/openstack/cinder/blob/master/cinder/api/openstack/api_version_request.py#L143\n\nIf you are interested in microversion, you may read this doc:\n     https://github.com/openstack/cinder/blob/master/doc/source/devref/api_microversion_dev.rst","commit_id":"1cab4c78240cc99884ef898c3a54533e8cc128d5"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"70a396b03d0602ad6d8d5dc173ba0aa44a683e3e","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        if req_version.matches(\u00273.14\u0027):"},{"line_number":44,"context_line":"            filters \u003d req.params.copy()"},{"line_number":45,"context_line":"            detail \u003d filters.pop(\u0027detail\u0027, False)"},{"line_number":46,"context_line":"            pools \u003d self.scheduler_api.get_pools(context, filters\u003dfilters)"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            detail \u003d req.params.get(\u0027detail\u0027, False)"}],"source_content_type":"text/x-python","patch_set":20,"id":"fa7ab95a_e4fd593b","line":45,"range":{"start_line":45,"start_character":11,"end_line":45,"end_character":49},"updated":"2016-08-29 08:58:11.000000000","message":"move variable detail outside of if statement","commit_id":"ba6c85414857a0e577214cbac86827cf86973f37"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"914dc11a1c52e5f4f044a1ee95137df9d05553fd","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        if req_version.matches(\u00273.14\u0027):"},{"line_number":44,"context_line":"            filters \u003d req.params.copy()"},{"line_number":45,"context_line":"            detail \u003d filters.pop(\u0027detail\u0027, False)"},{"line_number":46,"context_line":"            pools \u003d self.scheduler_api.get_pools(context, filters\u003dfilters)"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            detail \u003d req.params.get(\u0027detail\u0027, False)"}],"source_content_type":"text/x-python","patch_set":20,"id":"fa7ab95a_d021effc","line":45,"range":{"start_line":45,"start_character":11,"end_line":45,"end_character":49},"in_reply_to":"fa7ab95a_55ff9166","updated":"2016-08-29 09:56:21.000000000","message":"Yes, looks like it is nothing related to the branch code.\nBut, it makes me feel much more safe to leave the older mircoversion api logic untouched.","commit_id":"ba6c85414857a0e577214cbac86827cf86973f37"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"1e27e62a098e1180bf3110b78fef9d1bf88ecd24","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        if req_version.matches(\u00273.14\u0027):"},{"line_number":44,"context_line":"            filters \u003d req.params.copy()"},{"line_number":45,"context_line":"            detail \u003d filters.pop(\u0027detail\u0027, False)"},{"line_number":46,"context_line":"            pools \u003d self.scheduler_api.get_pools(context, filters\u003dfilters)"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            detail \u003d req.params.get(\u0027detail\u0027, False)"}],"source_content_type":"text/x-python","patch_set":20,"id":"fa7ab95a_55ff9166","line":45,"range":{"start_line":45,"start_character":11,"end_line":45,"end_character":49},"in_reply_to":"fa7ab95a_9acf887e","updated":"2016-08-29 09:40:32.000000000","message":"yes,you are right, but we can use pop on every branch as below:\n```\n   filters \u003d req.params.copy()\n   detail \u003d filters.pop(\u0027detail\u0027, False)\n```\nand the detail has nothing related to the branches code","commit_id":"ba6c85414857a0e577214cbac86827cf86973f37"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"252619fce19896cd0ce9f70ced6137a5af321c63","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        if req_version.matches(\u00273.14\u0027):"},{"line_number":44,"context_line":"            filters \u003d req.params.copy()"},{"line_number":45,"context_line":"            detail \u003d filters.pop(\u0027detail\u0027, False)"},{"line_number":46,"context_line":"            pools \u003d self.scheduler_api.get_pools(context, filters\u003dfilters)"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            detail \u003d req.params.get(\u0027detail\u0027, False)"}],"source_content_type":"text/x-python","patch_set":20,"id":"fa7ab95a_9acf887e","line":45,"range":{"start_line":45,"start_character":11,"end_line":45,"end_character":49},"in_reply_to":"fa7ab95a_e4fd593b","updated":"2016-08-29 09:21:37.000000000","message":"In line 45, we are using \"pop\".\nIn line 48, we are using \"get\".\nThey are different. We can not simply move them outside of if statement.","commit_id":"ba6c85414857a0e577214cbac86827cf86973f37"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"805031849590d8bdba4fa597ec80bafa6aca6e1a","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        req_version \u003d req.api_version_request"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        if req_version.matches(\u00273.28\u0027):"},{"line_number":48,"context_line":"            filters \u003d req.params.copy()"},{"line_number":49,"context_line":"            filters.pop(\u0027detail\u0027, None)"},{"line_number":50,"context_line":"            pools \u003d self.scheduler_api.get_pools(context, filters\u003dfilters)"}],"source_content_type":"text/x-python","patch_set":25,"id":"1a430d35_b6e1452c","line":47,"range":{"start_line":47,"start_character":31,"end_line":47,"end_character":36},"updated":"2017-02-09 03:37:22.000000000","message":"In other places this has been done as a constant at the top of the file.  I would recommend that approach as it is then easier to tell what/where there are microversions.","commit_id":"fd559978defbda557b1fdaed372c9a8c9541b5c4"},{"author":{"_account_id":24309,"name":"xinyanzhang","email":"236592348@qq.com","username":"xinyanzhang"},"change_message_id":"4d17d3b1f7ba78c8d9c6282db596c5b6c9b0fbc6","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        req_version \u003d req.api_version_request"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        if req_version.matches(\u00273.28\u0027):"},{"line_number":48,"context_line":"            filters \u003d req.params.copy()"},{"line_number":49,"context_line":"            filters.pop(\u0027detail\u0027, None)"},{"line_number":50,"context_line":"            pools \u003d self.scheduler_api.get_pools(context, filters\u003dfilters)"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa31d9ce_0a49f08b","line":47,"range":{"start_line":47,"start_character":31,"end_line":47,"end_character":36},"in_reply_to":"1a430d35_b6e1452c","updated":"2017-02-10 03:21:06.000000000","message":"Done","commit_id":"fd559978defbda557b1fdaed372c9a8c9541b5c4"}],"cinder/api/openstack/api_version_request.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"5708696b12233a2112e9d23e1a0bd18e550c145c","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    * 3.5 - Add pagination support to messages API."},{"line_number":55,"context_line":"    * 3.6 - Allows to set empty description and empty name for consistency"},{"line_number":56,"context_line":"            group in consisgroup-update operation."},{"line_number":57,"context_line":"    * 3.7 - Add filters to get_pools"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"\"\"\""},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_1cddca14","line":57,"range":{"start_line":57,"start_character":12,"end_line":57,"end_character":36},"updated":"2016-07-04 04:58:35.000000000","message":"nit: Add filters support to get_pools","commit_id":"5605aa1ebe0ccfede6671cc01ed26550ac167145"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"0918651f510c69561979648270de9b01e641aa39","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    * 3.5 - Add pagination support to messages API."},{"line_number":55,"context_line":"    * 3.6 - Allows to set empty description and empty name for consistency"},{"line_number":56,"context_line":"            group in consisgroup-update operation."},{"line_number":57,"context_line":"    * 3.7 - Add filters to get_pools"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"\"\"\""},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_d576753d","line":57,"range":{"start_line":57,"start_character":12,"end_line":57,"end_character":36},"in_reply_to":"1aa78d24_1cddca14","updated":"2016-07-04 05:43:43.000000000","message":"Done","commit_id":"5605aa1ebe0ccfede6671cc01ed26550ac167145"}],"cinder/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"5708696b12233a2112e9d23e1a0bd18e550c145c","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"3.7"},{"line_number":74,"context_line":"---"},{"line_number":75,"context_line":"  Add filters to get_pools"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1aa78d24_9cd1bafe","line":75,"range":{"start_line":75,"start_character":2,"end_line":75,"end_character":13},"updated":"2016-07-04 04:58:35.000000000","message":"nit: Add filters support to get_pools","commit_id":"5605aa1ebe0ccfede6671cc01ed26550ac167145"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"0918651f510c69561979648270de9b01e641aa39","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"3.7"},{"line_number":74,"context_line":"---"},{"line_number":75,"context_line":"  Add filters to get_pools"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1aa78d24_55fe056c","line":75,"range":{"start_line":75,"start_character":2,"end_line":75,"end_character":13},"in_reply_to":"1aa78d24_9cd1bafe","updated":"2016-07-04 05:43:43.000000000","message":"Done","commit_id":"5605aa1ebe0ccfede6671cc01ed26550ac167145"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"c40462ae29da360eab831ced99b2f3e411e5b54c","unresolved":false,"context_lines":[{"line_number":187,"context_line":"----"},{"line_number":188,"context_line":"  Added group snapshots and create group from src APIs."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"3.15 (Maximum in Newton)"},{"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."}],"source_content_type":"text/x-rst","patch_set":24,"id":"fa6399be_d2d44ced","line":190,"range":{"start_line":190,"start_character":5,"end_line":190,"end_character":24},"updated":"2016-10-14 12:47:25.000000000","message":"What does this mean? This doesn\u0027t seem to be part of this patch.","commit_id":"48bda09a740dfa38bd95e7b04e3dba11f3d3aa77"}],"cinder/scheduler/host_manager.py":[{"author":{"_account_id":12184,"name":"Weiwei Gu","email":"gu.weiwei@zte.com.cn","username":"guweiwei"},"change_message_id":"b13077fb29b014db22c21143f447a5e167708e23","unresolved":false,"context_lines":[{"line_number":533,"context_line":"                new_pool \u003d dict(name\u003dpool_key)"},{"line_number":534,"context_line":"                new_pool.update(dict(capabilities\u003dpool.capabilities))"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"                if name:"},{"line_number":537,"context_line":"                    if name and new_pool.get(\u0027name\u0027) !\u003d name:"},{"line_number":538,"context_line":"                        continue"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"                if filters:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9abb7d3a_da782cf5","line":537,"range":{"start_line":536,"start_character":11,"end_line":537,"end_character":27},"updated":"2016-05-30 09:48:24.000000000","message":"Repeated check name ?","commit_id":"d9661d6a857853d5b53cd93c74d5815450a337ed"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"1280985afa70d3f9c2ac52d02b60106d441e862f","unresolved":false,"context_lines":[{"line_number":533,"context_line":"                new_pool \u003d dict(name\u003dpool_key)"},{"line_number":534,"context_line":"                new_pool.update(dict(capabilities\u003dpool.capabilities))"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"                if name:"},{"line_number":537,"context_line":"                    if name and new_pool.get(\u0027name\u0027) !\u003d name:"},{"line_number":538,"context_line":"                        continue"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"                if filters:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9abb7d3a_bc9ba3c8","line":537,"range":{"start_line":536,"start_character":11,"end_line":537,"end_character":27},"in_reply_to":"9abb7d3a_da782cf5","updated":"2016-05-30 10:20:44.000000000","message":"Done","commit_id":"d9661d6a857853d5b53cd93c74d5815450a337ed"},{"author":{"_account_id":12184,"name":"Weiwei Gu","email":"gu.weiwei@zte.com.cn","username":"guweiwei"},"change_message_id":"b13077fb29b014db22c21143f447a5e167708e23","unresolved":false,"context_lines":[{"line_number":537,"context_line":"                    if name and new_pool.get(\u0027name\u0027) !\u003d name:"},{"line_number":538,"context_line":"                        continue"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"                if filters:"},{"line_number":541,"context_line":"                    # filter all other items in capabilities"},{"line_number":542,"context_line":"                    for (attr, value) in filters.items():"},{"line_number":543,"context_line":"                        cap \u003d new_pool.get(\u0027capabilities\u0027).get(attr)"},{"line_number":544,"context_line":"                        if not self._equal_without_type(cap, value):"},{"line_number":545,"context_line":"                            filtered \u003d True"},{"line_number":546,"context_line":"                            break"},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"                if not filtered:"},{"line_number":549,"context_line":"                    all_pools.append(new_pool)"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"        return all_pools"},{"line_number":552,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9abb7d3a_15c8c721","line":549,"range":{"start_line":540,"start_character":0,"end_line":549,"end_character":46},"updated":"2016-05-30 09:48:24.000000000","message":"Are there any other filtering conditions, except \"name\"?","commit_id":"d9661d6a857853d5b53cd93c74d5815450a337ed"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"1280985afa70d3f9c2ac52d02b60106d441e862f","unresolved":false,"context_lines":[{"line_number":537,"context_line":"                    if name and new_pool.get(\u0027name\u0027) !\u003d name:"},{"line_number":538,"context_line":"                        continue"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"                if filters:"},{"line_number":541,"context_line":"                    # filter all other items in capabilities"},{"line_number":542,"context_line":"                    for (attr, value) in filters.items():"},{"line_number":543,"context_line":"                        cap \u003d new_pool.get(\u0027capabilities\u0027).get(attr)"},{"line_number":544,"context_line":"                        if not self._equal_without_type(cap, value):"},{"line_number":545,"context_line":"                            filtered \u003d True"},{"line_number":546,"context_line":"                            break"},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"                if not filtered:"},{"line_number":549,"context_line":"                    all_pools.append(new_pool)"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"        return all_pools"},{"line_number":552,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9abb7d3a_bcba83df","line":549,"range":{"start_line":540,"start_character":0,"end_line":549,"end_character":46},"in_reply_to":"9abb7d3a_15c8c721","updated":"2016-05-30 10:20:44.000000000","message":"Hi Weiwei Gu:\n   This implement here(line 540 to line 546) can filter all capabilities, but for cli users[1] we only support \"--name\".\n   We can add other filters in cinderclient if necessary,as we already support it here.\n\nThanks","commit_id":"d9661d6a857853d5b53cd93c74d5815450a337ed"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"5708696b12233a2112e9d23e1a0bd18e550c145c","unresolved":false,"context_lines":[{"line_number":533,"context_line":"                new_pool \u003d dict(name\u003dpool_key)"},{"line_number":534,"context_line":"                new_pool.update(dict(capabilities\u003dpool.capabilities))"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"                if name:"},{"line_number":537,"context_line":"                    if name and new_pool.get(\u0027name\u0027) !\u003d name:"},{"line_number":538,"context_line":"                        continue"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"                if filters:"},{"line_number":541,"context_line":"                    # filter all other items in capabilities"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_9cf89a7e","line":538,"range":{"start_line":536,"start_character":16,"end_line":538,"end_character":32},"updated":"2016-07-04 04:58:35.000000000","message":"if name and new_pool[\u0027name\u0027] !\u003d name:\n        continue","commit_id":"5605aa1ebe0ccfede6671cc01ed26550ac167145"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"0918651f510c69561979648270de9b01e641aa39","unresolved":false,"context_lines":[{"line_number":533,"context_line":"                new_pool \u003d dict(name\u003dpool_key)"},{"line_number":534,"context_line":"                new_pool.update(dict(capabilities\u003dpool.capabilities))"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"                if name:"},{"line_number":537,"context_line":"                    if name and new_pool.get(\u0027name\u0027) !\u003d name:"},{"line_number":538,"context_line":"                        continue"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"                if filters:"},{"line_number":541,"context_line":"                    # filter all other items in capabilities"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_35037975","line":538,"range":{"start_line":536,"start_character":16,"end_line":538,"end_character":32},"in_reply_to":"1aa78d24_9cf89a7e","updated":"2016-07-04 05:43:43.000000000","message":"Done","commit_id":"5605aa1ebe0ccfede6671cc01ed26550ac167145"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"5708696b12233a2112e9d23e1a0bd18e550c145c","unresolved":false,"context_lines":[{"line_number":552,"context_line":""},{"line_number":553,"context_line":"    def _equal_without_type(self, capability, value):"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"        # pool stats is stored in memory, so we can\u0027t get type of"},{"line_number":556,"context_line":"        # these capabilities from db."},{"line_number":557,"context_line":"        if isinstance(value, type(capability)) or not capability:"},{"line_number":558,"context_line":"            return value \u003d\u003d capability"},{"line_number":559,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_fc355ef7","line":556,"range":{"start_line":555,"start_character":8,"end_line":556,"end_character":37},"updated":"2016-07-04 04:58:35.000000000","message":"This comment is confusing, please remove it or make it clear.","commit_id":"5605aa1ebe0ccfede6671cc01ed26550ac167145"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"0918651f510c69561979648270de9b01e641aa39","unresolved":false,"context_lines":[{"line_number":552,"context_line":""},{"line_number":553,"context_line":"    def _equal_without_type(self, capability, value):"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"        # pool stats is stored in memory, so we can\u0027t get type of"},{"line_number":556,"context_line":"        # these capabilities from db."},{"line_number":557,"context_line":"        if isinstance(value, type(capability)) or not capability:"},{"line_number":558,"context_line":"            return value \u003d\u003d capability"},{"line_number":559,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_95f86d7e","line":556,"range":{"start_line":555,"start_character":8,"end_line":556,"end_character":37},"in_reply_to":"1aa78d24_fc355ef7","updated":"2016-07-04 05:43:43.000000000","message":"Done","commit_id":"5605aa1ebe0ccfede6671cc01ed26550ac167145"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"58b8316dc42828900fdb82ef8a3e61d0373add47","unresolved":false,"context_lines":[{"line_number":549,"context_line":""},{"line_number":550,"context_line":"        return all_pools"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"    def _equal_without_type(self, capability, value):"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"        if isinstance(value, type(capability)) or not capability:"},{"line_number":555,"context_line":"            return value \u003d\u003d capability"}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_f09f3fb2","line":552,"updated":"2016-07-04 05:46:45.000000000","message":"This function name is also confusing if not misleading.  Can we change it?  Also it would help if you can add a unit test for this pariticular function.  Thanks.","commit_id":"54250d18b380111869caf99c914d438f6a6465e8"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"d421a792397c497309a3c2c3ed96886ea0d0f4ba","unresolved":false,"context_lines":[{"line_number":549,"context_line":""},{"line_number":550,"context_line":"        return all_pools"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"    def _equal_without_type(self, capability, value):"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"        if isinstance(value, type(capability)) or not capability:"},{"line_number":555,"context_line":"            return value \u003d\u003d capability"}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_0c13aeb9","line":552,"in_reply_to":"1aa78d24_f09f3fb2","updated":"2016-07-05 02:06:34.000000000","message":"Done","commit_id":"54250d18b380111869caf99c914d438f6a6465e8"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"70a396b03d0602ad6d8d5dc173ba0aa44a683e3e","unresolved":false,"context_lines":[{"line_number":531,"context_line":""},{"line_number":532,"context_line":"        for host, state in self.host_state_map.items():"},{"line_number":533,"context_line":"            for key in state.pools:"},{"line_number":534,"context_line":"                filtered \u003d False"},{"line_number":535,"context_line":"                pool \u003d state.pools[key]"},{"line_number":536,"context_line":"                # use host.pool_name to make sure key is unique"},{"line_number":537,"context_line":"                pool_key \u003d vol_utils.append_host(host, pool.pool_name)"}],"source_content_type":"text/x-python","patch_set":20,"id":"fa7ab95a_c485b5ad","line":534,"range":{"start_line":534,"start_character":12,"end_line":534,"end_character":32},"updated":"2016-08-29 08:58:11.000000000","message":"IMO,it\u0027s better to filter the pools with an individual function","commit_id":"ba6c85414857a0e577214cbac86827cf86973f37"}],"cinder/tests/unit/api/contrib/test_scheduler_stats.py":[{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"2dae23862c9378f8dc5d7ab9c65769304cbeff70","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        self.assertDictMatch(expected, res)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    @mock.patch(\u0027cinder.scheduler.rpcapi.SchedulerAPI.get_pools\u0027)"},{"line_number":78,"context_line":"    def test_get_pools_summery_filter_name(self, mock_rpcapi):"},{"line_number":79,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/%s/scheduler_stats?name\u003dpool1\u0027 %"},{"line_number":80,"context_line":"                                      fake.PROJECT_ID)"},{"line_number":81,"context_line":"        mock_rpcapi.return_value \u003d [dict(name\u003d\u0027pool1\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ac06dbe_64a95124","line":78,"range":{"start_line":78,"start_character":8,"end_line":78,"end_character":42},"updated":"2016-08-23 05:36:11.000000000","message":"small typo : summary and not summery","commit_id":"8b602c127572983fcb574a4ab9b5fafec0189e46"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"2e3964a86abe19a76b2d7cd2fae6ff315a490a60","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        self.assertDictMatch(expected, res)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    @mock.patch(\u0027cinder.scheduler.rpcapi.SchedulerAPI.get_pools\u0027)"},{"line_number":78,"context_line":"    def test_get_pools_summery_filter_name(self, mock_rpcapi):"},{"line_number":79,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/%s/scheduler_stats?name\u003dpool1\u0027 %"},{"line_number":80,"context_line":"                                      fake.PROJECT_ID)"},{"line_number":81,"context_line":"        mock_rpcapi.return_value \u003d [dict(name\u003d\u0027pool1\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ac06dbe_e297f137","line":78,"range":{"start_line":78,"start_character":8,"end_line":78,"end_character":42},"in_reply_to":"1ac06dbe_64a95124","updated":"2016-08-23 06:23:05.000000000","message":"Done","commit_id":"8b602c127572983fcb574a4ab9b5fafec0189e46"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"2dae23862c9378f8dc5d7ab9c65769304cbeff70","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        mock_rpcapi.assert_called_with(mock.ANY, filters\u003dfilters)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    @mock.patch(\u0027cinder.scheduler.rpcapi.SchedulerAPI.get_pools\u0027)"},{"line_number":100,"context_line":"    def test_get_pools_summery_filter_capabilities(self, mock_rpcapi):"},{"line_number":101,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/%s/scheduler_stats?detail\u003dTrue\u0027"},{"line_number":102,"context_line":"                                      \u0027\u0026foo\u003dbar\u0027 % fake.PROJECT_ID)"},{"line_number":103,"context_line":"        mock_rpcapi.return_value \u003d [dict(name\u003d\u0027pool1\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ac06dbe_44a6d553","line":100,"range":{"start_line":100,"start_character":8,"end_line":100,"end_character":50},"updated":"2016-08-23 05:36:11.000000000","message":"Ditto","commit_id":"8b602c127572983fcb574a4ab9b5fafec0189e46"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"2e3964a86abe19a76b2d7cd2fae6ff315a490a60","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        mock_rpcapi.assert_called_with(mock.ANY, filters\u003dfilters)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    @mock.patch(\u0027cinder.scheduler.rpcapi.SchedulerAPI.get_pools\u0027)"},{"line_number":100,"context_line":"    def test_get_pools_summery_filter_capabilities(self, mock_rpcapi):"},{"line_number":101,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/%s/scheduler_stats?detail\u003dTrue\u0027"},{"line_number":102,"context_line":"                                      \u0027\u0026foo\u003dbar\u0027 % fake.PROJECT_ID)"},{"line_number":103,"context_line":"        mock_rpcapi.return_value \u003d [dict(name\u003d\u0027pool1\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ac06dbe_42c0852a","line":100,"range":{"start_line":100,"start_character":8,"end_line":100,"end_character":50},"in_reply_to":"1ac06dbe_44a6d553","updated":"2016-08-23 06:23:05.000000000","message":"Done","commit_id":"8b602c127572983fcb574a4ab9b5fafec0189e46"}],"cinder/tests/unit/scheduler/test_host_manager.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"257633cee9638ce346ed00c62ba4b1aa5b54598c","unresolved":false,"context_lines":[{"line_number":528,"context_line":"        (True, \u0027True\u0027, True),"},{"line_number":529,"context_line":"        (1.1, \u00271.1\u0027, True),"},{"line_number":530,"context_line":"        (\u0027str\u0027, \u0027str\u0027, True),"},{"line_number":531,"context_line":"        (\u0027str1\u0027, \u0027str2\u0027, False))"},{"line_number":532,"context_line":"    @ddt.unpack"},{"line_number":533,"context_line":"    def test_equal_after_convert(self, cap, value, ret_value):"},{"line_number":534,"context_line":"        self.assertEqual(ret_value,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1aa78d24_cf7878f5","line":531,"updated":"2016-07-05 02:57:39.000000000","message":"A few slightly complicated cases can be added:\n ([\u0027hdd\u0027, \u0027ssd\u0027], \u0027hdd\u0027, False),\n ([\u0027hdd\u0027, \u0027ssd\u0027], [\u0027ssd\u0027, \u0027hdd\u0027], False),\n (\u0027Superman\u0027, \u0027sUperMan\u0027, False)\n ...","commit_id":"9993db9e8f2323e431a98694d3f4987e00bb6f55"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"2dae23862c9378f8dc5d7ab9c65769304cbeff70","unresolved":false,"context_lines":[{"line_number":537,"context_line":"        (\u0027str\u0027, \u0027StR\u0027, False),"},{"line_number":538,"context_line":"        ([], [], True),"},{"line_number":539,"context_line":"        ([\u0027hdd\u0027, \u0027ssd\u0027], [\u0027ssd\u0027], False),"},{"line_number":540,"context_line":"        ([\u0027hdd\u0027, \u0027ssd\u0027], [\u0027ssd\u0027, \u0027hdd\u0027], False),"},{"line_number":541,"context_line":"        ([\u0027hdd\u0027, \u0027ssd\u0027], \"[\u0027hdd\u0027, \u0027ssd\u0027]\", True),"},{"line_number":542,"context_line":"        ({}, {}, True),"},{"line_number":543,"context_line":"        ({\u0027a\u0027: \u0027a\u0027, \u0027b\u0027: \u0027b\u0027}, {\u0027b\u0027: \u0027b\u0027, \u0027a\u0027: \u0027a\u0027}, True),"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ac06dbe_c7f647f8","line":540,"range":{"start_line":540,"start_character":41,"end_line":540,"end_character":46},"updated":"2016-08-23 05:36:11.000000000","message":"I am sure if a order change in list needs to be necessarily False","commit_id":"8b602c127572983fcb574a4ab9b5fafec0189e46"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"2e3964a86abe19a76b2d7cd2fae6ff315a490a60","unresolved":false,"context_lines":[{"line_number":537,"context_line":"        (\u0027str\u0027, \u0027StR\u0027, False),"},{"line_number":538,"context_line":"        ([], [], True),"},{"line_number":539,"context_line":"        ([\u0027hdd\u0027, \u0027ssd\u0027], [\u0027ssd\u0027], False),"},{"line_number":540,"context_line":"        ([\u0027hdd\u0027, \u0027ssd\u0027], [\u0027ssd\u0027, \u0027hdd\u0027], False),"},{"line_number":541,"context_line":"        ([\u0027hdd\u0027, \u0027ssd\u0027], \"[\u0027hdd\u0027, \u0027ssd\u0027]\", True),"},{"line_number":542,"context_line":"        ({}, {}, True),"},{"line_number":543,"context_line":"        ({\u0027a\u0027: \u0027a\u0027, \u0027b\u0027: \u0027b\u0027}, {\u0027b\u0027: \u0027b\u0027, \u0027a\u0027: \u0027a\u0027}, True),"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ac06dbe_8296fd3c","line":540,"range":{"start_line":540,"start_character":41,"end_line":540,"end_character":46},"in_reply_to":"1ac06dbe_c7f647f8","updated":"2016-08-23 06:23:05.000000000","message":"Hi, Karthik:\n    I think a list is ordered.\n        \u003e\u003e\u003e [1,2] \u003d\u003d [2,1]\n        False","commit_id":"8b602c127572983fcb574a4ab9b5fafec0189e46"}],"releasenotes/notes/add-filter-support-to-get-pools-0d7a715d95924e7d.yaml":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"5708696b12233a2112e9d23e1a0bd18e550c145c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add filter support to get-pools API."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"1aa78d24_355c1925","line":3,"range":{"start_line":3,"start_character":26,"end_line":3,"end_character":35},"updated":"2016-07-04 04:58:35.000000000","message":"get_pools","commit_id":"5605aa1ebe0ccfede6671cc01ed26550ac167145"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"0918651f510c69561979648270de9b01e641aa39","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add filter support to get-pools API."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"1aa78d24_75f50182","line":3,"range":{"start_line":3,"start_character":26,"end_line":3,"end_character":35},"in_reply_to":"1aa78d24_355c1925","updated":"2016-07-04 05:43:43.000000000","message":"Done","commit_id":"5605aa1ebe0ccfede6671cc01ed26550ac167145"}],"releasenotes/notes/add-filters-support-to-get_pools-0852e9c0e42fbf98.yaml":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"805031849590d8bdba4fa597ec80bafa6aca6e1a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add filters support to get_pools API."}],"source_content_type":"text/x-yaml","patch_set":25,"id":"1a430d35_f663cdae","line":3,"range":{"start_line":3,"start_character":40,"end_line":3,"end_character":41},"updated":"2017-02-09 03:37:22.000000000","message":"Think we should also document the associated microversion here please.","commit_id":"fd559978defbda557b1fdaed372c9a8c9541b5c4"},{"author":{"_account_id":24309,"name":"xinyanzhang","email":"236592348@qq.com","username":"xinyanzhang"},"change_message_id":"4d17d3b1f7ba78c8d9c6282db596c5b6c9b0fbc6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add filters support to get_pools API."}],"source_content_type":"text/x-yaml","patch_set":25,"id":"fa31d9ce_ea43bc6a","line":3,"range":{"start_line":3,"start_character":40,"end_line":3,"end_character":41},"in_reply_to":"1a430d35_f663cdae","updated":"2017-02-10 03:21:06.000000000","message":"Done","commit_id":"fd559978defbda557b1fdaed372c9a8c9541b5c4"}]}
