)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"af7bff1aaf885a34daa714cfda29a3cdad75e13b","unresolved":false,"context_lines":[{"line_number":11,"context_line":"takes three parameters."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I2bc9294ede6d6de0f00b3481779c47db9db90180"},{"line_number":14,"context_line":"Closes-bug: 1553987"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a061dce_386d3305","line":14,"updated":"2016-04-04 14:19:58.000000000","message":"Please use \nCloses-Bug: #\u003cbug id\u003e.","commit_id":"f28c98dd9d9e25786c7f0b743ab46c87883599c0"}],"glanceclient/tests/unit/v1/test_image_members.py":[{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"c49a9bd7ac3f8e752f7bc6a385fd99081d55482c","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        info \u003d {\u0027image_id\u0027: \u00271\u0027, u\u0027can_share\u0027: False, u\u0027member_id\u0027: u\u00271\u0027}"},{"line_number":89,"context_line":"        mgr_base \u003d glanceclient.v1.image_members.ImageMember(self.api, info)"},{"line_number":90,"context_line":"        member \u003d mgr_base.get()"},{"line_number":91,"context_line":"        self.assertEqual(None, member)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def test_delete(self):"},{"line_number":94,"context_line":"        self.mgr.delete(\u00271\u0027, \u00271\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afc51ec_11210ffc","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":38},"updated":"2016-03-12 12:12:22.000000000","message":"I suggest a little more assrt here, lie this:\nexpect \u003d [(\u0027GET\u0027, \u0027/v1/images/1/members/1\u0027, {}, None)]\nself.assertEqual(expect, self.api.calls)","commit_id":"3e05dfacf060224affd65028ec142dec6bc5a852"},{"author":{"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},"change_message_id":"b3a116207fd71ecd40fb5663fe505b2d152b3441","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.assertEqual(\u00271\u0027, member.image_id)"},{"line_number":85,"context_line":"        self.assertEqual(False, member.can_share)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_ImageMember_class_get(self):"},{"line_number":88,"context_line":"        info \u003d {\u0027image_id\u0027: \u00271\u0027, \u0027can_share\u0027: False, \u0027member_id\u0027: \u00271\u0027}"},{"line_number":89,"context_line":"        mgr_base \u003d glanceclient.v1.image_members.ImageMember(self.mgr, info)"},{"line_number":90,"context_line":"        mgr_base.get()"}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_776cba9c","line":87,"range":{"start_line":87,"start_character":13,"end_line":87,"end_character":24},"updated":"2016-05-13 13:23:17.000000000","message":"nit: Typically upper case is not used here.","commit_id":"9e8facafadb102eea050c4c83ea0eca072353e79"}],"glanceclient/v1/image_members.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"238d2d96c18da317b84ffb4f13d93c25f7bd75ad","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def get(self):"},{"line_number":31,"context_line":"        # overwrite Resource\u0027s get()"},{"line_number":32,"context_line":"        pass"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class ImageMemberManager(base.ManagerWithFind):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afc51ec_dfb98230","line":32,"updated":"2016-03-11 20:27:14.000000000","message":"Shouldn\u0027t this return `self`? or at least call `self.manager.get(...)`?","commit_id":"63ce683dfac4eef3c6e40223f57664c2c7396ae6"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"443ea2bfe52b4e3f1c5d63c7d9f34872cd6f0a36","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def get(self):"},{"line_number":31,"context_line":"        # overwrite Resource\u0027s get()."},{"line_number":32,"context_line":"        self.set_loaded(True)"},{"line_number":33,"context_line":"        if not hasattr(self.manager, \u0027get\u0027):"},{"line_number":34,"context_line":"            return"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        new \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afc51ec_719e9357","line":33,"range":{"start_line":33,"start_character":8,"end_line":33,"end_character":44},"updated":"2016-03-12 11:59:51.000000000","message":"The ImageMemberManager always has a get() function, so this test is not necessary.","commit_id":"3e05dfacf060224affd65028ec142dec6bc5a852"},{"author":{"_account_id":17795,"name":"PanFengyun","email":"pan_feng_yun@163.com","username":"panfy"},"change_message_id":"e10c2f7f1446a1e1e5b0c90a141954a60a0ab3ea","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def get(self):"},{"line_number":31,"context_line":"        # overwrite Resource\u0027s get()."},{"line_number":32,"context_line":"        self.set_loaded(True)"},{"line_number":33,"context_line":"        if not hasattr(self.manager, \u0027get\u0027):"},{"line_number":34,"context_line":"            return"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        new \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afc51ec_f4ec352b","line":33,"range":{"start_line":33,"start_character":8,"end_line":33,"end_character":44},"in_reply_to":"3afc51ec_719e9357","updated":"2016-03-14 09:33:50.000000000","message":"you are right.","commit_id":"3e05dfacf060224affd65028ec142dec6bc5a852"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"443ea2bfe52b4e3f1c5d63c7d9f34872cd6f0a36","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            return"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        new \u003d []"},{"line_number":37,"context_line":"        # The method GET is not allowed."},{"line_number":38,"context_line":"        try:"},{"line_number":39,"context_line":"            new \u003d self.manager.get(self.image_id, self.member_id)"},{"line_number":40,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afc51ec_f1aaa36f","line":37,"range":{"start_line":37,"start_character":8,"end_line":37,"end_character":40},"updated":"2016-03-12 11:59:51.000000000","message":"I don\u0027t understand this line, you mean: The method GET *is* allowed?","commit_id":"3e05dfacf060224affd65028ec142dec6bc5a852"},{"author":{"_account_id":17795,"name":"PanFengyun","email":"pan_feng_yun@163.com","username":"panfy"},"change_message_id":"e10c2f7f1446a1e1e5b0c90a141954a60a0ab3ea","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            return"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        new \u003d []"},{"line_number":37,"context_line":"        # The method GET is not allowed."},{"line_number":38,"context_line":"        try:"},{"line_number":39,"context_line":"            new \u003d self.manager.get(self.image_id, self.member_id)"},{"line_number":40,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afc51ec_5427e963","line":37,"range":{"start_line":37,"start_character":8,"end_line":37,"end_character":40},"in_reply_to":"3afc51ec_f1aaa36f","updated":"2016-03-14 09:33:50.000000000","message":"if called the get(), would get the following message:\nglanceclient.exc.HTTPMethodNotAllowed: 405 Method Not Allowed: The method GET is not allowed for this resource.  (HTTP 405)\n\nMaybe use \u0027pass\u0027 better?","commit_id":"3e05dfacf060224affd65028ec142dec6bc5a852"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"46654398ed28a3b13d6c26a13dd3a93e1aaacfa8","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        new \u003d []"},{"line_number":37,"context_line":"        # The method GET is not allowed."},{"line_number":38,"context_line":"        try:"},{"line_number":39,"context_line":"            new \u003d self.manager.get(self.image_id, self.member_id)"},{"line_number":40,"context_line":"        except Exception:"},{"line_number":41,"context_line":"            pass"},{"line_number":42,"context_line":"        if new:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_a342560e","line":39,"updated":"2016-03-30 13:17:19.000000000","message":"why is it called new? Could we use more meaningful name?","commit_id":"3e05dfacf060224affd65028ec142dec6bc5a852"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"46654398ed28a3b13d6c26a13dd3a93e1aaacfa8","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        try:"},{"line_number":39,"context_line":"            new \u003d self.manager.get(self.image_id, self.member_id)"},{"line_number":40,"context_line":"        except Exception:"},{"line_number":41,"context_line":"            pass"},{"line_number":42,"context_line":"        if new:"},{"line_number":43,"context_line":"            self._add_details(new._info)"},{"line_number":44,"context_line":"            self._add_details("}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_4309badc","line":41,"updated":"2016-03-30 13:17:19.000000000","message":"Could you please explain why do we have this except here? Usually this detects design flaws but I am wondering why do we beed to catch everything here.","commit_id":"3e05dfacf060224affd65028ec142dec6bc5a852"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"b4992be308422d2fbfbddad803465d43dffd780d","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        if imageMember:"},{"line_number":36,"context_line":"            self._add_details(imageMember._info)"},{"line_number":37,"context_line":"            self._add_details("},{"line_number":38,"context_line":"                {\u0027x_request_id\u0027: self.manager.client.last_request_id})"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class ImageMemberManager(base.ManagerWithFind):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a061dce_97ed4428","line":38,"updated":"2016-04-04 07:20:39.000000000","message":"Does that require https://review.openstack.org/#/c/287628/?\nIn this case then you need to rebase on that patch.","commit_id":"f28c98dd9d9e25786c7f0b743ab46c87883599c0"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"26afdefcb9c37af1ec9a00b02831dc86ca9d56a6","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        if imageMember:"},{"line_number":36,"context_line":"            self._add_details(imageMember._info)"},{"line_number":37,"context_line":"            self._add_details("},{"line_number":38,"context_line":"                {\u0027x_request_id\u0027: self.manager.client.last_request_id})"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class ImageMemberManager(base.ManagerWithFind):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a061dce_7ae7b540","line":38,"in_reply_to":"9a061dce_97ed4428","updated":"2016-04-04 07:52:47.000000000","message":"I think so.","commit_id":"f28c98dd9d9e25786c7f0b743ab46c87883599c0"},{"author":{"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},"change_message_id":"b3a116207fd71ecd40fb5663fe505b2d152b3441","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def get(self):"},{"line_number":31,"context_line":"        # overwrite Resource\u0027s get()."},{"line_number":32,"context_line":"        self.set_loaded(True)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        imageMember \u003d self.manager.get(self.image_id, self.member_id)"},{"line_number":35,"context_line":"        if imageMember:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_5aed5bb6","line":32,"updated":"2016-05-13 13:23:17.000000000","message":"Resource also has this here:\n\n        if not hasattr(self.manager, \u0027get\u0027):\n            return","commit_id":"9e8facafadb102eea050c4c83ea0eca072353e79"}]}
