)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"7360ce95884f9129b33ba8557f26a19f6b8b17a6","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Artifacts client methods for work with BLOB"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit adds standard lifecycle methods for work with BLOB and related"},{"line_number":10,"context_line":"tests to the client."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Currently implemented methods: \u0027delete_blob\u0027, \u0027download_blob\u0027, \u0027upload_blob\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba3cc151_c90f4987","line":9,"updated":"2015-07-03 18:38:08.000000000","message":"Remove \u0027standard lifecycle\u0027 please. These methods are not related to it.","commit_id":"18431cb27117ff9e0760e6edd0287f5b9e922593"}],"glanceclient/tests/unit/v3/test_artifacts.py":[{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"5cacacbc5adb5ee0e88957ab988fc9a8c1956b4c","unresolved":false,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        \u0027GET\u0027: ("},{"line_number":317,"context_line":"            {},"},{"line_number":318,"context_line":"            \u0027\u0027,"},{"line_number":319,"context_line":"        ),"},{"line_number":320,"context_line":"    },"},{"line_number":321,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_0a0bf1d6","line":318,"updated":"2015-07-03 11:59:49.000000000","message":"We need to return some body here to check that we accept it right. For example: \u0027Princess Bubblegum rocks!!!\u0027","commit_id":"4c816f908c47626149331517046fb5626e883534"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"5cacacbc5adb5ee0e88957ab988fc9a8c1956b4c","unresolved":false,"context_lines":[{"line_number":333,"context_line":""},{"line_number":334,"context_line":"        \u0027GET\u0027: ("},{"line_number":335,"context_line":"            {},"},{"line_number":336,"context_line":"            \u0027\u0027,"},{"line_number":337,"context_line":"        ),"},{"line_number":338,"context_line":"    },"},{"line_number":339,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_8a1e210a","line":336,"updated":"2015-07-03 11:59:49.000000000","message":"Ditto: \u0027What time is it?\u0027","commit_id":"4c816f908c47626149331517046fb5626e883534"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"5cacacbc5adb5ee0e88957ab988fc9a8c1956b4c","unresolved":false,"context_lines":[{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        params \u003d {\u0027type_name\u0027: \u0027adventure_time\u0027, \u0027type_version\u0027: \u00271.0.2\u0027,"},{"line_number":560,"context_line":"                  \u0027blob_property\u0027: \u0027image_file\u0027, \u0027artifact_id\u0027: artifact_id}"},{"line_number":561,"context_line":"        self.controller.download_blob(**params)"},{"line_number":562,"context_line":"        expect \u003d [(\u0027GET\u0027, \u0027/v3/artifacts/adventure_time/v1.0.2/\u0027"},{"line_number":563,"context_line":"                   \u0027%s/image_file\u0027 % artifact_id, {}, None)]"},{"line_number":564,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_6a987d78","line":561,"updated":"2015-07-03 11:59:49.000000000","message":"body \u003d \u0027\u0027.join([b for b in self.controller.download_blob(**params)])","commit_id":"4c816f908c47626149331517046fb5626e883534"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"5cacacbc5adb5ee0e88957ab988fc9a8c1956b4c","unresolved":false,"context_lines":[{"line_number":562,"context_line":"        expect \u003d [(\u0027GET\u0027, \u0027/v3/artifacts/adventure_time/v1.0.2/\u0027"},{"line_number":563,"context_line":"                   \u0027%s/image_file\u0027 % artifact_id, {}, None)]"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"        self.assertEqual(expect, self.api.calls)"},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"    def test_data_upload_blob_with_position(self):"},{"line_number":568,"context_line":"        image_data \u003d \u0027Adventure Time with Finn \u0026 Jake\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_aa80c5f7","line":565,"updated":"2015-07-03 11:59:49.000000000","message":"self.assertEqual(\u0027Princess Bubblegum rocks!!!\u0027, body)","commit_id":"4c816f908c47626149331517046fb5626e883534"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"5cacacbc5adb5ee0e88957ab988fc9a8c1956b4c","unresolved":false,"context_lines":[{"line_number":598,"context_line":"        params \u003d {\u0027type_name\u0027: \u0027adventure_time\u0027, \u0027type_version\u0027: \u00271.0.2\u0027,"},{"line_number":599,"context_line":"                  \u0027blob_property\u0027: \u0027screenshots\u0027, \u0027artifact_id\u0027: artifact_id,"},{"line_number":600,"context_line":"                  \u0027position\u0027: 1}"},{"line_number":601,"context_line":"        self.controller.download_blob(**params)"},{"line_number":602,"context_line":"        expect \u003d [(\u0027GET\u0027, \u0027/v3/artifacts/adventure_time/v1.0.2/\u0027"},{"line_number":603,"context_line":"                   \u0027%s/screenshots/1\u0027 % artifact_id, {}, None)]"},{"line_number":604,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_4a701940","line":601,"updated":"2015-07-03 11:59:49.000000000","message":"Ditto:\nbody \u003d \u0027\u0027.join([b for b in self.controller.download_blob(**params)])","commit_id":"4c816f908c47626149331517046fb5626e883534"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"5cacacbc5adb5ee0e88957ab988fc9a8c1956b4c","unresolved":false,"context_lines":[{"line_number":602,"context_line":"        expect \u003d [(\u0027GET\u0027, \u0027/v3/artifacts/adventure_time/v1.0.2/\u0027"},{"line_number":603,"context_line":"                   \u0027%s/screenshots/1\u0027 % artifact_id, {}, None)]"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"        self.assertEqual(expect, self.api.calls)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_8aa14196","line":605,"updated":"2015-07-03 11:59:49.000000000","message":"self.assertEqual(\u0027What time is it?\u0027, body)","commit_id":"4c816f908c47626149331517046fb5626e883534"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"3398e0f4b81d6e5b914513a1f3a1b59bf3b03f47","unresolved":false,"context_lines":[{"line_number":333,"context_line":""},{"line_number":334,"context_line":"        \u0027GET\u0027: ("},{"line_number":335,"context_line":"            {},"},{"line_number":336,"context_line":"            \u0027Ditto: What time is it?\u0027,"},{"line_number":337,"context_line":"        ),"},{"line_number":338,"context_line":"    },"},{"line_number":339,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_2b1cb768","line":336,"updated":"2015-07-03 12:34:58.000000000","message":"Lol :D \u0027Ditto\u0027 is not needed here. It means \u0027the same\u0027.","commit_id":"7596469f46693cb42059c396110541d0ae77faf4"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"3398e0f4b81d6e5b914513a1f3a1b59bf3b03f47","unresolved":false,"context_lines":[{"line_number":606,"context_line":"                   \u0027%s/screenshots/1\u0027 % artifact_id, {}, None)]"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"        self.assertEqual(expect, self.api.calls)"},{"line_number":609,"context_line":"        self.assertEqual(\u0027Ditto: What time is it?\u0027, body)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_0b2c5397","line":609,"updated":"2015-07-03 12:34:58.000000000","message":"Ditto :)","commit_id":"7596469f46693cb42059c396110541d0ae77faf4"}],"glanceclient/v3/artifacts.py":[{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"7fe4f7605dc8fefa05684067ff71395a1f77555f","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        \"\"\""},{"line_number":172,"context_line":"        type_name, type_version \u003d self._check_type_params(type_name,"},{"line_number":173,"context_line":"                                                          type_version)"},{"line_number":174,"context_line":"        url \u003d \u0027/v3/artifacts/%s/v%s/%s/%s\u0027 % (type_name, type_version,"},{"line_number":175,"context_line":"                                              artifact_id, blob_property)"},{"line_number":176,"context_line":"        if position:"},{"line_number":177,"context_line":"            url +\u003d \u0027/%s\u0027 % position"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_3bb011dd","line":174,"updated":"2015-08-25 10:14:59.000000000","message":"this should be ../download","commit_id":"3ead7f17f49cd52798b1d922cdc2e612af1cad5f"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"253ced2e13e955ace7f0a815c73777e51083232f","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        \"\"\""},{"line_number":172,"context_line":"        type_name, type_version \u003d self._check_type_params(type_name,"},{"line_number":173,"context_line":"                                                          type_version)"},{"line_number":174,"context_line":"        url \u003d \u0027/v3/artifacts/%s/v%s/%s/%s\u0027 % (type_name, type_version,"},{"line_number":175,"context_line":"                                              artifact_id, blob_property)"},{"line_number":176,"context_line":"        if position:"},{"line_number":177,"context_line":"            url +\u003d \u0027/%s\u0027 % position"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_bb774101","line":174,"in_reply_to":"fa1b9901_3bb011dd","updated":"2015-08-25 10:18:26.000000000","message":"Or, more precisely, the url has to end with  \u0027/download\u0027, but make sure that this happens after the position appending below.","commit_id":"3ead7f17f49cd52798b1d922cdc2e612af1cad5f"}]}
