)]}'
{"glanceclient/v2/image_members.py":[{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"9979a735df0369834556202c0cdec5aefa93e343","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    def list(self, image_id):"},{"line_number":25,"context_line":"        url \u003d \u0027/v2/images/%s/members\u0027 % image_id"},{"line_number":26,"context_line":"        resp, body \u003d self.http_client.json_request(\u0027GET\u0027, url)"},{"line_number":27,"context_line":"        #NOTE(isethi): remove \u0027self\u0027 for now until we have an elegant"},{"line_number":28,"context_line":"        # way to pass it into the model constructor without conflict"},{"line_number":29,"context_line":"        for member in body[\u0027members\u0027]:"},{"line_number":30,"context_line":"            yield self.model(member)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAN3%2F%2F%2Bbs%3D","line":27,"updated":"2013-03-04 21:15:15.000000000","message":"I\u0027m not sure I understand what this NOTE means","commit_id":"9f85c2af2ff464099ece1d375ab08d6eec893f58"}],"glanceclient/v2/shell.py":[{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"9979a735df0369834556202c0cdec5aefa93e343","unresolved":false,"context_lines":[{"line_number":88,"context_line":"def do_member_create(gc, args):"},{"line_number":89,"context_line":"    \"\"\"Create member for a given image.\"\"\""},{"line_number":90,"context_line":"    if not (args.image_id and args.member_id):"},{"line_number":91,"context_line":"        print \u0027Unable to create member. Specify image_id and member_id\u0027"},{"line_number":92,"context_line":"    else:"},{"line_number":93,"context_line":"        member \u003d gc.image_members.create(args.image_id, args.member_id)"},{"line_number":94,"context_line":"        member \u003d [member]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAN3%2F%2F%2BbA%3D","line":91,"updated":"2013-03-04 21:15:15.000000000","message":"I think these prints should use utils.exit so that the script returns with an exit code of 1 saying there was a problem.","commit_id":"9f85c2af2ff464099ece1d375ab08d6eec893f58"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"a2fcff0fa3c0984ca80954ff3200383026f8f592","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    utils.print_dict(image)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"@utils.arg(\u0027--image-id\u0027, metavar\u003d\u0027\u003cIMAGE_ID\u003e\u0027, required\u003dTrue,"},{"line_number":53,"context_line":"           help\u003d\u0027Image to display members of.\u0027)"},{"line_number":54,"context_line":"def do_member_list(gc, args):"},{"line_number":55,"context_line":"    \"\"\"Describe sharing permissions by image\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2FccU%3D","line":52,"updated":"2013-05-09 14:54:13.000000000","message":"FWIW, it doesn\u0027t make sense to me. This command is not consistent with the other commands since it is using optional argument\u0027s as required instead of positional.","commit_id":"18795f590ae3d63bb6c796ec9d69a2ceac61606e"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"a2fcff0fa3c0984ca80954ff3200383026f8f592","unresolved":false,"context_lines":[{"line_number":65,"context_line":"           help\u003d\u0027Tenant to remove as member\u0027)"},{"line_number":66,"context_line":"def do_member_delete(gc, args):"},{"line_number":67,"context_line":"    \"\"\"Delete image member\"\"\""},{"line_number":68,"context_line":"    if not (args.image_id and args.member_id):"},{"line_number":69,"context_line":"        utils.exit(\u0027Unable to delete member. Specify image_id and member_id\u0027)"},{"line_number":70,"context_line":"    else:"},{"line_number":71,"context_line":"        gc.image_members.delete(args.image_id, args.member_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2FcWY%3D","line":68,"updated":"2013-05-09 14:54:13.000000000","message":"Hey :)\n\nwhat about setting positional args as required as welll so that we can avoid this if?","commit_id":"18795f590ae3d63bb6c796ec9d69a2ceac61606e"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"47b680c10feeac4110fc6f275cd80d8f786ac548","unresolved":false,"context_lines":[{"line_number":65,"context_line":"           help\u003d\u0027Tenant to remove as member\u0027)"},{"line_number":66,"context_line":"def do_member_delete(gc, args):"},{"line_number":67,"context_line":"    \"\"\"Delete image member\"\"\""},{"line_number":68,"context_line":"    if not (args.image_id and args.member_id):"},{"line_number":69,"context_line":"        utils.exit(\u0027Unable to delete member. Specify image_id and member_id\u0027)"},{"line_number":70,"context_line":"    else:"},{"line_number":71,"context_line":"        gc.image_members.delete(args.image_id, args.member_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2Fae4%3D","line":68,"in_reply_to":"AAAAOn%2F%2FcJU%3D","updated":"2013-05-10 12:32:24.000000000","message":"Yeah right, and that\u0027s actually why we wanted them as well. Never mind, I guess I had optional args in mind when I wrote this. :)","commit_id":"18795f590ae3d63bb6c796ec9d69a2ceac61606e"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"0155448f26ec8e65da559f70605afd3c3c02f611","unresolved":false,"context_lines":[{"line_number":65,"context_line":"           help\u003d\u0027Tenant to remove as member\u0027)"},{"line_number":66,"context_line":"def do_member_delete(gc, args):"},{"line_number":67,"context_line":"    \"\"\"Delete image member\"\"\""},{"line_number":68,"context_line":"    if not (args.image_id and args.member_id):"},{"line_number":69,"context_line":"        utils.exit(\u0027Unable to delete member. Specify image_id and member_id\u0027)"},{"line_number":70,"context_line":"    else:"},{"line_number":71,"context_line":"        gc.image_members.delete(args.image_id, args.member_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2FcJU%3D","line":68,"in_reply_to":"AAAAOn%2F%2FcWY%3D","updated":"2013-05-09 16:20:39.000000000","message":"http://docs.python.org/release/2.4.2/lib/optparse-what-positional-arguments-for.html\n\nI think positional args are by default required, i may be wrong..","commit_id":"18795f590ae3d63bb6c796ec9d69a2ceac61606e"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"a2fcff0fa3c0984ca80954ff3200383026f8f592","unresolved":false,"context_lines":[{"line_number":79,"context_line":"           help\u003d\u0027Updated status of member\u0027)"},{"line_number":80,"context_line":"def do_member_update(gc, args):"},{"line_number":81,"context_line":"    \"\"\"Update the status of a member for a given image.\"\"\""},{"line_number":82,"context_line":"    if not (args.image_id and args.member_id and args.member_status):"},{"line_number":83,"context_line":"        utils.exit(\u0027Unable to update member. Specify image_id, member_id and\u0027"},{"line_number":84,"context_line":"                   \u0027 member_status\u0027)"},{"line_number":85,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2FcWg%3D","line":82,"updated":"2013-05-09 14:54:13.000000000","message":"ditto","commit_id":"18795f590ae3d63bb6c796ec9d69a2ceac61606e"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"a2fcff0fa3c0984ca80954ff3200383026f8f592","unresolved":false,"context_lines":[{"line_number":96,"context_line":"           help\u003d\u0027Tenant to add as member\u0027)"},{"line_number":97,"context_line":"def do_member_create(gc, args):"},{"line_number":98,"context_line":"    \"\"\"Create member for a given image.\"\"\""},{"line_number":99,"context_line":"    if not (args.image_id and args.member_id):"},{"line_number":100,"context_line":"        utils.exit(\u0027Unable to create member. Specify image_id and member_id\u0027)"},{"line_number":101,"context_line":"    else:"},{"line_number":102,"context_line":"        member \u003d gc.image_members.create(args.image_id, args.member_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAOn%2F%2FcWU%3D","line":99,"updated":"2013-05-09 14:54:13.000000000","message":"ditto","commit_id":"18795f590ae3d63bb6c796ec9d69a2ceac61606e"}],"tests/v2/test_members.py":[{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"9979a735df0369834556202c0cdec5aefa93e343","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAN3%2F%2F%2BaU%3D","line":1,"updated":"2013-03-04 21:15:15.000000000","message":"bah wrong year :P","commit_id":"9f85c2af2ff464099ece1d375ab08d6eec893f58"}]}
