)]}'
{"glanceclient/v1/shell.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"c73f7394854e35a5601a6bb9516e606dda33ecba","unresolved":false,"context_lines":[{"line_number":394,"context_line":"    utils.print_list(members, columns)"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"@utils.arg(\u0027image\u0027, metavar\u003d\u0027\u003cIMAGE\u003e\u0027,"},{"line_number":398,"context_line":"           help\u003d\u0027Image to add member to.\u0027)"},{"line_number":399,"context_line":"@utils.arg(\u0027tenant_id\u0027, metavar\u003d\u0027\u003cTENANT_ID\u003e\u0027,"},{"line_number":400,"context_line":"           help\u003d\u0027Tenant to add as member\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_672404af","line":397,"updated":"2015-06-19 21:25:43.000000000","message":"What if we make image and tenant_id nargs\u003d\u0027+\u0027? I don\u0027t like the idea of having 2 arguments - one for the image and one for the tenant - and then also 2 optional parameters to append more images and tenants.","commit_id":"dcbeaa7bfca18c80ccb2814262d50128d370fac1"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"27960694485d2cde6d9cbb6b3f235081a02fdfdd","unresolved":false,"context_lines":[{"line_number":394,"context_line":"    utils.print_list(members, columns)"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"@utils.arg(\u0027image\u0027, metavar\u003d\u0027\u003cIMAGE\u003e\u0027,"},{"line_number":398,"context_line":"           help\u003d\u0027Image to add member to.\u0027)"},{"line_number":399,"context_line":"@utils.arg(\u0027tenant_id\u0027, metavar\u003d\u0027\u003cTENANT_ID\u003e\u0027,"},{"line_number":400,"context_line":"           help\u003d\u0027Tenant to add as member\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_81b3220a","line":397,"in_reply_to":"fa32b979_672404af","updated":"2015-06-22 04:00:41.000000000","message":"+1\n\nI don\u0027t like the idea to support multi images and multi members. I\u0027m ok if you can remove the new parameters and only leveraging the action\u003d\u0027append\u0027 of argparse for and only for tenant-id.","commit_id":"dcbeaa7bfca18c80ccb2814262d50128d370fac1"},{"author":{"_account_id":12114,"name":"Kent Wang","email":"kent.wang@intel.com","username":"k.wang"},"change_message_id":"21ae4fc56a850e1315cef5fab0898e86ecb7f12a","unresolved":false,"context_lines":[{"line_number":394,"context_line":"    utils.print_list(members, columns)"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"@utils.arg(\u0027image\u0027, metavar\u003d\u0027\u003cIMAGE\u003e\u0027,"},{"line_number":398,"context_line":"           help\u003d\u0027Image to add member to.\u0027)"},{"line_number":399,"context_line":"@utils.arg(\u0027tenant_id\u0027, metavar\u003d\u0027\u003cTENANT_ID\u003e\u0027,"},{"line_number":400,"context_line":"           help\u003d\u0027Tenant to add as member\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a26ad4f_96035342","line":397,"in_reply_to":"fa32b979_81b3220a","updated":"2015-10-29 16:46:38.000000000","message":"I tried both image and tenant_id nargs\u003d\u0027+\u0027 at first, but then shell cannot recognize which are images and tenants. \n\nI think Fei Long\u0027s idea to support only multi tenants can work. I\u0027ll submit a new patch to address it.","commit_id":"dcbeaa7bfca18c80ccb2814262d50128d370fac1"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"7027f9322596e51f2a16c7a8e99f30d4dc42d1c3","unresolved":false,"context_lines":[{"line_number":409,"context_line":""},{"line_number":410,"context_line":"@utils.arg(\u0027image\u0027, metavar\u003d\u0027\u003cIMAGE\u003e\u0027,"},{"line_number":411,"context_line":"           help\u003d\u0027Image to add member to.\u0027)"},{"line_number":412,"context_line":"@utils.arg(\u0027tenants\u0027, metavar\u003d\u0027\u003cTENANT_ID\u003e\u0027, nargs\u003d\u0027+\u0027,"},{"line_number":413,"context_line":"           help\u003d\u0027Tenants to add as members.\u0027)"},{"line_number":414,"context_line":"@utils.arg(\u0027--can-share\u0027, action\u003d\u0027store_true\u0027, default\u003dFalse,"},{"line_number":415,"context_line":"           help\u003d\u0027Allow the specified tenant to share this image.\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a710552_1caa611a","line":412,"updated":"2015-12-14 19:09:38.000000000","message":"tenant_ids would make it clear that these are expected to be IDs, not names.","commit_id":"a30852c5113e95774b2d154dbd99466de9a4702f"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"7864a516ad225ca6bbda1ad2faddf7d1abfb140c","unresolved":false,"context_lines":[{"line_number":409,"context_line":""},{"line_number":410,"context_line":"@utils.arg(\u0027image\u0027, metavar\u003d\u0027\u003cIMAGE\u003e\u0027,"},{"line_number":411,"context_line":"           help\u003d\u0027Image to add member to.\u0027)"},{"line_number":412,"context_line":"@utils.arg(\u0027tenants\u0027, metavar\u003d\u0027\u003cTENANT_ID\u003e\u0027, nargs\u003d\u0027+\u0027,"},{"line_number":413,"context_line":"           help\u003d\u0027Tenants to add as members.\u0027)"},{"line_number":414,"context_line":"@utils.arg(\u0027--can-share\u0027, action\u003d\u0027store_true\u0027, default\u003dFalse,"},{"line_number":415,"context_line":"           help\u003d\u0027Allow the specified tenant to share this image.\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a710552_5b6225da","line":412,"in_reply_to":"5a710552_1caa611a","updated":"2015-12-14 22:46:05.000000000","message":"We should have a patch that deprecates `tenants` in favor of `projects`... definitely not this one, though.","commit_id":"a30852c5113e95774b2d154dbd99466de9a4702f"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"7027f9322596e51f2a16c7a8e99f30d4dc42d1c3","unresolved":false,"context_lines":[{"line_number":416,"context_line":"def do_member_create(gc, args):"},{"line_number":417,"context_line":"    \"\"\"Share a specific image with tenant(s).\"\"\""},{"line_number":418,"context_line":"    image \u003d utils.find_resource(gc.images, args.image)"},{"line_number":419,"context_line":"    for args_tenant in args.tenants:"},{"line_number":420,"context_line":"        gc.image_members.create(image, args_tenant, args.can_share)"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a710552_3c7e3daf","line":419,"updated":"2015-12-14 19:09:38.000000000","message":"for tenant_id in args.tenant_ids:","commit_id":"a30852c5113e95774b2d154dbd99466de9a4702f"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"d9c12da9c04e7150d60e63c8b6727520bfbf81d3","unresolved":false,"context_lines":[{"line_number":417,"context_line":"    \"\"\"Share a specific image with tenant(s).\"\"\""},{"line_number":418,"context_line":"    image \u003d utils.find_resource(gc.images, args.image)"},{"line_number":419,"context_line":"    for args_tenant in args.tenants:"},{"line_number":420,"context_line":"        gc.image_members.create(image, args_tenant, args.can_share)"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"@utils.arg(\u0027image\u0027, metavar\u003d\u0027\u003cIMAGE\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_703f8287","line":420,"updated":"2015-11-06 09:16:10.000000000","message":"I am thinking about cases when tenant_id is not correct.\nShould we execute the operation for other tenants or not? I think it would be useful. Also we need to print more information about tenants that has been added before we found incorrect tenant.","commit_id":"a30852c5113e95774b2d154dbd99466de9a4702f"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"7027f9322596e51f2a16c7a8e99f30d4dc42d1c3","unresolved":false,"context_lines":[{"line_number":417,"context_line":"    \"\"\"Share a specific image with tenant(s).\"\"\""},{"line_number":418,"context_line":"    image \u003d utils.find_resource(gc.images, args.image)"},{"line_number":419,"context_line":"    for args_tenant in args.tenants:"},{"line_number":420,"context_line":"        gc.image_members.create(image, args_tenant, args.can_share)"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"@utils.arg(\u0027image\u0027, metavar\u003d\u0027\u003cIMAGE\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a710552_dc17f952","line":420,"in_reply_to":"fa80f949_703f8287","updated":"2015-12-14 19:09:38.000000000","message":"So, wrap this with a try/except and log exceptions for each attempt? ++","commit_id":"a30852c5113e95774b2d154dbd99466de9a4702f"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"7027f9322596e51f2a16c7a8e99f30d4dc42d1c3","unresolved":false,"context_lines":[{"line_number":422,"context_line":""},{"line_number":423,"context_line":"@utils.arg(\u0027image\u0027, metavar\u003d\u0027\u003cIMAGE\u003e\u0027,"},{"line_number":424,"context_line":"           help\u003d\u0027Image from which to remove member.\u0027)"},{"line_number":425,"context_line":"@utils.arg(\u0027tenants\u0027, metavar\u003d\u0027\u003cTENANT_ID\u003e\u0027, nargs\u003d\u0027+\u0027,"},{"line_number":426,"context_line":"           help\u003d\u0027Tenants to remove as members.\u0027)"},{"line_number":427,"context_line":"def do_member_delete(gc, args):"},{"line_number":428,"context_line":"    \"\"\"Remove a shared image from tenant(s).\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a710552_fc3515f7","line":425,"updated":"2015-12-14 19:09:38.000000000","message":"same as above","commit_id":"a30852c5113e95774b2d154dbd99466de9a4702f"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"d9c12da9c04e7150d60e63c8b6727520bfbf81d3","unresolved":false,"context_lines":[{"line_number":428,"context_line":"    \"\"\"Remove a shared image from tenant(s).\"\"\""},{"line_number":429,"context_line":"    image_id \u003d utils.find_resource(gc.images, args.image).id"},{"line_number":430,"context_line":"    for args_tenant in args.tenants:"},{"line_number":431,"context_line":"        gc.image_members.delete(image_id, args_tenant)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_700d42e7","line":431,"updated":"2015-11-06 09:16:10.000000000","message":"Same, it might be hard to understand what tenant has been applied if one of tenants are incorrect.","commit_id":"a30852c5113e95774b2d154dbd99466de9a4702f"}]}
