)]}'
{"quantumclient/quantum/v2_0/__init__.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"unresolved":false,"context_lines":[{"line_number":376,"context_line":"        _columns \u003d len(info) \u003e 0 and sorted(info[0].keys()) or []"},{"line_number":377,"context_line":"        if not _columns:"},{"line_number":378,"context_line":"            parsed_args.columns \u003d []"},{"line_number":379,"context_line":"        elif not parsed_args.columns:"},{"line_number":380,"context_line":"            parsed_args.columns \u003d []"},{"line_number":381,"context_line":"            temp_columns \u003d list(set(self.list_columns) \u0026 set(_columns))"},{"line_number":382,"context_line":"            parsed_args.columns \u003d [col for col in self.list_columns"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2Flcw%3D","line":379,"updated":"2012-08-29 15:36:15.000000000","message":"This block doesn\u0027t make much sense: \n\n - compose temp_columns from self.list_columns and _columns\n - filter temp_columns to only include the entries in self.list_columns\n\nWhat is being attempted here?","commit_id":"d5cc623f389aeaa925d74864645a0ed909f9fdb3"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        _columns \u003d len(info) \u003e 0 and sorted(info[0].keys()) or []"},{"line_number":377,"context_line":"        if not _columns:"},{"line_number":378,"context_line":"            parsed_args.columns \u003d []"},{"line_number":379,"context_line":"        elif not parsed_args.columns:"},{"line_number":380,"context_line":"            parsed_args.columns \u003d []"},{"line_number":381,"context_line":"            temp_columns \u003d list(set(self.list_columns) \u0026 set(_columns))"},{"line_number":382,"context_line":"            parsed_args.columns \u003d [col for col in self.list_columns"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2Fku8%3D","line":379,"in_reply_to":"AAAALH%2F%2FlWA%3D","updated":"2012-08-30 03:49:13.000000000","message":"I will think it out.","commit_id":"d5cc623f389aeaa925d74864645a0ed909f9fdb3"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"unresolved":false,"context_lines":[{"line_number":376,"context_line":"        _columns \u003d len(info) \u003e 0 and sorted(info[0].keys()) or []"},{"line_number":377,"context_line":"        if not _columns:"},{"line_number":378,"context_line":"            parsed_args.columns \u003d []"},{"line_number":379,"context_line":"        elif not parsed_args.columns:"},{"line_number":380,"context_line":"            parsed_args.columns \u003d []"},{"line_number":381,"context_line":"            temp_columns \u003d list(set(self.list_columns) \u0026 set(_columns))"},{"line_number":382,"context_line":"            parsed_args.columns \u003d [col for col in self.list_columns"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FlWA%3D","line":379,"in_reply_to":"AAAALH%2F%2FlYQ%3D","updated":"2012-08-29 17:36:48.000000000","message":"In that case, consider replacing lines 380-383 with the following:\n\nordered_columns \u003d [x for x in self.list_columns if x in _columns]\n\nAlso, why is parsed_args.columns being modified?  Does the caller of get_data expect it to be modified?  If not, it probably makes sense to assign to _columns directly and avoid the if block starting on line 384.","commit_id":"d5cc623f389aeaa925d74864645a0ed909f9fdb3"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        _columns \u003d len(info) \u003e 0 and sorted(info[0].keys()) or []"},{"line_number":377,"context_line":"        if not _columns:"},{"line_number":378,"context_line":"            parsed_args.columns \u003d []"},{"line_number":379,"context_line":"        elif not parsed_args.columns:"},{"line_number":380,"context_line":"            parsed_args.columns \u003d []"},{"line_number":381,"context_line":"            temp_columns \u003d list(set(self.list_columns) \u0026 set(_columns))"},{"line_number":382,"context_line":"            parsed_args.columns \u003d [col for col in self.list_columns"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FlYQ%3D","line":379,"in_reply_to":"AAAALH%2F%2Flcw%3D","updated":"2012-08-29 16:35:19.000000000","message":"make the output order is the same as the order defined in list_columns.","commit_id":"d5cc623f389aeaa925d74864645a0ed909f9fdb3"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"unresolved":false,"context_lines":[{"line_number":38,"context_line":"    return (d for d, s in itertools.izip(data, selectors) if s)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"if not getattr(itertools, \u0027compress\u0027, None):"},{"line_number":42,"context_line":"    setattr(itertools, \u0027compress\u0027, itertools_compressdef)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fkjw%3D","line":41,"updated":"2012-08-30 11:30:46.000000000","message":"This monkeypatch needs a comment as to why it is necessary - specifically which 3rd party dependency requires it.  Without that information, this monkeypatch won\u0027t be maintainable (i.e. maybe it can be removed if that dependency is removed in the future).","commit_id":"23225d4caa7d492335d20a596d574158096b8172"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":38,"context_line":"    return (d for d, s in itertools.izip(data, selectors) if s)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"if not getattr(itertools, \u0027compress\u0027, None):"},{"line_number":42,"context_line":"    setattr(itertools, \u0027compress\u0027, itertools_compressdef)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fj3w%3D","line":41,"in_reply_to":"AAAALH%2F%2Fj34%3D","updated":"2012-08-31 02:06:31.000000000","message":"This is no longer the case.  Doug merged in a patch to cliff this morning that officially adds python2.6 to cliff.  Requires cliff \u003e\u003d1.2","commit_id":"23225d4caa7d492335d20a596d574158096b8172"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    return (d for d, s in itertools.izip(data, selectors) if s)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"if not getattr(itertools, \u0027compress\u0027, None):"},{"line_number":42,"context_line":"    setattr(itertools, \u0027compress\u0027, itertools_compressdef)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FjyE%3D","line":41,"in_reply_to":"AAAALH%2F%2Fj3w%3D","updated":"2012-08-31 05:54:11.000000000","message":"ok, I will try cliff\u003e\u003d1.2. thanks","commit_id":"23225d4caa7d492335d20a596d574158096b8172"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    return (d for d, s in itertools.izip(data, selectors) if s)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"if not getattr(itertools, \u0027compress\u0027, None):"},{"line_number":42,"context_line":"    setattr(itertools, \u0027compress\u0027, itertools_compressdef)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fjwc%3D","line":41,"in_reply_to":"AAAALH%2F%2FjyE%3D","updated":"2012-08-31 06:24:19.000000000","message":"markmcclain, It seems the cliff\u003e\u003d1.2 does not work, see patch 6\u0027s jenkin\u0027s output.","commit_id":"23225d4caa7d492335d20a596d574158096b8172"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    return (d for d, s in itertools.izip(data, selectors) if s)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"if not getattr(itertools, \u0027compress\u0027, None):"},{"line_number":42,"context_line":"    setattr(itertools, \u0027compress\u0027, itertools_compressdef)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fj34%3D","line":41,"in_reply_to":"AAAALH%2F%2Fkjw%3D","updated":"2012-08-31 01:59:41.000000000","message":"It is for python 2.6. If we use python 2.6, we will need this patch.","commit_id":"23225d4caa7d492335d20a596d574158096b8172"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"unresolved":false,"context_lines":[{"line_number":385,"context_line":"            info \u003d data[collection]"},{"line_number":386,"context_line":"        _columns \u003d len(info) \u003e 0 and sorted(info[0].keys()) or []"},{"line_number":387,"context_line":"        if not _columns:"},{"line_number":388,"context_line":"            # deal with empty resources"},{"line_number":389,"context_line":"            parsed_args.columns \u003d []"},{"line_number":390,"context_line":"        elif not parsed_args.columns and self.list_columns:"},{"line_number":391,"context_line":"            # if no -c(s) by user and list_columns, we use columns in"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fkj4%3D","line":388,"updated":"2012-08-30 11:30:46.000000000","message":"(Suggestion only) I\u0027m still not clear on why this next line is necessary - does other code use parsed_args after this function has executed?  \u0027deal with empty resources\u0027 is too vague to be helpful.","commit_id":"23225d4caa7d492335d20a596d574158096b8172"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":385,"context_line":"            info \u003d data[collection]"},{"line_number":386,"context_line":"        _columns \u003d len(info) \u003e 0 and sorted(info[0].keys()) or []"},{"line_number":387,"context_line":"        if not _columns:"},{"line_number":388,"context_line":"            # deal with empty resources"},{"line_number":389,"context_line":"            parsed_args.columns \u003d []"},{"line_number":390,"context_line":"        elif not parsed_args.columns and self.list_columns:"},{"line_number":391,"context_line":"            # if no -c(s) by user and list_columns, we use columns in"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fjx8%3D","line":388,"in_reply_to":"AAAALH%2F%2Fj3s%3D","updated":"2012-08-31 05:54:11.000000000","message":"I am not sure it is a cliff\u0027s bug. Anyway, I can clean the parsed_args to workaround it.","commit_id":"23225d4caa7d492335d20a596d574158096b8172"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":385,"context_line":"            info \u003d data[collection]"},{"line_number":386,"context_line":"        _columns \u003d len(info) \u003e 0 and sorted(info[0].keys()) or []"},{"line_number":387,"context_line":"        if not _columns:"},{"line_number":388,"context_line":"            # deal with empty resources"},{"line_number":389,"context_line":"            parsed_args.columns \u003d []"},{"line_number":390,"context_line":"        elif not parsed_args.columns and self.list_columns:"},{"line_number":391,"context_line":"            # if no -c(s) by user and list_columns, we use columns in"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fj3s%3D","line":388,"in_reply_to":"AAAALH%2F%2Fj4E%3D","updated":"2012-08-31 02:06:31.000000000","message":"Have you filed an issue on cliff\u0027s github page for this?\n\nhttp://github.com/dreamhost/cliff","commit_id":"23225d4caa7d492335d20a596d574158096b8172"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":385,"context_line":"            info \u003d data[collection]"},{"line_number":386,"context_line":"        _columns \u003d len(info) \u003e 0 and sorted(info[0].keys()) or []"},{"line_number":387,"context_line":"        if not _columns:"},{"line_number":388,"context_line":"            # deal with empty resources"},{"line_number":389,"context_line":"            parsed_args.columns \u003d []"},{"line_number":390,"context_line":"        elif not parsed_args.columns and self.list_columns:"},{"line_number":391,"context_line":"            # if no -c(s) by user and list_columns, we use columns in"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fj4E%3D","line":388,"in_reply_to":"AAAALH%2F%2Fkj4%3D","updated":"2012-08-31 01:59:41.000000000","message":"if user specify the -c args which will fill parsed_args.columns  but the returned resources is empty, cliff framework will break. So we have to clear the parsed_args.columns.","commit_id":"23225d4caa7d492335d20a596d574158096b8172"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":386,"context_line":"        _columns \u003d len(info) \u003e 0 and sorted(info[0].keys()) or []"},{"line_number":387,"context_line":"        if not _columns:"},{"line_number":388,"context_line":"            # deal with empty resources"},{"line_number":389,"context_line":"            parsed_args.columns \u003d []"},{"line_number":390,"context_line":"        elif not parsed_args.columns and self.list_columns:"},{"line_number":391,"context_line":"            # if no -c(s) by user and list_columns, we use columns in"},{"line_number":392,"context_line":"            # both list_columns and returned resource."}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FkPc%3D","line":389,"updated":"2012-08-30 18:50:36.000000000","message":"I also do not understand what is the purpose of setting parsed_args.columns to empty list","commit_id":"23225d4caa7d492335d20a596d574158096b8172"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        _columns \u003d len(info) \u003e 0 and sorted(info[0].keys()) or []"},{"line_number":387,"context_line":"        if not _columns:"},{"line_number":388,"context_line":"            # deal with empty resources"},{"line_number":389,"context_line":"            parsed_args.columns \u003d []"},{"line_number":390,"context_line":"        elif not parsed_args.columns and self.list_columns:"},{"line_number":391,"context_line":"            # if no -c(s) by user and list_columns, we use columns in"},{"line_number":392,"context_line":"            # both list_columns and returned resource."}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fj38%3D","line":389,"in_reply_to":"AAAALH%2F%2FkPc%3D","updated":"2012-08-31 01:59:41.000000000","message":"see my previous comment. It is for a bug.","commit_id":"23225d4caa7d492335d20a596d574158096b8172"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"unresolved":false,"context_lines":[{"line_number":388,"context_line":"            # deal with empty resources"},{"line_number":389,"context_line":"            parsed_args.columns \u003d []"},{"line_number":390,"context_line":"        elif not parsed_args.columns and self.list_columns:"},{"line_number":391,"context_line":"            # if no -c(s) by user and list_columns, we use columns in"},{"line_number":392,"context_line":"            # both list_columns and returned resource."},{"line_number":393,"context_line":"            # Also Keep their order the same as in list_columns"},{"line_number":394,"context_line":"            _columns \u003d [x for x in self.list_columns if x in _columns]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fkj0%3D","line":391,"updated":"2012-08-30 11:30:46.000000000","message":"(Suggestion only) Consider clarifying this comment as follows:\n\nIf no columns were specified by the user, return the default columns for the resource in configured order.","commit_id":"23225d4caa7d492335d20a596d574158096b8172"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":388,"context_line":"            # deal with empty resources"},{"line_number":389,"context_line":"            parsed_args.columns \u003d []"},{"line_number":390,"context_line":"        elif not parsed_args.columns and self.list_columns:"},{"line_number":391,"context_line":"            # if no -c(s) by user and list_columns, we use columns in"},{"line_number":392,"context_line":"            # both list_columns and returned resource."},{"line_number":393,"context_line":"            # Also Keep their order the same as in list_columns"},{"line_number":394,"context_line":"            _columns \u003d [x for x in self.list_columns if x in _columns]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fj4A%3D","line":391,"in_reply_to":"AAAALH%2F%2Fkj0%3D","updated":"2012-08-31 01:59:41.000000000","message":"If I use the configured order, other will say what is configured order, How can I configure it? So I put it in a developer\u0027s view point.","commit_id":"23225d4caa7d492335d20a596d574158096b8172"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"unresolved":false,"context_lines":[{"line_number":380,"context_line":"        elif not parsed_args.columns and self.list_columns:"},{"line_number":381,"context_line":"            # if no -c(s) by user and list_columns, we use columns in"},{"line_number":382,"context_line":"            # both list_columns and returned resource."},{"line_number":383,"context_line":"            # Also Keep their order the same as in list_columns"},{"line_number":384,"context_line":"            _columns \u003d [x for x in self.list_columns if x in _columns]"},{"line_number":385,"context_line":"        return (_columns, (utils.get_item_properties("},{"line_number":386,"context_line":"            s, _columns, formatters\u003dself._formatters, )"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAALH%2F%2FisU%3D","line":383,"updated":"2012-09-01 13:10:48.000000000","message":"(Suggestion only) Also Keep \u003d\u003e Also, keep","commit_id":"62f508939e367733552570cc3bac15b82436b981"}],"quantumclient/quantum/v2_0/network.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":38,"context_line":"    resource \u003d \u0027network\u0027"},{"line_number":39,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListNetwork\u0027)"},{"line_number":40,"context_line":"    _formatters \u003d {\u0027subnets\u0027: _format_subnets, }"},{"line_number":41,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027name\u0027, \u0027tenant_id\u0027, \u0027subnets\u0027]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class ShowNetwork(ShowCommand):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2FjvM%3D","line":41,"updated":"2012-08-31 07:06:23.000000000","message":"I am sorry I forgot to ask for the \u0027shared\u0027 field in my previous review. This field makes a bit of a difference, so I\u0027d like to see it in the list. Let me know if that can be done - the text should not wrap.","commit_id":"437477106df598b605b535d3eb0549fbc74c3e76"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":38,"context_line":"    resource \u003d \u0027network\u0027"},{"line_number":39,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListNetwork\u0027)"},{"line_number":40,"context_line":"    _formatters \u003d {\u0027subnets\u0027: _format_subnets, }"},{"line_number":41,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027name\u0027, \u0027tenant_id\u0027, \u0027subnets\u0027]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class ShowNetwork(ShowCommand):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2FjtE%3D","line":41,"in_reply_to":"AAAALH%2F%2Fjt0%3D","updated":"2012-08-31 08:52:24.000000000","message":"np - I will +2 as soon as you fix the problem with py26 tests.\n\nPs: I know we should not be serious, and indeed I +1 the patch :) Still, consider that several users will tell you an utility is rubbish if the default options do not satisfy their needs!","commit_id":"437477106df598b605b535d3eb0549fbc74c3e76"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    resource \u003d \u0027network\u0027"},{"line_number":39,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListNetwork\u0027)"},{"line_number":40,"context_line":"    _formatters \u003d {\u0027subnets\u0027: _format_subnets, }"},{"line_number":41,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027name\u0027, \u0027tenant_id\u0027, \u0027subnets\u0027]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class ShowNetwork(ShowCommand):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2FjqA%3D","line":41,"in_reply_to":"AAAALH%2F%2FjtE%3D","updated":"2012-08-31 09:50:48.000000000","message":"Haha, then what is the useful? Shared in the column is useful?","commit_id":"437477106df598b605b535d3eb0549fbc74c3e76"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    resource \u003d \u0027network\u0027"},{"line_number":39,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListNetwork\u0027)"},{"line_number":40,"context_line":"    _formatters \u003d {\u0027subnets\u0027: _format_subnets, }"},{"line_number":41,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027name\u0027, \u0027tenant_id\u0027, \u0027subnets\u0027]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class ShowNetwork(ShowCommand):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2Fjt0%3D","line":41,"in_reply_to":"AAAALH%2F%2FjvM%3D","updated":"2012-08-31 08:34:38.000000000","message":"I think we should not be so serious on this list since it is just a sugar for default. user can specify the column itself if it is not ok. If I add columns, the output will be wrapped.","commit_id":"437477106df598b605b535d3eb0549fbc74c3e76"}],"quantumclient/quantum/v2_0/port.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":40,"context_line":"    resource \u003d \u0027port\u0027"},{"line_number":41,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListPort\u0027)"},{"line_number":42,"context_line":"    _formatters \u003d {\u0027fixed_ips\u0027: _format_fixed_ips, }"},{"line_number":43,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027name\u0027, \u0027fixed_ips\u0027]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class ShowPort(ShowCommand):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FkQs%3D","line":43,"updated":"2012-08-30 18:50:36.000000000","message":"Please consider adding mac_address to the default columns (unless it has already decided to not include it in previous reviews).","commit_id":"23225d4caa7d492335d20a596d574158096b8172"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    resource \u003d \u0027port\u0027"},{"line_number":41,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListPort\u0027)"},{"line_number":42,"context_line":"    _formatters \u003d {\u0027fixed_ips\u0027: _format_fixed_ips, }"},{"line_number":43,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027name\u0027, \u0027fixed_ips\u0027]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class ShowPort(ShowCommand):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fj4I%3D","line":43,"in_reply_to":"AAAALH%2F%2FkQs%3D","updated":"2012-08-31 01:59:41.000000000","message":"In fact the device_owner, device_id is most important stuff thing for a port, but too much for list. I will add mac_address to the list.","commit_id":"23225d4caa7d492335d20a596d574158096b8172"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":40,"context_line":"    resource \u003d \u0027port\u0027"},{"line_number":41,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListPort\u0027)"},{"line_number":42,"context_line":"    _formatters \u003d {\u0027fixed_ips\u0027: _format_fixed_ips, }"},{"line_number":43,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027name\u0027, \u0027fixed_ips\u0027]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class ShowPort(ShowCommand):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2Fjww%3D","line":43,"updated":"2012-08-31 06:46:45.000000000","message":"Almost all ports have no name so far. I prefer \"device_owner\" to \"name\". (I understand different people have different opinions on it, so it is just a suggestion.)","commit_id":"32605edd3cc4b625efd91575e93589b233585ae5"}],"quantumclient/quantum/v2_0/subnet.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":18,"context_line":"import argparse"},{"line_number":19,"context_line":"import logging"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from quantumclient.common import exceptions"},{"line_number":22,"context_line":"from quantumclient.common import utils"},{"line_number":23,"context_line":"from quantumclient.quantum import v2_0 as quantumv20"},{"line_number":24,"context_line":"from quantumclient.quantum.v2_0 import CreateCommand"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2Fluo%3D","line":21,"updated":"2012-08-29 08:03:41.000000000","message":"Is this include used?","commit_id":"779833b1a88e60fddbb466e23d3b75f0049e086e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":18,"context_line":"import argparse"},{"line_number":19,"context_line":"import logging"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from quantumclient.common import exceptions"},{"line_number":22,"context_line":"from quantumclient.common import utils"},{"line_number":23,"context_line":"from quantumclient.quantum import v2_0 as quantumv20"},{"line_number":24,"context_line":"from quantumclient.quantum.v2_0 import CreateCommand"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2Flqg%3D","line":21,"in_reply_to":"AAAALH%2F%2FlrY%3D","updated":"2012-08-29 10:25:21.000000000","message":"thanks","commit_id":"779833b1a88e60fddbb466e23d3b75f0049e086e"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import argparse"},{"line_number":19,"context_line":"import logging"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from quantumclient.common import exceptions"},{"line_number":22,"context_line":"from quantumclient.common import utils"},{"line_number":23,"context_line":"from quantumclient.quantum import v2_0 as quantumv20"},{"line_number":24,"context_line":"from quantumclient.quantum.v2_0 import CreateCommand"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FlrY%3D","line":21,"in_reply_to":"AAAALH%2F%2Fluo%3D","updated":"2012-08-29 10:07:42.000000000","message":"Yes. I think someone forgot to import it before. U can see the whole file.","commit_id":"779833b1a88e60fddbb466e23d3b75f0049e086e"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":42,"context_line":"    resource \u003d \u0027subnet\u0027"},{"line_number":43,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListSubnet\u0027)"},{"line_number":44,"context_line":"    _formatters \u003d {\u0027allocation_pools\u0027: _format_allocation_pools, }"},{"line_number":45,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027name\u0027, \u0027cidr\u0027, \u0027allocation_pools\u0027]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class ShowSubnet(ShowCommand):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FkQk%3D","line":45,"updated":"2012-08-30 18:50:36.000000000","message":"Allocation pools is probably not strictly necessary here (and can be a fairly long field)","commit_id":"23225d4caa7d492335d20a596d574158096b8172"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    resource \u003d \u0027subnet\u0027"},{"line_number":43,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListSubnet\u0027)"},{"line_number":44,"context_line":"    _formatters \u003d {\u0027allocation_pools\u0027: _format_allocation_pools, }"},{"line_number":45,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027name\u0027, \u0027cidr\u0027, \u0027allocation_pools\u0027]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class ShowSubnet(ShowCommand):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fj4U%3D","line":45,"in_reply_to":"AAAALH%2F%2FkQk%3D","updated":"2012-08-31 01:59:41.000000000","message":"I think most of the time, it is tolerant with it if we have big console. Without it, subnet_list provides too little meaningful stuff.","commit_id":"23225d4caa7d492335d20a596d574158096b8172"}],"quantumclient/tests/unit/test_cli20.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"2190ab85f616bfc68b863fa1b5ede7ce149c03a5","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from quantumclient.v2_0.client import Client"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"if not getattr(itertools, \u0027compress\u0027, None):"},{"line_number":32,"context_line":"    setattr(itertools, \u0027compress\u0027, shell.itertools_compressdef)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Fmew%3D","line":31,"updated":"2012-08-28 13:23:06.000000000","message":"Monkeypatch application without removal is strongly discouraged, as it could affect other tests that are not expecting the modified behaviour.  Please use mox or mock to manage the patching in one of setUp/tearDown or setUpModule/tearDownModule, depending on the desired scope.","commit_id":"7bfaccc5b92c4b34857bec234834a346e81cef9d"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from quantumclient.v2_0.client import Client"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"if not getattr(itertools, \u0027compress\u0027, None):"},{"line_number":32,"context_line":"    setattr(itertools, \u0027compress\u0027, shell.itertools_compressdef)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Fmag%3D","line":31,"in_reply_to":"AAAALH%2F%2Fmew%3D","updated":"2012-08-28 14:37:14.000000000","message":"It is used to patch the itertools of python2.6 and not for a particular test cases. The shell.py is also adopting this way.","commit_id":"7bfaccc5b92c4b34857bec234834a346e81cef9d"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"2190ab85f616bfc68b863fa1b5ede7ce149c03a5","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        self.assertTrue(myid in _str)"},{"line_number":180,"context_line":"        self.assertTrue(name in _str)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _test_list_columns(self, cmd, resources_collectoion,"},{"line_number":183,"context_line":"                           resourcesout, args\u003d[\u0027-f\u0027, \u0027json\u0027]):"},{"line_number":184,"context_line":"        self.mox.StubOutWithMock(cmd, \"get_client\")"},{"line_number":185,"context_line":"        self.mox.StubOutWithMock(self.client.httpclient, \"request\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Fmes%3D","line":182,"updated":"2012-08-28 13:23:06.000000000","message":"(Suggestion only) resources_collectoion \u003d\u003e resources_collection\n\nThis comment also applies to lines 189 and 196.","commit_id":"7bfaccc5b92c4b34857bec234834a346e81cef9d"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"2190ab85f616bfc68b863fa1b5ede7ce149c03a5","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        self.assertTrue(name in _str)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _test_list_columns(self, cmd, resources_collectoion,"},{"line_number":183,"context_line":"                           resourcesout, args\u003d[\u0027-f\u0027, \u0027json\u0027]):"},{"line_number":184,"context_line":"        self.mox.StubOutWithMock(cmd, \"get_client\")"},{"line_number":185,"context_line":"        self.mox.StubOutWithMock(self.client.httpclient, \"request\")"},{"line_number":186,"context_line":"        cmd.get_client().MultipleTimes().AndReturn(self.client)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Fmek%3D","line":183,"updated":"2012-08-28 13:23:06.000000000","message":"(Suggestion only) Consider following the underscore_separated convention for parameter names, e.g. resources_out.","commit_id":"7bfaccc5b92c4b34857bec234834a346e81cef9d"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        self.assertTrue(name in _str)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _test_list_columns(self, cmd, resources_collectoion,"},{"line_number":183,"context_line":"                           resourcesout, args\u003d[\u0027-f\u0027, \u0027json\u0027]):"},{"line_number":184,"context_line":"        self.mox.StubOutWithMock(cmd, \"get_client\")"},{"line_number":185,"context_line":"        self.mox.StubOutWithMock(self.client.httpclient, \"request\")"},{"line_number":186,"context_line":"        cmd.get_client().MultipleTimes().AndReturn(self.client)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Fmac%3D","line":183,"in_reply_to":"AAAALH%2F%2Fmek%3D","updated":"2012-08-28 14:37:14.000000000","message":"It is a leading -, not one in the middle of option name.","commit_id":"7bfaccc5b92c4b34857bec234834a346e81cef9d"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"unresolved":false,"context_lines":[{"line_number":28,"context_line":"from quantumclient.v2_0.client import Client"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"if not getattr(itertools, \u0027compress\u0027, None):"},{"line_number":32,"context_line":"    setattr(itertools, \u0027compress\u0027, shell.itertools_compressdef)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FmZw%3D","line":31,"updated":"2012-08-28 14:59:28.000000000","message":"Patching in shell.py is safe, since it will be run as a standalone app and therefore any patch it applies won\u0027t affect other code.  Applying a patch in a unit test in the current manner affects all all tests in a given run, so my original comment stands. \n\nIf the patch is to be global in scope, please move the patch to a global non-test location like quantum.__init__ and include an appropriate comment (i.e. 2.5 is missing functionality).  Otherwise, please use mock/mox to apply a patch at the appropriate scope for testing purposes only.","commit_id":"779833b1a88e60fddbb466e23d3b75f0049e086e"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from quantumclient.v2_0.client import Client"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"if not getattr(itertools, \u0027compress\u0027, None):"},{"line_number":32,"context_line":"    setattr(itertools, \u0027compress\u0027, shell.itertools_compressdef)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FlrQ%3D","line":31,"in_reply_to":"AAAALH%2F%2FmZw%3D","updated":"2012-08-29 10:07:42.000000000","message":"ok, I will try to put it into setup and teardown.","commit_id":"779833b1a88e60fddbb466e23d3b75f0049e086e"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"unresolved":false,"context_lines":[{"line_number":180,"context_line":"        self.assertTrue(name in _str)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _test_list_columns(self, cmd, resources_collection,"},{"line_number":183,"context_line":"                           resourcesout, args\u003d[\u0027-f\u0027, \u0027json\u0027]):"},{"line_number":184,"context_line":"        self.mox.StubOutWithMock(cmd, \"get_client\")"},{"line_number":185,"context_line":"        self.mox.StubOutWithMock(self.client.httpclient, \"request\")"},{"line_number":186,"context_line":"        cmd.get_client().MultipleTimes().AndReturn(self.client)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FmZo%3D","line":183,"updated":"2012-08-28 14:59:28.000000000","message":"(Suggestion only) I\u0027m not sure what you mean - resourcesout is an internal variable name, and leading dashes are not permitted for python variable names.  Why would resources_out not be preferred as the name of a parameter to resourcesout?","commit_id":"779833b1a88e60fddbb466e23d3b75f0049e086e"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        self.assertTrue(name in _str)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _test_list_columns(self, cmd, resources_collection,"},{"line_number":183,"context_line":"                           resourcesout, args\u003d[\u0027-f\u0027, \u0027json\u0027]):"},{"line_number":184,"context_line":"        self.mox.StubOutWithMock(cmd, \"get_client\")"},{"line_number":185,"context_line":"        self.mox.StubOutWithMock(self.client.httpclient, \"request\")"},{"line_number":186,"context_line":"        cmd.get_client().MultipleTimes().AndReturn(self.client)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2FlrU%3D","line":183,"in_reply_to":"AAAALH%2F%2FmZo%3D","updated":"2012-08-29 10:07:42.000000000","message":"I thought you were referring to the -f. ok, I can change the resourceout to resource_out.","commit_id":"779833b1a88e60fddbb466e23d3b75f0049e086e"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"unresolved":false,"context_lines":[{"line_number":131,"context_line":"        self.old_find_resourceid \u003d quantumv20.find_resourceid_by_name_or_id"},{"line_number":132,"context_line":"        quantumv20.find_resourceid_by_name_or_id \u003d self._find_resourceid"},{"line_number":133,"context_line":"        self.itertools_matched \u003d False"},{"line_number":134,"context_line":"        if not getattr(itertools, \u0027compress\u0027, None):"},{"line_number":135,"context_line":"            setattr(itertools, \u0027compress\u0027, shell.itertools_compressdef)"},{"line_number":136,"context_line":"            self.itertools_matched \u003d True"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2Flm4%3D","line":134,"updated":"2012-08-29 13:19:33.000000000","message":"As per my previous comment, please use mox or mock to apply this patch.","commit_id":"3014005aceccf3911180447b26b180d4866cecb6"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"unresolved":false,"context_lines":[{"line_number":131,"context_line":"        self.old_find_resourceid \u003d quantumv20.find_resourceid_by_name_or_id"},{"line_number":132,"context_line":"        quantumv20.find_resourceid_by_name_or_id \u003d self._find_resourceid"},{"line_number":133,"context_line":"        self.itertools_matched \u003d False"},{"line_number":134,"context_line":"        if not getattr(itertools, \u0027compress\u0027, None):"},{"line_number":135,"context_line":"            setattr(itertools, \u0027compress\u0027, shell.itertools_compressdef)"},{"line_number":136,"context_line":"            self.itertools_matched \u003d True"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2Flfg%3D","line":134,"in_reply_to":"AAAALH%2F%2Flk0%3D","updated":"2012-08-29 15:02:53.000000000","message":"Here is an example for mox, since it\u0027s already being used here.  For the record, mock is preferable where mox is not already in use:\n\nimport stubout #part of mox\n\ndef setUp(self):\n  self.stubs \u003d stubout.StubOutForTesting()\n  if not getattr(itertools, \u0027compress\u0027, None):\n    self.stubs.Set(itertools, \u0027compress\u0027, shell.itertools_compressdef)\n \ndef tearDown(self):\n  self.stubs.UnsetAll()\n\nBut why can\u0027t the caller of itertools.compress() just use shell.itertools_compressdef() directly?","commit_id":"3014005aceccf3911180447b26b180d4866cecb6"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        self.old_find_resourceid \u003d quantumv20.find_resourceid_by_name_or_id"},{"line_number":132,"context_line":"        quantumv20.find_resourceid_by_name_or_id \u003d self._find_resourceid"},{"line_number":133,"context_line":"        self.itertools_matched \u003d False"},{"line_number":134,"context_line":"        if not getattr(itertools, \u0027compress\u0027, None):"},{"line_number":135,"context_line":"            setattr(itertools, \u0027compress\u0027, shell.itertools_compressdef)"},{"line_number":136,"context_line":"            self.itertools_matched \u003d True"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2Flk0%3D","line":134,"in_reply_to":"AAAALH%2F%2Flm4%3D","updated":"2012-08-29 13:47:50.000000000","message":"Hi Can u help me with this?","commit_id":"3014005aceccf3911180447b26b180d4866cecb6"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"unresolved":false,"context_lines":[{"line_number":130,"context_line":"        sys.stdout \u003d self.fake_stdout"},{"line_number":131,"context_line":"        self.old_find_resourceid \u003d quantumv20.find_resourceid_by_name_or_id"},{"line_number":132,"context_line":"        quantumv20.find_resourceid_by_name_or_id \u003d self._find_resourceid"},{"line_number":133,"context_line":"        if not getattr(itertools, \u0027compress\u0027, None):"},{"line_number":134,"context_line":"            self.mox.stubs.Set(itertools, \u0027compress\u0027, shell.itertools_compressdef)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def tearDown(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2Flck%3D","line":133,"updated":"2012-08-29 15:36:15.000000000","message":"Thank you for the switch to mox.  \n\nPlease help me understand - why is this patch necessary?  Pointers to modules and lines of code would be helpful.","commit_id":"d5cc623f389aeaa925d74864645a0ed909f9fdb3"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        sys.stdout \u003d self.fake_stdout"},{"line_number":131,"context_line":"        self.old_find_resourceid \u003d quantumv20.find_resourceid_by_name_or_id"},{"line_number":132,"context_line":"        quantumv20.find_resourceid_by_name_or_id \u003d self._find_resourceid"},{"line_number":133,"context_line":"        if not getattr(itertools, \u0027compress\u0027, None):"},{"line_number":134,"context_line":"            self.mox.stubs.Set(itertools, \u0027compress\u0027, shell.itertools_compressdef)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def tearDown(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2Fk3Q%3D","line":133,"in_reply_to":"AAAALH%2F%2FlUg%3D","updated":"2012-08-30 03:49:13.000000000","message":"I said it is used by third party tools used by quantumclient.\nI think I should move this patch into __init__.py of commands.","commit_id":"d5cc623f389aeaa925d74864645a0ed909f9fdb3"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"unresolved":false,"context_lines":[{"line_number":130,"context_line":"        sys.stdout \u003d self.fake_stdout"},{"line_number":131,"context_line":"        self.old_find_resourceid \u003d quantumv20.find_resourceid_by_name_or_id"},{"line_number":132,"context_line":"        quantumv20.find_resourceid_by_name_or_id \u003d self._find_resourceid"},{"line_number":133,"context_line":"        if not getattr(itertools, \u0027compress\u0027, None):"},{"line_number":134,"context_line":"            self.mox.stubs.Set(itertools, \u0027compress\u0027, shell.itertools_compressdef)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def tearDown(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FlUg%3D","line":133,"in_reply_to":"AAAALH%2F%2FlYE%3D","updated":"2012-08-29 17:36:48.000000000","message":"It looks like my desire to see a mocking library used was in error.  stubs.Set doesn\u0027t work if the attribute doesn\u0027t already exist, hence the jenkins error.\n\nI don\u0027t see any use of itertools.compress in quantumclient itself - is it used be a dependency that presumes python2.7?","commit_id":"d5cc623f389aeaa925d74864645a0ed909f9fdb3"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        sys.stdout \u003d self.fake_stdout"},{"line_number":131,"context_line":"        self.old_find_resourceid \u003d quantumv20.find_resourceid_by_name_or_id"},{"line_number":132,"context_line":"        quantumv20.find_resourceid_by_name_or_id \u003d self._find_resourceid"},{"line_number":133,"context_line":"        if not getattr(itertools, \u0027compress\u0027, None):"},{"line_number":134,"context_line":"            self.mox.stubs.Set(itertools, \u0027compress\u0027, shell.itertools_compressdef)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def tearDown(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FlYE%3D","line":133,"in_reply_to":"AAAALH%2F%2Flck%3D","updated":"2012-08-29 16:35:19.000000000","message":"My current python is 2.7, when it is 2.6, the itertools has no compress method.\nplease see the error in jekins.","commit_id":"d5cc623f389aeaa925d74864645a0ed909f9fdb3"}],"quantumclient/tests/unit/test_cli20_network.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"2190ab85f616bfc68b863fa1b5ede7ce149c03a5","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        returned_networks \u003d utils.loads(_str)"},{"line_number":161,"context_line":"        self.assertEquals(1, len(returned_networks))"},{"line_number":162,"context_line":"        network \u003d returned_networks[0]"},{"line_number":163,"context_line":"        self.assertEquals(1, len(network.keys()))"},{"line_number":164,"context_line":"        self.assertEquals(\"id\", network.keys()[0])"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def test_list_nets_with_default_column(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FmeQ%3D","line":163,"updated":"2012-08-28 13:23:06.000000000","message":"(Suggestion only) Consider omitting the call to keys(), since that is the default iterator for a dictionary, e.g.\n\nlen(network.keys()) \u003d\u003d len(network)\nset(network.keys()) \u003d\u003d set(network)\n\nThis comment also applies to lines 178 and 179.","commit_id":"7bfaccc5b92c4b34857bec234834a346e81cef9d"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        returned_networks \u003d utils.loads(_str)"},{"line_number":161,"context_line":"        self.assertEquals(1, len(returned_networks))"},{"line_number":162,"context_line":"        network \u003d returned_networks[0]"},{"line_number":163,"context_line":"        self.assertEquals(1, len(network.keys()))"},{"line_number":164,"context_line":"        self.assertEquals(\"id\", network.keys()[0])"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def test_list_nets_with_default_column(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FmaY%3D","line":163,"in_reply_to":"AAAALH%2F%2FmeQ%3D","updated":"2012-08-28 14:37:14.000000000","message":"Done","commit_id":"7bfaccc5b92c4b34857bec234834a346e81cef9d"}],"tools/test-requires":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"distribute\u003e\u003d0.6.24"},{"line_number":2,"context_line":"cliff\u003e\u003d0.6.0"},{"line_number":3,"context_line":"cliff-tablib\u003e\u003d1.0"},{"line_number":4,"context_line":"argparse"},{"line_number":5,"context_line":"httplib2"},{"line_number":6,"context_line":"prettytable\u003e\u003d0.6.0"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAALH%2F%2FkPM%3D","line":3,"updated":"2012-08-30 18:50:36.000000000","message":"Why this requirement is not present in pip-requires?","commit_id":"23225d4caa7d492335d20a596d574158096b8172"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"6a7ab9ba0f75574f30475815fb8bde44f8eaef44","unresolved":false,"context_lines":[{"line_number":1,"context_line":"distribute\u003e\u003d0.6.24"},{"line_number":2,"context_line":"cliff\u003e\u003d0.6.0"},{"line_number":3,"context_line":"cliff-tablib\u003e\u003d1.0"},{"line_number":4,"context_line":"argparse"},{"line_number":5,"context_line":"httplib2"},{"line_number":6,"context_line":"prettytable\u003e\u003d0.6.0"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAALH%2F%2Fj4c%3D","line":3,"in_reply_to":"AAAALH%2F%2FkPM%3D","updated":"2012-08-31 01:59:41.000000000","message":"tablib provides new output format for cliff. in my unit tests, I use the json from it. Our quantum client does not depend on it.","commit_id":"23225d4caa7d492335d20a596d574158096b8172"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"distribute\u003e\u003d0.6.24"},{"line_number":2,"context_line":"cliff\u003e\u003d0.6.0"},{"line_number":3,"context_line":"cliff-tablib\u003e\u003d1.0"},{"line_number":4,"context_line":"argparse"},{"line_number":5,"context_line":"httplib2"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"AAAALH%2F%2Fjw8%3D","line":2,"updated":"2012-08-31 06:46:45.000000000","message":"Is it necessary? pip-requires contains \"cliff\u003e\u003d1.2\".","commit_id":"32605edd3cc4b625efd91575e93589b233585ae5"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"distribute\u003e\u003d0.6.24"},{"line_number":2,"context_line":"cliff\u003e\u003d0.6.0"},{"line_number":3,"context_line":"cliff-tablib\u003e\u003d1.0"},{"line_number":4,"context_line":"argparse"},{"line_number":5,"context_line":"httplib2"},{"line_number":6,"context_line":"prettytable\u003e\u003d0.6.0"},{"line_number":7,"context_line":"simplejson"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"AAAALH%2F%2Fjw4%3D","line":4,"updated":"2012-08-31 06:46:45.000000000","message":"The next four lines (\"argparse\" to \"simplejson\") are also defined in pip-requires. They seems to be unnecessary.","commit_id":"32605edd3cc4b625efd91575e93589b233585ae5"}]}
