)]}'
{"glance/api/v2/__init__.py":[{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"14d0cec881875f76bd8123d9f879976c1969d190","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from glance.common import exception"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def update_image_read_acl(req, store_api, db_api, image):"},{"line_number":22,"context_line":"    \"\"\"Helper function to set ACL permissions on images in the image store\"\"\""},{"line_number":23,"context_line":"    public \u003d image[\u0027is_public\u0027]"},{"line_number":24,"context_line":"    image_id \u003d image[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAANH%2F%2F%2BrM%3D","line":21,"updated":"2013-02-28 19:29:49.000000000","message":"I will probably delete this function soon. It is not used anywhere and doesn\u0027t fit into future plans.","commit_id":"cbdaaaf65d1cf5eb1784d5c2bcb5d66168b8e325"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"13afd7557407aa1ab32a20a298b69210d3a6ae0a","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from glance.common import exception"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def update_image_read_acl(req, store_api, db_api, image):"},{"line_number":22,"context_line":"    \"\"\"Helper function to set ACL permissions on images in the image store\"\"\""},{"line_number":23,"context_line":"    public \u003d image[\u0027is_public\u0027]"},{"line_number":24,"context_line":"    image_id \u003d image[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAANH%2F%2F%2Bnc%3D","line":21,"in_reply_to":"AAAANH%2F%2F%2BrM%3D","updated":"2013-02-28 19:45:31.000000000","message":"Oh, I know.","commit_id":"cbdaaaf65d1cf5eb1784d5c2bcb5d66168b8e325"}],"glance/api/v2/images.py":[{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"14d0cec881875f76bd8123d9f879976c1969d190","unresolved":false,"context_lines":[{"line_number":174,"context_line":"    _disallowed_properties \u003d [\u0027direct_url\u0027, \u0027self\u0027, \u0027file\u0027, \u0027schema\u0027]"},{"line_number":175,"context_line":"    _readonly_properties \u003d [\u0027created_at\u0027, \u0027updated_at\u0027, \u0027status\u0027, \u0027checksum\u0027,"},{"line_number":176,"context_line":"                            \u0027size\u0027, \u0027direct_url\u0027, \u0027self\u0027, \u0027file\u0027, \u0027schema\u0027]"},{"line_number":177,"context_line":"    _reserved_properties \u003d [\u0027owner\u0027, \u0027is_public\u0027, \u0027locations\u0027, \u0027deleted\u0027,"},{"line_number":178,"context_line":"                            \u0027deleted_at\u0027]"},{"line_number":179,"context_line":"    _base_properties \u003d [\u0027checksum\u0027, \u0027created_at\u0027, \u0027container_format\u0027,"},{"line_number":180,"context_line":"                        \u0027disk_format\u0027, \u0027id\u0027, \u0027min_disk\u0027, \u0027min_ram\u0027, \u0027name\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAANH%2F%2F%2Bqk%3D","line":177,"updated":"2013-02-28 19:29:49.000000000","message":"Rather than s/location/locations/, we probably want to add both to the reserved property list.","commit_id":"cbdaaaf65d1cf5eb1784d5c2bcb5d66168b8e325"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"13afd7557407aa1ab32a20a298b69210d3a6ae0a","unresolved":false,"context_lines":[{"line_number":174,"context_line":"    _disallowed_properties \u003d [\u0027direct_url\u0027, \u0027self\u0027, \u0027file\u0027, \u0027schema\u0027]"},{"line_number":175,"context_line":"    _readonly_properties \u003d [\u0027created_at\u0027, \u0027updated_at\u0027, \u0027status\u0027, \u0027checksum\u0027,"},{"line_number":176,"context_line":"                            \u0027size\u0027, \u0027direct_url\u0027, \u0027self\u0027, \u0027file\u0027, \u0027schema\u0027]"},{"line_number":177,"context_line":"    _reserved_properties \u003d [\u0027owner\u0027, \u0027is_public\u0027, \u0027locations\u0027, \u0027deleted\u0027,"},{"line_number":178,"context_line":"                            \u0027deleted_at\u0027]"},{"line_number":179,"context_line":"    _base_properties \u003d [\u0027checksum\u0027, \u0027created_at\u0027, \u0027container_format\u0027,"},{"line_number":180,"context_line":"                        \u0027disk_format\u0027, \u0027id\u0027, \u0027min_disk\u0027, \u0027min_ram\u0027, \u0027name\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAANH%2F%2F%2BnQ%3D","line":177,"in_reply_to":"AAAANH%2F%2F%2Bqk%3D","updated":"2013-02-28 19:45:31.000000000","message":"Yes.","commit_id":"cbdaaaf65d1cf5eb1784d5c2bcb5d66168b8e325"}],"glance/registry/api/v1/images.py":[{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"14d0cec881875f76bd8123d9f879976c1969d190","unresolved":false,"context_lines":[{"line_number":428,"context_line":""},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"def _limit_locations(image):"},{"line_number":431,"context_line":"    locations \u003d image.pop(\u0027locations\u0027, [])"},{"line_number":432,"context_line":"    try:"},{"line_number":433,"context_line":"        image[\u0027location\u0027] \u003d locations[0]"},{"line_number":434,"context_line":"    except IndexError:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAANH%2F%2F%2Brc%3D","line":431,"updated":"2013-02-28 19:29:49.000000000","message":"You could also do this as\n\n  locations \u003d image.pop(\u0027locations\u0027, [None])\n  image[\u0027location\u0027] \u003d locations[0]\n\nand avoid the try block. NBD.","commit_id":"cbdaaaf65d1cf5eb1784d5c2bcb5d66168b8e325"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"13afd7557407aa1ab32a20a298b69210d3a6ae0a","unresolved":false,"context_lines":[{"line_number":428,"context_line":""},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"def _limit_locations(image):"},{"line_number":431,"context_line":"    locations \u003d image.pop(\u0027locations\u0027, [])"},{"line_number":432,"context_line":"    try:"},{"line_number":433,"context_line":"        image[\u0027location\u0027] \u003d locations[0]"},{"line_number":434,"context_line":"    except IndexError:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAANH%2F%2F%2Bmk%3D","line":431,"in_reply_to":"AAAANH%2F%2F%2Brc%3D","updated":"2013-02-28 19:45:31.000000000","message":"Not exactly. The proposed code would fail in the case that image.locations is set to an empty list. I could do this, however:\n\n  locations \u003d image.pop(\u0027locations\u0027, None) or [None]\n\nBut that gets pretty confusing...","commit_id":"cbdaaaf65d1cf5eb1784d5c2bcb5d66168b8e325"}],"glance/store/__init__.py":[{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"14d0cec881875f76bd8123d9f879976c1969d190","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        location, size, checksum \u003d self.store_api.add_to_backend("},{"line_number":350,"context_line":"                self.context, CONF.default_store,"},{"line_number":351,"context_line":"                self.image.image_id, data, size)"},{"line_number":352,"context_line":"        self.image.locations.append(location)"},{"line_number":353,"context_line":"        self.image.size \u003d size"},{"line_number":354,"context_line":"        self.image.checksum \u003d checksum"},{"line_number":355,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAANH%2F%2F%2Bp4%3D","line":352,"updated":"2013-02-28 19:29:49.000000000","message":"I\u0027m not sure this is what we want to do here. Let\u0027s talk about it offline.","commit_id":"cbdaaaf65d1cf5eb1784d5c2bcb5d66168b8e325"},{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"dbe907b936f6c8b73470bbde6be52d3ffb1b9e4b","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        location, size, checksum \u003d self.store_api.add_to_backend("},{"line_number":350,"context_line":"                self.context, CONF.default_store,"},{"line_number":351,"context_line":"                self.image.image_id, data, size)"},{"line_number":352,"context_line":"        self.image.locations \u003d [location]"},{"line_number":353,"context_line":"        self.image.size \u003d size"},{"line_number":354,"context_line":"        self.image.checksum \u003d checksum"},{"line_number":355,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAANH%2F%2F%2BXc%3D","line":352,"updated":"2013-02-28 21:43:40.000000000","message":"I think this makes the most sense for now.","commit_id":"bde9bf01bb4be6aff57f5a558427401514c397af"}],"glance/tests/functional/__init__.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"13afd7557407aa1ab32a20a298b69210d3a6ae0a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"import urlparse"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"from sqlalchemy import create_engine"},{"line_number":37,"context_line":"import tempfile"},{"line_number":38,"context_line":"import testtools"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"from glance.common import utils"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAANH%2F%2F%2Bl4%3D","line":37,"updated":"2013-02-28 19:45:31.000000000","message":"Reverting this as well.","commit_id":"cbdaaaf65d1cf5eb1784d5c2bcb5d66168b8e325"},{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"14d0cec881875f76bd8123d9f879976c1969d190","unresolved":false,"context_lines":[{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def setUp(self):"},{"line_number":465,"context_line":"        super(FunctionalTest, self).setUp()"},{"line_number":466,"context_line":"        self.test_dir \u003d tempfile.mkdtemp(prefix\u003d\u0027glance\u0027, dir\u003d\u0027/tmp\u0027)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"        self.api_protocol \u003d \u0027http\u0027"},{"line_number":469,"context_line":"        self.api_port \u003d get_unused_port()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAANH%2F%2F%2Bpc%3D","line":466,"updated":"2013-02-28 19:29:49.000000000","message":"Did you mean to include this change in the patch?","commit_id":"cbdaaaf65d1cf5eb1784d5c2bcb5d66168b8e325"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"13afd7557407aa1ab32a20a298b69210d3a6ae0a","unresolved":false,"context_lines":[{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def setUp(self):"},{"line_number":465,"context_line":"        super(FunctionalTest, self).setUp()"},{"line_number":466,"context_line":"        self.test_dir \u003d tempfile.mkdtemp(prefix\u003d\u0027glance\u0027, dir\u003d\u0027/tmp\u0027)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"        self.api_protocol \u003d \u0027http\u0027"},{"line_number":469,"context_line":"        self.api_port \u003d get_unused_port()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAANH%2F%2F%2BmI%3D","line":466,"in_reply_to":"AAAANH%2F%2F%2Bpc%3D","updated":"2013-02-28 19:45:31.000000000","message":"Nope. Removing...","commit_id":"cbdaaaf65d1cf5eb1784d5c2bcb5d66168b8e325"}],"glance/tests/functional/v2/test_images.py":[{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"14d0cec881875f76bd8123d9f879976c1969d190","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        response \u003d requests.get(path, headers\u003dheaders)"},{"line_number":276,"context_line":"        self.assertEqual(200, response.status_code)"},{"line_number":277,"context_line":"        images \u003d json.loads(response.text)[\u0027images\u0027]"},{"line_number":278,"context_line":"        print TENANT1"},{"line_number":279,"context_line":"        print TENANT2"},{"line_number":280,"context_line":"        print images"},{"line_number":281,"context_line":"        self.assertEqual(0, len(images))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAANH%2F%2F%2BpQ%3D","line":278,"updated":"2013-02-28 19:29:49.000000000","message":"Did you mean to include this change?","commit_id":"cbdaaaf65d1cf5eb1784d5c2bcb5d66168b8e325"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"13afd7557407aa1ab32a20a298b69210d3a6ae0a","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        response \u003d requests.get(path, headers\u003dheaders)"},{"line_number":276,"context_line":"        self.assertEqual(200, response.status_code)"},{"line_number":277,"context_line":"        images \u003d json.loads(response.text)[\u0027images\u0027]"},{"line_number":278,"context_line":"        print TENANT1"},{"line_number":279,"context_line":"        print TENANT2"},{"line_number":280,"context_line":"        print images"},{"line_number":281,"context_line":"        self.assertEqual(0, len(images))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAANH%2F%2F%2Bls%3D","line":278,"in_reply_to":"AAAANH%2F%2F%2BpQ%3D","updated":"2013-02-28 19:45:31.000000000","message":"Yes, obviously!","commit_id":"cbdaaaf65d1cf5eb1784d5c2bcb5d66168b8e325"}]}
