)]}'
{"glance/db/registry/api.py":[{"author":{"_account_id":22448,"name":"Alexander Bashmakov","email":"abashmak@yahoo.com","username":"abashmak"},"change_message_id":"8ba2aadcfe45072947dbd9d9adf6556ea9becd12","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            return True"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    # Perform tests based on whether we have an owner"},{"line_number":108,"context_line":"    if context.owner is not None:"},{"line_number":109,"context_line":"        if context.owner \u003d\u003d image[\u0027owner\u0027]:"},{"line_number":110,"context_line":"            return True"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        # Figure out if this image is shared with that tenant"},{"line_number":113,"context_line":"        members \u003d image_member_find(context,"}],"source_content_type":"text/x-python","patch_set":28,"id":"9a89bdaa_6dbc89bb","line":110,"range":{"start_line":108,"start_character":3,"end_line":110,"end_character":23},"updated":"2016-09-07 21:33:02.000000000","message":"Question: in what context would a \u0027community\u0027 or \u0027shared\u0027 image be visible?","commit_id":"a1ba70397674acbaa43660bb8f960da7025616f5"},{"author":{"_account_id":22448,"name":"Alexander Bashmakov","email":"abashmak@yahoo.com","username":"abashmak"},"change_message_id":"7bfcb6220a049f993010b5752464a1fd76f24c31","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            return True"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    # Perform tests based on whether we have an owner"},{"line_number":108,"context_line":"    if context.owner is not None:"},{"line_number":109,"context_line":"        if context.owner \u003d\u003d image[\u0027owner\u0027]:"},{"line_number":110,"context_line":"            return True"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        # Figure out if this image is shared with that tenant"},{"line_number":113,"context_line":"        members \u003d image_member_find(context,"}],"source_content_type":"text/x-python","patch_set":28,"id":"9a89bdaa_7c1ef570","line":110,"range":{"start_line":108,"start_character":3,"end_line":110,"end_character":23},"in_reply_to":"9a89bdaa_5b085bda","updated":"2016-09-08 00:23:47.000000000","message":"Thanks for the explanation. Perhaps it\u0027d be good to reference the above spec in the commit message?","commit_id":"a1ba70397674acbaa43660bb8f960da7025616f5"},{"author":{"_account_id":17043,"name":"Timothy Symanczyk","email":"tim@symanczyk.com","username":"timothy_symanczyk"},"change_message_id":"24a0936a2570a2ec1a17081cdc9d474a44553853","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            return True"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    # Perform tests based on whether we have an owner"},{"line_number":108,"context_line":"    if context.owner is not None:"},{"line_number":109,"context_line":"        if context.owner \u003d\u003d image[\u0027owner\u0027]:"},{"line_number":110,"context_line":"            return True"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        # Figure out if this image is shared with that tenant"},{"line_number":113,"context_line":"        members \u003d image_member_find(context,"}],"source_content_type":"text/x-python","patch_set":28,"id":"9a89bdaa_5b085bda","line":110,"range":{"start_line":108,"start_character":3,"end_line":110,"end_character":23},"in_reply_to":"9a89bdaa_6dbc89bb","updated":"2016-09-07 22:10:00.000000000","message":"The complete list of visibilities and what they mean in context is listed in the spec\u0027s \"Proposed Change\" section starting at line 72. https://review.openstack.org/#/c/271019/23/specs/newton/approved/glance/community_visibility.rst\n\nPlease also note that this change has nothing to do with any of the new visibility values - it is only changing how the value is stored. All functionality, when this change is complete, will be 100% backwards compatible.","commit_id":"a1ba70397674acbaa43660bb8f960da7025616f5"}],"glance/db/simple/api.py":[{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"46288ec78f0c394f69fb8a0d8e5d7efadcb6ef54","unresolved":false,"context_lines":[{"line_number":689,"context_line":""},{"line_number":690,"context_line":"    allowed_keys \u003d set([\u0027id\u0027, \u0027name\u0027, \u0027status\u0027, \u0027min_ram\u0027, \u0027min_disk\u0027, \u0027size\u0027,"},{"line_number":691,"context_line":"                        \u0027virtual_size\u0027, \u0027checksum\u0027, \u0027locations\u0027, \u0027owner\u0027,"},{"line_number":692,"context_line":"                        \u0027protected\u0027, \u0027is_public\u0027, \u0027visibility\u0027,"},{"line_number":693,"context_line":"                        \u0027container_format\u0027, \u0027disk_format\u0027, \u0027created_at\u0027,"},{"line_number":694,"context_line":"                        \u0027updated_at\u0027, \u0027deleted\u0027, \u0027deleted_at\u0027, \u0027properties\u0027,"},{"line_number":695,"context_line":"                        \u0027tags\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_d99ac36d","line":692,"range":{"start_line":692,"start_character":37,"end_line":692,"end_character":48},"updated":"2016-07-20 05:06:44.000000000","message":"is there a reason why you allow is_public here?","commit_id":"c0e5080da0484512b7e526ad0ecb943de25890e6"},{"author":{"_account_id":17043,"name":"Timothy Symanczyk","email":"tim@symanczyk.com","username":"timothy_symanczyk"},"change_message_id":"e27beeef208159f871820cb6c69cfc8b54ae6c90","unresolved":false,"context_lines":[{"line_number":689,"context_line":""},{"line_number":690,"context_line":"    allowed_keys \u003d set([\u0027id\u0027, \u0027name\u0027, \u0027status\u0027, \u0027min_ram\u0027, \u0027min_disk\u0027, \u0027size\u0027,"},{"line_number":691,"context_line":"                        \u0027virtual_size\u0027, \u0027checksum\u0027, \u0027locations\u0027, \u0027owner\u0027,"},{"line_number":692,"context_line":"                        \u0027protected\u0027, \u0027is_public\u0027, \u0027visibility\u0027,"},{"line_number":693,"context_line":"                        \u0027container_format\u0027, \u0027disk_format\u0027, \u0027created_at\u0027,"},{"line_number":694,"context_line":"                        \u0027updated_at\u0027, \u0027deleted\u0027, \u0027deleted_at\u0027, \u0027properties\u0027,"},{"line_number":695,"context_line":"                        \u0027tags\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_e61ed2b9","line":692,"range":{"start_line":692,"start_character":37,"end_line":692,"end_character":48},"in_reply_to":"dada55a8_d99ac36d","updated":"2016-07-20 21:28:22.000000000","message":"Mistake. Fixed.","commit_id":"c0e5080da0484512b7e526ad0ecb943de25890e6"}],"glance/db/sqlalchemy/api.py":[{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"46288ec78f0c394f69fb8a0d8e5d7efadcb6ef54","unresolved":false,"context_lines":[{"line_number":274,"context_line":"    if image[\u0027owner\u0027] is None:"},{"line_number":275,"context_line":"        return True"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    # Image is_public \u003d\u003d image visible"},{"line_number":278,"context_line":"    if (image[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027):"},{"line_number":279,"context_line":"        return True"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_b97eef16","line":277,"range":{"start_line":277,"start_character":12,"end_line":277,"end_character":21},"updated":"2016-07-20 05:06:44.000000000","message":"be mindful of this comment","commit_id":"c0e5080da0484512b7e526ad0ecb943de25890e6"},{"author":{"_account_id":17043,"name":"Timothy Symanczyk","email":"tim@symanczyk.com","username":"timothy_symanczyk"},"change_message_id":"e27beeef208159f871820cb6c69cfc8b54ae6c90","unresolved":false,"context_lines":[{"line_number":274,"context_line":"    if image[\u0027owner\u0027] is None:"},{"line_number":275,"context_line":"        return True"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    # Image is_public \u003d\u003d image visible"},{"line_number":278,"context_line":"    if (image[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027):"},{"line_number":279,"context_line":"        return True"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_668142c3","line":277,"range":{"start_line":277,"start_character":12,"end_line":277,"end_character":21},"in_reply_to":"dada55a8_b97eef16","updated":"2016-07-20 21:28:22.000000000","message":"Good catch. Fixed.","commit_id":"c0e5080da0484512b7e526ad0ecb943de25890e6"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"bd554fa5ab7ac4f961bb4e8e15ea5c4ac5c26089","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    if not is_image_mutable(context, image_ref):"},{"line_number":135,"context_line":"        LOG.warn(_LW(\"Attempted to modify image user did not own.\"))"},{"line_number":136,"context_line":"        msg \u003d _(\"You do not own this image\")"},{"line_number":137,"context_line":"        if image_ref.visibility \u003d\u003d \u0027public\u0027:"},{"line_number":138,"context_line":"            exc_class \u003d exception.ForbiddenPublicImage"},{"line_number":139,"context_line":"        else:"},{"line_number":140,"context_line":"            exc_class \u003d exception.Forbidden"}],"source_content_type":"text/x-python","patch_set":26,"id":"1ac06dbe_57260569","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":44},"updated":"2016-08-19 16:18:57.000000000","message":"so the translation into visibility isn\u0027t straightforward:\n\nfor example a user may be able to modify shared or community image (not sure how much we want to allow that though)","commit_id":"16e02d628bd57836c0103f20b8100631395c458a"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"d874a070038e32540a441adb025ad892ef35b183","unresolved":false,"context_lines":[{"line_number":460,"context_line":"        if is_public:"},{"line_number":461,"context_line":"            image_conditions.append(models.Image.visibility \u003d\u003d \u0027public\u0027)"},{"line_number":462,"context_line":"        else:"},{"line_number":463,"context_line":"            image_conditions.append(models.Image.visibility \u003d\u003d \u0027private\u0027)"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    if \u0027checksum\u0027 in filters:"},{"line_number":466,"context_line":"        checksum \u003d filters.pop(\u0027checksum\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"3ac371cc_3cd61ef1","line":463,"updated":"2016-08-18 02:51:39.000000000","message":"I guess, though, if we do not want to assume the visibility to be just private when is_public is False. It could be shared or community too now.","commit_id":"16e02d628bd57836c0103f20b8100631395c458a"},{"author":{"_account_id":17043,"name":"Timothy Symanczyk","email":"tim@symanczyk.com","username":"timothy_symanczyk"},"change_message_id":"acd59352e2ca936237eaea2b32615f408db8cd0e","unresolved":false,"context_lines":[{"line_number":460,"context_line":"        if is_public:"},{"line_number":461,"context_line":"            image_conditions.append(models.Image.visibility \u003d\u003d \u0027public\u0027)"},{"line_number":462,"context_line":"        else:"},{"line_number":463,"context_line":"            image_conditions.append(models.Image.visibility \u003d\u003d \u0027private\u0027)"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    if \u0027checksum\u0027 in filters:"},{"line_number":466,"context_line":"        checksum \u003d filters.pop(\u0027checksum\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"3ac371cc_5c7accbd","line":463,"in_reply_to":"3ac371cc_3cd61ef1","updated":"2016-08-18 15:42:21.000000000","message":"Certainly. My plan was to introduce the alternate values here in the subsequent changesets that enable them. Since this changeset is intended to be entirely a refactor with no additional functionality, I thought this was a safe assumption for now.","commit_id":"16e02d628bd57836c0103f20b8100631395c458a"},{"author":{"_account_id":22448,"name":"Alexander Bashmakov","email":"abashmak@yahoo.com","username":"abashmak"},"change_message_id":"8ba2aadcfe45072947dbd9d9adf6556ea9becd12","unresolved":false,"context_lines":[{"line_number":456,"context_line":"    prop_conditions \u003d []"},{"line_number":457,"context_line":"    tag_conditions \u003d []"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"    if is_public is not None:"},{"line_number":460,"context_line":"        if is_public:"},{"line_number":461,"context_line":"            image_conditions.append(models.Image.visibility \u003d\u003d \u0027public\u0027)"},{"line_number":462,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":28,"id":"9a89bdaa_ed6b391c","line":459,"range":{"start_line":459,"start_character":0,"end_line":459,"end_character":29},"updated":"2016-09-07 21:33:02.000000000","message":"Would be good to add in here Nikhil\u0027s note from registry/api.py, line 96.","commit_id":"a1ba70397674acbaa43660bb8f960da7025616f5"}],"glance/db/sqlalchemy/migrate_repo/versions/045_add_visibility.py":[{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"a121078e5462cd6f212e80dec9a33313d859a56c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    images.update(values\u003d{\u0027visibility\u0027: \u0027public\u0027}).where("},{"line_number":35,"context_line":"        images.c.is_public).execute()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    images.c.is_public.drop()"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_dc8bd166","line":37,"range":{"start_line":37,"start_character":4,"end_line":37,"end_character":10},"updated":"2016-07-20 05:37:15.000000000","message":"I commented out this line and ran a single test. The result is posted on the overall comments section.\n\nMy current analysis is that the insert is missing something that I need to further dig into.","commit_id":"c0e5080da0484512b7e526ad0ecb943de25890e6"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"1dcec7bc74d437d97923b62ec6711e0156d54bf2","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    images.update(values\u003d{\u0027visibility\u0027: \u0027public\u0027}).where("},{"line_number":35,"context_line":"        images.c.is_public).execute()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    images.c.is_public.drop()"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_2c38c43c","line":37,"range":{"start_line":37,"start_character":4,"end_line":37,"end_character":29},"updated":"2016-07-21 00:23:50.000000000","message":"This may be why it fails this way:\n\nhttp://lists.openstack.org/pipermail/openstack-dev/2014-August/043615.html","commit_id":"a3900ad55865f812d9275eed4d42218966b94dc7"}],"glance/tests/unit/test_migrations.py":[{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"46288ec78f0c394f69fb8a0d8e5d7efadcb6ef54","unresolved":false,"context_lines":[{"line_number":1837,"context_line":""},{"line_number":1838,"context_line":"    def _check_045(self, engine, data):"},{"line_number":1839,"context_line":"        images \u003d db_utils.get_table(engine, \u0027images\u0027)"},{"line_number":1840,"context_line":"        self.assertIn(\u0027visibility\u0027, images.c)"},{"line_number":1841,"context_line":""},{"line_number":1842,"context_line":"        # TODO(tsymanczyk): do real testing here"},{"line_number":1843,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_39b83fc8","line":1840,"range":{"start_line":1840,"start_character":8,"end_line":1840,"end_character":12},"updated":"2016-07-20 05:06:44.000000000","message":"how about is_public not being there?","commit_id":"c0e5080da0484512b7e526ad0ecb943de25890e6"},{"author":{"_account_id":17043,"name":"Timothy Symanczyk","email":"tim@symanczyk.com","username":"timothy_symanczyk"},"change_message_id":"e27beeef208159f871820cb6c69cfc8b54ae6c90","unresolved":false,"context_lines":[{"line_number":1837,"context_line":""},{"line_number":1838,"context_line":"    def _check_045(self, engine, data):"},{"line_number":1839,"context_line":"        images \u003d db_utils.get_table(engine, \u0027images\u0027)"},{"line_number":1840,"context_line":"        self.assertIn(\u0027visibility\u0027, images.c)"},{"line_number":1841,"context_line":""},{"line_number":1842,"context_line":"        # TODO(tsymanczyk): do real testing here"},{"line_number":1843,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_46d4febb","line":1840,"range":{"start_line":1840,"start_character":8,"end_line":1840,"end_character":12},"in_reply_to":"dada55a8_39b83fc8","updated":"2016-07-20 21:28:22.000000000","message":"Added.","commit_id":"c0e5080da0484512b7e526ad0ecb943de25890e6"}],"glance/tests/unit/v2/test_registry_api.py":[{"author":{"_account_id":17043,"name":"Timothy Symanczyk","email":"tim@symanczyk.com","username":"timothy_symanczyk"},"change_message_id":"b9539d904b5aee8bc020cadf7aace975fe778760","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        req.method \u003d \"POST\""},{"line_number":231,"context_line":"        cmd \u003d [{"},{"line_number":232,"context_line":"            \u0027command\u0027: \u0027image_get_all\u0027,"},{"line_number":233,"context_line":"            \u0027kwargs\u0027: {\u0027marker\u0027: UUID4, \u0027filters\u0027: {\u0027visibility\u0027: \u0027public\u0027}},"},{"line_number":234,"context_line":"        }]"},{"line_number":235,"context_line":"        req.body \u003d jsonutils.dump_as_bytes(cmd)"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"9a89bdaa_acf5eaed","line":233,"updated":"2016-09-12 17:19:51.000000000","message":"This is almost certainly wrong.\n\nA change that\u0027s intended to be 100% backwards compatible, when done correctly, should require changing how calls were previously invoked.","commit_id":"4c8fa1ebc13d7b8a826429e943890bd887099185"}]}
