)]}'
{"magnumclient/v1/quotas_shell.py":[{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"16532133f5f4e11d825db90ce8a6b4ea22948fee","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        _show_quota(quota)"},{"line_number":79,"context_line":"    except Exception as e:"},{"line_number":80,"context_line":"        print(\"Create quota for project_id %(id)s resource %(res)s failed: \""},{"line_number":81,"context_line":"              \"%s\" % {\u0027id\u0027: args.project_id, \u0027res\u0027: args.resource, \u0027e\u0027: e})"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"@utils.arg(\u0027--project-id\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a430d35_4ffcffb7","line":81,"range":{"start_line":81,"start_character":67,"end_line":81,"end_character":73},"updated":"2017-02-09 08:56:11.000000000","message":"no \u0027e\u0027 is defined in formatting.","commit_id":"da8a2d9e7f20394201fcf9036dbe0e4dd257e85e"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"9a7a70f63a531658bf25884536f1c0637750ee76","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        quota \u003d cs.quotas.create(**opts)"},{"line_number":78,"context_line":"        _show_quota(quota)"},{"line_number":79,"context_line":"    except Exception as e:"},{"line_number":80,"context_line":"        print(\"Create quota for project_id %(id)s resource %(res)s failed: \""},{"line_number":81,"context_line":"              \"%(e)s\" % {\u0027id\u0027: args.project_id, \u0027res\u0027: args.resource, \u0027e\u0027: e})"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"@utils.arg(\u0027--project-id\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_b62a0de6","line":81,"range":{"start_line":80,"start_character":0,"end_line":81,"end_character":78},"updated":"2017-02-10 05:58:53.000000000","message":"hmm... \n\nThe exception message is not a complete, why not show `detail` of RESP body?\n\nRESP BODY: {\"errors\": [{\"status\": 400, \"code\": \"client\", \"links\": [], \"title\": \"Invalid input for field/attribute resource\", \"detail\": \"Invalid input for field/attribute resource. Value: \u0027cluster\u0027. Value should be one of: Cluster\", \"request_id\": \"\"}]}\n\nDEBUG (session:640) POST call to container-infra for http://172.16.4.13:9511/v1/quotas used request id req-c71759ff-957d-4224-a143-230f7b487b34\nCreate quota for project_id 3a52d8e4d27647dea793067638bbb3e7 resource cluster failed: Invalid input for field/attribute resource (HTTP 400) (Request-ID: req-c71759ff-957d-4224-a143-230f7b487b34)","commit_id":"2048bce0e93e1c0c745212d24920169e2fce10ed"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"7a6c8c7208dd26e10ae396497d84083d249f3527","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        quota \u003d cs.quotas.create(**opts)"},{"line_number":78,"context_line":"        _show_quota(quota)"},{"line_number":79,"context_line":"    except Exception as e:"},{"line_number":80,"context_line":"        print(\"Create quota for project_id %(id)s resource %(res)s failed: \""},{"line_number":81,"context_line":"              \"%(e)s\" % {\u0027id\u0027: args.project_id, \u0027res\u0027: args.resource, \u0027e\u0027: e})"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"@utils.arg(\u0027--project-id\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_7b94d636","line":81,"range":{"start_line":80,"start_character":0,"end_line":81,"end_character":78},"in_reply_to":"fa31d9ce_b62a0de6","updated":"2017-02-10 22:24:48.000000000","message":"Fixed it.  replace \u0027e\u0027 with \u0027e.details\u0027 which show the full error message.","commit_id":"2048bce0e93e1c0c745212d24920169e2fce10ed"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"9a7a70f63a531658bf25884536f1c0637750ee76","unresolved":false,"context_lines":[{"line_number":89,"context_line":"           required\u003dTrue,"},{"line_number":90,"context_line":"           metavar\u003d\u0027\u003cresource\u003e\u0027,"},{"line_number":91,"context_line":"           help\u003d_(\u0027Resource name\u0027))"},{"line_number":92,"context_line":"def do_quotas_delete(cs, args):"},{"line_number":93,"context_line":"    \"\"\"Delete specified resource quota.\"\"\""},{"line_number":94,"context_line":"    try:"},{"line_number":95,"context_line":"        cs.quotas.delete(args.project_id, args.resource)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_984b7759","line":92,"range":{"start_line":92,"start_character":0,"end_line":92,"end_character":31},"updated":"2017-02-10 05:58:53.000000000","message":"ditto for using id for the operation.","commit_id":"2048bce0e93e1c0c745212d24920169e2fce10ed"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"9a7a70f63a531658bf25884536f1c0637750ee76","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    _show_quota(quota)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"@utils.arg(\u0027--project-id\u0027,"},{"line_number":121,"context_line":"           required\u003dTrue,"},{"line_number":122,"context_line":"           metavar\u003d\u0027\u003cproject-id\u003e\u0027,"},{"line_number":123,"context_line":"           help\u003d_(\u0027Project Id.\u0027))"},{"line_number":124,"context_line":"@utils.arg(\u0027--resource\u0027,"},{"line_number":125,"context_line":"           required\u003dTrue,"},{"line_number":126,"context_line":"           metavar\u003d\u0027\u003cresource\u003e\u0027,"},{"line_number":127,"context_line":"           help\u003d_(\u0027Resource name.\u0027))"},{"line_number":128,"context_line":"@utils.arg(\u0027--hard-limit\u0027,"},{"line_number":129,"context_line":"           metavar\u003d\u0027\u003chard-limit\u003e\u0027,"},{"line_number":130,"context_line":"           type\u003dint,"},{"line_number":131,"context_line":"           default\u003d1,"},{"line_number":132,"context_line":"           help\u003d_(\u0027Max resource limit.\u0027))"},{"line_number":133,"context_line":"def do_quotas_update(cs, args):"},{"line_number":134,"context_line":"    \"\"\"Update information about the given project resource quota.\"\"\""},{"line_number":135,"context_line":"    patch \u003d dict()"},{"line_number":136,"context_line":"    patch[\u0027project_id\u0027] \u003d args.project_id"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_583adfce","line":133,"range":{"start_line":120,"start_character":0,"end_line":133,"end_character":31},"updated":"2017-02-10 05:58:53.000000000","message":"This is not very user friendly,\nI should type:\n\nmagnum quotas-update --project-id 3a52d8e4d27647dea793067638bbb3e7 --resource Cluster --hard-limit 2\n\nwhy not support \n\nmagnum quotas-update $id ? --hard-limit 2","commit_id":"2048bce0e93e1c0c745212d24920169e2fce10ed"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"7a6c8c7208dd26e10ae396497d84083d249f3527","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    _show_quota(quota)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"@utils.arg(\u0027--project-id\u0027,"},{"line_number":121,"context_line":"           required\u003dTrue,"},{"line_number":122,"context_line":"           metavar\u003d\u0027\u003cproject-id\u003e\u0027,"},{"line_number":123,"context_line":"           help\u003d_(\u0027Project Id.\u0027))"},{"line_number":124,"context_line":"@utils.arg(\u0027--resource\u0027,"},{"line_number":125,"context_line":"           required\u003dTrue,"},{"line_number":126,"context_line":"           metavar\u003d\u0027\u003cresource\u003e\u0027,"},{"line_number":127,"context_line":"           help\u003d_(\u0027Resource name.\u0027))"},{"line_number":128,"context_line":"@utils.arg(\u0027--hard-limit\u0027,"},{"line_number":129,"context_line":"           metavar\u003d\u0027\u003chard-limit\u003e\u0027,"},{"line_number":130,"context_line":"           type\u003dint,"},{"line_number":131,"context_line":"           default\u003d1,"},{"line_number":132,"context_line":"           help\u003d_(\u0027Max resource limit.\u0027))"},{"line_number":133,"context_line":"def do_quotas_update(cs, args):"},{"line_number":134,"context_line":"    \"\"\"Update information about the given project resource quota.\"\"\""},{"line_number":135,"context_line":"    patch \u003d dict()"},{"line_number":136,"context_line":"    patch[\u0027project_id\u0027] \u003d args.project_id"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_9b126a61","line":133,"range":{"start_line":120,"start_character":0,"end_line":133,"end_character":31},"in_reply_to":"fa31d9ce_583adfce","updated":"2017-02-10 22:24:48.000000000","message":"current implementation of update and delete API expect both project-id and resource (https://review.openstack.org/#/c/419704/11/magnum/api/controllers/v1/quota.py).\n\nI see multiple options here.\n\n1. Modify \u0027update\u0027 and \u0027delete\u0027 API to accept id as single parameter instead of \u0027project-id\u0027 and \u0027resource\u0027 - This involves both client and API changes\n\n2. change the behavior of current API: In this case, first parameter can be id or project-id and second parameter can be resource or None. If the resource is None, API can check for Quota with given id. And if both parameters are provided, treat them as project-id, resource. - In this case client can accept either just id or both project-id and resource\n\n3. Client fetches list of quotas first and then from that list provide project-id, resource that match the given Quota ID. - This is not efficient, because it needs to enumerate all the quotas","commit_id":"2048bce0e93e1c0c745212d24920169e2fce10ed"}]}
