)]}'
{"openstackclient/object/v1/lib/object.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0da474c3e3dcfcea7c71afc6095de87fa81a7176","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    full_url \u003d \"%s/%s/%s\" % (url, container, object)"},{"line_number":184,"context_line":"    filename \u003d os.path.basename(object)"},{"line_number":185,"context_line":"    response \u003d api.put(full_url, files\u003d{filename: open(object, \u0027rb\u0027)})"},{"line_number":186,"context_line":"    url_parts \u003d urlparse(url)"},{"line_number":187,"context_line":"    data \u003d {"},{"line_number":188,"context_line":"        \u0027account\u0027: url_parts.path.split(\u0027/\u0027)[-1],"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_30e6e0e7","line":185,"updated":"2014-08-03 07:51:03.000000000","message":"i\u0027m not sure this is 100% correct, because when I download the file using swift CLI, it adds an ID before and after the text.\n\nWas hoping one of the reviewers would know whats up...","commit_id":"3d598cfe835862aa2a752b6b4e30d86db81ced81"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0336da036fbe54f927c251c29d290c963f8ce1ac","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    full_url \u003d \"%s/%s/%s\" % (url, container, object)"},{"line_number":184,"context_line":"    filename \u003d os.path.basename(object)"},{"line_number":185,"context_line":"    response \u003d api.put(full_url, files\u003d{filename: open(object, \u0027rb\u0027)})"},{"line_number":186,"context_line":"    url_parts \u003d urlparse(url)"},{"line_number":187,"context_line":"    data \u003d {"},{"line_number":188,"context_line":"        \u0027account\u0027: url_parts.path.split(\u0027/\u0027)[-1],"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_d5b50e7e","line":185,"updated":"2014-08-06 20:50:35.000000000","message":"This goes down to session.request right? with files being part of kwargs... \nI\u0027m getting some weird behaviour out of this after I download the file though, the content is there, but it\u0027s encapsulated in ID\u0027s at the top and bottom of the file. not sure if i\u0027m got the syntax 100% right.","commit_id":"77423ee49ea75e1fed999a2cd5de9ff5e9726c11"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"6a2ece26be78b1d6118e618b3dbe22c887987258","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    full_url \u003d \"%s/%s/%s\" % (url, container, object)"},{"line_number":184,"context_line":"    filename \u003d os.path.basename(object)"},{"line_number":185,"context_line":"    response \u003d api.put(full_url, files\u003d{filename: open(object, \u0027rb\u0027)})"},{"line_number":186,"context_line":"    url_parts \u003d urlparse(url)"},{"line_number":187,"context_line":"    data \u003d {"},{"line_number":188,"context_line":"        \u0027account\u0027: url_parts.path.split(\u0027/\u0027)[-1],"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_83c5015f","line":185,"in_reply_to":"baada198_d5b50e7e","updated":"2014-08-07 17:18:59.000000000","message":"Hold off on adding that yet, it was more of a suggestion.  As image create shows there are some nuances to reading from stdin that have to be right, particularly for Windows.\n\nAlso, create_object() !!","commit_id":"77423ee49ea75e1fed999a2cd5de9ff5e9726c11"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"134a487aefef8c3841f7c11532e4e8f42f2ff434","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    full_url \u003d \"%s/%s/%s\" % (url, container, object)"},{"line_number":44,"context_line":"    filename \u003d os.path.basename(object)"},{"line_number":45,"context_line":"    files \u003d {\u0027file\u0027: (filename, open(object))}"},{"line_number":46,"context_line":"    response \u003d api.put(full_url, files\u003dfiles)"},{"line_number":47,"context_line":"    url_parts \u003d urlparse(url)"},{"line_number":48,"context_line":"    data \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_65c1b14e","line":45,"updated":"2014-08-08 13:45:42.000000000","message":"There must ber another CRLF or something in there that is messing up the headers and causing headers to show up in the data.  When I upload the tox.ini, it starts:\n\n    --d8bdc49657974674bx991d932299a35d^M\n    Content-Disposition: form-data; name\u003d\"file\"; filename\u003d\"tox.ini\"^M\n    ^M\n    [tox]\n    minversion \u003d 1.6\n    envlist \u003d py26,py27,py33,pep8","commit_id":"20fd8b463af5d6cc44f7817a75a43e0f6e228051"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"21c0967d7fcfd2ea32d1dba5a926915efc710a55","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    full_url \u003d \"%s/%s/%s\" % (url, container, object)"},{"line_number":44,"context_line":"    filename \u003d os.path.basename(object)"},{"line_number":45,"context_line":"    files \u003d {\u0027file\u0027: (filename, open(object))}"},{"line_number":46,"context_line":"    response \u003d api.put(full_url, files\u003dfiles)"},{"line_number":47,"context_line":"    url_parts \u003d urlparse(url)"},{"line_number":48,"context_line":"    data \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_a07ad0b8","line":45,"in_reply_to":"baada198_5a3e43ba","updated":"2014-08-08 16:37:42.000000000","message":"neat - thanks terry!","commit_id":"20fd8b463af5d6cc44f7817a75a43e0f6e228051"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"2fb488d0bcaa41a23c4a4579467a6b8ed9db8ce0","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    full_url \u003d \"%s/%s/%s\" % (url, container, object)"},{"line_number":44,"context_line":"    filename \u003d os.path.basename(object)"},{"line_number":45,"context_line":"    files \u003d {\u0027file\u0027: (filename, open(object))}"},{"line_number":46,"context_line":"    response \u003d api.put(full_url, files\u003dfiles)"},{"line_number":47,"context_line":"    url_parts \u003d urlparse(url)"},{"line_number":48,"context_line":"    data \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_5a3e43ba","line":45,"in_reply_to":"baada198_5e9d5a56","updated":"2014-08-08 15:36:38.000000000","message":"This works for me:\n\n-    response \u003d api.put(full_url, files\u003dfiles)\n+    response \u003d api.put(full_url, data\u003dopen(object))\n\nFor binary files, you might need to set content/type application/data or something.  That files option does mime type which I don\u0027t think makes a lot of sense for one file upload.  The mime type upload seems to be busted.","commit_id":"20fd8b463af5d6cc44f7817a75a43e0f6e228051"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5e3ae40a54809e10aa48d312d85879459548cbf8","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    full_url \u003d \"%s/%s/%s\" % (url, container, object)"},{"line_number":44,"context_line":"    filename \u003d os.path.basename(object)"},{"line_number":45,"context_line":"    files \u003d {\u0027file\u0027: (filename, open(object))}"},{"line_number":46,"context_line":"    response \u003d api.put(full_url, files\u003dfiles)"},{"line_number":47,"context_line":"    url_parts \u003d urlparse(url)"},{"line_number":48,"context_line":"    data \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_5e9d5a56","line":45,"in_reply_to":"baada198_65c1b14e","updated":"2014-08-08 14:53:42.000000000","message":"yeah, I was getting the same result, I was hoping someone would know what\u0027s up.","commit_id":"20fd8b463af5d6cc44f7817a75a43e0f6e228051"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"442c6a226f1b98fbeab97c4a65f3cf72d1df8ef7","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        \u0027container\u0027: container,"},{"line_number":51,"context_line":"        \u0027object\u0027: object,"},{"line_number":52,"context_line":"    }"},{"line_number":53,"context_line":"    data[\u0027x-trans-id\u0027] \u003d response.headers.get(\u0027X-Trans-Id\u0027, None)"},{"line_number":54,"context_line":"    data[\u0027etag\u0027] \u003d response.headers.get(\u0027Etag\u0027, None)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    return data"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_92be09cd","line":53,"updated":"2014-08-08 13:33:42.000000000","message":"to me, the trans-id seems a bit odd to display unless there is some use I\u0027m not aware of.","commit_id":"20fd8b463af5d6cc44f7817a75a43e0f6e228051"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5e3ae40a54809e10aa48d312d85879459548cbf8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        \u0027container\u0027: container,"},{"line_number":51,"context_line":"        \u0027object\u0027: object,"},{"line_number":52,"context_line":"    }"},{"line_number":53,"context_line":"    data[\u0027x-trans-id\u0027] \u003d response.headers.get(\u0027X-Trans-Id\u0027, None)"},{"line_number":54,"context_line":"    data[\u0027etag\u0027] \u003d response.headers.get(\u0027Etag\u0027, None)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    return data"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_de916a47","line":53,"in_reply_to":"baada198_92be09cd","updated":"2014-08-08 14:53:42.000000000","message":"there wasn\u0027t much that i could display, so i wanted to toss it in there anyway, if it\u0027s pointless we can remove it later","commit_id":"20fd8b463af5d6cc44f7817a75a43e0f6e228051"}],"openstackclient/object/v1/object.py":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"6f46c7acaa2da2115b190b2696909b0ecf29f382","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        )"},{"line_number":42,"context_line":"        parser.add_argument("},{"line_number":43,"context_line":"            \u0027object\u0027,"},{"line_number":44,"context_line":"            metavar\u003d\u0027\u003cobject\u003e\u0027,"},{"line_number":45,"context_line":"            help\u003d\u0027Object to delete\u0027,"},{"line_number":46,"context_line":"        )"},{"line_number":47,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_c325605c","line":44,"updated":"2014-08-06 17:51:18.000000000","message":"\u003cobject-name\u003e ?","commit_id":"d3d8c76b4ddfcf29b43b08d93ed3f934714f5f4c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1fdfd493ca84b7c600365f4e41e9716e1511d819","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        )"},{"line_number":42,"context_line":"        parser.add_argument("},{"line_number":43,"context_line":"            \u0027object\u0027,"},{"line_number":44,"context_line":"            metavar\u003d\u0027\u003cobject\u003e\u0027,"},{"line_number":45,"context_line":"            help\u003d\u0027Object to delete\u0027,"},{"line_number":46,"context_line":"        )"},{"line_number":47,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_955f1674","line":44,"in_reply_to":"baada198_c325605c","updated":"2014-08-06 20:48:23.000000000","message":"Done","commit_id":"d3d8c76b4ddfcf29b43b08d93ed3f934714f5f4c"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"6f46c7acaa2da2115b190b2696909b0ecf29f382","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        return zip(*sorted(six.iteritems(data)))"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class UploadObject(show.ShowOne):"},{"line_number":187,"context_line":"    \"\"\"Upload an object to a container\"\"\""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.UploadObject\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_c35720c8","line":186,"updated":"2014-08-06 17:51:18.000000000","message":"CreateObject\n\nShould this also support piping to stdin like image create?  We\u0027d need to have --name, which we might also want to save to a different name than basename(object-filename) anyway.","commit_id":"d3d8c76b4ddfcf29b43b08d93ed3f934714f5f4c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1fdfd493ca84b7c600365f4e41e9716e1511d819","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        return zip(*sorted(six.iteritems(data)))"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class UploadObject(show.ShowOne):"},{"line_number":187,"context_line":"    \"\"\"Upload an object to a container\"\"\""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.UploadObject\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_f54f72bd","line":186,"in_reply_to":"baada198_c35720c8","updated":"2014-08-06 20:48:23.000000000","message":"Done","commit_id":"d3d8c76b4ddfcf29b43b08d93ed3f934714f5f4c"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"6f46c7acaa2da2115b190b2696909b0ecf29f382","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        )"},{"line_number":198,"context_line":"        parser.add_argument("},{"line_number":199,"context_line":"            \u0027object\u0027,"},{"line_number":200,"context_line":"            metavar\u003d\u0027\u003cobject\u003e\u0027,"},{"line_number":201,"context_line":"            help\u003d\u0027Local path of object to upload\u0027,"},{"line_number":202,"context_line":"        )"},{"line_number":203,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_833608b2","line":200,"updated":"2014-08-06 17:51:18.000000000","message":"\u003cobject-name\u003e ?","commit_id":"d3d8c76b4ddfcf29b43b08d93ed3f934714f5f4c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1fdfd493ca84b7c600365f4e41e9716e1511d819","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        )"},{"line_number":198,"context_line":"        parser.add_argument("},{"line_number":199,"context_line":"            \u0027object\u0027,"},{"line_number":200,"context_line":"            metavar\u003d\u0027\u003cobject\u003e\u0027,"},{"line_number":201,"context_line":"            help\u003d\u0027Local path of object to upload\u0027,"},{"line_number":202,"context_line":"        )"},{"line_number":203,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_d5598e8e","line":200,"in_reply_to":"baada198_833608b2","updated":"2014-08-06 20:48:23.000000000","message":"Done","commit_id":"d3d8c76b4ddfcf29b43b08d93ed3f934714f5f4c"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"6a2ece26be78b1d6118e618b3dbe22c887987258","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        return zip(*sorted(six.iteritems(data)))"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"class CreateObject(show.ShowOne):"},{"line_number":187,"context_line":"    \"\"\"Upload an object to a container\"\"\""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.CreateObject\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_03a1f1a7","line":186,"updated":"2014-08-07 17:18:59.000000000","message":"sort me","commit_id":"77423ee49ea75e1fed999a2cd5de9ff5e9726c11"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"442c6a226f1b98fbeab97c4a65f3cf72d1df8ef7","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from openstackclient.common import utils"},{"line_number":27,"context_line":"from openstackclient.object.v1.lib import object as lib_object"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class CreateObject(show.ShowOne):"},{"line_number":31,"context_line":"    \"\"\"Upload an object to a container\"\"\""},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_2510994e","line":29,"updated":"2014-08-08 13:33:42.000000000","message":"Also worth considering for object store stuff is adopting the :container/object syntax I think Amazon kind of uses that.  It would be handy for multiple object deletes and a create where you wanted to rename the object.  For example:\n\n    os object delete :container/file1 :container/file2\n    os object create file1.txt :container/object.txt","commit_id":"20fd8b463af5d6cc44f7817a75a43e0f6e228051"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5e3ae40a54809e10aa48d312d85879459548cbf8","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from openstackclient.common import utils"},{"line_number":27,"context_line":"from openstackclient.object.v1.lib import object as lib_object"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class CreateObject(show.ShowOne):"},{"line_number":31,"context_line":"    \"\"\"Upload an object to a container\"\"\""},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_de4c0aa0","line":29,"in_reply_to":"baada198_2510994e","updated":"2014-08-08 14:53:42.000000000","message":"i was thinking a --name (or --remote-name) could be used to rename the object.","commit_id":"20fd8b463af5d6cc44f7817a75a43e0f6e228051"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"442c6a226f1b98fbeab97c4a65f3cf72d1df8ef7","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.CreateObject\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def get_parser(self, prog_name):"},{"line_number":36,"context_line":"        parser \u003d super(CreateObject, self).get_parser(prog_name)"},{"line_number":37,"context_line":"        parser.add_argument("},{"line_number":38,"context_line":"            \u0027container\u0027,"},{"line_number":39,"context_line":"            metavar\u003d\u0027\u003ccontainer\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_32f53d84","line":36,"updated":"2014-08-08 13:33:42.000000000","message":"If this was done like copy where you specify source and desination, the user could specify multiple sources and one destination.\n\n    os object create file1 file2 file3 container\n\nThe verb copy would make more sense though.","commit_id":"20fd8b463af5d6cc44f7817a75a43e0f6e228051"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"442c6a226f1b98fbeab97c4a65f3cf72d1df8ef7","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            parsed_args.container,"},{"line_number":56,"context_line":"            parsed_args.object,"},{"line_number":57,"context_line":"        )"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        return zip(*sorted(six.iteritems(data)))"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_a54ae958","line":58,"updated":"2014-08-08 13:33:42.000000000","message":"Output weirdness, could be fixed later I suppose:\n\n    (.venv)terry@brat:~/hp/python-openstackclient$ os object create tech/folder tox.ini\n\n    WARNING: keystoneclient.httpclient Failed to retrieve management_url from token\n\n    +------------+------------------------------------+\n\n    | Field      | Value                              |\n\n    +------------+------------------------------------+\n\n    | account    | 96554402455058                     |\n\n    | container  | tech/folder                        |\n\n    | etag       | 01e21f7b2bf3175423692be135e1e33e   |\n\n    | object     | tox.ini                            |\n\n    | x-trans-id | tx610621a8841643e7b0ceb-0053e4d0a7 |\n\n    +------------+------------------------------------+\n\n    (.venv)terry@brat:~/hp/python-openstackclient$","commit_id":"20fd8b463af5d6cc44f7817a75a43e0f6e228051"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"21c0967d7fcfd2ea32d1dba5a926915efc710a55","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            parsed_args.container,"},{"line_number":56,"context_line":"            parsed_args.object,"},{"line_number":57,"context_line":"        )"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        return zip(*sorted(six.iteritems(data)))"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_80aa2c18","line":58,"in_reply_to":"baada198_5a10034f","updated":"2014-08-08 16:37:42.000000000","message":"I dunno what was happening there","commit_id":"20fd8b463af5d6cc44f7817a75a43e0f6e228051"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5e3ae40a54809e10aa48d312d85879459548cbf8","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            parsed_args.container,"},{"line_number":56,"context_line":"            parsed_args.object,"},{"line_number":57,"context_line":"        )"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        return zip(*sorted(six.iteritems(data)))"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_beebd679","line":58,"in_reply_to":"baada198_a54ae958","updated":"2014-08-08 14:53:42.000000000","message":"what weirdness? the warning? i don\u0027t get a warning:\n\n  (.venv)steve@ubuntuvm:/opt/stack/python-openstackclient$  openstack object create mycon setup.cfg \n  +------------+---------------------------------------+\n  | Field      | Value                                 |\n  +------------+---------------------------------------+\n  | account    | AUTH_049b08f5429d48c98e034c6a271a76b5 |\n  | container  | mycon                                 |\n  | etag       | ec530b28a853ccbfd1b7b08b6d1ec600      |\n  | object     | setup.cfg                             |\n  | x-trans-id | tx7e611044ac5c401ba52db-0053e4e398    |\n  +------------+---------------------------------------+","commit_id":"20fd8b463af5d6cc44f7817a75a43e0f6e228051"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"2fb488d0bcaa41a23c4a4579467a6b8ed9db8ce0","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            parsed_args.container,"},{"line_number":56,"context_line":"            parsed_args.object,"},{"line_number":57,"context_line":"        )"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        return zip(*sorted(six.iteritems(data)))"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_5a10034f","line":58,"in_reply_to":"baada198_beebd679","updated":"2014-08-08 15:36:38.000000000","message":"only that the output lists the container as tech/folder.  The container should be tech and the object is folder/tox.ini.","commit_id":"20fd8b463af5d6cc44f7817a75a43e0f6e228051"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"49df731cf8e404d9b1ab3e274667e936d95e9c46","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            \u0027object\u0027,"},{"line_number":44,"context_line":"            metavar\u003d\u0027\u003cobject-name\u003e\u0027,"},{"line_number":45,"context_line":"            help\u003d\u0027Local path of object to upload\u0027,"},{"line_number":46,"context_line":"        )"},{"line_number":47,"context_line":"        return parser"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_abd45ebb","line":46,"updated":"2014-08-09 23:17:36.000000000","message":"I\u0027m okay with sending this through as is, but what was everyone\u0027s take on making this more like a copy command where you specify source and destination?  It allows for file renaming and multiple sources to a single destination in one command line:\n\n    os object create file1 file2 file3 file4 container/pseudo/folder/\n\nThe other idea I had was around using the AWS style object naming convention where containers start with a colon.  This is handy for deletes and container to container copies which you use special metadata for as I recall:\n\n    os object create :container/file1 :backup\n\nIf you swich the verb to copy, it makes more sense for download as well:\n\n    os object copy :container/file1 ~\n\nMulti object deletes:\n\n    os object delete :container/file1 :backup/file2","commit_id":"8af26a51c3a9ad5808d7c69a07d652121dab27c1"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"4c4f24840fb523ec2e7954ad4b606e950b25f552","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            \u0027object\u0027,"},{"line_number":44,"context_line":"            metavar\u003d\u0027\u003cobject-name\u003e\u0027,"},{"line_number":45,"context_line":"            help\u003d\u0027Local path of object to upload\u0027,"},{"line_number":46,"context_line":"        )"},{"line_number":47,"context_line":"        return parser"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_2bbe8e64","line":46,"in_reply_to":"baada198_abd45ebb","updated":"2014-08-09 23:55:39.000000000","message":"I think it\u0027s definitely worth having a convo on IRC with the 3 of us. \n\nMy initial gut reaction is that the colons are really handy, but we don\u0027t use them any where else, so it\u0027s a bit weird\n\nI think Dean was looking toward save instead of copy, since we already use save for glance.","commit_id":"8af26a51c3a9ad5808d7c69a07d652121dab27c1"}],"setup.cfg":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"6f46c7acaa2da2115b190b2696909b0ecf29f382","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    object_delete \u003d openstackclient.object.v1.object:DeleteObject"},{"line_number":276,"context_line":"    object_list \u003d openstackclient.object.v1.object:ListObject"},{"line_number":277,"context_line":"    object_show \u003d openstackclient.object.v1.object:ShowObject"},{"line_number":278,"context_line":"    object_upload \u003d openstackclient.object.v1.object:UploadObject"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"openstack.volume.v1 \u003d"},{"line_number":281,"context_line":"    backup_create \u003d openstackclient.volume.v1.backup:CreateBackup"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"baada198_caf96fc6","line":278,"updated":"2014-08-06 17:51:18.000000000","message":"object_create","commit_id":"d3d8c76b4ddfcf29b43b08d93ed3f934714f5f4c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1fdfd493ca84b7c600365f4e41e9716e1511d819","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    object_delete \u003d openstackclient.object.v1.object:DeleteObject"},{"line_number":276,"context_line":"    object_list \u003d openstackclient.object.v1.object:ListObject"},{"line_number":277,"context_line":"    object_show \u003d openstackclient.object.v1.object:ShowObject"},{"line_number":278,"context_line":"    object_upload \u003d openstackclient.object.v1.object:UploadObject"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"openstack.volume.v1 \u003d"},{"line_number":281,"context_line":"    backup_create \u003d openstackclient.volume.v1.backup:CreateBackup"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"baada198_75c36206","line":278,"in_reply_to":"baada198_caf96fc6","updated":"2014-08-06 20:48:23.000000000","message":"Done","commit_id":"d3d8c76b4ddfcf29b43b08d93ed3f934714f5f4c"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"6a2ece26be78b1d6118e618b3dbe22c887987258","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    object_delete \u003d openstackclient.object.v1.object:DeleteObject"},{"line_number":276,"context_line":"    object_list \u003d openstackclient.object.v1.object:ListObject"},{"line_number":277,"context_line":"    object_show \u003d openstackclient.object.v1.object:ShowObject"},{"line_number":278,"context_line":"    object_create \u003d openstackclient.object.v1.object:CreateObject"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"openstack.volume.v1 \u003d"},{"line_number":281,"context_line":"    backup_create \u003d openstackclient.volume.v1.backup:CreateBackup"}],"source_content_type":"text/x-ttcn-cfg","patch_set":3,"id":"baada198_6378ed2c","line":278,"updated":"2014-08-07 17:18:59.000000000","message":"sort me","commit_id":"77423ee49ea75e1fed999a2cd5de9ff5e9726c11"}]}
