)]}'
{"openstackclient/common/utils.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"01b0f12831b98b37b309e01dfe1cf93bf25cf6de","unresolved":false,"context_lines":[{"line_number":100,"context_line":"def format_list(data):"},{"line_number":101,"context_line":"    \"\"\"Return a formatted strings"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    :param data: a list"},{"line_number":104,"context_line":"    :rtype: a string formatted to a,b,c"},{"line_number":105,"context_line":"    \"\"\""},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_4440c506","line":103,"updated":"2014-05-20 16:46:24.000000000","message":"nit: a list of strings*","commit_id":"4ac42ff18bf9e62479a8205fd16a9becb3ad8856"}],"openstackclient/network/client.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"6ad7429313b1216ef89ccdd0a27ab2fa48e4e066","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        token\u003dinstance._token,"},{"line_number":47,"context_line":"        insecure\u003dinstance._insecure,"},{"line_number":48,"context_line":"        ca_cert\u003dinstance._cacert,"},{"line_number":49,"context_line":"    )"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"def build_option_parser(parser):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_e8de8a3e","line":49,"updated":"2014-05-14 17:01:47.000000000","message":"look at cinder for setting the token to avoid reauth","commit_id":"8a7d0b995a70eff8ce44e0e5b3dc51441afafdc7"}],"openstackclient/network/common.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"01b0f12831b98b37b309e01dfe1cf93bf25cf6de","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from openstackclient.common import exceptions"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"def find(client, resource, resources, name):"},{"line_number":18,"context_line":"    list_method \u003d getattr(client, \"list_%s\" % resources)"},{"line_number":19,"context_line":"    data \u003d list_method(name\u003dname, fields\u003d\u0027id\u0027)"},{"line_number":20,"context_line":"    info \u003d data[resources]"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_c4d93523","line":17,"updated":"2014-05-20 16:46:24.000000000","message":"this looks pretty complicated, can you add a docstring about explaining whats going on? \n\nHave example input and output?","commit_id":"4ac42ff18bf9e62479a8205fd16a9becb3ad8856"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"01b0f12831b98b37b309e01dfe1cf93bf25cf6de","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    if len(info) \u003e 1:"},{"line_number":24,"context_line":"        msg \u003d \"More than one %s exists with the name \u0027%s\u0027.\" % (resource, name)"},{"line_number":25,"context_line":"        raise exceptions.CommandError(msg)"},{"line_number":26,"context_line":"    data \u003d list_method(id\u003dname, fields\u003d\u0027id\u0027)"},{"line_number":27,"context_line":"    info \u003d data[resources]"},{"line_number":28,"context_line":"    if len(info) \u003d\u003d 1:"},{"line_number":29,"context_line":"        return info[0][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_640ea18d","line":26,"updated":"2014-05-20 16:46:24.000000000","message":"Add a comment here about about how we are trying ID now, and we tried name earlier. Took me too long to figure this out.","commit_id":"4ac42ff18bf9e62479a8205fd16a9becb3ad8856"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"01b0f12831b98b37b309e01dfe1cf93bf25cf6de","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    info \u003d data[resources]"},{"line_number":28,"context_line":"    if len(info) \u003d\u003d 1:"},{"line_number":29,"context_line":"        return info[0][\u0027id\u0027]"},{"line_number":30,"context_line":"    msg \u003d \"No %s with a name or ID of \u0027%s\u0027 exists.\" % (resource, name)"},{"line_number":31,"context_line":"    raise exceptions.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_645ce17d","line":30,"updated":"2014-05-20 16:46:24.000000000","message":"why not checking if len(info) \u003e 1 here?","commit_id":"4ac42ff18bf9e62479a8205fd16a9becb3ad8856"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"6a5488e0166f70c248d34545e0912f63acaa3462","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    info \u003d data[resources]"},{"line_number":28,"context_line":"    if len(info) \u003d\u003d 1:"},{"line_number":29,"context_line":"        return info[0][\u0027id\u0027]"},{"line_number":30,"context_line":"    msg \u003d \"No %s with a name or ID of \u0027%s\u0027 exists.\" % (resource, name)"},{"line_number":31,"context_line":"    raise exceptions.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_677b007c","line":30,"in_reply_to":"7adec928_645ce17d","updated":"2014-05-20 17:18:40.000000000","message":"Technically, it should be impossible to have two records with the same id.","commit_id":"4ac42ff18bf9e62479a8205fd16a9becb3ad8856"}],"openstackclient/network/v2_0/network.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"6ad7429313b1216ef89ccdd0a27ab2fa48e4e066","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#   Copyright 2012-2013 OpenStack, LLC."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_681b5a1b","line":1,"updated":"2014-05-14 17:01:47.000000000","message":"remove copyright","commit_id":"8a7d0b995a70eff8ce44e0e5b3dc51441afafdc7"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"6ad7429313b1216ef89ccdd0a27ab2fa48e4e066","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            \u0027identifier\u0027,"},{"line_number":96,"context_line":"            metavar\u003d\"\u003c\" + RESOURCE + \"\u003e\","},{"line_number":97,"context_line":"            help\u003d(\"Name or identifier of \" + RESOURCE.replace(\u0027_\u0027, \u0027 \u0027) +"},{"line_number":98,"context_line":"                  \" to delete\")"},{"line_number":99,"context_line":"        )"},{"line_number":100,"context_line":"        return parser"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_48ca1e6f","line":98,"updated":"2014-05-14 17:01:47.000000000","message":"perhaps recreate a RESOURCE_NAME instead of using replace","commit_id":"8a7d0b995a70eff8ce44e0e5b3dc51441afafdc7"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"7148a4694f4a43947871eae5819355f1dfd654d3","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from openstackclient.common import exceptions"},{"line_number":24,"context_line":"from openstackclient.common import utils"},{"line_number":25,"context_line":"from openstackclient.network import common"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"RESOURCE \u003d \u0027network\u0027"},{"line_number":28,"context_line":"RESOURCE_NAME \u003d \u0027network\u0027"},{"line_number":29,"context_line":"RESOURCES \u003d \u0027networks\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_e6a6eb0e","line":26,"updated":"2014-06-24 21:02:12.000000000","message":"Dean wants this stuff gone.","commit_id":"4ac42ff18bf9e62479a8205fd16a9becb3ad8856"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"01b0f12831b98b37b309e01dfe1cf93bf25cf6de","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        share_group.add_argument("},{"line_number":57,"context_line":"            \u0027--share\u0027,"},{"line_number":58,"context_line":"            dest\u003d\u0027shared\u0027, action\u003d\u0027store_true\u0027,"},{"line_number":59,"context_line":"            default\u003dFalse, help\u003d\u0027Share the network\u0027)"},{"line_number":60,"context_line":"        share_group.add_argument("},{"line_number":61,"context_line":"            \u0027--no-share\u0027,"},{"line_number":62,"context_line":"            dest\u003d\u0027shared\u0027, action\u003d\u0027store_false\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_44b5257c","line":59,"updated":"2014-05-20 16:46:24.000000000","message":"you have both options (share and no-share) defaulting to false here, but it\u0027s mutually exclusive.","commit_id":"4ac42ff18bf9e62479a8205fd16a9becb3ad8856"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"7148a4694f4a43947871eae5819355f1dfd654d3","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        share_group.add_argument("},{"line_number":57,"context_line":"            \u0027--share\u0027,"},{"line_number":58,"context_line":"            dest\u003d\u0027shared\u0027, action\u003d\u0027store_true\u0027,"},{"line_number":59,"context_line":"            default\u003dFalse, help\u003d\u0027Share the network\u0027)"},{"line_number":60,"context_line":"        share_group.add_argument("},{"line_number":61,"context_line":"            \u0027--no-share\u0027,"},{"line_number":62,"context_line":"            dest\u003d\u0027shared\u0027, action\u003d\u0027store_false\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_46607fcf","line":59,"in_reply_to":"7adec928_44b5257c","updated":"2014-06-24 21:02:12.000000000","message":"With default\u003dNone on this and I drop the default on the other, this works.  It works in the SetNetwork as well.  I\u0027ve changed the create so that it doesn\u0027t send shared unless you specify.  In this version, it sends False by default.","commit_id":"4ac42ff18bf9e62479a8205fd16a9becb3ad8856"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"7148a4694f4a43947871eae5819355f1dfd654d3","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        share_group.add_argument("},{"line_number":61,"context_line":"            \u0027--no-share\u0027,"},{"line_number":62,"context_line":"            dest\u003d\u0027shared\u0027, action\u003d\u0027store_false\u0027,"},{"line_number":63,"context_line":"            default\u003dFalse, help\u003d\u0027Do not share the network\u0027)"},{"line_number":64,"context_line":"        parser.add_argument("},{"line_number":65,"context_line":"            \u0027name\u0027, metavar\u003d\u0027NAME\u0027,"},{"line_number":66,"context_line":"            help\u003d\u0027Name of network to create\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_a64ea36c","line":63,"updated":"2014-06-24 21:02:12.000000000","message":"shared is for shared across tenants.  I\u0027m going to add that to the help text.","commit_id":"4ac42ff18bf9e62479a8205fd16a9becb3ad8856"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"01b0f12831b98b37b309e01dfe1cf93bf25cf6de","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            dest\u003d\u0027shared\u0027, action\u003d\u0027store_false\u0027,"},{"line_number":63,"context_line":"            default\u003dFalse, help\u003d\u0027Do not share the network\u0027)"},{"line_number":64,"context_line":"        parser.add_argument("},{"line_number":65,"context_line":"            \u0027name\u0027, metavar\u003d\u0027NAME\u0027,"},{"line_number":66,"context_line":"            help\u003d\u0027Name of network to create\u0027)"},{"line_number":67,"context_line":"        return parser"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_24501931","line":65,"updated":"2014-05-20 16:46:24.000000000","message":"don\u0027t we usually follow the format of:\n  metavar\u003d\u0027\u003cnetwork_name\u003e\u0027 ?","commit_id":"4ac42ff18bf9e62479a8205fd16a9becb3ad8856"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"7148a4694f4a43947871eae5819355f1dfd654d3","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            default\u003dFalse, help\u003d\u0027Do not share the network\u0027)"},{"line_number":64,"context_line":"        parser.add_argument("},{"line_number":65,"context_line":"            \u0027name\u0027, metavar\u003d\u0027NAME\u0027,"},{"line_number":66,"context_line":"            help\u003d\u0027Name of network to create\u0027)"},{"line_number":67,"context_line":"        return parser"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_46495f5f","line":66,"updated":"2014-06-24 21:02:12.000000000","message":"Dean wants positionals first.","commit_id":"4ac42ff18bf9e62479a8205fd16a9becb3ad8856"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"01b0f12831b98b37b309e01dfe1cf93bf25cf6de","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    def take_action(self, parsed_args):"},{"line_number":70,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027 % parsed_args)"},{"line_number":71,"context_line":"        client \u003d self.app.client_manager.network"},{"line_number":72,"context_line":"        body \u003d self.get_body(parsed_args)"},{"line_number":73,"context_line":"        create_method \u003d getattr(client, \"create_%s\" % RESOURCE)"},{"line_number":74,"context_line":"        data \u003d create_method(body)[RESOURCE]"},{"line_number":75,"context_line":"        if data:"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_41f27470","line":72,"updated":"2014-05-20 16:46:24.000000000","message":"do you think get_body will be used any other time? might worth putting this in network/common, and take resource as another arg?","commit_id":"4ac42ff18bf9e62479a8205fd16a9becb3ad8856"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"6a5488e0166f70c248d34545e0912f63acaa3462","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    def take_action(self, parsed_args):"},{"line_number":70,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027 % parsed_args)"},{"line_number":71,"context_line":"        client \u003d self.app.client_manager.network"},{"line_number":72,"context_line":"        body \u003d self.get_body(parsed_args)"},{"line_number":73,"context_line":"        create_method \u003d getattr(client, \"create_%s\" % RESOURCE)"},{"line_number":74,"context_line":"        data \u003d create_method(body)[RESOURCE]"},{"line_number":75,"context_line":"        if data:"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_87ce4cb3","line":72,"in_reply_to":"7adec928_41f27470","updated":"2014-05-20 17:18:40.000000000","message":"I don\u0027t think get_body will be used any other time, the only other possibility that comes to mind is SetNetwork, but generalizing it for that I don\u0027t think would be very helpful.","commit_id":"4ac42ff18bf9e62479a8205fd16a9becb3ad8856"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"01b0f12831b98b37b309e01dfe1cf93bf25cf6de","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                report_filter \u003d {\u0027router:external\u0027: True}"},{"line_number":148,"context_line":"            data \u003d list_method(**report_filter)[RESOURCES]"},{"line_number":149,"context_line":"        columns \u003d len(data) \u003e 0 and sorted(data[0].keys()) or []"},{"line_number":150,"context_line":"        if parsed_args.columns:"},{"line_number":151,"context_line":"            columns \u003d [x for x in parsed_args.columns if x in columns]"},{"line_number":152,"context_line":"        elif self.list_columns:"},{"line_number":153,"context_line":"            if not parsed_args.long and not parsed_args.dhcp:"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_647bfe7b","line":150,"updated":"2014-05-20 16:46:24.000000000","message":"i don\u0027t see where parsed_args.columns is set","commit_id":"4ac42ff18bf9e62479a8205fd16a9becb3ad8856"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"6a5488e0166f70c248d34545e0912f63acaa3462","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                report_filter \u003d {\u0027router:external\u0027: True}"},{"line_number":148,"context_line":"            data \u003d list_method(**report_filter)[RESOURCES]"},{"line_number":149,"context_line":"        columns \u003d len(data) \u003e 0 and sorted(data[0].keys()) or []"},{"line_number":150,"context_line":"        if parsed_args.columns:"},{"line_number":151,"context_line":"            columns \u003d [x for x in parsed_args.columns if x in columns]"},{"line_number":152,"context_line":"        elif self.list_columns:"},{"line_number":153,"context_line":"            if not parsed_args.long and not parsed_args.dhcp:"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_473b649c","line":150,"in_reply_to":"7adec928_647bfe7b","updated":"2014-05-20 17:18:40.000000000","message":"Standard option for lister.Lister the base class from cliff.","commit_id":"4ac42ff18bf9e62479a8205fd16a9becb3ad8856"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"01b0f12831b98b37b309e01dfe1cf93bf25cf6de","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        columns \u003d len(data) \u003e 0 and sorted(data[0].keys()) or []"},{"line_number":150,"context_line":"        if parsed_args.columns:"},{"line_number":151,"context_line":"            columns \u003d [x for x in parsed_args.columns if x in columns]"},{"line_number":152,"context_line":"        elif self.list_columns:"},{"line_number":153,"context_line":"            if not parsed_args.long and not parsed_args.dhcp:"},{"line_number":154,"context_line":"                columns \u003d [x for x in self.list_columns if x in columns]"},{"line_number":155,"context_line":"        return (columns,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_44d44247","line":152,"updated":"2014-05-20 16:46:24.000000000","message":"this part also seems funny, since list_columns is always set","commit_id":"4ac42ff18bf9e62479a8205fd16a9becb3ad8856"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"01b0f12831b98b37b309e01dfe1cf93bf25cf6de","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            help\u003d\u0027Set Admin State Down\u0027)"},{"line_number":176,"context_line":"        parser.add_argument("},{"line_number":177,"context_line":"            \u0027--name\u0027,"},{"line_number":178,"context_line":"            help\u003d\u0027New name for the network\u0027)"},{"line_number":179,"context_line":"        share_group \u003d parser.add_mutually_exclusive_group()"},{"line_number":180,"context_line":"        share_group.add_argument("},{"line_number":181,"context_line":"            \u0027--share\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_64405e08","line":178,"updated":"2014-05-20 16:46:24.000000000","message":"metavar?","commit_id":"4ac42ff18bf9e62479a8205fd16a9becb3ad8856"}],"openstackclient/tests/fakes.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"6ad7429313b1216ef89ccdd0a27ab2fa48e4e066","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        return result"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def lines(self):"},{"line_number":38,"context_line":"        return \u0027\u0027.join(self.content).replace(\u0027\\r\u0027, \u0027\u0027)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class FakeApp(object):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_e80daa91","line":38,"updated":"2014-05-14 17:01:47.000000000","message":"delete this","commit_id":"8a7d0b995a70eff8ce44e0e5b3dc51441afafdc7"}],"setup.cfg":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"a0ed76eb66cd44850bd81e0da85927278ec036c4","unresolved":false,"context_lines":[{"line_number":291,"context_line":"    volume_type_unset \u003d openstackclient.volume.v1.type:UnsetVolumeType"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"openstack.network.v2_0 \u003d"},{"line_number":294,"context_line":"    network_add_gateway \u003d openstackclient.network.v2_0.network:AddGatewayNetwork"},{"line_number":295,"context_line":"    network_create \u003d openstackclient.network.v2_0.network:CreateNetwork"},{"line_number":296,"context_line":"    network_delete \u003d openstackclient.network.v2_0.network:DeleteNetwork"},{"line_number":297,"context_line":"    network_list \u003d openstackclient.network.v2_0.network:ListNetwork"}],"source_content_type":"text/x-ttcn-cfg","patch_set":7,"id":"7adec928_32a463a5","line":294,"updated":"2014-05-14 15:12:18.000000000","message":"remove","commit_id":"00f28a453ebb77937bd430ceb2f5ec6b6bcd6158"}]}
