)]}'
{"glance/db/simple/api.py":[{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"1f4922ddad71950549310e9da740d54125ba2bdf","unresolved":false,"context_lines":[{"line_number":430,"context_line":""},{"line_number":431,"context_line":"@log_call"},{"line_number":432,"context_line":"def image_tag_get_all(context, image_id):"},{"line_number":433,"context_line":"    _image_get(context, image_id)"},{"line_number":434,"context_line":"    return DATA[\u0027tags\u0027].get(image_id, [])"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FZww%3D","side":"PARENT","line":433,"updated":"2013-07-02 17:18:30.000000000","message":"I think maybe this line was here to raise a NotFound if an image does not exist. Could be missing some test coverage on this.","commit_id":"faff61161e3687634958ec291e57a53004c16c57"},{"author":{"_account_id":7703,"name":"Venkatesh Sampath","email":"venkatesh.sampath@outlook.com","username":"venkateshsampath"},"change_message_id":"9d49bee742037fdfca543bf93016a1ca55661be7","unresolved":false,"context_lines":[{"line_number":430,"context_line":""},{"line_number":431,"context_line":"@log_call"},{"line_number":432,"context_line":"def image_tag_get_all(context, image_id):"},{"line_number":433,"context_line":"    _image_get(context, image_id)"},{"line_number":434,"context_line":"    return DATA[\u0027tags\u0027].get(image_id, [])"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FXM4%3D","side":"PARENT","line":433,"in_reply_to":"AAAAPn%2F%2FZww%3D","updated":"2013-07-03 09:42:07.000000000","message":"Alex, I do not think we are missing any test coverage.\n\nIf we check, sqlalchemy.api.image_tag_get_all() function, we are not throwing NotFound exception (if image does not exist) instead, a empty list is returned.\n\nI tried to emulate the same logic for simpledb.api.image_tag_get_all() to return an empty list instead of NotFound exception. \n\nAlso because, the _image_get() function call (in this case) does not pass \u0027force_show_deleted \u003d True\u0027, it became literally impossible to assert the deletion of the relevant image tags. For a deleted image, the image_tag_get_all() function would always throw NotFound exception.","commit_id":"faff61161e3687634958ec291e57a53004c16c57"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"6091ebdd2fd1efab9e3b3729e00d9110348f1665","unresolved":false,"context_lines":[{"line_number":424,"context_line":"        DATA[\u0027images\u0027][image_id][\u0027deleted\u0027] \u003d True"},{"line_number":425,"context_line":"        DATA[\u0027images\u0027][image_id][\u0027deleted_at\u0027] \u003d timeutils.utcnow()"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"        tags \u003d image_tag_get_all(context, image_id)"},{"line_number":428,"context_line":"        for tag in tags:"},{"line_number":429,"context_line":"            image_tag_delete(context, image_id, tag)"},{"line_number":430,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FaUo%3D","line":427,"updated":"2013-07-02 14:32:54.000000000","message":"should we be deleting image properties here too? and image members?","commit_id":"a7a8f1f7c3dfa63a796ba2069c5b620d648503f0"}],"glance/tests/functional/db/base.py":[{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"6091ebdd2fd1efab9e3b3729e00d9110348f1665","unresolved":false,"context_lines":[{"line_number":560,"context_line":"                          self.context, UUID3)"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"        tags \u003d self.db_api.image_tag_get_all(self.context, UUID3)"},{"line_number":563,"context_line":"        self.assertEquals([], tags)"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"    def test_image_get_multiple_members(self):"},{"line_number":566,"context_line":"        TENANT1 \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FaTk%3D","line":563,"updated":"2013-07-02 14:32:54.000000000","message":"could you please add in similar checks for properties and members?","commit_id":"a7a8f1f7c3dfa63a796ba2069c5b620d648503f0"},{"author":{"_account_id":7780,"name":"Jared Culp","email":"jared.culp@rackspace.com","username":"jaredculp"},"change_message_id":"0700b9227e0be1bc3132654db5c8b924ad0282e4","unresolved":false,"context_lines":[{"line_number":551,"context_line":"        fixture \u003d {\u0027name\u0027: \u0027ping\u0027, \u0027value\u0027: \u0027pong\u0027, \u0027image_id\u0027: UUID3}"},{"line_number":552,"context_line":"        prop \u003d self.db_api.image_property_create(self.context, fixture)"},{"line_number":553,"context_line":"        TENANT2 \u003d uuidutils.generate_uuid()"},{"line_number":554,"context_line":"        fixture \u003d {\u0027image_id\u0027: UUID3, \u0027member\u0027: TENANT2, \u0027can_share\u0027: False}"},{"line_number":555,"context_line":"        member \u003d self.db_api.image_member_create(self.context, fixture)"},{"line_number":556,"context_line":"        self.db_api.image_tag_create(self.context, UUID3, \u0027snarf\u0027)"},{"line_number":557,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2F2HA%3D","line":554,"updated":"2013-07-10 14:37:32.000000000","message":"why reuse the variable name \"fixture\" here?","commit_id":"fe5068b875f0670dc78457d5cdeb092e7e48fd70"},{"author":{"_account_id":7780,"name":"Jared Culp","email":"jared.culp@rackspace.com","username":"jaredculp"},"change_message_id":"0700b9227e0be1bc3132654db5c8b924ad0282e4","unresolved":false,"context_lines":[{"line_number":556,"context_line":"        self.db_api.image_tag_create(self.context, UUID3, \u0027snarf\u0027)"},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"        self.assertEquals((\u0027ping\u0027, UUID3, False),"},{"line_number":559,"context_line":"                          (prop[\u0027name\u0027], prop[\u0027image_id\u0027], prop[\u0027deleted\u0027]))"},{"line_number":560,"context_line":"        self.assertEquals((TENANT2, UUID3),"},{"line_number":561,"context_line":"                          (member[\u0027member\u0027], member[\u0027image_id\u0027]))"},{"line_number":562,"context_line":"        self.assertEqual([\u0027snarf\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2F2Gk%3D","line":559,"updated":"2013-07-10 14:37:32.000000000","message":"check prop[\u0027value\u0027] as well?","commit_id":"fe5068b875f0670dc78457d5cdeb092e7e48fd70"},{"author":{"_account_id":7780,"name":"Jared Culp","email":"jared.culp@rackspace.com","username":"jaredculp"},"change_message_id":"0700b9227e0be1bc3132654db5c8b924ad0282e4","unresolved":false,"context_lines":[{"line_number":557,"context_line":""},{"line_number":558,"context_line":"        self.assertEquals((\u0027ping\u0027, UUID3, False),"},{"line_number":559,"context_line":"                          (prop[\u0027name\u0027], prop[\u0027image_id\u0027], prop[\u0027deleted\u0027]))"},{"line_number":560,"context_line":"        self.assertEquals((TENANT2, UUID3),"},{"line_number":561,"context_line":"                          (member[\u0027member\u0027], member[\u0027image_id\u0027]))"},{"line_number":562,"context_line":"        self.assertEqual([\u0027snarf\u0027],"},{"line_number":563,"context_line":"                         self.db_api.image_tag_get_all(self.context, UUID3))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2F2Gg%3D","line":560,"updated":"2013-07-10 14:37:32.000000000","message":"check member[\u0027can_share\u0027] as well?","commit_id":"fe5068b875f0670dc78457d5cdeb092e7e48fd70"}]}
