)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1955,"name":"Alan Pevec","email":"alan.pevec@redhat.com","username":"apevec"},"change_message_id":"538183893f24a87100376c554eee482124c5c23b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"image_size_cap should be checked and enforced on upload"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Fixes bug 1315321"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I45bfb360703617bc394e9e27fe17adf43b09c0e1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1ae5cdf2_98341ffd","line":11,"updated":"2014-06-05 10:52:57.000000000","message":"Closes-Bug: 1315321\n\nhttps://wiki.openstack.org/wiki/GerritWorkflow#Committing_Changes","commit_id":"e6999a0b28504eb3986e1ec64d69a30a8d272180"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"6b6df313f5e9efb094f7dae286fcbdf3893498d9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Manuel Desbonnet \u003cmanuel.desbonnet@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-08-12 09:03:18 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enforce image_size_cap on upload"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"image_size_cap should be checked and enforced on upload"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"baada198_d65bb552","line":7,"updated":"2014-08-12 09:02:09.000000000","message":"Is this just for v2? If so, worth mentioning.","commit_id":"927d4036d26ffe3a673dd4f669508cc349e5db93"},{"author":{"_account_id":10997,"name":"Manuel Desbonnet","inactive":true},"change_message_id":"c651814e9b9a2737bd9b87a6b0fdbe2641e735cf","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Manuel Desbonnet \u003cmanuel.desbonnet@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-08-12 09:03:18 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enforce image_size_cap on upload"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"image_size_cap should be checked and enforced on upload"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1abeadc6_fa6eab95","line":7,"in_reply_to":"baada198_d65bb552","updated":"2014-08-18 10:58:09.000000000","message":"Done","commit_id":"927d4036d26ffe3a673dd4f669508cc349e5db93"}],"glance/api/v2/image_data.py":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"77f56e68e44d9c95f294dfd03551ff256b6854f4","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            raise webob.exc.HTTPUnsupportedMediaType(explanation\u003de.msg)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        image_size \u003d request.content_length or None"},{"line_number":176,"context_line":"        if image_size \u003e CONF.image_size_cap:"},{"line_number":177,"context_line":"            raise webob.exc.HTTPRequestEntityTooLarge()"},{"line_number":178,"context_line":"        return {\u0027size\u0027: image_size, \u0027data\u0027: request.body_file}"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_00b67fd9","line":176,"updated":"2014-05-28 01:58:31.000000000","message":"Do we need to do this check for direct-location-adding case as well which could be accepted by patch api?\n\nhttps://github.com/openstack/glance/blob/master/glance/api/v2/images.py#L244\n\nhttps://github.com/openstack/glance/blob/master/glance/store/__init__.py#L490\n\nSo if we do the check at here instead of domain, we need to handle all accessible interfaces/points. @Arnaud, it seems we have more then one doors here :)","commit_id":"2aa4d0c7c433ddcf1777cbc5d9ab863626c9ec57"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"4abb1360e8b50f46e00726cf4786f8c0db098688","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            raise webob.exc.HTTPUnsupportedMediaType(explanation\u003de.msg)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        image_size \u003d request.content_length or None"},{"line_number":176,"context_line":"        if image_size \u003e CONF.image_size_cap:"},{"line_number":177,"context_line":"            raise webob.exc.HTTPRequestEntityTooLarge()"},{"line_number":178,"context_line":"        return {\u0027size\u0027: image_size, \u0027data\u0027: request.body_file}"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_14b7a887","line":176,"updated":"2014-05-27 21:41:41.000000000","message":"I don\u0027t feel too strongly about this but RequestDeserializer may not be the most appropriate place to do this check. How do you feel about moving this to the \u0027upload\u0027 method of ImageDataController?","commit_id":"2aa4d0c7c433ddcf1777cbc5d9ab863626c9ec57"},{"author":{"_account_id":7817,"name":"Thomas Leaman","email":"thomas.leaman@hp.com","username":"bugsduggan"},"change_message_id":"f5e3987f0b1167458d3ed5e4e850b468b3261304","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            raise webob.exc.HTTPUnsupportedMediaType(explanation\u003de.msg)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        image_size \u003d request.content_length or None"},{"line_number":176,"context_line":"        if image_size \u003e CONF.image_size_cap:"},{"line_number":177,"context_line":"            raise webob.exc.HTTPRequestEntityTooLarge()"},{"line_number":178,"context_line":"        return {\u0027size\u0027: image_size, \u0027data\u0027: request.body_file}"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_7c20c049","line":176,"in_reply_to":"3ae8d1ca_00b67fd9","updated":"2014-05-28 10:39:04.000000000","message":"I am wondering if maybe putting this check back into the database layer is maybe the better option here: Moving it up to the API layer means we need to fix this is more places (and it\u0027s possible we\u0027ll miss some) whereas the database layer would catch all of these.","commit_id":"2aa4d0c7c433ddcf1777cbc5d9ab863626c9ec57"},{"author":{"_account_id":8759,"name":"Arnaud Legendre","email":"arnaudleg@gmail.com","username":"arnaud"},"change_message_id":"2f7977e365f70997dafaa99f11d47ebf2d37bab2","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            raise webob.exc.HTTPUnsupportedMediaType(explanation\u003de.msg)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        image_size \u003d request.content_length or None"},{"line_number":176,"context_line":"        if image_size \u003e CONF.image_size_cap:"},{"line_number":177,"context_line":"            raise webob.exc.HTTPRequestEntityTooLarge()"},{"line_number":178,"context_line":"        return {\u0027size\u0027: image_size, \u0027data\u0027: request.body_file}"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_a9a03d44","line":176,"in_reply_to":"3ae8d1ca_00b67fd9","updated":"2014-05-28 17:10:25.000000000","message":"good point Zhi :)","commit_id":"2aa4d0c7c433ddcf1777cbc5d9ab863626c9ec57"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"4aec7f62ea98446a744cc3daff5f5600fc355292","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            raise webob.exc.HTTPUnsupportedMediaType(explanation\u003de.msg)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        image_size \u003d request.content_length or None"},{"line_number":176,"context_line":"        if image_size \u003e CONF.image_size_cap:"},{"line_number":177,"context_line":"            raise webob.exc.HTTPRequestEntityTooLarge()"},{"line_number":178,"context_line":"        return {\u0027size\u0027: image_size, \u0027data\u0027: request.body_file}"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_694e3571","line":176,"in_reply_to":"3ae8d1ca_7c20c049","updated":"2014-05-28 16:45:41.000000000","message":"I\u0027m not sure this check here will catch the case where the image size is not known beforehand, eg when streaming from stdin.","commit_id":"2aa4d0c7c433ddcf1777cbc5d9ab863626c9ec57"}],"glance/db/__init__.py":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"2ecb07c5b0a6b1f1b4a55042adcfc9797719c1ec","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from glance.openstack.common import importutils"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"CONF \u003d cfg.CONF"},{"line_number":30,"context_line":"CONF.import_opt(\u0027metadata_encryption_key\u0027, \u0027glance.common.config\u0027)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_b057cb25","line":29,"updated":"2014-05-23 01:01:46.000000000","message":"CONF.import_opt(\u0027image_size_cap\u0027, \u0027glance.common.config\u0027)","commit_id":"e6b2d475f19036644c6c48b4e1eb633778654703"},{"author":{"_account_id":8759,"name":"Arnaud Legendre","email":"arnaudleg@gmail.com","username":"arnaud"},"change_message_id":"48d00333a57b847aa0ccb0ab69d12d2cae2de75c","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def add(self, image):"},{"line_number":152,"context_line":"        image_values \u003d self._format_image_to_db(image)"},{"line_number":153,"context_line":"        if image_values[\u0027size\u0027] \u003e CONF.image_size_cap:"},{"line_number":154,"context_line":"            raise exception.ImageSizeLimitExceeded"},{"line_number":155,"context_line":"        # the updated_at value is not set in the _format_image_to_db"},{"line_number":156,"context_line":"        # function since it is specific to image create"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_f914c5ea","line":153,"updated":"2014-05-23 01:05:34.000000000","message":"What do you think of having the check at the api level?\nhttps://github.com/openstack/glance/blob/master/glance/api/v2/image_data.py#L165","commit_id":"e6b2d475f19036644c6c48b4e1eb633778654703"},{"author":{"_account_id":8759,"name":"Arnaud Legendre","email":"arnaudleg@gmail.com","username":"arnaud"},"change_message_id":"fa9f5e07c5429324d46345432902b94ce3f2b11a","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def add(self, image):"},{"line_number":152,"context_line":"        image_values \u003d self._format_image_to_db(image)"},{"line_number":153,"context_line":"        if image_values[\u0027size\u0027] \u003e CONF.image_size_cap:"},{"line_number":154,"context_line":"            raise exception.ImageSizeLimitExceeded"},{"line_number":155,"context_line":"        # the updated_at value is not set in the _format_image_to_db"},{"line_number":156,"context_line":"        # function since it is specific to image create"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_30362953","line":153,"in_reply_to":"7adec928_002d6646","updated":"2014-05-23 17:11:02.000000000","message":"I think you do not want to access the DB layer if you can check the problem at the API level. usually \"sanity checks\" are done as up as possible. It\u0027s like I check if I know when you are in my room instead of checking that when you are behind the door :)","commit_id":"e6b2d475f19036644c6c48b4e1eb633778654703"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"5f40516202fc00aa45be8afa354d12da0a9ca0e4","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def add(self, image):"},{"line_number":152,"context_line":"        image_values \u003d self._format_image_to_db(image)"},{"line_number":153,"context_line":"        if image_values[\u0027size\u0027] \u003e CONF.image_size_cap:"},{"line_number":154,"context_line":"            raise exception.ImageSizeLimitExceeded"},{"line_number":155,"context_line":"        # the updated_at value is not set in the _format_image_to_db"},{"line_number":156,"context_line":"        # function since it is specific to image create"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_002d6646","line":153,"in_reply_to":"7adec928_3db1afe1","updated":"2014-05-23 10:27:34.000000000","message":"Frankly, I personally think here could covers more paths/cases as the root point, and better than upper/api layer.","commit_id":"e6b2d475f19036644c6c48b4e1eb633778654703"},{"author":{"_account_id":7817,"name":"Thomas Leaman","email":"thomas.leaman@hp.com","username":"bugsduggan"},"change_message_id":"4e5d41281e41e1ac6a64e3159a3aef4e3c93bed8","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def add(self, image):"},{"line_number":152,"context_line":"        image_values \u003d self._format_image_to_db(image)"},{"line_number":153,"context_line":"        if image_values[\u0027size\u0027] \u003e CONF.image_size_cap:"},{"line_number":154,"context_line":"            raise exception.ImageSizeLimitExceeded"},{"line_number":155,"context_line":"        # the updated_at value is not set in the _format_image_to_db"},{"line_number":156,"context_line":"        # function since it is specific to image create"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_3db1afe1","line":153,"in_reply_to":"7adec928_f914c5ea","updated":"2014-05-23 10:00:34.000000000","message":"I\u0027m still trying to understand how the v2 code fits together. I agree that\u0027s a much more sensible place to put this!","commit_id":"e6b2d475f19036644c6c48b4e1eb633778654703"}],"glance/tests/functional/__init__.py":[{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"6b6df313f5e9efb094f7dae286fcbdf3893498d9","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        self.pid_file \u003d pid_file or os.path.join(self.test_dir, \"api.pid\")"},{"line_number":280,"context_line":"        self.scrubber_datadir \u003d os.path.join(self.test_dir, \"scrubber\")"},{"line_number":281,"context_line":"        self.log_file \u003d os.path.join(self.test_dir, \"api.log\")"},{"line_number":282,"context_line":"        self.image_size_cap \u003d 1099511627776"},{"line_number":283,"context_line":"        self.s3_store_host \u003d \"s3.amazonaws.com\""},{"line_number":284,"context_line":"        self.s3_store_access_key \u003d \"\""},{"line_number":285,"context_line":"        self.s3_store_secret_key \u003d \"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_56488589","line":282,"updated":"2014-08-12 09:02:09.000000000","message":"What is the effect of this change? ie why do we need to explicitly set this to the default value?","commit_id":"927d4036d26ffe3a673dd4f669508cc349e5db93"},{"author":{"_account_id":10997,"name":"Manuel Desbonnet","inactive":true},"change_message_id":"c651814e9b9a2737bd9b87a6b0fdbe2641e735cf","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        self.pid_file \u003d pid_file or os.path.join(self.test_dir, \"api.pid\")"},{"line_number":280,"context_line":"        self.scrubber_datadir \u003d os.path.join(self.test_dir, \"scrubber\")"},{"line_number":281,"context_line":"        self.log_file \u003d os.path.join(self.test_dir, \"api.log\")"},{"line_number":282,"context_line":"        self.image_size_cap \u003d 1099511627776"},{"line_number":283,"context_line":"        self.s3_store_host \u003d \"s3.amazonaws.com\""},{"line_number":284,"context_line":"        self.s3_store_access_key \u003d \"\""},{"line_number":285,"context_line":"        self.s3_store_secret_key \u003d \"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_da71ef78","line":282,"in_reply_to":"baada198_56488589","updated":"2014-08-18 10:58:09.000000000","message":"It needs to be set to accommodate the largest valued used by the tests.\nSetting to the default is the most straightforward.","commit_id":"927d4036d26ffe3a673dd4f669508cc349e5db93"}],"glance/tests/functional/v2/test_images.py":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"2ecb07c5b0a6b1f1b4a55042adcfc9797719c1ec","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        path \u003d self._url(\u0027/v2/images/%s/file\u0027 % image_id)"},{"line_number":470,"context_line":"        headers \u003d self._headers({\u0027Content-Type\u0027: \u0027application/octet-stream\u0027})"},{"line_number":471,"context_line":"        data \u003d [\u0027Z\u0027 for i in range(self.api_server.image_size_cap + 1)]"},{"line_number":472,"context_line":"        data \u003d \u0027\u0027.join(data)"},{"line_number":473,"context_line":"        response \u003d requests.put(path, headers\u003dheaders, data\u003ddata)"},{"line_number":474,"context_line":"        self.assertEqual(413, response.status_code)"},{"line_number":475,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_2b098c2c","line":472,"updated":"2014-05-23 01:01:46.000000000","message":"data \u003d \u0027Z\u0027 * (self.api_server.image_size_cap + 1)","commit_id":"e6b2d475f19036644c6c48b4e1eb633778654703"},{"author":{"_account_id":7817,"name":"Thomas Leaman","email":"thomas.leaman@hp.com","username":"bugsduggan"},"change_message_id":"4e5d41281e41e1ac6a64e3159a3aef4e3c93bed8","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        path \u003d self._url(\u0027/v2/images/%s/file\u0027 % image_id)"},{"line_number":470,"context_line":"        headers \u003d self._headers({\u0027Content-Type\u0027: \u0027application/octet-stream\u0027})"},{"line_number":471,"context_line":"        data \u003d [\u0027Z\u0027 for i in range(self.api_server.image_size_cap + 1)]"},{"line_number":472,"context_line":"        data \u003d \u0027\u0027.join(data)"},{"line_number":473,"context_line":"        response \u003d requests.put(path, headers\u003dheaders, data\u003ddata)"},{"line_number":474,"context_line":"        self.assertEqual(413, response.status_code)"},{"line_number":475,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_dd9a8b6d","line":472,"in_reply_to":"7adec928_2b098c2c","updated":"2014-05-23 10:00:34.000000000","message":"I knew there was a better way to do this, thanks!","commit_id":"e6b2d475f19036644c6c48b4e1eb633778654703"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"77f56e68e44d9c95f294dfd03551ff256b6854f4","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        path \u003d self._url(\u0027/v2/images/%s/file\u0027 % image_id)"},{"line_number":470,"context_line":"        headers \u003d self._headers({\u0027Content-Type\u0027: \u0027application/octet-stream\u0027})"},{"line_number":471,"context_line":"        data \u003d \u0027Z\u0027 * (self.api_server.image_size_cap + 1)"},{"line_number":472,"context_line":"        data \u003d \u0027\u0027.join(data)"},{"line_number":473,"context_line":"        response \u003d requests.put(path, headers\u003dheaders, data\u003ddata)"},{"line_number":474,"context_line":"        self.assertEqual(413, response.status_code)"},{"line_number":475,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_00d03f4f","line":472,"updated":"2014-05-28 01:58:31.000000000","message":"we don\u0027t need this line actually.","commit_id":"2aa4d0c7c433ddcf1777cbc5d9ab863626c9ec57"},{"author":{"_account_id":7817,"name":"Thomas Leaman","email":"thomas.leaman@hp.com","username":"bugsduggan"},"change_message_id":"f5e3987f0b1167458d3ed5e4e850b468b3261304","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        path \u003d self._url(\u0027/v2/images/%s/file\u0027 % image_id)"},{"line_number":470,"context_line":"        headers \u003d self._headers({\u0027Content-Type\u0027: \u0027application/octet-stream\u0027})"},{"line_number":471,"context_line":"        data \u003d \u0027Z\u0027 * (self.api_server.image_size_cap + 1)"},{"line_number":472,"context_line":"        data \u003d \u0027\u0027.join(data)"},{"line_number":473,"context_line":"        response \u003d requests.put(path, headers\u003dheaders, data\u003ddata)"},{"line_number":474,"context_line":"        self.assertEqual(413, response.status_code)"},{"line_number":475,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_bc1a4815","line":472,"in_reply_to":"3ae8d1ca_00d03f4f","updated":"2014-05-28 10:39:04.000000000","message":"You\u0027re absolutely right, well spotted!","commit_id":"2aa4d0c7c433ddcf1777cbc5d9ab863626c9ec57"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"6b6df313f5e9efb094f7dae286fcbdf3893498d9","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.cleanup()"},{"line_number":40,"context_line":"        self.api_server.deployment_flavor \u003d \u0027noauth\u0027"},{"line_number":41,"context_line":"        self.api_server.data_api \u003d \u0027glance.db.sqlalchemy.api\u0027"},{"line_number":42,"context_line":"        self.api_server.image_size_cap \u003d 128"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def _url(self, path):"},{"line_number":45,"context_line":"        return \u0027http://127.0.0.1:%d%s\u0027 % (self.api_port, path)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_36fb1117","line":42,"updated":"2014-08-12 09:02:09.000000000","message":"I wonder should we move this limit down to the start of the test_image_size_cap test?  Ie is there a reason to set it for all tests?","commit_id":"927d4036d26ffe3a673dd4f669508cc349e5db93"},{"author":{"_account_id":10997,"name":"Manuel Desbonnet","inactive":true},"change_message_id":"c651814e9b9a2737bd9b87a6b0fdbe2641e735cf","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.cleanup()"},{"line_number":40,"context_line":"        self.api_server.deployment_flavor \u003d \u0027noauth\u0027"},{"line_number":41,"context_line":"        self.api_server.data_api \u003d \u0027glance.db.sqlalchemy.api\u0027"},{"line_number":42,"context_line":"        self.api_server.image_size_cap \u003d 128"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def _url(self, path):"},{"line_number":45,"context_line":"        return \u0027http://127.0.0.1:%d%s\u0027 % (self.api_port, path)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_5a05dfc0","line":42,"in_reply_to":"baada198_36fb1117","updated":"2014-08-18 10:58:09.000000000","message":"Done","commit_id":"927d4036d26ffe3a673dd4f669508cc349e5db93"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"22a31400cf92de724ddb44dd8b99dcc916a80e14","unresolved":false,"context_lines":[{"line_number":559,"context_line":"        path \u003d self._url(\u0027/v2/images/{0}\u0027.format(image_id))"},{"line_number":560,"context_line":"        headers \u003d self._headers({\u0027content-type\u0027: \u0027application/json\u0027})"},{"line_number":561,"context_line":"        response \u003d requests.get(path, headers\u003dheaders)"},{"line_number":562,"context_line":"        image_checksum \u003d jsonutils.loads(response.text).get(\u0027checksum\u0027)"},{"line_number":563,"context_line":"        self.assertNotEqual(image_checksum, \u002776522d28cb4418f12704dfa7acd6e7ee\u0027)"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"    def test_permissions(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1abeadc6_8418fd85","line":562,"updated":"2014-08-18 12:31:52.000000000","message":"I know I suggested using checksum here, but size might be simpler (if it works).","commit_id":"92ab00fca6926eaf3f7f92a955a5e07140063718"},{"author":{"_account_id":10997,"name":"Manuel Desbonnet","inactive":true},"change_message_id":"c2988660ce2052d0cffbc8de79cc4670c5a8f9cc","unresolved":false,"context_lines":[{"line_number":559,"context_line":"        path \u003d self._url(\u0027/v2/images/{0}\u0027.format(image_id))"},{"line_number":560,"context_line":"        headers \u003d self._headers({\u0027content-type\u0027: \u0027application/json\u0027})"},{"line_number":561,"context_line":"        response \u003d requests.get(path, headers\u003dheaders)"},{"line_number":562,"context_line":"        image_checksum \u003d jsonutils.loads(response.text).get(\u0027checksum\u0027)"},{"line_number":563,"context_line":"        self.assertNotEqual(image_checksum, \u002776522d28cb4418f12704dfa7acd6e7ee\u0027)"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"    def test_permissions(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1abeadc6_71e4740d","line":562,"in_reply_to":"1abeadc6_8418fd85","updated":"2014-08-18 15:57:48.000000000","message":"Size doesn\u0027t work, unfortunately - it\u0027s not returned in the GET on the image.","commit_id":"92ab00fca6926eaf3f7f92a955a5e07140063718"}]}
