)]}'
{"keystoneclient/v2_0/shell.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"31db548443cd10c89b99b7dd2d3752efeaad0b06","unresolved":false,"context_lines":[{"line_number":53,"context_line":"@utils.arg(\u0027--email\u0027, metavar\u003d\u0027\u003cemail\u003e\u0027, nargs\u003d\u0027?\u0027,"},{"line_number":54,"context_line":"           help\u003d\u0027New desired email address.\u0027)"},{"line_number":55,"context_line":"@utils.arg(\u0027--enabled\u0027, metavar\u003d\u0027\u003cemail\u003e\u0027, nargs\u003d\u0027?\u0027, default\u003dTrue,"},{"line_number":56,"context_line":"           help\u003d\u0027Enable (true) or Disable (false) user.\u0027)"},{"line_number":57,"context_line":"def do_user_update(kc, args):"},{"line_number":58,"context_line":"    \"\"\"Update user\u0027s name, email, and enabled status.\"\"\""},{"line_number":59,"context_line":"    user \u003d kc.users.update(args.id, name\u003dargs.name, email\u003dargs.email,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F4Ho%3D","line":56,"updated":"2012-02-22 00:02:11.000000000","message":"This might conflict with my user-update branch.","commit_id":"83ce82837cff2af3cbce4d4d2dce017fcdef107a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"31db548443cd10c89b99b7dd2d3752efeaad0b06","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cuser_id\u003e\u0027, help\u003d\u0027User ID to update.\u0027)"},{"line_number":65,"context_line":"@utils.arg(\u0027--password\u0027, metavar\u003d\u0027\u003cpassword\u003e\u0027, help\u003d\u0027New desired password.\u0027,"},{"line_number":66,"context_line":"                         required\u003dTrue)"},{"line_number":67,"context_line":"def do_user_password_update(kc, args):"},{"line_number":68,"context_line":"    \"\"\"Update user password.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F4I4%3D","line":65,"updated":"2012-02-22 00:02:11.000000000","message":"In this specific case, it would be better to offer up a protected password prompt. We can still allow it on the command line, but not make it required.","commit_id":"83ce82837cff2af3cbce4d4d2dce017fcdef107a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"31db548443cd10c89b99b7dd2d3752efeaad0b06","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"@utils.arg(\u0027--name\u0027, metavar\u003d\u0027\u003ctenant_name\u003e\u0027, nargs\u003d\u0027?\u0027,"},{"line_number":106,"context_line":"           help\u003d\u0027Desired name of tenant.\u0027, required\u003dTrue)"},{"line_number":107,"context_line":"@utils.arg(\u0027--description\u0027, metavar\u003d\u0027\u003cdescription\u003e\u0027, nargs\u003d\u0027?\u0027, default\u003dNone,"},{"line_number":108,"context_line":"           help\u003d\u0027Desired description of tenant\u0027)"},{"line_number":109,"context_line":"@utils.arg(\u0027--enabled\u0027, metavar\u003d\u0027\u003cTrue/False\u003e\u0027, nargs\u003d\u0027?\u0027, const\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F4I0%3D","line":106,"updated":"2012-02-22 00:02:11.000000000","message":"This shouldn\u0027t be required.","commit_id":"83ce82837cff2af3cbce4d4d2dce017fcdef107a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"31db548443cd10c89b99b7dd2d3752efeaad0b06","unresolved":false,"context_lines":[{"line_number":197,"context_line":"@utils.arg(\u0027--user\u0027, metavar\u003d\u0027\u003cuser_id\u003e\u0027, help\u003d\u0027ID of User\u0027, required\u003dTrue)"},{"line_number":198,"context_line":"@utils.arg(\u0027--role\u0027, metavar\u003d\u0027\u003crole_id\u003e\u0027, help\u003d\u0027ID of Role\u0027, required\u003dTrue)"},{"line_number":199,"context_line":"@utils.arg(\u0027--tenant_id\u0027, metavar\u003d\u0027\u003ctenant_id\u003e\u0027,"},{"line_number":200,"context_line":"           help\u003d\u0027ID of Tenant\u0027, nargs\u003d\u0027?\u0027, required\u003dTrue)"},{"line_number":201,"context_line":"def do_user_add_role(kc, args):"},{"line_number":202,"context_line":"    \"\"\"Add role to user\"\"\""},{"line_number":203,"context_line":"    kc.roles.add_user_role(args.user, args.role, args.tenant_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F4Is%3D","line":200,"updated":"2012-02-22 00:02:11.000000000","message":"Is tenant actually required here?","commit_id":"83ce82837cff2af3cbce4d4d2dce017fcdef107a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"31db548443cd10c89b99b7dd2d3752efeaad0b06","unresolved":false,"context_lines":[{"line_number":207,"context_line":"@utils.arg(\u0027--user\u0027, metavar\u003d\u0027\u003cuser_id\u003e\u0027, help\u003d\u0027ID of User\u0027, required\u003dTrue)"},{"line_number":208,"context_line":"@utils.arg(\u0027--role\u0027, metavar\u003d\u0027\u003crole_id\u003e\u0027, help\u003d\u0027ID of Role\u0027, required\u003dTrue)"},{"line_number":209,"context_line":"@utils.arg(\u0027--tenant_id\u0027, metavar\u003d\u0027\u003ctenant_id\u003e\u0027,"},{"line_number":210,"context_line":"           help\u003d\u0027ID of Tenant\u0027, nargs\u003d\u0027?\u0027, required\u003dTrue)"},{"line_number":211,"context_line":"def do_user_remove_role(kc, args):"},{"line_number":212,"context_line":"    \"\"\"Remove role from user.\"\"\""},{"line_number":213,"context_line":"    kc.roles.remove_user_role(args.user, args.role, args.tenant_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F4Iw%3D","line":210,"updated":"2012-02-22 00:02:11.000000000","message":"Is tenant actually required here?","commit_id":"83ce82837cff2af3cbce4d4d2dce017fcdef107a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"31db548443cd10c89b99b7dd2d3752efeaad0b06","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                          required\u003dTrue)"},{"line_number":218,"context_line":"@utils.arg(\u0027--user\u0027, metavar\u003d\u0027\u003cuser_id\u003e\u0027, help\u003d\u0027ID of User\u0027, required\u003dTrue)"},{"line_number":219,"context_line":"def do_ec2_create_credentials(kc, args):"},{"line_number":220,"context_line":"    \"\"\"Create x509 credentials for user per tenant.\"\"\""},{"line_number":221,"context_line":"    credentials \u003d kc.ec2.create(args.user, args.tenant_id)"},{"line_number":222,"context_line":"    utils.print_dict(credentials._info)"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F4JY%3D","line":220,"updated":"2012-02-22 00:02:11.000000000","message":"What about this: \n\nCreate EC2-compatibile access credentials.","commit_id":"83ce82837cff2af3cbce4d4d2dce017fcdef107a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"31db548443cd10c89b99b7dd2d3752efeaad0b06","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"@utils.arg(\u0027--user\u0027, metavar\u003d\u0027\u003cuser_id\u003e\u0027, help\u003d\u0027ID of User\u0027)"},{"line_number":226,"context_line":"def do_ec2_credentials_list(kc, args):"},{"line_number":227,"context_line":"    \"\"\"List out user\u0027s x509 credentials.\"\"\""},{"line_number":228,"context_line":"    credentials \u003d kc.ec2.list(args.user)"},{"line_number":229,"context_line":"    for cred in credentials:"},{"line_number":230,"context_line":"        cred.tenant \u003d kc.tenants.get(cred.tenant_id).name"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F4JQ%3D","line":227,"updated":"2012-02-22 00:02:11.000000000","message":"Similar to above, I think it\u0027s misleading to use x509 rather than EC2 in the description.","commit_id":"83ce82837cff2af3cbce4d4d2dce017fcdef107a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"31db548443cd10c89b99b7dd2d3752efeaad0b06","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"@utils.arg(\u0027--service\u0027, metavar\u003d\u0027\u003cservice_type\u003e\u0027,"},{"line_number":242,"context_line":"           help\u003d\u0027Service type to return\u0027, nargs\u003d\u0027?\u0027, default\u003dNone)"},{"line_number":243,"context_line":"def do_catalog_get(kc, args):"},{"line_number":244,"context_line":"    \"\"\"List service catalog, possibly filtered by service\"\"\""},{"line_number":245,"context_line":"    endpoints \u003d kc.service_catalog.get_endpoints(service_type\u003dargs.service)"},{"line_number":246,"context_line":"    for (service, service_endpoints) in endpoints.iteritems():"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAEn%2F%2F4JI%3D","line":243,"updated":"2012-02-22 00:02:11.000000000","message":"Let\u0027s leave this as \u0027catalog\u0027. I would only use \u0027get\u0027 if I were getting a specific item, this lists all entries in the catalog.","commit_id":"83ce82837cff2af3cbce4d4d2dce017fcdef107a"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"40eb27309110bf6a139cf57763121434b88137de","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"@utils.arg(\u0027tenant\u0027, metavar\u003d\u0027\u003ctenant_id\u003e\u0027, nargs\u003d\u0027?\u0027,"},{"line_number":25,"context_line":"           help\u003d\u0027ID of Tenant. (Optional)\u0027, default\u003dNone)"},{"line_number":26,"context_line":"def do_user_list(kc, args):"},{"line_number":27,"context_line":"    \"\"\"List all users.\"\"\""},{"line_number":28,"context_line":"    users \u003d kc.users.list(tenant_id\u003dargs.tenant)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAEn%2F%2F3iE%3D","line":25,"updated":"2012-02-22 19:18:29.000000000","message":"All flags that have required arguments should not have nargs\u003d\u0027?\u0027 included.  This allows the actual argument to be left off and is not detected properly by argparse.  Without nargs, argparse will show a proper usage message for the command.","commit_id":"96f070f5368264b997b181e35fe64c6372cf08ee"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"114ce4a0976488a51c6ed59f69a904b8abbeacda","unresolved":false,"context_lines":[{"line_number":50,"context_line":"           help\u003d\u0027Desired new user name\u0027)"},{"line_number":51,"context_line":"@utils.arg(\u0027--email\u0027, metavar\u003d\u0027\u003cemail\u003e\u0027,"},{"line_number":52,"context_line":"           help\u003d\u0027Desired new email address\u0027)"},{"line_number":53,"context_line":"@utils.arg(\u0027--enabled\u0027, metavar\u003d\u0027\u003ctrue|false\u003e\u0027, default\u003dTrue,"},{"line_number":54,"context_line":"           help\u003d\u0027Enable or disable user\u0027)"},{"line_number":55,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cuser-id\u003e\u0027, help\u003d\u0027User ID to update\u0027)"},{"line_number":56,"context_line":"def do_user_update(kc, args):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAEn%2F%2F2po%3D","line":53,"updated":"2012-02-23 21:59:31.000000000","message":"This should default to true. If the user is disabled and an update call is made without --enabled\u003dFalse, the user will be re-enabled. We don\u0027t want that.","commit_id":"62ff975c84137c1805a20d774e8578aabf9fa2fa"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"d720725d099809be93f8ecf712e250fe163240f5","unresolved":false,"context_lines":[{"line_number":50,"context_line":"           help\u003d\u0027Desired new user name\u0027)"},{"line_number":51,"context_line":"@utils.arg(\u0027--email\u0027, metavar\u003d\u0027\u003cemail\u003e\u0027,"},{"line_number":52,"context_line":"           help\u003d\u0027Desired new email address\u0027)"},{"line_number":53,"context_line":"@utils.arg(\u0027--enabled\u0027, metavar\u003d\u0027\u003ctrue|false\u003e\u0027, default\u003dTrue,"},{"line_number":54,"context_line":"           help\u003d\u0027Enable or disable user\u0027)"},{"line_number":55,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cuser-id\u003e\u0027, help\u003d\u0027User ID to update\u0027)"},{"line_number":56,"context_line":"def do_user_update(kc, args):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAEn%2F%2F2pQ%3D","line":53,"in_reply_to":"AAAAEn%2F%2F2po%3D","updated":"2012-02-23 22:02:12.000000000","message":"This should *not* default to true...","commit_id":"62ff975c84137c1805a20d774e8578aabf9fa2fa"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"114ce4a0976488a51c6ed59f69a904b8abbeacda","unresolved":false,"context_lines":[{"line_number":55,"context_line":"@utils.arg(\u0027id\u0027, metavar\u003d\u0027\u003cuser-id\u003e\u0027, help\u003d\u0027User ID to update\u0027)"},{"line_number":56,"context_line":"def do_user_update(kc, args):"},{"line_number":57,"context_line":"    \"\"\"Update user\u0027s name, email, and enabled status\"\"\""},{"line_number":58,"context_line":"    user \u003d kc.users.update(args.id, name\u003dargs.name, email\u003dargs.email,"},{"line_number":59,"context_line":"                           enabled\u003dargs.enabled)"},{"line_number":60,"context_line":"    utils.print_dict(user._info)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAEn%2F%2F2pg%3D","line":58,"updated":"2012-02-23 21:59:31.000000000","message":"We don\u0027t want to modify these attributes if they weren\u0027t provided in the flags. Can you just pull in my review for this method and I\u0027ll abandon what I have: https://review.openstack.org/#patch,unified,4270,3,keystoneclient/v2_0/shell.py","commit_id":"62ff975c84137c1805a20d774e8578aabf9fa2fa"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"114ce4a0976488a51c6ed59f69a904b8abbeacda","unresolved":false,"context_lines":[{"line_number":56,"context_line":"def do_user_update(kc, args):"},{"line_number":57,"context_line":"    \"\"\"Update user\u0027s name, email, and enabled status\"\"\""},{"line_number":58,"context_line":"    user \u003d kc.users.update(args.id, name\u003dargs.name, email\u003dargs.email,"},{"line_number":59,"context_line":"                           enabled\u003dargs.enabled)"},{"line_number":60,"context_line":"    utils.print_dict(user._info)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAEn%2F%2F2pk%3D","line":59,"updated":"2012-02-23 21:59:31.000000000","message":"wrap args.enabled with a call to utils.string_to_bool","commit_id":"62ff975c84137c1805a20d774e8578aabf9fa2fa"}]}
