)]}'
{"doc/source/glance.rst":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"64d162dbe78a45c1394d0325910d1e96304f86be","unresolved":false,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"To reference an EC2 tarball VM image available at an external URL::"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"  $\u003e glance add name\u003d\"uubntu-10.04-amd64\" is_public\u003dtrue \\"},{"line_number":266,"context_line":"     container_format\u003dovf disk_format\u003draw \\"},{"line_number":267,"context_line":"     location\u003d\"http://uec-images.ubuntu.com/lucid/current/\\"},{"line_number":268,"context_line":"     lucid-server-uec-amd64.tar.gz\""}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAEn%2F%2F3ss%3D","line":265,"updated":"2012-02-22 16:56:34.000000000","message":"Mind fixing up the typo above? s/uubntu/ubuntu","commit_id":"56e8fbeb553e0ea189da5e8f95af43bd42c42fd7"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"3a3f810b91e899d8a28ca1ea36667f974f729ed9","unresolved":false,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"To reference an EC2 tarball VM image available at an external URL::"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"  $\u003e glance add name\u003d\"uubntu-10.04-amd64\" is_public\u003dtrue \\"},{"line_number":266,"context_line":"     container_format\u003dovf disk_format\u003draw \\"},{"line_number":267,"context_line":"     location\u003d\"http://uec-images.ubuntu.com/lucid/current/\\"},{"line_number":268,"context_line":"     lucid-server-uec-amd64.tar.gz\""}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAEn%2F%2F3qo%3D","line":265,"in_reply_to":"AAAAEn%2F%2F3ss%3D","updated":"2012-02-22 18:07:18.000000000","message":"Fixed.","commit_id":"56e8fbeb553e0ea189da5e8f95af43bd42c42fd7"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"64d162dbe78a45c1394d0325910d1e96304f86be","unresolved":false,"context_lines":[{"line_number":269,"context_line":""},{"line_number":270,"context_line":"To upload a copy of that same EC2 tarball VM image::"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"  $\u003e glance add name\u003d\"uubntu-10.04-amd64\" is_public\u003dtrue \\"},{"line_number":273,"context_line":"     container_format\u003dovf disk_format\u003draw \\"},{"line_number":274,"context_line":"     copy_from\u003d\"http://uec-images.ubuntu.com/lucid/current/\\"},{"line_number":275,"context_line":"     lucid-server-uec-amd64.tar.gz\""}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAEn%2F%2F3sw%3D","line":272,"updated":"2012-02-22 16:56:34.000000000","message":"s/uubntu/ubuntu :)","commit_id":"56e8fbeb553e0ea189da5e8f95af43bd42c42fd7"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"3a3f810b91e899d8a28ca1ea36667f974f729ed9","unresolved":false,"context_lines":[{"line_number":269,"context_line":""},{"line_number":270,"context_line":"To upload a copy of that same EC2 tarball VM image::"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"  $\u003e glance add name\u003d\"uubntu-10.04-amd64\" is_public\u003dtrue \\"},{"line_number":273,"context_line":"     container_format\u003dovf disk_format\u003draw \\"},{"line_number":274,"context_line":"     copy_from\u003d\"http://uec-images.ubuntu.com/lucid/current/\\"},{"line_number":275,"context_line":"     lucid-server-uec-amd64.tar.gz\""}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAEn%2F%2F3qk%3D","line":272,"in_reply_to":"AAAAEn%2F%2F3sw%3D","updated":"2012-02-22 18:07:18.000000000","message":"Fixed.","commit_id":"56e8fbeb553e0ea189da5e8f95af43bd42c42fd7"}],"glance/api/v1/images.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"64d162dbe78a45c1394d0325910d1e96304f86be","unresolved":false,"context_lines":[{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @staticmethod"},{"line_number":230,"context_line":"    def _copy_from(req):"},{"line_number":231,"context_line":"        return req.headers.get(\u0027x-glance-api-copy-from\u0027, None)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    @staticmethod"},{"line_number":234,"context_line":"    def _external_source(image_meta, req):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAEn%2F%2F3sg%3D","line":231,"updated":"2012-02-22 16:56:34.000000000","message":"The , None is not needed above...","commit_id":"56e8fbeb553e0ea189da5e8f95af43bd42c42fd7"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"3a3f810b91e899d8a28ca1ea36667f974f729ed9","unresolved":false,"context_lines":[{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @staticmethod"},{"line_number":230,"context_line":"    def _copy_from(req):"},{"line_number":231,"context_line":"        return req.headers.get(\u0027x-glance-api-copy-from\u0027, None)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    @staticmethod"},{"line_number":234,"context_line":"    def _external_source(image_meta, req):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAEn%2F%2F3qc%3D","line":231,"in_reply_to":"AAAAEn%2F%2F3sg%3D","updated":"2012-02-22 18:07:18.000000000","message":"Removed.","commit_id":"56e8fbeb553e0ea189da5e8f95af43bd42c42fd7"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"64d162dbe78a45c1394d0325910d1e96304f86be","unresolved":false,"context_lines":[{"line_number":238,"context_line":"    def _get_from_store(where, image_meta):"},{"line_number":239,"context_line":"        try:"},{"line_number":240,"context_line":"            image_data, image_size \u003d get_from_backend(where)"},{"line_number":241,"context_line":"            image_meta[\"size\"] \u003d int(image_size or image_meta[\"size\"])"},{"line_number":242,"context_line":"        except exception.NotFound, e:"},{"line_number":243,"context_line":"            raise HTTPNotFound(explanation\u003d\"%s\" % e)"},{"line_number":244,"context_line":"        return image_data"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAEn%2F%2F3sc%3D","line":241,"updated":"2012-02-22 16:56:34.000000000","message":"I\u0027d prefer if we did not modify parameters (and depend on that modification in calling code below). I\u0027d prefer that we instead return a tuple of image_data, image_size","commit_id":"56e8fbeb553e0ea189da5e8f95af43bd42c42fd7"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"3a3f810b91e899d8a28ca1ea36667f974f729ed9","unresolved":false,"context_lines":[{"line_number":238,"context_line":"    def _get_from_store(where, image_meta):"},{"line_number":239,"context_line":"        try:"},{"line_number":240,"context_line":"            image_data, image_size \u003d get_from_backend(where)"},{"line_number":241,"context_line":"            image_meta[\"size\"] \u003d int(image_size or image_meta[\"size\"])"},{"line_number":242,"context_line":"        except exception.NotFound, e:"},{"line_number":243,"context_line":"            raise HTTPNotFound(explanation\u003d\"%s\" % e)"},{"line_number":244,"context_line":"        return image_data"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAEn%2F%2F3qY%3D","line":241,"in_reply_to":"AAAAEn%2F%2F3sc%3D","updated":"2012-02-22 18:07:18.000000000","message":"Changed as suggested.","commit_id":"56e8fbeb553e0ea189da5e8f95af43bd42c42fd7"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"64d162dbe78a45c1394d0325910d1e96304f86be","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        copy_from \u003d self._copy_from(req)"},{"line_number":333,"context_line":"        if copy_from:"},{"line_number":334,"context_line":"            image_data \u003d self._get_from_store(copy_from, image_meta)"},{"line_number":335,"context_line":"            image_size \u003d image_meta[\u0027size\u0027]"},{"line_number":336,"context_line":"        else:"},{"line_number":337,"context_line":"            try:"},{"line_number":338,"context_line":"                req.get_content_type(\u0027application/octet-stream\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAEn%2F%2F3sU%3D","line":335,"updated":"2012-02-22 16:56:34.000000000","message":"See above comment about not relying on _get_from_store() to modify the image_meta parameter and instead returning the image size in its return tuple...","commit_id":"56e8fbeb553e0ea189da5e8f95af43bd42c42fd7"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"3a3f810b91e899d8a28ca1ea36667f974f729ed9","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        copy_from \u003d self._copy_from(req)"},{"line_number":333,"context_line":"        if copy_from:"},{"line_number":334,"context_line":"            image_data \u003d self._get_from_store(copy_from, image_meta)"},{"line_number":335,"context_line":"            image_size \u003d image_meta[\u0027size\u0027]"},{"line_number":336,"context_line":"        else:"},{"line_number":337,"context_line":"            try:"},{"line_number":338,"context_line":"                req.get_content_type(\u0027application/octet-stream\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAEn%2F%2F3qU%3D","line":335,"in_reply_to":"AAAAEn%2F%2F3sU%3D","updated":"2012-02-22 18:07:18.000000000","message":"Done","commit_id":"56e8fbeb553e0ea189da5e8f95af43bd42c42fd7"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"64d162dbe78a45c1394d0325910d1e96304f86be","unresolved":false,"context_lines":[{"line_number":545,"context_line":"           will be served out from the external store, i.e. is never uploaded"},{"line_number":546,"context_line":"           to the configured glance image store."},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"        4. If the image data is not available yet, but you\u0027d like reserve a"},{"line_number":549,"context_line":"           spot for it, you can omit the data and a record will be created in"},{"line_number":550,"context_line":"           the \u0027queued\u0027 state. This exists primarily to maintain backwards"},{"line_number":551,"context_line":"           compatibility with OpenStack/Rackspace API semantics."}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAEn%2F%2F3sQ%3D","line":548,"updated":"2012-02-22 16:56:34.000000000","message":"Excellent docstring updates. Thank you!","commit_id":"56e8fbeb553e0ea189da5e8f95af43bd42c42fd7"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"64d162dbe78a45c1394d0325910d1e96304f86be","unresolved":false,"context_lines":[{"line_number":626,"context_line":"        # image is in queued status, which indicates that the user called"},{"line_number":627,"context_line":"        # POST /images but originally supply neither a Location|Copy-From"},{"line_number":628,"context_line":"        # field NOR image data"},{"line_number":629,"context_line":"        #"},{"line_number":630,"context_line":"        location \u003d self._external_source(image_meta, req)"},{"line_number":631,"context_line":"        if not orig_status \u003d\u003d \u0027queued\u0027 and location:"},{"line_number":632,"context_line":"            msg \u003d _(\"Attempted to update Location field for an image \""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAEn%2F%2F3sM%3D","line":629,"updated":"2012-02-22 16:56:34.000000000","message":"Please remove extraneous # above...","commit_id":"56e8fbeb553e0ea189da5e8f95af43bd42c42fd7"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"3a3f810b91e899d8a28ca1ea36667f974f729ed9","unresolved":false,"context_lines":[{"line_number":626,"context_line":"        # image is in queued status, which indicates that the user called"},{"line_number":627,"context_line":"        # POST /images but originally supply neither a Location|Copy-From"},{"line_number":628,"context_line":"        # field NOR image data"},{"line_number":629,"context_line":"        #"},{"line_number":630,"context_line":"        location \u003d self._external_source(image_meta, req)"},{"line_number":631,"context_line":"        if not orig_status \u003d\u003d \u0027queued\u0027 and location:"},{"line_number":632,"context_line":"            msg \u003d _(\"Attempted to update Location field for an image \""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAEn%2F%2F3qQ%3D","line":629,"in_reply_to":"AAAAEn%2F%2F3sM%3D","updated":"2012-02-22 18:07:18.000000000","message":"Removed.","commit_id":"56e8fbeb553e0ea189da5e8f95af43bd42c42fd7"}],"glance/store/__init__.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"792fdfec334710b25efd54cf98cd27d7dd6873d7","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        if start \u003c self.cursor:"},{"line_number":108,"context_line":"            return self.chunk[(start - self.cursor):]"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        self.chunk \u003d self.another()"},{"line_number":111,"context_line":"        if self.chunk:"},{"line_number":112,"context_line":"            self.cursor +\u003d len(self.chunk)"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAEn%2F%2F5bE%3D","line":110,"updated":"2012-02-17 18:49:07.000000000","message":"It looks like subclasses are supposed to provide \u0027another()\u0027.  It\u0027d be nice if there was a comment, or, even better, a stub method raising NotImplementedError…","commit_id":"57bb48a11db05ce3ecd5fdd99bf1ab072b457bd4"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"2770c2afd92a544f990549f3fa0c3af655759665","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        if start \u003c self.cursor:"},{"line_number":108,"context_line":"            return self.chunk[(start - self.cursor):]"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        self.chunk \u003d self.another()"},{"line_number":111,"context_line":"        if self.chunk:"},{"line_number":112,"context_line":"            self.cursor +\u003d len(self.chunk)"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAEn%2F%2F4zs%3D","line":110,"in_reply_to":"AAAAEn%2F%2F5bE%3D","updated":"2012-02-20 09:24:29.000000000","message":"Good shout, done.","commit_id":"57bb48a11db05ce3ecd5fdd99bf1ab072b457bd4"}],"glance/store/filesystem.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"792fdfec334710b25efd54cf98cd27d7dd6873d7","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import os"},{"line_number":25,"context_line":"import urlparse"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from glance.common import cfg, exception, utils"},{"line_number":28,"context_line":"import glance.store"},{"line_number":29,"context_line":"import glance.store.base"},{"line_number":30,"context_line":"import glance.store.location"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAEn%2F%2F5a4%3D","line":27,"updated":"2012-02-17 18:49:07.000000000","message":"I\u0027d rather see this as three separate imports, i.e.:\n\n    from glance.common import cfg\n    from glance.common import exception\n    from glance.common import utils\n\nSure, it\u0027s tedious, but it\u0027s the style we\u0027re using :)","commit_id":"57bb48a11db05ce3ecd5fdd99bf1ab072b457bd4"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"2770c2afd92a544f990549f3fa0c3af655759665","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import os"},{"line_number":25,"context_line":"import urlparse"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from glance.common import cfg, exception, utils"},{"line_number":28,"context_line":"import glance.store"},{"line_number":29,"context_line":"import glance.store.base"},{"line_number":30,"context_line":"import glance.store.location"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAEn%2F%2F4zo%3D","line":27,"in_reply_to":"AAAAEn%2F%2F5a4%3D","updated":"2012-02-20 09:24:29.000000000","message":"Done","commit_id":"57bb48a11db05ce3ecd5fdd99bf1ab072b457bd4"}],"glance/store/s3.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"792fdfec334710b25efd54cf98cd27d7dd6873d7","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import tempfile"},{"line_number":24,"context_line":"import urlparse"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from glance.common import cfg, exception, utils"},{"line_number":27,"context_line":"import glance.store"},{"line_number":28,"context_line":"import glance.store.base"},{"line_number":29,"context_line":"import glance.store.location"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAEn%2F%2F5a0%3D","line":26,"updated":"2012-02-17 18:49:07.000000000","message":"See previous","commit_id":"57bb48a11db05ce3ecd5fdd99bf1ab072b457bd4"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"2770c2afd92a544f990549f3fa0c3af655759665","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import tempfile"},{"line_number":24,"context_line":"import urlparse"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from glance.common import cfg, exception, utils"},{"line_number":27,"context_line":"import glance.store"},{"line_number":28,"context_line":"import glance.store.base"},{"line_number":29,"context_line":"import glance.store.location"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAEn%2F%2F4zg%3D","line":26,"in_reply_to":"AAAAEn%2F%2F5a0%3D","updated":"2012-02-20 09:24:29.000000000","message":"Done","commit_id":"57bb48a11db05ce3ecd5fdd99bf1ab072b457bd4"}]}
