)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"3292edd8d1dc03a1e189234e6bdd676d17b0bbeb","unresolved":true,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2021-08-02 04:44:10 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add member-get command"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the missing member get command."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Closes-Bug: #1938154"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"a864d526_f81df256","line":9,"range":{"start_line":8,"start_character":0,"end_line":9,"end_character":47},"updated":"2021-08-02 05:34:15.000000000","message":"It is observed that python-glanceclient was missing support for GET /v2/image/{image_id}/member/{member_id} API. This patch adds new command `member-get` to support this missing operation.","commit_id":"11e8a68a8fe9a20719db26d772f12c4c67610c42"}],"glanceclient/tests/unit/v2/test_members.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"3292edd8d1dc03a1e189234e6bdd676d17b0bbeb","unresolved":true,"context_lines":[{"line_number":102,"context_line":"        self.assertEqual(MEMBER, image_members[0].member_id)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def test_get_image_members(self):"},{"line_number":105,"context_line":"        image_id \u003d IMAGE"},{"line_number":106,"context_line":"        member_id \u003d MEMBER"},{"line_number":107,"context_line":"        image_member \u003d self.controller.get(image_id, member_id)"},{"line_number":108,"context_line":"        self.assertEqual(IMAGE, image_member.image_id)"},{"line_number":109,"context_line":"        self.assertEqual(MEMBER, image_member.member_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"2ae4c16d_4dddfbc3","line":106,"range":{"start_line":105,"start_character":0,"end_line":106,"end_character":26},"updated":"2021-08-02 05:34:15.000000000","message":"No need of this as you can directly use IMAGE and MEMBER at line 107","commit_id":"11e8a68a8fe9a20719db26d772f12c4c67610c42"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"1c0513b37693c93e5576504f5198093bd5af785d","unresolved":true,"context_lines":[{"line_number":102,"context_line":"        self.assertEqual(MEMBER, image_members[0].member_id)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def test_get_image_members(self):"},{"line_number":105,"context_line":"        image_id \u003d IMAGE"},{"line_number":106,"context_line":"        member_id \u003d MEMBER"},{"line_number":107,"context_line":"        image_member \u003d self.controller.get(image_id, member_id)"},{"line_number":108,"context_line":"        self.assertEqual(IMAGE, image_member.image_id)"},{"line_number":109,"context_line":"        self.assertEqual(MEMBER, image_member.member_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"f339b46b_2caed250","line":106,"range":{"start_line":105,"start_character":0,"end_line":106,"end_character":26},"in_reply_to":"2ae4c16d_4dddfbc3","updated":"2021-08-02 06:18:54.000000000","message":"This is similar to implementation in other methods, see L#99 and L#112-113, i don\u0027t see a good use of this assignment either so we should refactor other methods in a followup patch.","commit_id":"11e8a68a8fe9a20719db26d772f12c4c67610c42"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"11f9f9f847bbf71a77306875776cb4c1b454c726","unresolved":true,"context_lines":[{"line_number":102,"context_line":"        self.assertEqual(MEMBER, image_members[0].member_id)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def test_get_image_members(self):"},{"line_number":105,"context_line":"        image_id \u003d IMAGE"},{"line_number":106,"context_line":"        member_id \u003d MEMBER"},{"line_number":107,"context_line":"        image_member \u003d self.controller.get(image_id, member_id)"},{"line_number":108,"context_line":"        self.assertEqual(IMAGE, image_member.image_id)"},{"line_number":109,"context_line":"        self.assertEqual(MEMBER, image_member.member_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"b17b8f12_2564e00d","line":106,"range":{"start_line":105,"start_character":0,"end_line":106,"end_character":26},"in_reply_to":"f339b46b_2caed250","updated":"2021-08-02 08:03:56.000000000","message":"Yes that we can do it in different patch, but we can always do correct things in current patch.","commit_id":"11e8a68a8fe9a20719db26d772f12c4c67610c42"}],"glanceclient/v2/shell.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"05e0c73b0ebe720664e498300bf7f946a8f668bf","unresolved":true,"context_lines":[{"line_number":501,"context_line":"           help\u003d_(\u0027Tenant to display.\u0027))"},{"line_number":502,"context_line":"def do_member_get(gc, args):"},{"line_number":503,"context_line":"    \"\"\"Describe an image member\"\"\""},{"line_number":504,"context_line":"    if not (args.image_id and args.member_id):"},{"line_number":505,"context_line":"        utils.exit(\u0027Unable to find member. Specify image_id and member_id\u0027)"},{"line_number":506,"context_line":"    else:"},{"line_number":507,"context_line":"        member \u003d gc.image_members.get(args.image_id, args.member_id)"},{"line_number":508,"context_line":"        member \u003d [member]"}],"source_content_type":"text/x-python","patch_set":1,"id":"5175fdb4_fd62ce21","line":505,"range":{"start_line":504,"start_character":4,"end_line":505,"end_character":75},"updated":"2021-07-29 17:54:49.000000000","message":"Remove this.\nSince we are already accepting positional arguments, this case will never occur.","commit_id":"071ed37eea5b2766bca046bfd3306e5fe8d622f7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"05e0c73b0ebe720664e498300bf7f946a8f668bf","unresolved":true,"context_lines":[{"line_number":505,"context_line":"        utils.exit(\u0027Unable to find member. Specify image_id and member_id\u0027)"},{"line_number":506,"context_line":"    else:"},{"line_number":507,"context_line":"        member \u003d gc.image_members.get(args.image_id, args.member_id)"},{"line_number":508,"context_line":"        member \u003d [member]"},{"line_number":509,"context_line":"        columns \u003d [\u0027Image ID\u0027, \u0027Member ID\u0027, \u0027Status\u0027]"},{"line_number":510,"context_line":"        utils.print_list(member, columns)"},{"line_number":511,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"a6bbca77_d12f980c","line":508,"range":{"start_line":508,"start_character":8,"end_line":508,"end_character":25},"updated":"2021-07-29 17:54:49.000000000","message":"Remove this.\nThis information is of a particular resource and not a list of resources so no need of doing this. also see comment below.","commit_id":"071ed37eea5b2766bca046bfd3306e5fe8d622f7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"05e0c73b0ebe720664e498300bf7f946a8f668bf","unresolved":true,"context_lines":[{"line_number":506,"context_line":"    else:"},{"line_number":507,"context_line":"        member \u003d gc.image_members.get(args.image_id, args.member_id)"},{"line_number":508,"context_line":"        member \u003d [member]"},{"line_number":509,"context_line":"        columns \u003d [\u0027Image ID\u0027, \u0027Member ID\u0027, \u0027Status\u0027]"},{"line_number":510,"context_line":"        utils.print_list(member, columns)"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"@utils.arg(\u0027image_id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"089a2ccf_60297276","line":509,"range":{"start_line":509,"start_character":0,"end_line":509,"end_character":53},"updated":"2021-07-29 17:54:49.000000000","message":"Remove this.\nColumns are required for list and not dict.\nAlso jfyi, these columns should be specific to the response attributes of the object returned.\nYou can check the attributes returned in the object or refer to the api-ref response.","commit_id":"071ed37eea5b2766bca046bfd3306e5fe8d622f7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"05e0c73b0ebe720664e498300bf7f946a8f668bf","unresolved":true,"context_lines":[{"line_number":507,"context_line":"        member \u003d gc.image_members.get(args.image_id, args.member_id)"},{"line_number":508,"context_line":"        member \u003d [member]"},{"line_number":509,"context_line":"        columns \u003d [\u0027Image ID\u0027, \u0027Member ID\u0027, \u0027Status\u0027]"},{"line_number":510,"context_line":"        utils.print_list(member, columns)"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"@utils.arg(\u0027image_id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"},{"line_number":513,"context_line":"           help\u003d_(\u0027Image from which to remove member.\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"32b9160b_cf9f8be9","line":510,"range":{"start_line":510,"start_character":33,"end_line":510,"end_character":40},"updated":"2021-07-29 17:54:49.000000000","message":"No need to pass columns in print_dict","commit_id":"071ed37eea5b2766bca046bfd3306e5fe8d622f7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"05e0c73b0ebe720664e498300bf7f946a8f668bf","unresolved":true,"context_lines":[{"line_number":507,"context_line":"        member \u003d gc.image_members.get(args.image_id, args.member_id)"},{"line_number":508,"context_line":"        member \u003d [member]"},{"line_number":509,"context_line":"        columns \u003d [\u0027Image ID\u0027, \u0027Member ID\u0027, \u0027Status\u0027]"},{"line_number":510,"context_line":"        utils.print_list(member, columns)"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"@utils.arg(\u0027image_id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"},{"line_number":513,"context_line":"           help\u003d_(\u0027Image from which to remove member.\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"8c57b7da_93ac4532","line":510,"range":{"start_line":510,"start_character":14,"end_line":510,"end_character":24},"updated":"2021-07-29 17:54:49.000000000","message":"this should be print_dict","commit_id":"071ed37eea5b2766bca046bfd3306e5fe8d622f7"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"3292edd8d1dc03a1e189234e6bdd676d17b0bbeb","unresolved":true,"context_lines":[{"line_number":498,"context_line":"@utils.arg(\u0027image_id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027,"},{"line_number":499,"context_line":"           help\u003d_(\u0027Image from which to display member.\u0027))"},{"line_number":500,"context_line":"@utils.arg(\u0027member_id\u0027, metavar\u003d\u0027\u003cMEMBER_ID\u003e\u0027,"},{"line_number":501,"context_line":"           help\u003d_(\u0027Tenant to display.\u0027))"},{"line_number":502,"context_line":"def do_member_get(gc, args):"},{"line_number":503,"context_line":"    \"\"\"Show details of an image member\"\"\""},{"line_number":504,"context_line":"    member \u003d gc.image_members.get(args.image_id, args.member_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc0b253_296a1e97","line":501,"range":{"start_line":501,"start_character":19,"end_line":501,"end_character":25},"updated":"2021-08-02 05:34:15.000000000","message":"I think we now use term Project instead of Tenant.","commit_id":"11e8a68a8fe9a20719db26d772f12c4c67610c42"}]}
