)]}'
{"glance/db/sqlalchemy/api.py":[{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"dc009b202aabf80669d0700a7d3b5b3a7900fca8","unresolved":false,"context_lines":[{"line_number":601,"context_line":""},{"line_number":602,"context_line":"    showing_deleted \u003d False"},{"line_number":603,"context_line":""},{"line_number":604,"context_line":"    if \u0027checksum\u0027 in filters:"},{"line_number":605,"context_line":"        checksum \u003d filters.pop(\u0027checksum\u0027)"},{"line_number":606,"context_line":"        query \u003d query.filter_by(checksum\u003dchecksum)"},{"line_number":607,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FzZA%3D","line":604,"updated":"2013-07-11 07:14:53.000000000","message":"as far as I got, filters[\u0027checksum\u0027] can be None. I\u0027m not sure, is it correct?","commit_id":"264de36417f41c997986ce1296ec7158bb10c8e5"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"f36b75befe72ad7add4fc873a07a0d9cfdaa188a","unresolved":false,"context_lines":[{"line_number":601,"context_line":""},{"line_number":602,"context_line":"    showing_deleted \u003d False"},{"line_number":603,"context_line":""},{"line_number":604,"context_line":"    if \u0027checksum\u0027 in filters:"},{"line_number":605,"context_line":"        checksum \u003d filters.pop(\u0027checksum\u0027)"},{"line_number":606,"context_line":"        query \u003d query.filter_by(checksum\u003dchecksum)"},{"line_number":607,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FzBA%3D","line":604,"in_reply_to":"AAAAP3%2F%2FzPI%3D","updated":"2013-07-11 09:08:50.000000000","message":"got it","commit_id":"264de36417f41c997986ce1296ec7158bb10c8e5"},{"author":{"_account_id":7701,"name":"Amala Basha","email":"amala.alungal@RACKSPACE.COM","username":"amalabasha"},"change_message_id":"8c34b4024be22b4deeb3790768e2f93336bfd15e","unresolved":false,"context_lines":[{"line_number":601,"context_line":""},{"line_number":602,"context_line":"    showing_deleted \u003d False"},{"line_number":603,"context_line":""},{"line_number":604,"context_line":"    if \u0027checksum\u0027 in filters:"},{"line_number":605,"context_line":"        checksum \u003d filters.pop(\u0027checksum\u0027)"},{"line_number":606,"context_line":"        query \u003d query.filter_by(checksum\u003dchecksum)"},{"line_number":607,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FzPI%3D","line":604,"in_reply_to":"AAAAP3%2F%2FzZA%3D","updated":"2013-07-11 08:20:36.000000000","message":"Well, It cant be. This filter requires a mandatory checksum to be passed which is checked at the client","commit_id":"264de36417f41c997986ce1296ec7158bb10c8e5"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"59ea2243f271e35801ea5a23412928cd37d3b417","unresolved":false,"context_lines":[{"line_number":602,"context_line":"    showing_deleted \u003d False"},{"line_number":603,"context_line":""},{"line_number":604,"context_line":"    if \u0027checksum\u0027 in filters:"},{"line_number":605,"context_line":"        checksum \u003d filters.pop(\u0027checksum\u0027)"},{"line_number":606,"context_line":"        query \u003d query.filter_by(checksum\u003dchecksum)"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"    if \u0027changes-since\u0027 in filters:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2Fx5g%3D","line":605,"updated":"2013-07-11 15:39:43.000000000","message":"also, it\u0027s always better to use dict.get() rather than dict.pop() in such long methods. \n(here: filters.get(\u0027checksum\u0027))\n\nYou cannot absolutely be sure that checksum will not be used by anyone else below and they could easily miss this line and be bedazzled why filters does not have checksum even after passing it through.\n\nP.S. following based on a comment in the previous patch set, you could use a different var to do filters.get(\u0027checksum\u0027) or not on both the lines 604, 605. The other elements in this filters dict are somewhat checked in the different places of the codebase based on which version of api are you using and whether registry is calling sqlalchemy api or not. Something to keep in mind here.","commit_id":"b84c4b4716dc4d901f6a04cde7411ba49ad46512"}],"glance/db/sqlalchemy/migrate_repo/versions/026_checksum_index.py":[{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"b1ce42da9fa0d605aea8e1abaec310b27cb7cee6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from sqlalchemy import MetaData, Table, Index"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"INDEX_NAME \u003d \u0027checksum_image_idx\u0027"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FaKM%3D","line":1,"updated":"2013-07-02 15:28:18.000000000","message":"it should have copyright information","commit_id":"e02cdfa398c64f48c3e577d874c0c9b465fc260d"},{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"da3d8866aa5240bbaff82cf81b253fd9df715e55","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2011 OpenStack LLC."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F8p0%3D","line":3,"updated":"2013-07-08 18:22:20.000000000","message":"Please omit this line and the one below it, unless you intend to replace \"2011 OpenStack LLC\" with 2013 and your own company name. Note that you do not need to include any copyright line to retain copyright.","commit_id":"986bbf11de871315f12b49991338642e336e7c1f"}],"glance/db/sqlalchemy/migrate_repo/versions/027_checksum_index.py":[{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"dc009b202aabf80669d0700a7d3b5b3a7900fca8","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    images \u003d Table(\u0027images\u0027, meta, autoload\u003dTrue)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    index \u003d Index(INDEX_NAME, images.c.checksum)"},{"line_number":30,"context_line":"    index.create(migrate_engine)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def downgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FzYw%3D","line":30,"updated":"2013-07-11 07:14:53.000000000","message":"functions `upgrade` and `downgrade` almost the same (difference only in last row). Maybe there is a sense to make single function an call it from `upgrade` and `downgrade` with different params (something like `is_update\u003dTrue`). What do you think about it?","commit_id":"264de36417f41c997986ce1296ec7158bb10c8e5"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"f36b75befe72ad7add4fc873a07a0d9cfdaa188a","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    images \u003d Table(\u0027images\u0027, meta, autoload\u003dTrue)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    index \u003d Index(INDEX_NAME, images.c.checksum)"},{"line_number":30,"context_line":"    index.create(migrate_engine)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def downgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FzII%3D","line":30,"in_reply_to":"AAAAP3%2F%2FzKs%3D","updated":"2013-07-11 09:08:50.000000000","message":"ok, let it be","commit_id":"264de36417f41c997986ce1296ec7158bb10c8e5"},{"author":{"_account_id":7701,"name":"Amala Basha","email":"amala.alungal@RACKSPACE.COM","username":"amalabasha"},"change_message_id":"8c34b4024be22b4deeb3790768e2f93336bfd15e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    images \u003d Table(\u0027images\u0027, meta, autoload\u003dTrue)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    index \u003d Index(INDEX_NAME, images.c.checksum)"},{"line_number":30,"context_line":"    index.create(migrate_engine)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def downgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FzKs%3D","line":30,"in_reply_to":"AAAAP3%2F%2FzYw%3D","updated":"2013-07-11 08:20:36.000000000","message":"Having a separate upgrade/downgrade function improves visibility and emphasis on the purpose. Dont you think? Also this looks like something which has been followed across all migrations","commit_id":"264de36417f41c997986ce1296ec7158bb10c8e5"}],"glance/db/sqlalchemy/models.py":[{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"b1ce42da9fa0d605aea8e1abaec310b27cb7cee6","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    size \u003d Column(BigInteger)"},{"line_number":116,"context_line":"    status \u003d Column(String(30), nullable\u003dFalse)"},{"line_number":117,"context_line":"    is_public \u003d Column(Boolean, nullable\u003dFalse, default\u003dFalse)"},{"line_number":118,"context_line":"    checksum \u003d Column(String(32), index\u003dTrue)"},{"line_number":119,"context_line":"    min_disk \u003d Column(Integer(), nullable\u003dFalse, default\u003d0)"},{"line_number":120,"context_line":"    min_ram \u003d Column(Integer(), nullable\u003dFalse, default\u003d0)"},{"line_number":121,"context_line":"    owner \u003d Column(String(255))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FaKE%3D","line":118,"updated":"2013-07-02 15:28:18.000000000","message":"nice!","commit_id":"e02cdfa398c64f48c3e577d874c0c9b465fc260d"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"dc009b202aabf80669d0700a7d3b5b3a7900fca8","unresolved":false,"context_lines":[{"line_number":107,"context_line":"class Image(BASE, ModelBase):"},{"line_number":108,"context_line":"    \"\"\"Represents an image in the datastore\"\"\""},{"line_number":109,"context_line":"    __tablename__ \u003d \u0027images\u0027"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    id \u003d Column(String(36), primary_key\u003dTrue, default\u003duuidutils.generate_uuid)"},{"line_number":112,"context_line":"    name \u003d Column(String(255))"},{"line_number":113,"context_line":"    disk_format \u003d Column(String(20))"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FzZw%3D","line":110,"updated":"2013-07-11 07:14:53.000000000","message":"please add index to `__table_args__` also","commit_id":"264de36417f41c997986ce1296ec7158bb10c8e5"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"f376a6e20dd15325611ad7847ee88ee53390c7d4","unresolved":false,"context_lines":[{"line_number":107,"context_line":"class Image(BASE, ModelBase):"},{"line_number":108,"context_line":"    \"\"\"Represents an image in the datastore\"\"\""},{"line_number":109,"context_line":"    __tablename__ \u003d \u0027images\u0027"},{"line_number":110,"context_line":"    __table_args__ \u003d (Index(\u0027checksum_image_idx\u0027, \u0027checksum\u0027), {})"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    id \u003d Column(String(36), primary_key\u003dTrue, default\u003duuidutils.generate_uuid)"},{"line_number":113,"context_line":"    name \u003d Column(String(255))"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAP3%2F%2FpdE%3D","line":110,"updated":"2013-07-15 12:08:56.000000000","message":"I\u0027m not sure that ``{}`` is required...","commit_id":"377d62af14958a71dbae277cc82cf5c6b0badee7"}],"glance/tests/unit/test_db.py":[{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"b1ce42da9fa0d605aea8e1abaec310b27cb7cee6","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"USER1 \u003d \u002754492ba0-f4df-4e4e-be62-27f4d76b29cf\u0027"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"CHECKSUM \u003d \u0027fakechecksum\u0027"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"def _db_fixture(id, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FaHQ%3D","line":42,"updated":"2013-07-02 15:28:18.000000000","message":"wonder if you should have it set to md5 style checksum and have the variable explicitly say CHECKSUM_MD5 \u003d \u003c128 bits\u003e. This story is related to cloning which might be transparent to the kind of image imported and the checksum provided. Whether it is a md5, sha, etc.","commit_id":"e02cdfa398c64f48c3e577d874c0c9b465fc260d"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"b1ce42da9fa0d605aea8e1abaec310b27cb7cee6","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        images \u003d self.image_repo.list(filters\u003dfilters)"},{"line_number":187,"context_line":"        image_ids \u003d set([i.image_id for i in images])"},{"line_number":188,"context_line":"        self.assertEqual(set([UUID1]), image_ids)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def test_list_public_images(self):"},{"line_number":191,"context_line":"        filters \u003d {\u0027visibility\u0027: \u0027public\u0027}"},{"line_number":192,"context_line":"        images \u003d self.image_repo.list(filters\u003dfilters)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FaJQ%3D","line":189,"updated":"2013-07-02 15:28:18.000000000","message":"may be we should have a negative test on this, though that might be arguable with the discussions which are going on in the community for making glance tests faster.","commit_id":"e02cdfa398c64f48c3e577d874c0c9b465fc260d"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"dc009b202aabf80669d0700a7d3b5b3a7900fca8","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        filters \u003d {\u0027checksum\u0027: CHECKSUM}"},{"line_number":186,"context_line":"        images \u003d self.image_repo.list(filters\u003dfilters)"},{"line_number":187,"context_line":"        image_ids \u003d set([i.image_id for i in images])"},{"line_number":188,"context_line":"        self.assertEqual(set([UUID1]), image_ids)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def test_list_with_wrong_checksum(self):"},{"line_number":191,"context_line":"        WRONG_CHKSUM \u003d \u0027d2fd42f979e1ed1aafadc7eb9354bff839c858cd\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FzXk%3D","line":188,"updated":"2013-07-11 07:14:53.000000000","message":"why do you compare sets with single element? Add more values or compare 2 lists.","commit_id":"264de36417f41c997986ce1296ec7158bb10c8e5"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"dc009b202aabf80669d0700a7d3b5b3a7900fca8","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        filters \u003d {\u0027checksum\u0027: WRONG_CHKSUM}"},{"line_number":193,"context_line":"        images \u003d self.image_repo.list(filters\u003dfilters)"},{"line_number":194,"context_line":"        image_ids \u003d set([i.image_id for i in images])"},{"line_number":195,"context_line":"        self.assertEqual(set([]), image_ids)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    def test_list_public_images(self):"},{"line_number":198,"context_line":"        filters \u003d {\u0027visibility\u0027: \u0027public\u0027}"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FzXg%3D","line":195,"updated":"2013-07-11 07:14:53.000000000","message":"same - set is not required here","commit_id":"264de36417f41c997986ce1296ec7158bb10c8e5"}],"glance/tests/unit/test_migrations.py":[{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"dc009b202aabf80669d0700a7d3b5b3a7900fca8","unresolved":false,"context_lines":[{"line_number":721,"context_line":"                 [\"checksum\"]),"},{"line_number":722,"context_line":"            ),"},{"line_number":723,"context_line":"        }"},{"line_number":724,"context_line":"        for table_name, indexes in test_data.iteritems():"},{"line_number":725,"context_line":"            meta \u003d sqlalchemy.MetaData()"},{"line_number":726,"context_line":"            meta.bind \u003d engine"},{"line_number":727,"context_line":"            table \u003d sqlalchemy.Table(table_name, meta, autoload\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FzZg%3D","line":724,"updated":"2013-07-11 07:14:53.000000000","message":"you have single index. Why do you use loop here?","commit_id":"264de36417f41c997986ce1296ec7158bb10c8e5"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"59ea2243f271e35801ea5a23412928cd37d3b417","unresolved":false,"context_lines":[{"line_number":720,"context_line":"                (\"checksum_image_idx\","},{"line_number":721,"context_line":"                 [\"checksum\"]),"},{"line_number":722,"context_line":"            ),"},{"line_number":723,"context_line":"        }"},{"line_number":724,"context_line":"        for table_name, indexes in test_data.iteritems():"},{"line_number":725,"context_line":"            meta \u003d sqlalchemy.MetaData()"},{"line_number":726,"context_line":"            meta.bind \u003d engine"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2Fx5A%3D","line":723,"updated":"2013-07-11 15:39:43.000000000","message":"would be good, if you can add another images in the above data set (close to what Victor was saying)","commit_id":"b84c4b4716dc4d901f6a04cde7411ba49ad46512"},{"author":{"_account_id":7701,"name":"Amala Basha","email":"amala.alungal@RACKSPACE.COM","username":"amalabasha"},"change_message_id":"7f9e59762c3f03f46b0b0256d12c616f30cddf52","unresolved":false,"context_lines":[{"line_number":720,"context_line":"                (\"checksum_image_idx\","},{"line_number":721,"context_line":"                 [\"checksum\"]),"},{"line_number":722,"context_line":"            ),"},{"line_number":723,"context_line":"        }"},{"line_number":724,"context_line":"        for table_name, indexes in test_data.iteritems():"},{"line_number":725,"context_line":"            meta \u003d sqlalchemy.MetaData()"},{"line_number":726,"context_line":"            meta.bind \u003d engine"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2Fxyo%3D","line":723,"in_reply_to":"AAAAP3%2F%2Fx5A%3D","updated":"2013-07-11 16:03:00.000000000","message":"This bit just checks the migration bit right, So I\u0027m not sure if having an extra image would help. However I\u0027ve changed the patch to remove the for loops. Does that make sense?","commit_id":"b84c4b4716dc4d901f6a04cde7411ba49ad46512"}],"glance/tests/unit/v2/test_images_resource.py":[{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"b1ce42da9fa0d605aea8e1abaec310b27cb7cee6","unresolved":false,"context_lines":[{"line_number":47,"context_line":"TENANT3 \u003d \u00275a3e60e8-cfa9-4a9e-a90a-62b42cea92b8\u0027"},{"line_number":48,"context_line":"TENANT4 \u003d \u0027c6c87f25-8a94-47ed-8c83-053c25f42df4\u0027"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"CHKSUM \u003d \u0027FAKECHECKSUM\u0027"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def _db_fixture(id, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FaHI%3D","line":50,"updated":"2013-07-02 15:28:18.000000000","message":"same as before","commit_id":"e02cdfa398c64f48c3e577d874c0c9b465fc260d"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"b1ce42da9fa0d605aea8e1abaec310b27cb7cee6","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        actual \u003d set([image.image_id for image in output[\u0027images\u0027]])"},{"line_number":231,"context_line":"        expected \u003d set([UUID1])"},{"line_number":232,"context_line":"        self.assertEqual(actual, expected)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def test_index_size_max_filter(self):"},{"line_number":235,"context_line":"        request \u003d unit_test_utils.get_fake_request(\u0027/images?size_max\u003d512\u0027)"},{"line_number":236,"context_line":"        output \u003d self.controller.index(request, filters\u003d{\u0027size_max\u0027: 512})"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FaG4%3D","line":233,"updated":"2013-07-02 15:28:18.000000000","message":"definitely needs a negative test in the unit test modules","commit_id":"e02cdfa398c64f48c3e577d874c0c9b465fc260d"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"fa9d0de4b9c4496d28f0acfe3d9128d2873ee4d5","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        self.images \u003d ["},{"line_number":125,"context_line":"            _db_fixture(UUID1, owner\u003dTENANT1, checksum\u003dCHKSUM, name\u003d\u00271\u0027,"},{"line_number":126,"context_line":"                        size\u003d256, is_public\u003dTrue,"},{"line_number":127,"context_line":"                        locations\u003d[\u0027%s/%s\u0027 % (BASE_URI, UUID1)]),"},{"line_number":128,"context_line":"            _db_fixture(UUID2, owner\u003dTENANT1, name\u003d\u00272\u0027,"},{"line_number":129,"context_line":"                        size\u003d512, is_public\u003dTrue),"},{"line_number":130,"context_line":"            _db_fixture(UUID3, owner\u003dTENANT3, name\u003d\u00273\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2F16w%3D","line":127,"updated":"2013-07-10 15:14:57.000000000","message":"may be just add in a fixture, please see below","commit_id":"264de36417f41c997986ce1296ec7158bb10c8e5"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"fa9d0de4b9c4496d28f0acfe3d9128d2873ee4d5","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        output \u003d self.controller.index(req, filters\u003d{\u0027checksum\u0027: CHKSUM})"},{"line_number":229,"context_line":"        self.assertEqual(1, len(output[\u0027images\u0027]))"},{"line_number":230,"context_line":"        actual \u003d set([image.image_id for image in output[\u0027images\u0027]])"},{"line_number":231,"context_line":"        expected \u003d set([UUID1])"},{"line_number":232,"context_line":"        self.assertEqual(actual, expected)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def test_index_with__wrong_checksum(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2F17I%3D","line":231,"updated":"2013-07-10 15:14:57.000000000","message":"sorry to be nitpicky here, though I believe it would be better to check for a set with multiple elements (here images) just as we are trying to test a list call.","commit_id":"264de36417f41c997986ce1296ec7158bb10c8e5"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"dc009b202aabf80669d0700a7d3b5b3a7900fca8","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        output \u003d self.controller.index(req, filters\u003d{\u0027checksum\u0027: CHKSUM})"},{"line_number":229,"context_line":"        self.assertEqual(1, len(output[\u0027images\u0027]))"},{"line_number":230,"context_line":"        actual \u003d set([image.image_id for image in output[\u0027images\u0027]])"},{"line_number":231,"context_line":"        expected \u003d set([UUID1])"},{"line_number":232,"context_line":"        self.assertEqual(actual, expected)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def test_index_with__wrong_checksum(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FzX4%3D","line":231,"in_reply_to":"AAAAP3%2F%2F17I%3D","updated":"2013-07-11 07:14:53.000000000","message":"@nikhil +1","commit_id":"264de36417f41c997986ce1296ec7158bb10c8e5"},{"author":{"_account_id":7780,"name":"Jared Culp","email":"jared.culp@rackspace.com","username":"jaredculp"},"change_message_id":"fdd15a69bb303ca369a251de21d29a49b35201a0","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        output \u003d self.controller.index(req, filters\u003d{\u0027checksum\u0027: CHKSUM})"},{"line_number":229,"context_line":"        self.assertEqual(1, len(output[\u0027images\u0027]))"},{"line_number":230,"context_line":"        actual \u003d set([image.image_id for image in output[\u0027images\u0027]])"},{"line_number":231,"context_line":"        expected \u003d set([UUID1])"},{"line_number":232,"context_line":"        self.assertEqual(actual, expected)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def test_index_with__wrong_checksum(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2F15k%3D","line":231,"in_reply_to":"AAAAP3%2F%2F17I%3D","updated":"2013-07-10 15:19:01.000000000","message":"^ +1","commit_id":"264de36417f41c997986ce1296ec7158bb10c8e5"},{"author":{"_account_id":7701,"name":"Amala Basha","email":"amala.alungal@RACKSPACE.COM","username":"amalabasha"},"change_message_id":"8c34b4024be22b4deeb3790768e2f93336bfd15e","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        output \u003d self.controller.index(req, filters\u003d{\u0027checksum\u0027: CHKSUM})"},{"line_number":229,"context_line":"        self.assertEqual(1, len(output[\u0027images\u0027]))"},{"line_number":230,"context_line":"        actual \u003d set([image.image_id for image in output[\u0027images\u0027]])"},{"line_number":231,"context_line":"        expected \u003d set([UUID1])"},{"line_number":232,"context_line":"        self.assertEqual(actual, expected)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def test_index_with__wrong_checksum(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FzNQ%3D","line":231,"in_reply_to":"AAAAP3%2F%2FzX4%3D","updated":"2013-07-11 08:20:36.000000000","message":"Done","commit_id":"264de36417f41c997986ce1296ec7158bb10c8e5"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"dc009b202aabf80669d0700a7d3b5b3a7900fca8","unresolved":false,"context_lines":[{"line_number":234,"context_line":"    def test_index_with__wrong_checksum(self):"},{"line_number":235,"context_line":"        req \u003d unit_test_utils.get_fake_request(\u0027/images?checksum\u003d236231827\u0027)"},{"line_number":236,"context_line":"        output \u003d self.controller.index(req, filters\u003d{\u0027checksum\u0027: \u0027236231827\u0027})"},{"line_number":237,"context_line":"        self.assertEqual(0, len(output[\u0027images\u0027]))"},{"line_number":238,"context_line":"        actual \u003d set([image.image_id for image in output[\u0027images\u0027]])"},{"line_number":239,"context_line":"        expected \u003d set([])"},{"line_number":240,"context_line":"        self.assertEqual(actual, expected)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2FzYI%3D","line":237,"updated":"2013-07-11 07:14:53.000000000","message":"What else do you want to check using assert below? Is it required?","commit_id":"264de36417f41c997986ce1296ec7158bb10c8e5"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"fa9d0de4b9c4496d28f0acfe3d9128d2873ee4d5","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        self.assertEqual(0, len(output[\u0027images\u0027]))"},{"line_number":238,"context_line":"        actual \u003d set([image.image_id for image in output[\u0027images\u0027]])"},{"line_number":239,"context_line":"        expected \u003d set([])"},{"line_number":240,"context_line":"        self.assertEqual(actual, expected)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def test_index_size_max_filter(self):"},{"line_number":243,"context_line":"        request \u003d unit_test_utils.get_fake_request(\u0027/images?size_max\u003d512\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2F168%3D","line":240,"updated":"2013-07-10 15:14:57.000000000","message":"this is ok as we should check for 0 elements in case of mismatch of checksum with all images","commit_id":"264de36417f41c997986ce1296ec7158bb10c8e5"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"97d7d8f1b7ed7e5631830812a48ea9ceb08c7479","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        expected \u003d [UUID3, UUID2]"},{"line_number":241,"context_line":"        self.assertEqual(actual, expected)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def test_index_with__wrong_checksum(self):"},{"line_number":244,"context_line":"        req \u003d unit_test_utils.get_fake_request(\u0027/images?checksum\u003d236231827\u0027)"},{"line_number":245,"context_line":"        output \u003d self.controller.index(req, filters\u003d{\u0027checksum\u0027: \u0027236231827\u0027})"},{"line_number":246,"context_line":"        self.assertEqual(0, len(output[\u0027images\u0027]))"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAP3%2F%2Fq54%3D","line":243,"updated":"2013-07-14 12:46:28.000000000","message":"nit pick: there are two __ between with and wrong i think :) and technically the checksums are not wrong, but they dont exist :)","commit_id":"377d62af14958a71dbae277cc82cf5c6b0badee7"}]}
