)]}'
{"quantumclient/common/serializer.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":253,"context_line":"        for link in link_nodes:"},{"line_number":254,"context_line":"            link_list.append({\u0027rel\u0027: link.get(\u0027rel\u0027),"},{"line_number":255,"context_line":"                              \u0027href\u0027: link.get(\u0027href\u0027)})"},{"line_number":256,"context_line":"            # Remove link node in order to avoid link node process as"},{"line_number":257,"context_line":"            # an item in _from_xml_node"},{"line_number":258,"context_line":"            node.remove(link)"},{"line_number":259,"context_line":"        return link_list and {link_key: link_list} or {}"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAANH%2F%2F%2FMk%3D","line":256,"updated":"2013-02-28 14:00:35.000000000","message":"\"to avoid link node being processed as ...\"","commit_id":"b0879b6dd48a1ea2ff0fb5196157e1aeb62935a1"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5da17db1cbecf74a6188a774d0d59964bc72be8e","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        for link in link_nodes:"},{"line_number":254,"context_line":"            link_list.append({\u0027rel\u0027: link.get(\u0027rel\u0027),"},{"line_number":255,"context_line":"                              \u0027href\u0027: link.get(\u0027href\u0027)})"},{"line_number":256,"context_line":"            # Remove link node in order to avoid link node process as"},{"line_number":257,"context_line":"            # an item in _from_xml_node"},{"line_number":258,"context_line":"            node.remove(link)"},{"line_number":259,"context_line":"        return link_list and {link_key: link_list} or {}"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAANH%2F%2F99A%3D","line":256,"in_reply_to":"AAAANH%2F%2F%2FMk%3D","updated":"2013-03-01 04:38:29.000000000","message":"Done","commit_id":"b0879b6dd48a1ea2ff0fb5196157e1aeb62935a1"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":268,"context_line":"            links \u003d self._get_links(root_tag, node)"},{"line_number":269,"context_line":"            result \u003d self._from_xml_node(node, plurals)"},{"line_number":270,"context_line":"            # root_tag \u003d constants.VIRTUAL_ROOT_KEY and links is not None"},{"line_number":271,"context_line":"            # is not possible because of the way data are serialized."},{"line_number":272,"context_line":"            if root_tag \u003d\u003d constants.VIRTUAL_ROOT_KEY:"},{"line_number":273,"context_line":"                return result"},{"line_number":274,"context_line":"            return dict({root_tag: result}, **links)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAANH%2F%2F%2FMg%3D","line":271,"updated":"2013-02-28 14:00:35.000000000","message":"\"There is no case where root_tag \u003d constants.VIRTUAL_ROOT_KEY and links is not None because of ....\"","commit_id":"b0879b6dd48a1ea2ff0fb5196157e1aeb62935a1"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5da17db1cbecf74a6188a774d0d59964bc72be8e","unresolved":false,"context_lines":[{"line_number":268,"context_line":"            links \u003d self._get_links(root_tag, node)"},{"line_number":269,"context_line":"            result \u003d self._from_xml_node(node, plurals)"},{"line_number":270,"context_line":"            # root_tag \u003d constants.VIRTUAL_ROOT_KEY and links is not None"},{"line_number":271,"context_line":"            # is not possible because of the way data are serialized."},{"line_number":272,"context_line":"            if root_tag \u003d\u003d constants.VIRTUAL_ROOT_KEY:"},{"line_number":273,"context_line":"                return result"},{"line_number":274,"context_line":"            return dict({root_tag: result}, **links)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAANH%2F%2F99E%3D","line":271,"in_reply_to":"AAAANH%2F%2F%2FMg%3D","updated":"2013-03-01 04:38:29.000000000","message":"Done","commit_id":"b0879b6dd48a1ea2ff0fb5196157e1aeb62935a1"}],"quantumclient/quantum/v2_0/__init__.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"a4569e156e85f85e17e4278d1ede0555a00ca6c5","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        \u0027-L\u0027, \u0027--limit\u0027,"},{"line_number":96,"context_line":"        dest\u003d\u0027limit\u0027, metavar\u003d\u0027LIMIT\u0027, type\u003dint,"},{"line_number":97,"context_line":"        help\u003d\"specify the page size of each request\","},{"line_number":98,"context_line":"        default\u003dNone)"},{"line_number":99,"context_line":"    parser.add_argument("},{"line_number":100,"context_line":"        \u0027-S\u0027, \u0027--sort\u0027,"},{"line_number":101,"context_line":"        dest\u003d\u0027sorts\u0027, metavar\u003d\u0027field:{asc,desc}\u0027, type\u003dstr,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FXP8%3D","line":98,"updated":"2013-01-25 14:44:51.000000000","message":"Should there be an option for specifying the marker as well? Otherwise how can you navigate properly?\n\nAmong the other things, I\u0027ve noticed that other Openstack CLIs do not expose this options, even when they support pagination.\n\nOr does this option produce a response in \u0027chunks\u0027 that is then reassembled by the client? (In that case I\u0027d consider something like --request-size or chunk-size)","commit_id":"c6bfa8d4ae793fa7582bacf26354432c7184af76"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5da17db1cbecf74a6188a774d0d59964bc72be8e","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        \u0027-L\u0027, \u0027--limit\u0027,"},{"line_number":96,"context_line":"        dest\u003d\u0027limit\u0027, metavar\u003d\u0027LIMIT\u0027, type\u003dint,"},{"line_number":97,"context_line":"        help\u003d\"specify the page size of each request\","},{"line_number":98,"context_line":"        default\u003dNone)"},{"line_number":99,"context_line":"    parser.add_argument("},{"line_number":100,"context_line":"        \u0027-S\u0027, \u0027--sort\u0027,"},{"line_number":101,"context_line":"        dest\u003d\u0027sorts\u0027, metavar\u003d\u0027field:{asc,desc}\u0027, type\u003dstr,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FV2I%3D","line":98,"in_reply_to":"AAAAM3%2F%2FXP8%3D","updated":"2013-01-28 09:54:41.000000000","message":"We needn\u0027t marker as an option. This just provide a way for user that he can get all items by several request. Client will reassemble each response to user.\n\nThe client of glance provide this option called \u0027--page-size\u0027, As your comment, we can keep CLIs as uniform as possible. so we should use \u0027--page-size\u0027 too.\n\nThanks","commit_id":"c6bfa8d4ae793fa7582bacf26354432c7184af76"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":94,"context_line":"    parser.add_argument("},{"line_number":95,"context_line":"        \u0027-P\u0027, \u0027--page-size\u0027,"},{"line_number":96,"context_line":"        dest\u003d\u0027page_size\u0027, metavar\u003d\u0027SIZE\u0027, type\u003dint,"},{"line_number":97,"context_line":"        help\u003d\"specify the page size of each request\","},{"line_number":98,"context_line":"        default\u003dNone)"},{"line_number":99,"context_line":"    parser.add_argument("},{"line_number":100,"context_line":"        \u0027-S\u0027, \u0027--sort\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FRWI%3D","line":97,"updated":"2013-01-30 19:51:36.000000000","message":"At a glance, I suppose page-size means number of element showed in the result. But in fact it looks , the client request (number of elements/page size) times.\nSo IMO, help should explain this behavior.","commit_id":"fd7e09afd06ee2f54843a9a54fae24c3dc88ab62"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":98,"context_line":"              \"to several requests\"),"},{"line_number":99,"context_line":"        default\u003dNone)"},{"line_number":100,"context_line":"    parser.add_argument("},{"line_number":101,"context_line":"        \u0027-S\u0027, \u0027--sort\u0027,"},{"line_number":102,"context_line":"        dest\u003d\u0027sorts\u0027, metavar\u003d\u0027field[::asc|::desc]\u0027, type\u003dstr,"},{"line_number":103,"context_line":"        help\u003d\"specify the sort field and direction\","},{"line_number":104,"context_line":"        action\u003d\u0027append\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FOVI%3D","line":101,"updated":"2013-02-01 13:38:17.000000000","message":"I know glance client does it differently, and we should be consistent. In this case I prefer our approach, but I\u0027m open to use --sort-key and --sort-dir as glance does.","commit_id":"12f449653e0f90a4f63c41305ebfc89b9bf78004"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":437,"context_line":"    def get_parser(self, prog_name):"},{"line_number":438,"context_line":"        parser \u003d super(ListCommand, self).get_parser(prog_name)"},{"line_number":439,"context_line":"        add_show_list_common_argument(parser)"},{"line_number":440,"context_line":"        add_sort_and_limit_argument(parser)"},{"line_number":441,"context_line":"        add_extra_argument(parser, \u0027filter_specs\u0027, \u0027filters options\u0027)"},{"line_number":442,"context_line":"        return parser"},{"line_number":443,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAM3%2F%2BobM%3D","line":440,"updated":"2013-02-25 03:11:01.000000000","message":"does it mean all of the list support pagination? I see in your patch, you just modify some of list_xxx methods.\nyou can add a member flag in ListCommand, and then call this method.","commit_id":"2400094ff79ad7b5a5a67cb700ac084fb1df18ad"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5da17db1cbecf74a6188a774d0d59964bc72be8e","unresolved":false,"context_lines":[{"line_number":437,"context_line":"    def get_parser(self, prog_name):"},{"line_number":438,"context_line":"        parser \u003d super(ListCommand, self).get_parser(prog_name)"},{"line_number":439,"context_line":"        add_show_list_common_argument(parser)"},{"line_number":440,"context_line":"        add_sort_and_limit_argument(parser)"},{"line_number":441,"context_line":"        add_extra_argument(parser, \u0027filter_specs\u0027, \u0027filters options\u0027)"},{"line_number":442,"context_line":"        return parser"},{"line_number":443,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAM3%2F%2Bnvk%3D","line":440,"in_reply_to":"AAAAM3%2F%2BobM%3D","updated":"2013-02-26 01:42:01.000000000","message":"Thanks, add two members \u0027sorting_support\u0027 and \u0027pagination_support\u0027","commit_id":"2400094ff79ad7b5a5a67cb700ac084fb1df18ad"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":438,"context_line":"        parser \u003d super(ListCommand, self).get_parser(prog_name)"},{"line_number":439,"context_line":"        add_show_list_common_argument(parser)"},{"line_number":440,"context_line":"        add_sort_and_limit_argument(parser)"},{"line_number":441,"context_line":"        add_extra_argument(parser, \u0027filter_specs\u0027, \u0027filters options\u0027)"},{"line_number":442,"context_line":"        return parser"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"    def args2search_opts(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAM3%2F%2BobQ%3D","line":441,"updated":"2013-02-25 03:11:01.000000000","message":"why add add_extra_argument back?","commit_id":"2400094ff79ad7b5a5a67cb700ac084fb1df18ad"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5da17db1cbecf74a6188a774d0d59964bc72be8e","unresolved":false,"context_lines":[{"line_number":438,"context_line":"        parser \u003d super(ListCommand, self).get_parser(prog_name)"},{"line_number":439,"context_line":"        add_show_list_common_argument(parser)"},{"line_number":440,"context_line":"        add_sort_and_limit_argument(parser)"},{"line_number":441,"context_line":"        add_extra_argument(parser, \u0027filter_specs\u0027, \u0027filters options\u0027)"},{"line_number":442,"context_line":"        return parser"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"    def args2search_opts(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAM3%2F%2Bnvo%3D","line":441,"in_reply_to":"AAAAM3%2F%2BobQ%3D","updated":"2013-02-26 01:42:01.000000000","message":"I guess failed by rebase","commit_id":"2400094ff79ad7b5a5a67cb700ac084fb1df18ad"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":437,"context_line":"    _formatters \u003d None"},{"line_number":438,"context_line":"    list_columns \u003d []"},{"line_number":439,"context_line":"    pagination_support \u003d False"},{"line_number":440,"context_line":"    sorting_support \u003d False"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"    def get_parser(self, prog_name):"},{"line_number":443,"context_line":"        parser \u003d super(ListCommand, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAM3%2F%2Bmlw%3D","line":440,"updated":"2013-02-26 02:31:14.000000000","message":"how about adding a PaginatedListCommand?","commit_id":"5e358dc0d4147a1986309730cd30032dba28183d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5da17db1cbecf74a6188a774d0d59964bc72be8e","unresolved":false,"context_lines":[{"line_number":437,"context_line":"    _formatters \u003d None"},{"line_number":438,"context_line":"    list_columns \u003d []"},{"line_number":439,"context_line":"    pagination_support \u003d False"},{"line_number":440,"context_line":"    sorting_support \u003d False"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"    def get_parser(self, prog_name):"},{"line_number":443,"context_line":"        parser \u003d super(ListCommand, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAM3%2F%2Bmk0%3D","line":440,"in_reply_to":"AAAAM3%2F%2Bmlw%3D","updated":"2013-02-26 02:44:39.000000000","message":"pagination support and sorting support are separated. \n\nSo if we use class inherit. There need PaginatedListCommand , SortingListCommand, SortingAndPaginatedListCommand. It will generated too many class.","commit_id":"5e358dc0d4147a1986309730cd30032dba28183d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":476,"context_line":"                search_opts.update({\u0027sort_key\u0027: keys})"},{"line_number":477,"context_line":"            dirs \u003d parsed_args.sort_dir"},{"line_number":478,"context_line":"            if dirs:"},{"line_number":479,"context_line":"                search_opts.update({\u0027sort_dir\u0027: dirs})"},{"line_number":480,"context_line":"        obj_lister \u003d getattr(quantum_client,"},{"line_number":481,"context_line":"                             \"list_%ss\" % self.resource)"},{"line_number":482,"context_line":"        data \u003d obj_lister(**search_opts)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAANH%2F%2F%2FNc%3D","line":479,"updated":"2013-02-28 14:00:35.000000000","message":"Sorting feature is very useful. I would like to use sorting only with -sort-key (e.g., quantum net-list --sort-key name).\nIt would be nice that asc is used as the default sort-dir if sort_dir is not specified for the corresponding sort-key.\n\nIn addition, I think sort-dir without sort-key has no meaning, so it would be better sort-dir is ignored for such case.\n\nHow about adding the following after L.477? It addresses both of my comments.\n\nlen_diff \u003d len(keys) - len(dirs)\nif len_diff \u003e 0:\n    dirs +\u003d [\u0027asc\u0027 for _ in xrange(len_diff)]\nelif len_diff \u003c 0:\n    dirs \u003d dirs[:len(keys)]","commit_id":"b0879b6dd48a1ea2ff0fb5196157e1aeb62935a1"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5da17db1cbecf74a6188a774d0d59964bc72be8e","unresolved":false,"context_lines":[{"line_number":476,"context_line":"                search_opts.update({\u0027sort_key\u0027: keys})"},{"line_number":477,"context_line":"            dirs \u003d parsed_args.sort_dir"},{"line_number":478,"context_line":"            if dirs:"},{"line_number":479,"context_line":"                search_opts.update({\u0027sort_dir\u0027: dirs})"},{"line_number":480,"context_line":"        obj_lister \u003d getattr(quantum_client,"},{"line_number":481,"context_line":"                             \"list_%ss\" % self.resource)"},{"line_number":482,"context_line":"        data \u003d obj_lister(**search_opts)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAANH%2F%2F98c%3D","line":479,"in_reply_to":"AAAANH%2F%2F%2FNc%3D","updated":"2013-03-01 04:38:29.000000000","message":"Thanks, a little change as below:\n\nlen_diff \u003d len(keys) - len(dirs)\nif len_diff \u003e 0:\n    dirs +\u003d [\u0027asc\u0027] * len_diff\nelif len_diff \u003c 0:\n    dirs \u003d dirs[:len(keys)]","commit_id":"b0879b6dd48a1ea2ff0fb5196157e1aeb62935a1"}],"quantumclient/quantum/v2_0/network.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":48,"context_line":"        search_opts \u003d {\u0027fields\u0027: [\u0027id\u0027, \u0027cidr\u0027]}"},{"line_number":49,"context_line":"        page_size \u003d parsed_args.page_size"},{"line_number":50,"context_line":"        if page_size:"},{"line_number":51,"context_line":"            search_opts.update({\u0027limit\u0027: page_size})"},{"line_number":52,"context_line":"        subnets \u003d quantum_client.list_subnets(**search_opts).get(\u0027subnets\u0027, [])"},{"line_number":53,"context_line":"        subnet_dict \u003d dict([(s[\u0027id\u0027], s) for s in subnets])"},{"line_number":54,"context_line":"        for n in data:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FUiE%3D","line":51,"updated":"2013-01-29 02:38:16.000000000","message":"I think this place is used to fetch related subnets by one shot. So we don\u0027t need paginate here. In fact, to improve performance,\nwe need to refactor it to call list_subnets with id filters:\nfor subnetid in data[xxx]:\n ids.append(subnetid)\nsearch_opts.update({\u0027id\u0027: ids})","commit_id":"0b6215353fd5868403fec659cc35716a459ab5ea"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5da17db1cbecf74a6188a774d0d59964bc72be8e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        search_opts \u003d {\u0027fields\u0027: [\u0027id\u0027, \u0027cidr\u0027]}"},{"line_number":49,"context_line":"        page_size \u003d parsed_args.page_size"},{"line_number":50,"context_line":"        if page_size:"},{"line_number":51,"context_line":"            search_opts.update({\u0027limit\u0027: page_size})"},{"line_number":52,"context_line":"        subnets \u003d quantum_client.list_subnets(**search_opts).get(\u0027subnets\u0027, [])"},{"line_number":53,"context_line":"        subnet_dict \u003d dict([(s[\u0027id\u0027], s) for s in subnets])"},{"line_number":54,"context_line":"        for n in data:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FSWw%3D","line":51,"in_reply_to":"AAAAM3%2F%2FUiE%3D","updated":"2013-01-30 08:38:18.000000000","message":"I think this need paginate, it also can be get huge items returned. I agree with you we need call list_subnet with id filters.","commit_id":"0b6215353fd5868403fec659cc35716a459ab5ea"}],"quantumclient/quantum/v2_0/securitygroup.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":108,"context_line":"        search_opts \u003d {\u0027fields\u0027: [\u0027id\u0027, \u0027name\u0027]}"},{"line_number":109,"context_line":"        page_size \u003d parsed_args.page_size"},{"line_number":110,"context_line":"        if page_size:"},{"line_number":111,"context_line":"            search_opts.update(\u0027limit\u0027, page_size)"},{"line_number":112,"context_line":"        secgroups \u003d quantum_client.list_security_groups(**search_opts)"},{"line_number":113,"context_line":"        secgroups \u003d secgroups.get(\u0027security_groups\u0027, [])"},{"line_number":114,"context_line":"        sg_dict \u003d dict([(sg[\u0027id\u0027], sg[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FUiA%3D","line":111,"updated":"2013-01-29 02:38:16.000000000","message":"same as previous comment.","commit_id":"0b6215353fd5868403fec659cc35716a459ab5ea"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":117,"context_line":"        sec_ids \u003d set()"},{"line_number":118,"context_line":"        for rule in data:"},{"line_number":119,"context_line":"            for key in self.replace_rules:"},{"line_number":120,"context_line":"                sec_ids.add(rule[key])"},{"line_number":121,"context_line":"        search_opts.update({\"id\": sec_ids})"},{"line_number":122,"context_line":"        secgroups \u003d quantum_client.list_security_groups(**search_opts)"},{"line_number":123,"context_line":"        secgroups \u003d secgroups.get(\u0027security_groups\u0027, [])"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAM3%2F%2Bml8%3D","line":120,"updated":"2013-02-26 02:31:14.000000000","message":"sec_ids -\u003e sec_group_ids?","commit_id":"5e358dc0d4147a1986309730cd30032dba28183d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5da17db1cbecf74a6188a774d0d59964bc72be8e","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        sec_ids \u003d set()"},{"line_number":118,"context_line":"        for rule in data:"},{"line_number":119,"context_line":"            for key in self.replace_rules:"},{"line_number":120,"context_line":"                sec_ids.add(rule[key])"},{"line_number":121,"context_line":"        search_opts.update({\"id\": sec_ids})"},{"line_number":122,"context_line":"        secgroups \u003d quantum_client.list_security_groups(**search_opts)"},{"line_number":123,"context_line":"        secgroups \u003d secgroups.get(\u0027security_groups\u0027, [])"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAM3%2F%2Bmks%3D","line":120,"in_reply_to":"AAAAM3%2F%2Bml8%3D","updated":"2013-02-26 02:44:39.000000000","message":"Done","commit_id":"5e358dc0d4147a1986309730cd30032dba28183d"}],"quantumclient/tests/unit/test_cli20.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"a4569e156e85f85e17e4278d1ede0555a00ca6c5","unresolved":false,"context_lines":[{"line_number":294,"context_line":"            end_url(path, fake_query), \u0027GET\u0027,"},{"line_number":295,"context_line":"            body\u003dNone,"},{"line_number":296,"context_line":"            headers\u003dContainsKeyValue(\u0027X-Auth-Token\u0027,"},{"line_number":297,"context_line":"                                     TOKEN)).AndReturn((MyResp(200), resstr2))"},{"line_number":298,"context_line":"        self.mox.ReplayAll()"},{"line_number":299,"context_line":"        cmd_parser \u003d cmd.get_parser(\"list_\" + resources)"},{"line_number":300,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FXOs%3D","line":297,"updated":"2013-01-25 14:44:51.000000000","message":"I need to do some debug on this test.\nI\u0027m not entirely sure it goes into _pagination","commit_id":"c6bfa8d4ae793fa7582bacf26354432c7184af76"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5da17db1cbecf74a6188a774d0d59964bc72be8e","unresolved":false,"context_lines":[{"line_number":294,"context_line":"            end_url(path, fake_query), \u0027GET\u0027,"},{"line_number":295,"context_line":"            body\u003dNone,"},{"line_number":296,"context_line":"            headers\u003dContainsKeyValue(\u0027X-Auth-Token\u0027,"},{"line_number":297,"context_line":"                                     TOKEN)).AndReturn((MyResp(200), resstr2))"},{"line_number":298,"context_line":"        self.mox.ReplayAll()"},{"line_number":299,"context_line":"        cmd_parser \u003d cmd.get_parser(\"list_\" + resources)"},{"line_number":300,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FV1Q%3D","line":297,"in_reply_to":"AAAAM3%2F%2FXOs%3D","updated":"2013-01-28 09:54:41.000000000","message":"This goes into _pagination tested by break \u0027_pagination\u0027 logic, then the test will failed.","commit_id":"c6bfa8d4ae793fa7582bacf26354432c7184af76"}],"quantumclient/v2_0/client.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"a4569e156e85f85e17e4278d1ede0555a00ca6c5","unresolved":false,"context_lines":[{"line_number":611,"context_line":"        else:"},{"line_number":612,"context_line":"            return self._pagination(collection, path, params)"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"    def _pagination(self, collection, path, params\u003d{}):"},{"line_number":615,"context_line":"        if params.get(\u0027page_reverse\u0027, False):"},{"line_number":616,"context_line":"            linkrel \u003d \u0027previous\u0027"},{"line_number":617,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FXO0%3D","line":614,"updated":"2013-01-25 14:44:51.000000000","message":"This is called if retrieve_all\u003dTrue\n\nbut isn\u0027t the server\u0027s default behaviour to NOT paginate unless the user asks to do so?","commit_id":"c6bfa8d4ae793fa7582bacf26354432c7184af76"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5da17db1cbecf74a6188a774d0d59964bc72be8e","unresolved":false,"context_lines":[{"line_number":611,"context_line":"        else:"},{"line_number":612,"context_line":"            return self._pagination(collection, path, params)"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"    def _pagination(self, collection, path, params\u003d{}):"},{"line_number":615,"context_line":"        if params.get(\u0027page_reverse\u0027, False):"},{"line_number":616,"context_line":"            linkrel \u003d \u0027previous\u0027"},{"line_number":617,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FV2g%3D","line":614,"in_reply_to":"AAAAM3%2F%2FXO0%3D","updated":"2013-01-28 09:54:41.000000000","message":"Get all result by default for backward compatibility. If server enable pagination, but there are some client code didn\u0027t support it.","commit_id":"c6bfa8d4ae793fa7582bacf26354432c7184af76"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":603,"context_line":"        return self.retry_request(\"PUT\", action, body\u003dbody,"},{"line_number":604,"context_line":"                                  headers\u003dheaders, params\u003dparams)"},{"line_number":605,"context_line":""},{"line_number":606,"context_line":"    def list(self, collection, path, params\u003d{}, retrieve_all\u003dTrue):"},{"line_number":607,"context_line":"        if retrieve_all:"},{"line_number":608,"context_line":"            res \u003d []"},{"line_number":609,"context_line":"            for r in self._pagination(collection, path, params):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FUeA%3D","line":606,"updated":"2013-01-29 03:22:06.000000000","message":"retrieve_all should be after params, params should be **params.","commit_id":"0b6215353fd5868403fec659cc35716a459ab5ea"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5da17db1cbecf74a6188a774d0d59964bc72be8e","unresolved":false,"context_lines":[{"line_number":603,"context_line":"        return self.retry_request(\"PUT\", action, body\u003dbody,"},{"line_number":604,"context_line":"                                  headers\u003dheaders, params\u003dparams)"},{"line_number":605,"context_line":""},{"line_number":606,"context_line":"    def list(self, collection, path, params\u003d{}, retrieve_all\u003dTrue):"},{"line_number":607,"context_line":"        if retrieve_all:"},{"line_number":608,"context_line":"            res \u003d []"},{"line_number":609,"context_line":"            for r in self._pagination(collection, path, params):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FSUY%3D","line":606,"in_reply_to":"AAAAM3%2F%2FUeA%3D","updated":"2013-01-30 08:38:18.000000000","message":"Done","commit_id":"0b6215353fd5868403fec659cc35716a459ab5ea"}]}
