)]}'
{"quantumclient/quantum/v2_0/network.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"f23b167acf651f9026933a1f33347370cd3f736f","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    list_colums \u003d [\u0027id\u0027, \u0027name\u0027, \u0027subnets\u0027]"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def get_data(self, parsed_args):"},{"line_number":53,"context_line":"        parsed_args.filter_specs\u003d[\u0027--\u0027, \u0027--router:external\u003dTrue\u0027]"},{"line_number":54,"context_line":"        return super(ListExternalNetwork, self).get_data(parsed_args)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKN0%3D","line":53,"updated":"2012-10-10 11:39:00.000000000","message":"you have to check if we already have -- --router:external\u003dTrue in parsed_args.filter_specs.\n\nThis code will replace all the filter_specs provided by users.","commit_id":"dd64ee58f9725407a11e86d5c11b524e75a17a4b"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"f23b167acf651f9026933a1f33347370cd3f736f","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    list_colums \u003d [\u0027id\u0027, \u0027name\u0027, \u0027subnets\u0027]"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def get_data(self, parsed_args):"},{"line_number":53,"context_line":"        for filter in parsed_args.filter_specs:"},{"line_number":54,"context_line":"            if \u0027--router:external\u0027 in filter:"},{"line_number":55,"context_line":"                return super(ListExternalNetwork, self).get_data(parsed_args)"},{"line_number":56,"context_line":"        if \u0027--\u0027 not in parsed_args.filter_specs:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALn%2F%2F5Zk%3D","line":53,"updated":"2012-10-30 01:58:17.000000000","message":"filter is a built-in symbol, maybe we can use _filter.","commit_id":"575832b1bf67d2750471260c053498fefdc6ae92"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"f23b167acf651f9026933a1f33347370cd3f736f","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def get_data(self, parsed_args):"},{"line_number":53,"context_line":"        for filter in parsed_args.filter_specs:"},{"line_number":54,"context_line":"            if \u0027--router:external\u0027 in filter:"},{"line_number":55,"context_line":"                return super(ListExternalNetwork, self).get_data(parsed_args)"},{"line_number":56,"context_line":"        if \u0027--\u0027 not in parsed_args.filter_specs:"},{"line_number":57,"context_line":"            parsed_args.filter_specs.append(\u0027--\u0027)"},{"line_number":58,"context_line":"        parsed_args.filter_specs.append(\u0027--router:external\u003dTrue\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALn%2F%2F5Ys%3D","line":55,"updated":"2012-10-30 01:58:17.000000000","message":"maybe we can remove this code, we will append --router:external\u003dtrue to override other user defined --router:external arguments. Since our command is used to show only external networks.","commit_id":"575832b1bf67d2750471260c053498fefdc6ae92"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def get_data(self, parsed_args):"},{"line_number":53,"context_line":"        for filter in parsed_args.filter_specs:"},{"line_number":54,"context_line":"            if \u0027--router:external\u0027 in filter:"},{"line_number":55,"context_line":"                return super(ListExternalNetwork, self).get_data(parsed_args)"},{"line_number":56,"context_line":"        if \u0027--\u0027 not in parsed_args.filter_specs:"},{"line_number":57,"context_line":"            parsed_args.filter_specs.append(\u0027--\u0027)"},{"line_number":58,"context_line":"        parsed_args.filter_specs.append(\u0027--router:external\u003dTrue\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALn%2F%2F5QE%3D","line":55,"in_reply_to":"AAAALn%2F%2F5UI%3D","updated":"2012-10-30 09:11:12.000000000","message":"I agree with Akihiro.","commit_id":"575832b1bf67d2750471260c053498fefdc6ae92"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def get_data(self, parsed_args):"},{"line_number":53,"context_line":"        for filter in parsed_args.filter_specs:"},{"line_number":54,"context_line":"            if \u0027--router:external\u0027 in filter:"},{"line_number":55,"context_line":"                return super(ListExternalNetwork, self).get_data(parsed_args)"},{"line_number":56,"context_line":"        if \u0027--\u0027 not in parsed_args.filter_specs:"},{"line_number":57,"context_line":"            parsed_args.filter_specs.append(\u0027--\u0027)"},{"line_number":58,"context_line":"        parsed_args.filter_specs.append(\u0027--router:external\u003dTrue\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALn%2F%2F5UI%3D","line":55,"in_reply_to":"AAAALn%2F%2F5Wg%3D","updated":"2012-10-30 05:21:01.000000000","message":"How about aborting the command with a message \"--router:external cannot be used for net-external-list\"?\nI think net-external-list with --router:external is a corner case and we do not take case of it necessarily.","commit_id":"575832b1bf67d2750471260c053498fefdc6ae92"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"bf42d7200a74d84c12a9e73f75b7b2fda7e6a5f6","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def get_data(self, parsed_args):"},{"line_number":53,"context_line":"        for filter in parsed_args.filter_specs:"},{"line_number":54,"context_line":"            if \u0027--router:external\u0027 in filter:"},{"line_number":55,"context_line":"                return super(ListExternalNetwork, self).get_data(parsed_args)"},{"line_number":56,"context_line":"        if \u0027--\u0027 not in parsed_args.filter_specs:"},{"line_number":57,"context_line":"            parsed_args.filter_specs.append(\u0027--\u0027)"},{"line_number":58,"context_line":"        parsed_args.filter_specs.append(\u0027--router:external\u003dTrue\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALn%2F%2F5Wg%3D","line":55,"in_reply_to":"AAAALn%2F%2F5Ys%3D","updated":"2012-10-30 03:21:55.000000000","message":"Do you mean that if we use the command: quantum external-net-list -- --router:external\u003dFalse. It will prompt?duplicated options --router:external\u003dFalse --router:external\u003dTrue. And it is enough?","commit_id":"575832b1bf67d2750471260c053498fefdc6ae92"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"f23b167acf651f9026933a1f33347370cd3f736f","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        for filter in parsed_args.filter_specs:"},{"line_number":54,"context_line":"            if \u0027--router:external\u0027 in filter:"},{"line_number":55,"context_line":"                return super(ListExternalNetwork, self).get_data(parsed_args)"},{"line_number":56,"context_line":"        if \u0027--\u0027 not in parsed_args.filter_specs:"},{"line_number":57,"context_line":"            parsed_args.filter_specs.append(\u0027--\u0027)"},{"line_number":58,"context_line":"        parsed_args.filter_specs.append(\u0027--router:external\u003dTrue\u0027)"},{"line_number":59,"context_line":"        return super(ListExternalNetwork, self).get_data(parsed_args)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALn%2F%2F5Z8%3D","line":56,"updated":"2012-10-30 01:58:17.000000000","message":"what if we have some other filter options in it?\nfor example quantum net-external-list --name\u003dtest","commit_id":"575832b1bf67d2750471260c053498fefdc6ae92"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":53,"context_line":"        for filter in parsed_args.filter_specs:"},{"line_number":54,"context_line":"            if \u0027--router:external\u0027 in filter:"},{"line_number":55,"context_line":"                return super(ListExternalNetwork, self).get_data(parsed_args)"},{"line_number":56,"context_line":"        if \u0027--\u0027 not in parsed_args.filter_specs:"},{"line_number":57,"context_line":"            parsed_args.filter_specs.append(\u0027--\u0027)"},{"line_number":58,"context_line":"        parsed_args.filter_specs.append(\u0027--router:external\u003dTrue\u0027)"},{"line_number":59,"context_line":"        return super(ListExternalNetwork, self).get_data(parsed_args)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALn%2F%2F5P8%3D","line":56,"in_reply_to":"AAAALn%2F%2F5UE%3D","updated":"2012-10-30 09:11:12.000000000","message":"Your code here is right. I take back my comment for it.","commit_id":"575832b1bf67d2750471260c053498fefdc6ae92"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":53,"context_line":"        for filter in parsed_args.filter_specs:"},{"line_number":54,"context_line":"            if \u0027--router:external\u0027 in filter:"},{"line_number":55,"context_line":"                return super(ListExternalNetwork, self).get_data(parsed_args)"},{"line_number":56,"context_line":"        if \u0027--\u0027 not in parsed_args.filter_specs:"},{"line_number":57,"context_line":"            parsed_args.filter_specs.append(\u0027--\u0027)"},{"line_number":58,"context_line":"        parsed_args.filter_specs.append(\u0027--router:external\u003dTrue\u0027)"},{"line_number":59,"context_line":"        return super(ListExternalNetwork, self).get_data(parsed_args)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALn%2F%2F5UE%3D","line":56,"in_reply_to":"AAAALn%2F%2F5V4%3D","updated":"2012-10-30 05:21:01.000000000","message":"I think the current approach is reasonable. More useful case is \"quantum net-external-list -- --tenant_id xxxx\" with admin context.","commit_id":"575832b1bf67d2750471260c053498fefdc6ae92"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"bf42d7200a74d84c12a9e73f75b7b2fda7e6a5f6","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        for filter in parsed_args.filter_specs:"},{"line_number":54,"context_line":"            if \u0027--router:external\u0027 in filter:"},{"line_number":55,"context_line":"                return super(ListExternalNetwork, self).get_data(parsed_args)"},{"line_number":56,"context_line":"        if \u0027--\u0027 not in parsed_args.filter_specs:"},{"line_number":57,"context_line":"            parsed_args.filter_specs.append(\u0027--\u0027)"},{"line_number":58,"context_line":"        parsed_args.filter_specs.append(\u0027--router:external\u003dTrue\u0027)"},{"line_number":59,"context_line":"        return super(ListExternalNetwork, self).get_data(parsed_args)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALn%2F%2F5V4%3D","line":56,"in_reply_to":"AAAALn%2F%2F5Z8%3D","updated":"2012-10-30 03:21:55.000000000","message":"If we have other filter options in it for example quantum net-external-list --name\u003dtest,  it will prompt:\"quantum net-external-list: error: unrecognized arguments\". I think it is enough, because quantum net-list works in the same way. And if we use the command like this: quantum net-external-list -- --name\u003dtest. It works well, and its search options: {\u0027router:external\u0027: \u0027True\u0027, \u0027name\u0027: \u0027test\u0027}, and quantum net-list also works in the same way.","commit_id":"575832b1bf67d2750471260c053498fefdc6ae92"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class ListExternalNetwork(ListCommand):"},{"line_number":45,"context_line":"    \"\"\"List external network that belong to a given tenant\"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    resource \u003d \u0027network\u0027"},{"line_number":48,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListExternalNetwork\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALn%2F%2Fz%2Bk%3D","line":45,"updated":"2012-11-05 09:19:55.000000000","message":"network -\u003e networks?","commit_id":"b094586719962eb91244ffacc985dea1853e7cc8"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def get_data(self, parsed_args):"},{"line_number":53,"context_line":"        if \u0027--\u0027 not in parsed_args.filter_specs:"},{"line_number":54,"context_line":"            parsed_args.filter_specs.append(\u0027--\u0027)"},{"line_number":55,"context_line":"        parsed_args.filter_specs.append(\u0027--router:external\u003dTrue\u0027)"},{"line_number":56,"context_line":"        return super(ListExternalNetwork, self).get_data(parsed_args)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALn%2F%2Fz%2Bg%3D","line":55,"updated":"2012-11-05 09:19:55.000000000","message":"what if --router:external is in filter_specs by user?\nshouldn\u0027t we prompt warnings?","commit_id":"b094586719962eb91244ffacc985dea1853e7cc8"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"bf42d7200a74d84c12a9e73f75b7b2fda7e6a5f6","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def get_data(self, parsed_args):"},{"line_number":53,"context_line":"        if \u0027--\u0027 not in parsed_args.filter_specs:"},{"line_number":54,"context_line":"            parsed_args.filter_specs.append(\u0027--\u0027)"},{"line_number":55,"context_line":"        parsed_args.filter_specs.append(\u0027--router:external\u003dTrue\u0027)"},{"line_number":56,"context_line":"        return super(ListExternalNetwork, self).get_data(parsed_args)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALn%2F%2Fzzw%3D","line":55,"in_reply_to":"AAAALn%2F%2Fz%2Bg%3D","updated":"2012-11-05 15:18:53.000000000","message":"It will prompt: duplicated options --router:external\u003dFalse --router:external\u003dTrue\nI think it\u0027s enough.","commit_id":"b094586719962eb91244ffacc985dea1853e7cc8"}],"quantumclient/quantum/v2_0/port.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"f23b167acf651f9026933a1f33347370cd3f736f","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from quantumclient.quantum.v2_0 import ShowCommand"},{"line_number":27,"context_line":"from quantumclient.quantum.v2_0 import UpdateCommand"},{"line_number":28,"context_line":"from quantumclient.quantum.v2_0 import find_resourceid_by_name_or_id"},{"line_number":29,"context_line":"from quantumclient.quantum.v2_0 import add_show_list_common_argument"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def _format_fixed_ips(port):"},{"line_number":32,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKPk%3D","line":29,"updated":"2012-10-10 11:39:00.000000000","message":"no need to import such function directly. use quantumv20.find_resourceid_by_name_or_id to access them.","commit_id":"dd64ee58f9725407a11e86d5c11b524e75a17a4b"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"f23b167acf651f9026933a1f33347370cd3f736f","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    \"\"\"List ports that belong to a given tenant, with specified router\"\"\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    resource \u003d \u0027port\u0027"},{"line_number":51,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListPort\u0027)"},{"line_number":52,"context_line":"    _formatters \u003d {\u0027fixed_ips\u0027: _format_fixed_ips, }"},{"line_number":53,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027name\u0027, \u0027mac_address\u0027, \u0027fixed_ips\u0027]"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKNw%3D","line":51,"updated":"2012-10-10 11:39:00.000000000","message":"ListPort -\u003e ListRouterPort","commit_id":"dd64ee58f9725407a11e86d5c11b524e75a17a4b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57f465a15a924cd46a68ff75b973b0342f2d97fb","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    list_columns \u003d [\u0027id\u0027, \u0027name\u0027, \u0027mac_address\u0027, \u0027fixed_ips\u0027]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def get_parser(self, prog_name):"},{"line_number":56,"context_line":"        self.resource \u003d \u0027router\u0027"},{"line_number":57,"context_line":"        parser \u003d super(ListCommand, self).get_parser(prog_name)"},{"line_number":58,"context_line":"        add_show_list_common_argument(parser)"},{"line_number":59,"context_line":"        help_str \u003d \u0027ID or name of router to look up\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKQM%3D","line":56,"updated":"2012-10-10 10:00:17.000000000","message":"There is no need to change self.resource here. See the comment for L.61.","commit_id":"dd64ee58f9725407a11e86d5c11b524e75a17a4b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57f465a15a924cd46a68ff75b973b0342f2d97fb","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        add_show_list_common_argument(parser)"},{"line_number":59,"context_line":"        help_str \u003d \u0027ID or name of router to look up\u0027"},{"line_number":60,"context_line":"        parser.add_argument("},{"line_number":61,"context_line":"            \u0027id\u0027, metavar\u003dself.resource,"},{"line_number":62,"context_line":"            help\u003dhelp_str)"},{"line_number":63,"context_line":"        self.resource \u003d \u0027port\u0027"},{"line_number":64,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKQQ%3D","line":61,"updated":"2012-10-10 10:00:17.000000000","message":"self.resource -\u003e \u0027router\u0027","commit_id":"dd64ee58f9725407a11e86d5c11b524e75a17a4b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57f465a15a924cd46a68ff75b973b0342f2d97fb","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        parser.add_argument("},{"line_number":61,"context_line":"            \u0027id\u0027, metavar\u003dself.resource,"},{"line_number":62,"context_line":"            help\u003dhelp_str)"},{"line_number":63,"context_line":"        self.resource \u003d \u0027port\u0027"},{"line_number":64,"context_line":"        return parser"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def get_data(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKQI%3D","line":63,"updated":"2012-10-10 10:00:17.000000000","message":"This line will be unnecessary.","commit_id":"dd64ee58f9725407a11e86d5c11b524e75a17a4b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57f465a15a924cd46a68ff75b973b0342f2d97fb","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        return parser"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def get_data(self, parsed_args):"},{"line_number":67,"context_line":"        self.resource \u003d \u0027router\u0027"},{"line_number":68,"context_line":"        print parsed_args"},{"line_number":69,"context_line":"        quantum_client \u003d self.get_client()"},{"line_number":70,"context_line":"        quantum_client.format \u003d parsed_args.request_format"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKQY%3D","line":67,"updated":"2012-10-10 10:00:17.000000000","message":"There is no need to change self.resource here.\nSee the comment for L.71.","commit_id":"dd64ee58f9725407a11e86d5c11b524e75a17a4b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57f465a15a924cd46a68ff75b973b0342f2d97fb","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        print parsed_args"},{"line_number":69,"context_line":"        quantum_client \u003d self.get_client()"},{"line_number":70,"context_line":"        quantum_client.format \u003d parsed_args.request_format"},{"line_number":71,"context_line":"        _id \u003d find_resourceid_by_name_or_id(quantum_client, self.resource,"},{"line_number":72,"context_line":"                                                parsed_args.id)"},{"line_number":73,"context_line":"        self.resource \u003d \u0027port\u0027"},{"line_number":74,"context_line":"        filter_specs\u003d[\u0027--\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKQc%3D","line":71,"updated":"2012-10-10 10:00:17.000000000","message":"self.resource -\u003e \u0027router\u0027","commit_id":"dd64ee58f9725407a11e86d5c11b524e75a17a4b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57f465a15a924cd46a68ff75b973b0342f2d97fb","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        quantum_client.format \u003d parsed_args.request_format"},{"line_number":71,"context_line":"        _id \u003d find_resourceid_by_name_or_id(quantum_client, self.resource,"},{"line_number":72,"context_line":"                                                parsed_args.id)"},{"line_number":73,"context_line":"        self.resource \u003d \u0027port\u0027"},{"line_number":74,"context_line":"        filter_specs\u003d[\u0027--\u0027]"},{"line_number":75,"context_line":"        filter_specs.append(\u0027\u003d\u0027.join([\u0027--device_id\u0027, _id]))"},{"line_number":76,"context_line":"        parsed_args.filter_specs\u003dfilter_specs"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKQU%3D","line":73,"updated":"2012-10-10 10:00:17.000000000","message":"This line will be unnecessary.","commit_id":"dd64ee58f9725407a11e86d5c11b524e75a17a4b"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"f23b167acf651f9026933a1f33347370cd3f736f","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                                                parsed_args.id)"},{"line_number":73,"context_line":"        self.resource \u003d \u0027port\u0027"},{"line_number":74,"context_line":"        filter_specs\u003d[\u0027--\u0027]"},{"line_number":75,"context_line":"        filter_specs.append(\u0027\u003d\u0027.join([\u0027--device_id\u0027, _id]))"},{"line_number":76,"context_line":"        parsed_args.filter_specs\u003dfilter_specs"},{"line_number":77,"context_line":"        return super(ListRouterPort, self).get_data(parsed_args)"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKNs%3D","line":75,"updated":"2012-10-10 11:39:00.000000000","message":"we have to allow user to give their own unknown options.\nWe can check if user has given their filter_specs. if not, we can do your way. Otherwise, we have to just append this device_id.\n\nIn short, we have to allow user to use this command like this:\n\nquantum router-list-port routerid -- --owner x","commit_id":"dd64ee58f9725407a11e86d5c11b524e75a17a4b"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"f23b167acf651f9026933a1f33347370cd3f736f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            \u0027filter_specs\u0027,"},{"line_number":62,"context_line":"            nargs\u003dargparse.REMAINDER,"},{"line_number":63,"context_line":"            help\u003d\u0027filters options: --key1 [type\u003dint|bool|...] value \u0027"},{"line_number":64,"context_line":"                 \u0027[--key2 [type\u003dint|bool|...] value ...]\u0027)"},{"line_number":65,"context_line":"        return parser"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def get_data(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALn%2F%2F5Zs%3D","line":64,"updated":"2012-10-30 01:58:17.000000000","message":"Why not use the add_extra_argument(parser, \u0027filter_specs\u0027, \u0027filters options\u0027)?","commit_id":"575832b1bf67d2750471260c053498fefdc6ae92"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"f23b167acf651f9026933a1f33347370cd3f736f","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        return parser"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def get_data(self, parsed_args):"},{"line_number":68,"context_line":"        print \u0027parsed_args:%s\u0027 % parsed_args"},{"line_number":69,"context_line":"        if -1 !\u003d parsed_args.id.find(\u0027--device_id\u0027):"},{"line_number":70,"context_line":"            parsed_args.filter_specs.append(parsed_args.id)"},{"line_number":71,"context_line":"            return super(ListRouterPort, self).get_data(parsed_args)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALn%2F%2F5ZQ%3D","line":68,"updated":"2012-10-30 01:58:17.000000000","message":"use log instead of print.","commit_id":"575832b1bf67d2750471260c053498fefdc6ae92"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"f23b167acf651f9026933a1f33347370cd3f736f","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def get_data(self, parsed_args):"},{"line_number":68,"context_line":"        print \u0027parsed_args:%s\u0027 % parsed_args"},{"line_number":69,"context_line":"        if -1 !\u003d parsed_args.id.find(\u0027--device_id\u0027):"},{"line_number":70,"context_line":"            parsed_args.filter_specs.append(parsed_args.id)"},{"line_number":71,"context_line":"            return super(ListRouterPort, self).get_data(parsed_args)"},{"line_number":72,"context_line":"        for filter in parsed_args.filter_specs:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALn%2F%2F5Y0%3D","line":69,"updated":"2012-10-30 01:58:17.000000000","message":"--device_id is unlikely part of id\u0027s value. we cannot run quantum list-router-port --device_id routerid","commit_id":"575832b1bf67d2750471260c053498fefdc6ae92"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"f23b167acf651f9026933a1f33347370cd3f736f","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            parsed_args.filter_specs.append(parsed_args.id)"},{"line_number":71,"context_line":"            return super(ListRouterPort, self).get_data(parsed_args)"},{"line_number":72,"context_line":"        for filter in parsed_args.filter_specs:"},{"line_number":73,"context_line":"            if \u0027--device_id\u0027 in filter:"},{"line_number":74,"context_line":"                return super(ListRouterPort, self).get_data(parsed_args)"},{"line_number":75,"context_line":"        quantum_client \u003d self.get_client()"},{"line_number":76,"context_line":"        quantum_client.format \u003d parsed_args.request_format"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALn%2F%2F5Yw%3D","line":73,"updated":"2012-10-30 01:58:17.000000000","message":"there is no need to have this loop block since we will sure compose --device_id.\nquantum list-router-port routerid_name --xxx\u003dyx --device_id \u003dxx\ntest and make sure the --device_id \u003d xx will not be used to query. we will use the composed --device_id \u003d routerid which is appended by later following codes.","commit_id":"575832b1bf67d2750471260c053498fefdc6ae92"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":70,"context_line":"            parsed_args.filter_specs.append(parsed_args.id)"},{"line_number":71,"context_line":"            return super(ListRouterPort, self).get_data(parsed_args)"},{"line_number":72,"context_line":"        for filter in parsed_args.filter_specs:"},{"line_number":73,"context_line":"            if \u0027--device_id\u0027 in filter:"},{"line_number":74,"context_line":"                return super(ListRouterPort, self).get_data(parsed_args)"},{"line_number":75,"context_line":"        quantum_client \u003d self.get_client()"},{"line_number":76,"context_line":"        quantum_client.format \u003d parsed_args.request_format"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALn%2F%2F5P4%3D","line":73,"in_reply_to":"AAAALn%2F%2F5UA%3D","updated":"2012-10-30 09:11:12.000000000","message":"ok, I agree with Akihiro.","commit_id":"575832b1bf67d2750471260c053498fefdc6ae92"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":70,"context_line":"            parsed_args.filter_specs.append(parsed_args.id)"},{"line_number":71,"context_line":"            return super(ListRouterPort, self).get_data(parsed_args)"},{"line_number":72,"context_line":"        for filter in parsed_args.filter_specs:"},{"line_number":73,"context_line":"            if \u0027--device_id\u0027 in filter:"},{"line_number":74,"context_line":"                return super(ListRouterPort, self).get_data(parsed_args)"},{"line_number":75,"context_line":"        quantum_client \u003d self.get_client()"},{"line_number":76,"context_line":"        quantum_client.format \u003d parsed_args.request_format"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALn%2F%2F5UA%3D","line":73,"in_reply_to":"AAAALn%2F%2F5Vg%3D","updated":"2012-10-30 05:21:01.000000000","message":"How about aborting the command with a message \"--device_id is not supported for list-router-port\" (since list-router-port implies --device_id\u003drouter_id)?","commit_id":"575832b1bf67d2750471260c053498fefdc6ae92"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"bf42d7200a74d84c12a9e73f75b7b2fda7e6a5f6","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            parsed_args.filter_specs.append(parsed_args.id)"},{"line_number":71,"context_line":"            return super(ListRouterPort, self).get_data(parsed_args)"},{"line_number":72,"context_line":"        for filter in parsed_args.filter_specs:"},{"line_number":73,"context_line":"            if \u0027--device_id\u0027 in filter:"},{"line_number":74,"context_line":"                return super(ListRouterPort, self).get_data(parsed_args)"},{"line_number":75,"context_line":"        quantum_client \u003d self.get_client()"},{"line_number":76,"context_line":"        quantum_client.format \u003d parsed_args.request_format"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALn%2F%2F5Vg%3D","line":73,"in_reply_to":"AAAALn%2F%2F5Yw%3D","updated":"2012-10-30 03:21:55.000000000","message":"quantum list-router-port routerid_name --xxx\u003dyx --device_id \u003dxx, It will prompt:duplicated options. Is it enough?","commit_id":"575832b1bf67d2750471260c053498fefdc6ae92"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":66,"context_line":"        quantum_client.format \u003d parsed_args.request_format"},{"line_number":67,"context_line":"        _id \u003d quantumv20.find_resourceid_by_name_or_id("},{"line_number":68,"context_line":"            quantum_client, \u0027router\u0027, parsed_args.id)"},{"line_number":69,"context_line":"        parsed_args.filter_specs.append(\u0027--device_id\u003d%s\u0027 % _id)"},{"line_number":70,"context_line":"        return super(ListRouterPort, self).get_data(parsed_args)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALn%2F%2Fz%2Bc%3D","line":69,"updated":"2012-11-05 09:19:55.000000000","message":"what if --device_id is in filter_specs by user?\nshouldn\u0027t we prompt a warning?","commit_id":"b094586719962eb91244ffacc985dea1853e7cc8"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"bf42d7200a74d84c12a9e73f75b7b2fda7e6a5f6","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        quantum_client.format \u003d parsed_args.request_format"},{"line_number":67,"context_line":"        _id \u003d quantumv20.find_resourceid_by_name_or_id("},{"line_number":68,"context_line":"            quantum_client, \u0027router\u0027, parsed_args.id)"},{"line_number":69,"context_line":"        parsed_args.filter_specs.append(\u0027--device_id\u003d%s\u0027 % _id)"},{"line_number":70,"context_line":"        return super(ListRouterPort, self).get_data(parsed_args)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALn%2F%2Fzz4%3D","line":69,"in_reply_to":"AAAALn%2F%2Fz%2Bc%3D","updated":"2012-11-05 15:18:53.000000000","message":"It will prompt: duplicated options --device_id\u003dxxx --device_id\u003d74855c84-c478-4511-a90a-49bc9fdd9421. I think it is enough.","commit_id":"b094586719962eb91244ffacc985dea1853e7cc8"}],"quantumclient/shell.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"57f465a15a924cd46a68ff75b973b0342f2d97fb","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    \u0027port-list\u0027: utils.import_class("},{"line_number":78,"context_line":"        \u0027quantumclient.quantum.v2_0.port.ListPort\u0027),"},{"line_number":79,"context_line":"    \u0027router-port-list\u0027:utils.import_class("},{"line_number":80,"context_line":"        \u0027quantumclient.quantum.v2_0.port.ListRouterPort\u0027),"},{"line_number":81,"context_line":"    \u0027port-show\u0027: utils.import_class("},{"line_number":82,"context_line":"        \u0027quantumclient.quantum.v2_0.port.ShowPort\u0027),"},{"line_number":83,"context_line":"    \u0027port-create\u0027: utils.import_class("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FKQA%3D","line":80,"updated":"2012-10-10 10:00:17.000000000","message":"I prefer moving router-port-list to the part of router-*.\nThis commands takes \u0027router\u0027 as a parameter.","commit_id":"dd64ee58f9725407a11e86d5c11b524e75a17a4b"}],"quantumclient/tests/unit/test_cli20.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":252,"context_line":"        _str \u003d self.fake_stdout.make_string()"},{"line_number":253,"context_line":"        self.assertTrue(\u0027myid1\u0027 in _str)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def _test_list_external_nets_resources(self, resources, cmd,"},{"line_number":256,"context_line":"                                           detail\u003dFalse, tags\u003d[],"},{"line_number":257,"context_line":"                                           fields_1\u003d[], fields_2\u003d[]):"},{"line_number":258,"context_line":"        self.mox.StubOutWithMock(cmd, \"get_client\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALn%2F%2F5VA%3D","line":255,"updated":"2012-10-30 05:21:01.000000000","message":"\"resource\" is an abstraction of network/subnet/port. \"external_nets\" is a kind of resource.Thus IMO _test_list_external_nets() is a better method name.\n\nI prefer to moving this method to test_cli20_network.py since this file provides resource-independent convenient methods. In addition list_external_network features are implemented in networks.py and it is easy to understand if corresponding tests are in test_cli20_network.\n\n(suggestion) Most of this method are copied from _test_list_resources. Ideally it is better to create some convenient sub method and call according to DRY principal.","commit_id":"575832b1bf67d2750471260c053498fefdc6ae92"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        self.assertTrue(\u0027myid1\u0027 in _str)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    def _test_list_router_port_resources(self, resources, cmd,"},{"line_number":321,"context_line":"                                         myid, detail\u003dFalse, tags\u003d[],"},{"line_number":322,"context_line":"                                         fields_1\u003d[], fields_2\u003d[]):"},{"line_number":323,"context_line":"        self.mox.StubOutWithMock(cmd, \"get_client\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALn%2F%2F5U4%3D","line":320,"updated":"2012-10-30 05:21:01.000000000","message":"Please see the above comment about _test_list_external_nets_resources().","commit_id":"575832b1bf67d2750471260c053498fefdc6ae92"}]}
