)]}'
{"rally/plugins/openstack/wrappers/glance.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7bf80852c64e05f366350aa332b83a4afdbe6b3e","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            timeout\u003dCONF.benchmark.glance_image_delete_timeout,"},{"line_number":117,"context_line":"            check_interval\u003dCONF.benchmark.glance_image_delete_poll_interval)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def list_images(self, **filters):"},{"line_number":120,"context_line":"        kwargs \u003d {\"filters\": dict(filters)}"},{"line_number":121,"context_line":"        if \"owner\" in filters:"},{"line_number":122,"context_line":"            # NOTE(stpierre): in glance v1, \"owner\" is not a filter,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_2def5cb1","line":119,"updated":"2016-04-13 15:46:10.000000000","message":"While we are here, could you fix one more filter \"visibility\"?\n\nFor V1 we have is_public property (can be True or False) of image, which is not filterable, so we need to filter it manually.\n\nFor V2, we have \"visibility\" property (\"private\" or \"public\" values). For V1, property has name \"is_public\"(True/False values) and we can\u0027t filter by it.\n\nCould you add unified is_public\u003dNone arg for V1 and V2?","commit_id":"080700e53c6f34ad47e1c692e53a7e069bc66649"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"bd02fe2926c8d82080652ae79aabcd8a4ee51966","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            timeout\u003dCONF.benchmark.glance_image_delete_timeout,"},{"line_number":117,"context_line":"            check_interval\u003dCONF.benchmark.glance_image_delete_poll_interval)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def list_images(self, **filters):"},{"line_number":120,"context_line":"        kwargs \u003d {\"filters\": dict(filters)}"},{"line_number":121,"context_line":"        if \"owner\" in filters:"},{"line_number":122,"context_line":"            # NOTE(stpierre): in glance v1, \"owner\" is not a filter,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_e0360be6","line":119,"in_reply_to":"5a18252c_2def5cb1","updated":"2016-04-13 15:49:37.000000000","message":"Sorry, the third paragraph is too mixed:) It should be:\n\n\u003eFor V2, we have \"visibility\" property (\"private\" or \"public\" values) which is filterable.","commit_id":"080700e53c6f34ad47e1c692e53a7e069bc66649"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"ad59828bc79a1ef10c38e13a8e8fa71635ad6908","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            timeout\u003dCONF.benchmark.glance_image_delete_timeout,"},{"line_number":117,"context_line":"            check_interval\u003dCONF.benchmark.glance_image_delete_poll_interval)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def list_images(self, **filters):"},{"line_number":120,"context_line":"        kwargs \u003d {\"filters\": dict(filters)}"},{"line_number":121,"context_line":"        if \"owner\" in filters:"},{"line_number":122,"context_line":"            # NOTE(stpierre): in glance v1, \"owner\" is not a filter,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_e0ca8b6d","line":119,"in_reply_to":"5a18252c_2def5cb1","updated":"2016-04-13 15:58:35.000000000","message":"Would it make sense to instead accept a \"visibility\" filter for either API version? That would keep the glance v2 wrapper simple, and arguments to list_images() would be consistent with how glance v2 accepts filters.","commit_id":"080700e53c6f34ad47e1c692e53a7e069bc66649"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"8e4e5ee6a60a89ad4ab26335ac26b498cce5015e","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            timeout\u003dCONF.benchmark.glance_image_delete_timeout,"},{"line_number":117,"context_line":"            check_interval\u003dCONF.benchmark.glance_image_delete_poll_interval)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def list_images(self, **filters):"},{"line_number":120,"context_line":"        kwargs \u003d {\"filters\": dict(filters)}"},{"line_number":121,"context_line":"        if \"owner\" in filters:"},{"line_number":122,"context_line":"            # NOTE(stpierre): in glance v1, \"owner\" is not a filter,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_60083b92","line":119,"in_reply_to":"5a18252c_e0ca8b6d","updated":"2016-04-13 16:01:36.000000000","message":"No matter, it can be named as \"visibility\":)","commit_id":"080700e53c6f34ad47e1c692e53a7e069bc66649"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7bf80852c64e05f366350aa332b83a4afdbe6b3e","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            check_interval\u003dCONF.benchmark.glance_image_delete_poll_interval)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def list_images(self, **filters):"},{"line_number":120,"context_line":"        kwargs \u003d {\"filters\": dict(filters)}"},{"line_number":121,"context_line":"        if \"owner\" in filters:"},{"line_number":122,"context_line":"            # NOTE(stpierre): in glance v1, \"owner\" is not a filter,"},{"line_number":123,"context_line":"            # so we need to handle it separately."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_4dc0d87b","line":120,"range":{"start_line":120,"start_character":17,"end_line":120,"end_character":43},"updated":"2016-04-13 15:46:10.000000000","message":"why not just  {\"filters\": filters} ?","commit_id":"080700e53c6f34ad47e1c692e53a7e069bc66649"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"ad59828bc79a1ef10c38e13a8e8fa71635ad6908","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            check_interval\u003dCONF.benchmark.glance_image_delete_poll_interval)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def list_images(self, **filters):"},{"line_number":120,"context_line":"        kwargs \u003d {\"filters\": dict(filters)}"},{"line_number":121,"context_line":"        if \"owner\" in filters:"},{"line_number":122,"context_line":"            # NOTE(stpierre): in glance v1, \"owner\" is not a filter,"},{"line_number":123,"context_line":"            # so we need to handle it separately."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a18252c_805f57e4","line":120,"range":{"start_line":120,"start_character":17,"end_line":120,"end_character":43},"in_reply_to":"5a18252c_4dc0d87b","updated":"2016-04-13 15:58:35.000000000","message":"We need to make a copy of \u0027filters\u0027, or the pop() below will modify the dict passed in.","commit_id":"080700e53c6f34ad47e1c692e53a7e069bc66649"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"5d82e2c9b210e66e8ffd3bd628533b13fcdeefff","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            else:"},{"line_number":95,"context_line":"                kw[\"copy_from\"] \u003d image_location"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"            image \u003d self.client.images.create(**kw)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"            time.sleep(CONF.benchmark.glance_image_create_prepoll_delay)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_2dc72f65","line":97,"updated":"2016-04-14 10:52:13.000000000","message":"Also, can we add the same thing with \"visibility\" here like you do in list_images?","commit_id":"866e690e207d0ff21a785046098b99f8a89edeb0"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"128aac4f016a1da4bed17c2f6c39fc8fdb100ade","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            else:"},{"line_number":95,"context_line":"                kw[\"copy_from\"] \u003d image_location"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"            image \u003d self.client.images.create(**kw)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"            time.sleep(CONF.benchmark.glance_image_create_prepoll_delay)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_d0c8cfaa","line":97,"in_reply_to":"5a18252c_2dc72f65","updated":"2016-04-14 12:20:36.000000000","message":"We can in a different patch.","commit_id":"866e690e207d0ff21a785046098b99f8a89edeb0"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"ce785cc24e0e3fed9b0fe9c36004d1b588110c70","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            check_interval\u003dCONF.benchmark.glance_image_delete_poll_interval)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def list_images(self, **filters):"},{"line_number":123,"context_line":"        kwargs \u003d {\"filters\": dict(filters)}"},{"line_number":124,"context_line":"        if \"owner\" in filters:"},{"line_number":125,"context_line":"            # NOTE(stpierre): in glance v1, \"owner\" is not a filter,"},{"line_number":126,"context_line":"            # so we need to handle it separately."}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_798a911c","line":123,"range":{"start_line":123,"start_character":29,"end_line":123,"end_character":33},"updated":"2016-04-14 10:05:31.000000000","message":"Is it necessary to do dict(...)? I think\n\n    kwargs \u003d {\"filters\": filters}\n\nwill work fine :)","commit_id":"866e690e207d0ff21a785046098b99f8a89edeb0"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"128aac4f016a1da4bed17c2f6c39fc8fdb100ade","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            check_interval\u003dCONF.benchmark.glance_image_delete_poll_interval)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def list_images(self, **filters):"},{"line_number":123,"context_line":"        kwargs \u003d {\"filters\": dict(filters)}"},{"line_number":124,"context_line":"        if \"owner\" in filters:"},{"line_number":125,"context_line":"            # NOTE(stpierre): in glance v1, \"owner\" is not a filter,"},{"line_number":126,"context_line":"            # so we need to handle it separately."}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_50bddf00","line":123,"range":{"start_line":123,"start_character":29,"end_line":123,"end_character":33},"in_reply_to":"5a18252c_798a911c","updated":"2016-04-14 12:20:36.000000000","message":"You\u0027re right, because of the **-magic. Done.","commit_id":"866e690e207d0ff21a785046098b99f8a89edeb0"},{"author":{"_account_id":20196,"name":"Piyush","email":"piyush2011257@gmail.com","username":"pirsriva"},"change_message_id":"d4a8fc8cc3cbb4365de2e6b1353a9d6708717695","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            kwargs[\"owner\"] \u003d kwargs[\"filters\"].pop(\"owner\")"},{"line_number":128,"context_line":"        visibility \u003d kwargs[\"filters\"].pop(\"visibility\", None)"},{"line_number":129,"context_line":"        images \u003d self.client.images.list(**kwargs)"},{"line_number":130,"context_line":"        # NOTE(stpierre): Glance v1 isn\u0027t smart enough to filter on"},{"line_number":131,"context_line":"        # public/private images, so we have to do it manually."},{"line_number":132,"context_line":"        if visibility is not None:"},{"line_number":133,"context_line":"            is_public \u003d visibility \u003d\u003d \"public\""},{"line_number":134,"context_line":"            return [i for i in images if i.is_public \u003d\u003d is_public]"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_c4b2e393","line":131,"range":{"start_line":130,"start_character":0,"end_line":131,"end_character":62},"updated":"2016-04-14 08:11:09.000000000","message":"IMHO it would be helpful to also mention that user needs to use \"visibility\" filter in V1 instead of \"is_public\". Since visibility is used in V2 and NOT V1 glance clients and we are back-porting visibility from V2 to V1.\n\nI do see that at Line 75, it says- \"Accepts all Glance V2 filters\"\n\nIf this is not a concern, then LGTM","commit_id":"866e690e207d0ff21a785046098b99f8a89edeb0"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"128aac4f016a1da4bed17c2f6c39fc8fdb100ade","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            kwargs[\"owner\"] \u003d kwargs[\"filters\"].pop(\"owner\")"},{"line_number":128,"context_line":"        visibility \u003d kwargs[\"filters\"].pop(\"visibility\", None)"},{"line_number":129,"context_line":"        images \u003d self.client.images.list(**kwargs)"},{"line_number":130,"context_line":"        # NOTE(stpierre): Glance v1 isn\u0027t smart enough to filter on"},{"line_number":131,"context_line":"        # public/private images, so we have to do it manually."},{"line_number":132,"context_line":"        if visibility is not None:"},{"line_number":133,"context_line":"            is_public \u003d visibility \u003d\u003d \"public\""},{"line_number":134,"context_line":"            return [i for i in images if i.is_public \u003d\u003d is_public]"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_70da9b4d","line":131,"range":{"start_line":130,"start_character":0,"end_line":131,"end_character":62},"in_reply_to":"5a18252c_c4b2e393","updated":"2016-04-14 12:20:36.000000000","message":"I think adding it to the docstring is sufficient.","commit_id":"866e690e207d0ff21a785046098b99f8a89edeb0"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"d92946fa8edc0397c919ca74635cf3aef6a77395","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        # public/private images, so we have to do it manually."},{"line_number":132,"context_line":"        if visibility is not None:"},{"line_number":133,"context_line":"            is_public \u003d visibility \u003d\u003d \"public\""},{"line_number":134,"context_line":"            return [i for i in images if i.is_public \u003d\u003d is_public]"},{"line_number":135,"context_line":"        return images"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_fc15ef3f","line":134,"range":{"start_line":134,"start_character":53,"end_line":134,"end_character":65},"updated":"2016-04-14 10:15:30.000000000","message":"is_public has bool type.\n\n\n    return [i for i in images if i.is_public is is_public]","commit_id":"866e690e207d0ff21a785046098b99f8a89edeb0"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"128aac4f016a1da4bed17c2f6c39fc8fdb100ade","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        # public/private images, so we have to do it manually."},{"line_number":132,"context_line":"        if visibility is not None:"},{"line_number":133,"context_line":"            is_public \u003d visibility \u003d\u003d \"public\""},{"line_number":134,"context_line":"            return [i for i in images if i.is_public \u003d\u003d is_public]"},{"line_number":135,"context_line":"        return images"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a18252c_10fc07b7","line":134,"range":{"start_line":134,"start_character":53,"end_line":134,"end_character":65},"in_reply_to":"5a18252c_fc15ef3f","updated":"2016-04-14 12:20:36.000000000","message":"Done","commit_id":"866e690e207d0ff21a785046098b99f8a89edeb0"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"0fc9f4ba8217597b5eb90496e1e329b888f3ecd0","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            timeout\u003dCONF.benchmark.glance_image_delete_timeout,"},{"line_number":120,"context_line":"            check_interval\u003dCONF.benchmark.glance_image_delete_poll_interval)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def list_images(self, **filters):"},{"line_number":123,"context_line":"        kwargs \u003d {\"filters\": dict(filters)}"},{"line_number":124,"context_line":"        if \"owner\" in filters:"},{"line_number":125,"context_line":"            # NOTE(stpierre): in glance v1, \"owner\" is not a filter,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a18252c_c8dca975","line":122,"updated":"2016-04-14 11:06:14.000000000","message":"Please, see my comments in patch set 4.","commit_id":"6693a32b9eaa2b430ea185b451617e764b25dd35"}]}
