)]}'
{"doc/source/client.rst":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"82d935d1736e58b73efba5ca0434f7004eca81f2","unresolved":false,"context_lines":[{"line_number":242,"context_line":"  must be a properly formatted uuid (i.e. 71c675ab-d94f-49cd-a114-e12490b328d9)."},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"  When this key/value is *not* present, Glance will generate an identifier"},{"line_number":245,"context_line":"  for the image and return this identifier in the response (see below). "},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"* `store`"},{"line_number":248,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAACX%2F%2F6f4%3D","line":245,"updated":"2011-10-26 16:20:08.000000000","message":"Just pointing out trailing whitespace; it\u0027s in docs, so I don\u0027t really care...","commit_id":"2844cbe05e587a285150c21f8871eee06604dd60"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"69028ab21aa033acd5d06cb6663670aca57d464e","unresolved":false,"context_lines":[{"line_number":242,"context_line":"  must be a properly formatted uuid (i.e. 71c675ab-d94f-49cd-a114-e12490b328d9)."},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"  When this key/value is *not* present, Glance will generate an identifier"},{"line_number":245,"context_line":"  for the image and return this identifier in the response (see below). "},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"* `store`"},{"line_number":248,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAACX%2F%2F6ZM%3D","line":245,"in_reply_to":"AAAACX%2F%2F6f4%3D","updated":"2011-10-26 19:00:20.000000000","message":"Whoops. I went through all the docs I touched and removed trailing whitespace.","commit_id":"2844cbe05e587a285150c21f8871eee06604dd60"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"82d935d1736e58b73efba5ca0434f7004eca81f2","unresolved":false,"context_lines":[{"line_number":444,"context_line":""},{"line_number":445,"context_line":"  c \u003d Client(\"glance.example.com\", 9292)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"  c.replace_members(\u002771c675ab-d94f-49cd-a114-e12490b328d9\u0027, "},{"line_number":448,"context_line":"                    {\u0027member_id\u0027: \u0027tenant1\u0027, \u0027can_share\u0027: False},"},{"line_number":449,"context_line":"                    {\u0027member_id\u0027: \u0027tenant2\u0027, \u0027can_share\u0027: True})"},{"line_number":450,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAACX%2F%2F6f0%3D","line":447,"updated":"2011-10-26 16:20:08.000000000","message":"Just pointing out trailing whitespace; it\u0027s in docs, so I don\u0027t really care...","commit_id":"2844cbe05e587a285150c21f8871eee06604dd60"}],"doc/source/glance.rst":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"82d935d1736e58b73efba5ca0434f7004eca81f2","unresolved":false,"context_lines":[{"line_number":308,"context_line":"available in Glance, as shown below::"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"  $\u003e glance index --host\u003d65.114.169.29"},{"line_number":311,"context_line":"  ID                                   Name                           Disk Format          Container Format     Size          "},{"line_number":312,"context_line":"  ------------------------------------ ------------------------------ -------------------- -------------------- --------------"},{"line_number":313,"context_line":"  baa87554-34d2-4e9e-9949-e9e5620422bb Ubuntu 10.10                   vhd                  ovf                        58520278"},{"line_number":314,"context_line":"  9e1aede2-dc6e-4981-9f3e-93dee24d48b1 Ubuntu 10.04                   ami                  ami                        58520278"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAACX%2F%2F6fw%3D","line":311,"updated":"2011-10-26 16:20:08.000000000","message":"Just pointing out trailing whitespace; it\u0027s in docs, so I don\u0027t really care...","commit_id":"2844cbe05e587a285150c21f8871eee06604dd60"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"82d935d1736e58b73efba5ca0434f7004eca81f2","unresolved":false,"context_lines":[{"line_number":343,"context_line":"  $\u003e glance details --host\u003d65.114.169.29"},{"line_number":344,"context_line":"  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":345,"context_line":"  URI: http://example.com/images/baa87554-34d2-4e9e-9949-e9e5620422bb"},{"line_number":346,"context_line":"  Id: baa87554-34d2-4e9e-9949-e9e5620422bb "},{"line_number":347,"context_line":"  Public? Yes"},{"line_number":348,"context_line":"  Name: Ubuntu 10.10"},{"line_number":349,"context_line":"  Status: active"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAACX%2F%2F6fs%3D","line":346,"updated":"2011-10-26 16:20:08.000000000","message":"Just pointing out trailing whitespace; it\u0027s in docs, so I don\u0027t really care...","commit_id":"2844cbe05e587a285150c21f8871eee06604dd60"}],"doc/source/glanceapi.rst":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"82d935d1736e58b73efba5ca0434f7004eca81f2","unresolved":false,"context_lines":[{"line_number":334,"context_line":"  When present, Glance will use the supplied identifier for the image."},{"line_number":335,"context_line":"  If the identifier already exists in that Glance node, then a"},{"line_number":336,"context_line":"  **409 Conflict** will be returned by Glance. The value of the header"},{"line_number":337,"context_line":"  must be a uuid in hexadecimal string notation "},{"line_number":338,"context_line":"  (i.e. 71c675ab-d94f-49cd-a114-e12490b328d9)."},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"  When this header is *not* present, Glance will generate an identifier"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAACX%2F%2F6fo%3D","line":337,"updated":"2011-10-26 16:20:08.000000000","message":"Just pointing out trailing whitespace; it\u0027s in docs, so I don\u0027t really care...","commit_id":"2844cbe05e587a285150c21f8871eee06604dd60"}],"doc/source/identifiers.rst":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"82d935d1736e58b73efba5ca0434f7004eca81f2","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  \u003cGlance Server Location\u003e/images/\u003cID\u003e"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"where `\u003cGlance Server Location\u003e` is the resource location of the Glance service"},{"line_number":26,"context_line":"that knows about an image, and `\u003cID\u003e` is the image\u0027s identifier. Image "},{"line_number":27,"context_line":"identifiers in Glance are *uuids*, making them *globally unique*."}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAACX%2F%2F6fk%3D","line":26,"updated":"2011-10-26 16:20:08.000000000","message":"Just pointing out trailing whitespace; it\u0027s in docs, so I don\u0027t really care...","commit_id":"2844cbe05e587a285150c21f8871eee06604dd60"}],"doc/source/registries.rst":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"82d935d1736e58b73efba5ca0434f7004eca81f2","unresolved":false,"context_lines":[{"line_number":129,"context_line":"  **ami**, then *both* ``disk_format`` and ``container_format`` must be"},{"line_number":130,"context_line":"  the same."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"* If ``id`` is not a properly formatted uuid. A proper uuid has four dashes "},{"line_number":133,"context_line":"  and is 36 characters long (i.e. \u002771c675ab-d94f-49cd-a114-e12490b328d9\u0027)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Examples"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAACX%2F%2F6fg%3D","line":132,"updated":"2011-10-26 16:20:08.000000000","message":"Just pointing out trailing whitespace; it\u0027s in docs, so I don\u0027t really care...","commit_id":"2844cbe05e587a285150c21f8871eee06604dd60"}],"glance/api/v1/images.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"838b2f2cd688120d2b1f2b7f3ef668e679d6f827","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            logger.error(msg)"},{"line_number":261,"context_line":"            raise HTTPConflict(msg, request\u003dreq, content_type\u003d\"text/plain\")"},{"line_number":262,"context_line":"        except exception.Invalid, e:"},{"line_number":263,"context_line":"            msg \u003d (_(\"Failed to reserve image. Got error: %s\") % str(e))"},{"line_number":264,"context_line":"            for line in msg.split(\u0027\\n\u0027):"},{"line_number":265,"context_line":"                logger.error(line)"},{"line_number":266,"context_line":"            raise HTTPBadRequest(msg, request\u003dreq, content_type\u003d\"text/plain\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACX%2F%2F7Wk%3D","line":263,"updated":"2011-10-21 15:11:36.000000000","message":"All of these changes in this file need to be reverted...\n\nSee https://bugs.launchpad.net/glance/+bug/816077 for explanation why :)","commit_id":"27be004f2c69de0e819cd060e875117b2091af4c"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"9d5e83cc6f4b4ae0bc3ae90d4a7f5606459816bc","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            logger.error(msg)"},{"line_number":261,"context_line":"            raise HTTPConflict(msg, request\u003dreq, content_type\u003d\"text/plain\")"},{"line_number":262,"context_line":"        except exception.Invalid, e:"},{"line_number":263,"context_line":"            msg \u003d (_(\"Failed to reserve image. Got error: %s\") % str(e))"},{"line_number":264,"context_line":"            for line in msg.split(\u0027\\n\u0027):"},{"line_number":265,"context_line":"                logger.error(line)"},{"line_number":266,"context_line":"            raise HTTPBadRequest(msg, request\u003dreq, content_type\u003d\"text/plain\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACX%2F%2F7VY%3D","line":263,"in_reply_to":"AAAACX%2F%2F7Wk%3D","updated":"2011-10-21 17:37:09.000000000","message":"I didn\u0027t actually make these changes... That\u0027s odd.","commit_id":"27be004f2c69de0e819cd060e875117b2091af4c"}],"glance/registry/api/v1/images.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"838b2f2cd688120d2b1f2b7f3ef668e679d6f827","unresolved":false,"context_lines":[{"line_number":332,"context_line":"            return exc.HTTPConflict(msg)"},{"line_number":333,"context_line":"        except exception.Invalid, e:"},{"line_number":334,"context_line":"            msg \u003d (_(\"Failed to add image metadata. \""},{"line_number":335,"context_line":"                     \"Got error: %s\") % str(e))"},{"line_number":336,"context_line":"            logger.error(msg)"},{"line_number":337,"context_line":"            return exc.HTTPBadRequest(msg)"},{"line_number":338,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACX%2F%2F7Wg%3D","line":335,"updated":"2011-10-21 15:11:36.000000000","message":"See previous comment about str(e)\n\nhttps://bugs.launchpad.net/glance/+bug/816077","commit_id":"27be004f2c69de0e819cd060e875117b2091af4c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"82d935d1736e58b73efba5ca0434f7004eca81f2","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        \"\"\"Parse a marker query param into something usable.\"\"\""},{"line_number":212,"context_line":"        marker \u003d req.str_params.get(\u0027marker\u0027, None)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        # TODO(wwolf): do some sort of UUID-validity check here?"},{"line_number":215,"context_line":"        return marker"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    def _get_sort_key(self, req):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAACX%2F%2F6fc%3D","line":214,"updated":"2011-10-26 16:20:08.000000000","message":"I agree, there probably should be a UUID validity check here.  I also saw a function in utils.py which could do that, so it wouldn\u0027t be difficult to add, either...","commit_id":"2844cbe05e587a285150c21f8871eee06604dd60"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"69028ab21aa033acd5d06cb6663670aca57d464e","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        \"\"\"Parse a marker query param into something usable.\"\"\""},{"line_number":212,"context_line":"        marker \u003d req.str_params.get(\u0027marker\u0027, None)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        # TODO(wwolf): do some sort of UUID-validity check here?"},{"line_number":215,"context_line":"        return marker"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    def _get_sort_key(self, req):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAACX%2F%2F6Zc%3D","line":214,"in_reply_to":"AAAACX%2F%2F6fc%3D","updated":"2011-10-26 19:00:20.000000000","message":"Good catch. Will did most of the implementation so I missed this TODO. I added the validity check and a test to verify it.","commit_id":"2844cbe05e587a285150c21f8871eee06604dd60"}],"glance/registry/db/api.py":[{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"f61204b9a45d51587b650312919bbf89c6d862e1","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    try:"},{"line_number":149,"context_line":"        #NOTE(bcwaldon): this is to prevent false matches when mysql compares"},{"line_number":150,"context_line":"        # an integer to a string that begins with that integer"},{"line_number":151,"context_line":"        image_id \u003d image_id"},{"line_number":152,"context_line":"    except (TypeError, ValueError):"},{"line_number":153,"context_line":"        raise exception.NotFound(\"No image found\")"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F7hU%3D","line":151,"updated":"2011-10-20 20:05:16.000000000","message":"Should this entire code block just be removed now? This doesn\u0027t seem to be doing anything","commit_id":"fa9438fbc6ae10b9fd508998095bf838abd5b4ca"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"fd4fff58ff6a50a2996b72d43fdbd8f7c04af6e3","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    try:"},{"line_number":149,"context_line":"        #NOTE(bcwaldon): this is to prevent false matches when mysql compares"},{"line_number":150,"context_line":"        # an integer to a string that begins with that integer"},{"line_number":151,"context_line":"        image_id \u003d image_id"},{"line_number":152,"context_line":"    except (TypeError, ValueError):"},{"line_number":153,"context_line":"        raise exception.NotFound(\"No image found\")"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F7a0%3D","line":151,"in_reply_to":"AAAACX%2F%2F7hU%3D","updated":"2011-10-20 21:06:21.000000000","message":"Yes, good catch.","commit_id":"fa9438fbc6ae10b9fd508998095bf838abd5b4ca"}],"glance/registry/db/migrate_repo/versions/012_id_to_uuid.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"838b2f2cd688120d2b1f2b7f3ef668e679d6f827","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"While SQLAlchemy/sqlalchemy-migrate should abstract this correctly,"},{"line_number":20,"context_line":"there are known issues with these libraries so SQLite and non-SQLite"},{"line_number":21,"context_line":"migrations must be done separately."},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"import copy"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACX%2F%2F7Wc%3D","line":21,"updated":"2011-10-21 15:11:36.000000000","message":"Not a huge problem, but I\u0027ve solved this in the past by doing the recommended method of having an SQL file in the migrate_repo/versions/ directory... you can see 003_sqlite_downgrade.sql and 003_sqlite_upgrade.sql for examples....","commit_id":"27be004f2c69de0e819cd060e875117b2091af4c"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"9d5e83cc6f4b4ae0bc3ae90d4a7f5606459816bc","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"While SQLAlchemy/sqlalchemy-migrate should abstract this correctly,"},{"line_number":20,"context_line":"there are known issues with these libraries so SQLite and non-SQLite"},{"line_number":21,"context_line":"migrations must be done separately."},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"import copy"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACX%2F%2F7Tw%3D","line":21,"in_reply_to":"AAAACX%2F%2F7Wc%3D","updated":"2011-10-21 17:37:09.000000000","message":"Lamar actually spent a lot of time trying to get this to work well. I don\u0027t think the separate sqlite files would work for some reason. Ask him if you need more info.","commit_id":"27be004f2c69de0e819cd060e875117b2091af4c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"82d935d1736e58b73efba5ca0434f7004eca81f2","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    _update_all_uuids_to_ids(t_images, t_image_members, t_image_properties)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def _upgrade_sqlite(t_images, t_image_members, t_image_properties):"},{"line_number":71,"context_line":"    \"\"\""},{"line_number":72,"context_line":"    Upgrade 011 -\u003e 012 with special SQLite-compatible logic."},{"line_number":73,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAACX%2F%2F6fQ%3D","line":70,"updated":"2011-10-26 16:20:08.000000000","message":"Is there a reason we\u0027re not doing this using the \u003cfile\u003e_{upgrade,downgrade}.sql escape hatch?  (Just asking for my own future reference...)","commit_id":"2844cbe05e587a285150c21f8871eee06604dd60"},{"author":{"_account_id":706,"name":"Brian Lamar","email":"brian.lamar@rackspace.com","username":"blamar"},"change_message_id":"f9f03f47e089784c4edff8938e69c155c0dc9458","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    _update_all_uuids_to_ids(t_images, t_image_members, t_image_properties)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def _upgrade_sqlite(t_images, t_image_members, t_image_properties):"},{"line_number":71,"context_line":"    \"\"\""},{"line_number":72,"context_line":"    Upgrade 011 -\u003e 012 with special SQLite-compatible logic."},{"line_number":73,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAACX%2F%2F6ZA%3D","line":70,"in_reply_to":"AAAACX%2F%2F6fQ%3D","updated":"2011-10-26 18:53:28.000000000","message":"Yup, this is an unfortunate corner case where that strategy doesn\u0027t seem to work.\n\nThe migration needs to do 2 things: \n1) Alter the id column from being an INTEGER to being a VARCHAR\n2) Generate new UUIDs and insert them in the newly altered VARCHAR column.\n\nMy initial implementation was with the upgrade/downgrade files, but #2 is impossible to do in pure SQL (as far as I know) so I would have had to create a new, third migration file just for converting integer IDs to UUIDs in SQLite. \n\nFeel free to ping me IRL if you\u0027d like to hear about my pains working with SQLite + python-migrate. :)","commit_id":"2844cbe05e587a285150c21f8871eee06604dd60"}],"glance/registry/db/models.py":[{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"f61204b9a45d51587b650312919bbf89c6d862e1","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    \"\"\"Represents an image in the datastore\"\"\""},{"line_number":99,"context_line":"    __tablename__ \u003d \u0027images\u0027"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    id \u003d Column(String(26), primary_key\u003dTrue, default\u003dutils.generate_uuid)"},{"line_number":102,"context_line":"    name \u003d Column(String(255))"},{"line_number":103,"context_line":"    disk_format \u003d Column(String(20))"},{"line_number":104,"context_line":"    container_format \u003d Column(String(20))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F7fY%3D","line":101,"updated":"2011-10-20 20:05:16.000000000","message":"36?","commit_id":"fa9438fbc6ae10b9fd508998095bf838abd5b4ca"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"fd4fff58ff6a50a2996b72d43fdbd8f7c04af6e3","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    \"\"\"Represents an image in the datastore\"\"\""},{"line_number":99,"context_line":"    __tablename__ \u003d \u0027images\u0027"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    id \u003d Column(String(26), primary_key\u003dTrue, default\u003dutils.generate_uuid)"},{"line_number":102,"context_line":"    name \u003d Column(String(255))"},{"line_number":103,"context_line":"    disk_format \u003d Column(String(20))"},{"line_number":104,"context_line":"    container_format \u003d Column(String(20))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F7aw%3D","line":101,"in_reply_to":"AAAACX%2F%2F7fY%3D","updated":"2011-10-20 21:06:21.000000000","message":"Yep.","commit_id":"fa9438fbc6ae10b9fd508998095bf838abd5b4ca"}],"glance/tests/functional/test_bin_glance.py":[{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"09f66260a05e4cf9c92ccb4f096fa04f80521519","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            0. Verify no public images in index"},{"line_number":210,"context_line":"            1. Attempt to add an image"},{"line_number":211,"context_line":"            2. Verify the image does NOT appear in the index output"},{"line_number":212,"context_line":"            3. Verify the status of the image is displayed in the show output"},{"line_number":213,"context_line":"               and is in status \u0027killed\u0027"},{"line_number":214,"context_line":"        \"\"\""},{"line_number":215,"context_line":"        self.cleanup()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACX%2F%2F7Ws%3D","line":212,"updated":"2011-10-21 14:30:43.000000000","message":"Should now be removed","commit_id":"27be004f2c69de0e819cd060e875117b2091af4c"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"9d5e83cc6f4b4ae0bc3ae90d4a7f5606459816bc","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            0. Verify no public images in index"},{"line_number":210,"context_line":"            1. Attempt to add an image"},{"line_number":211,"context_line":"            2. Verify the image does NOT appear in the index output"},{"line_number":212,"context_line":"            3. Verify the status of the image is displayed in the show output"},{"line_number":213,"context_line":"               and is in status \u0027killed\u0027"},{"line_number":214,"context_line":"        \"\"\""},{"line_number":215,"context_line":"        self.cleanup()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACX%2F%2F7Ts%3D","line":212,"in_reply_to":"AAAACX%2F%2F7Ws%3D","updated":"2011-10-21 17:37:09.000000000","message":"Done","commit_id":"27be004f2c69de0e819cd060e875117b2091af4c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"82d935d1736e58b73efba5ca0434f7004eca81f2","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            exitcode, out, err \u003d execute(cmd)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        self.assertEqual(0, exitcode)"},{"line_number":77,"context_line":"        self.assertTrue(out.strip().find(\u0027Added new image with ID:\u0027) \u003e -1)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        # 2. Verify image added as public image"},{"line_number":80,"context_line":"        cmd \u003d \"bin/glance --port\u003d%d index\" % api_port"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAACX%2F%2F6do%3D","line":77,"updated":"2011-10-26 16:20:08.000000000","message":"This seems overly complicated; how about \"self.assertTrue(out.strip().startswith(\u0027Added new image with ID:\u0027))\" ?","commit_id":"2844cbe05e587a285150c21f8871eee06604dd60"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"69028ab21aa033acd5d06cb6663670aca57d464e","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            exitcode, out, err \u003d execute(cmd)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        self.assertEqual(0, exitcode)"},{"line_number":77,"context_line":"        self.assertTrue(out.strip().find(\u0027Added new image with ID:\u0027) \u003e -1)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        # 2. Verify image added as public image"},{"line_number":80,"context_line":"        cmd \u003d \"bin/glance --port\u003d%d index\" % api_port"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAACX%2F%2F6ZU%3D","line":77,"in_reply_to":"AAAACX%2F%2F6do%3D","updated":"2011-10-26 19:00:20.000000000","message":"I copied the check from elsewhere in the file. Changed it anyways.","commit_id":"2844cbe05e587a285150c21f8871eee06604dd60"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"82d935d1736e58b73efba5ca0434f7004eca81f2","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        exitcode, out, err \u003d execute(cmd)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        self.assertEqual(0, exitcode)"},{"line_number":150,"context_line":"        self.assertTrue(out.strip().find(\u0027Added new image with ID:\u0027) \u003e -1)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        image_id \u003d out.strip().split(\u0027:\u0027)[1].strip()"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAACX%2F%2F6dk%3D","line":150,"updated":"2011-10-26 16:20:08.000000000","message":"Ibid","commit_id":"2844cbe05e587a285150c21f8871eee06604dd60"}],"glance/tests/functional/test_s3.py":[{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"f61204b9a45d51587b650312919bbf89c6d862e1","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    @skip_if_disabled"},{"line_number":157,"context_line":"    def test_remote_image(self):"},{"line_number":158,"context_line":"        \"\"\"Verify an image added using a \u0027Location\u0027 header can be retrieved\"\"\""},{"line_number":159,"context_line":"        self.cleanup()"},{"line_number":160,"context_line":"        self.start_servers(**self.__dict__.copy())"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F7fE%3D","line":158,"updated":"2011-10-20 20:05:16.000000000","message":"Kinda weird wording","commit_id":"fa9438fbc6ae10b9fd508998095bf838abd5b4ca"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"fd4fff58ff6a50a2996b72d43fdbd8f7c04af6e3","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    @skip_if_disabled"},{"line_number":157,"context_line":"    def test_remote_image(self):"},{"line_number":158,"context_line":"        \"\"\"Verify an image added using a \u0027Location\u0027 header can be retrieved\"\"\""},{"line_number":159,"context_line":"        self.cleanup()"},{"line_number":160,"context_line":"        self.start_servers(**self.__dict__.copy())"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F7as%3D","line":158,"in_reply_to":"AAAACX%2F%2F7fE%3D","updated":"2011-10-20 21:06:21.000000000","message":"Really?","commit_id":"fa9438fbc6ae10b9fd508998095bf838abd5b4ca"}],"glance/tests/stubs.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"82d935d1736e58b73efba5ca0434f7004eca81f2","unresolved":false,"context_lines":[{"line_number":31,"context_line":"import glance.common.client"},{"line_number":32,"context_line":"from glance.common import context"},{"line_number":33,"context_line":"from glance.common import exception"},{"line_number":34,"context_line":"from glance.common import utils"},{"line_number":35,"context_line":"from glance.registry.api import v1 as rserver"},{"line_number":36,"context_line":"from glance.api import v1 as server"},{"line_number":37,"context_line":"from glance.api.middleware import version_negotiation"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAACX%2F%2F6dc%3D","line":34,"updated":"2011-10-26 16:20:08.000000000","message":"We import utils, then don\u0027t use them?","commit_id":"2844cbe05e587a285150c21f8871eee06604dd60"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"69028ab21aa033acd5d06cb6663670aca57d464e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"import glance.common.client"},{"line_number":32,"context_line":"from glance.common import context"},{"line_number":33,"context_line":"from glance.common import exception"},{"line_number":34,"context_line":"from glance.common import utils"},{"line_number":35,"context_line":"from glance.registry.api import v1 as rserver"},{"line_number":36,"context_line":"from glance.api import v1 as server"},{"line_number":37,"context_line":"from glance.api.middleware import version_negotiation"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAACX%2F%2F6ZQ%3D","line":34,"in_reply_to":"AAAACX%2F%2F6dc%3D","updated":"2011-10-26 19:00:20.000000000","message":"Done","commit_id":"2844cbe05e587a285150c21f8871eee06604dd60"}],"glance/tests/unit/test_migrations.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"838b2f2cd688120d2b1f2b7f3ef668e679d6f827","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        print options"},{"line_number":147,"context_line":"        for version in xrange(1, TestMigrations.REPOSITORY.latest + 1):"},{"line_number":148,"context_line":"            print \"VERSION: \", version"},{"line_number":149,"context_line":"            migration_api.upgrade(options, version)"},{"line_number":150,"context_line":"            cur_version \u003d migration_api.db_version(options)"},{"line_number":151,"context_line":"            self.assertEqual(cur_version, version)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACX%2F%2F7V0%3D","line":148,"updated":"2011-10-21 15:11:36.000000000","message":"debug prints?","commit_id":"27be004f2c69de0e819cd060e875117b2091af4c"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"9d5e83cc6f4b4ae0bc3ae90d4a7f5606459816bc","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        print options"},{"line_number":147,"context_line":"        for version in xrange(1, TestMigrations.REPOSITORY.latest + 1):"},{"line_number":148,"context_line":"            print \"VERSION: \", version"},{"line_number":149,"context_line":"            migration_api.upgrade(options, version)"},{"line_number":150,"context_line":"            cur_version \u003d migration_api.db_version(options)"},{"line_number":151,"context_line":"            self.assertEqual(cur_version, version)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACX%2F%2F7To%3D","line":148,"in_reply_to":"AAAACX%2F%2F7V0%3D","updated":"2011-10-21 17:37:09.000000000","message":"Done","commit_id":"27be004f2c69de0e819cd060e875117b2091af4c"}]}
