)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"bbaa18273c5752f8f1780ff5c698087f14aeb65d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Chuck Carmack \u003ccarmack@us.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-05-09 13:13:02 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":":Add nova-manage quota_usage_refresh command"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is the final patch in the sequence."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"dab17558_3c4e6e6f","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":1},"updated":"2016-05-09 23:35:51.000000000","message":"Bit of a typo here","commit_id":"fde1e53d1225d7c9239fc09162f6de78cbe65631"}],"doc/source/man/nova-manage.rst":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"39c45248f4cd55658df1ae08d864e98231cd9f59","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    Runs the named script from the specified path with flags set."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Nova Project"},{"line_number":109,"context_line":"~~~~~~~~~~~"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"``nova-manage project quota \u003cproject_id\u003e [--user \u003cuser_id\u003e] [--key \u003ckey\u003e] [--value \u003cvalue\u003e]``"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"faac7902_12094c32","line":109,"range":{"start_line":109,"start_character":0,"end_line":109,"end_character":11},"updated":"2016-05-05 20:00:42.000000000","message":"I don\u0027t know if it matters but you need one more ~ here to make it the same length as \u0027Nova Project\u0027","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":17139,"name":"Chuck Carmack","email":"carmack@us.ibm.com","username":"ccarmack"},"change_message_id":"efb03e55c207f0889b81c584155c62211dea03bc","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    Runs the named script from the specified path with flags set."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Nova Project"},{"line_number":109,"context_line":"~~~~~~~~~~~"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"``nova-manage project quota \u003cproject_id\u003e [--user \u003cuser_id\u003e] [--key \u003ckey\u003e] [--value \u003cvalue\u003e]``"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_b6f652d5","line":109,"range":{"start_line":109,"start_character":0,"end_line":109,"end_character":11},"in_reply_to":"faac7902_12094c32","updated":"2016-05-06 15:07:56.000000000","message":"Done","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"39c45248f4cd55658df1ae08d864e98231cd9f59","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"``nova-manage project quota \u003cproject_id\u003e [--user \u003cuser_id\u003e] [--key \u003ckey\u003e] [--value \u003cvalue\u003e]``"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    Create, update or display quotas for project/user.  If a key is "},{"line_number":114,"context_line":"    not specified then the current usages are displayed."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"``nova-manage project quota_usage_refresh \u003cproject_id\u003e [--user \u003cuser_id\u003e] [--key \u003ckey\u003e]``  "}],"source_content_type":"text/x-rst","patch_set":3,"id":"faac7902_b525caaf","line":113,"range":{"start_line":113,"start_character":67,"end_line":113,"end_character":68},"updated":"2016-05-05 20:00:42.000000000","message":"Trailing whitespace","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":17139,"name":"Chuck Carmack","email":"carmack@us.ibm.com","username":"ccarmack"},"change_message_id":"efb03e55c207f0889b81c584155c62211dea03bc","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"``nova-manage project quota \u003cproject_id\u003e [--user \u003cuser_id\u003e] [--key \u003ckey\u003e] [--value \u003cvalue\u003e]``"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    Create, update or display quotas for project/user.  If a key is "},{"line_number":114,"context_line":"    not specified then the current usages are displayed."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"``nova-manage project quota_usage_refresh \u003cproject_id\u003e [--user \u003cuser_id\u003e] [--key \u003ckey\u003e]``  "}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_36d8a253","line":113,"range":{"start_line":113,"start_character":67,"end_line":113,"end_character":68},"in_reply_to":"faac7902_b525caaf","updated":"2016-05-06 15:07:56.000000000","message":"Done","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"39c45248f4cd55658df1ae08d864e98231cd9f59","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    Create, update or display quotas for project/user.  If a key is "},{"line_number":114,"context_line":"    not specified then the current usages are displayed."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"``nova-manage project quota_usage_refresh \u003cproject_id\u003e [--user \u003cuser_id\u003e] [--key \u003ckey\u003e]``  "},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    Refresh the quota usages for the project/user so that the"},{"line_number":119,"context_line":"    usage record matches the actual used.  If a key is not specified"}],"source_content_type":"text/x-rst","patch_set":3,"id":"faac7902_d524ceb0","line":116,"range":{"start_line":116,"start_character":89,"end_line":116,"end_character":91},"updated":"2016-05-05 20:00:42.000000000","message":"Trailing whitespace","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":17139,"name":"Chuck Carmack","email":"carmack@us.ibm.com","username":"ccarmack"},"change_message_id":"efb03e55c207f0889b81c584155c62211dea03bc","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    Create, update or display quotas for project/user.  If a key is "},{"line_number":114,"context_line":"    not specified then the current usages are displayed."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"``nova-manage project quota_usage_refresh \u003cproject_id\u003e [--user \u003cuser_id\u003e] [--key \u003ckey\u003e]``  "},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    Refresh the quota usages for the project/user so that the"},{"line_number":119,"context_line":"    usage record matches the actual used.  If a key is not specified"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_16c91e79","line":116,"range":{"start_line":116,"start_character":89,"end_line":116,"end_character":91},"in_reply_to":"faac7902_d524ceb0","updated":"2016-05-06 15:07:56.000000000","message":"Done","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"}],"nova/cmd/manage.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"39c45248f4cd55658df1ae08d864e98231cd9f59","unresolved":false,"context_lines":[{"line_number":303,"context_line":"            print(print_format % (key, value[\u0027limit\u0027], value[\u0027in_use\u0027],"},{"line_number":304,"context_line":"                                  value[\u0027reserved\u0027]))"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    @args(\u0027--project\u0027, dest\u003d\u0027project_id\u0027, metavar\u003d\u0027\u003cProject name\u003e\u0027,"},{"line_number":307,"context_line":"            help\u003d\u0027Project name\u0027)"},{"line_number":308,"context_line":"    @args(\u0027--user\u0027, dest\u003d\u0027user_id\u0027, metavar\u003d\u0027\u003cUser name\u003e\u0027,"},{"line_number":309,"context_line":"            help\u003d\u0027User name\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"faac7902_f5c912ae","line":306,"range":{"start_line":306,"start_character":60,"end_line":306,"end_character":64},"updated":"2016-05-05 20:00:42.000000000","message":"I see this was already here but it\u0027s not accurate, is it? It wants project id, not name","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":17139,"name":"Chuck Carmack","email":"carmack@us.ibm.com","username":"ccarmack"},"change_message_id":"efb03e55c207f0889b81c584155c62211dea03bc","unresolved":false,"context_lines":[{"line_number":303,"context_line":"            print(print_format % (key, value[\u0027limit\u0027], value[\u0027in_use\u0027],"},{"line_number":304,"context_line":"                                  value[\u0027reserved\u0027]))"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    @args(\u0027--project\u0027, dest\u003d\u0027project_id\u0027, metavar\u003d\u0027\u003cProject name\u003e\u0027,"},{"line_number":307,"context_line":"            help\u003d\u0027Project name\u0027)"},{"line_number":308,"context_line":"    @args(\u0027--user\u0027, dest\u003d\u0027user_id\u0027, metavar\u003d\u0027\u003cUser name\u003e\u0027,"},{"line_number":309,"context_line":"            help\u003d\u0027User name\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_16e8fe0f","line":306,"range":{"start_line":306,"start_character":60,"end_line":306,"end_character":64},"in_reply_to":"dab17558_6d5ff972","updated":"2016-05-06 15:07:56.000000000","message":"You\u0027re right. Changing the text to say \"id\" for all of these.","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":17139,"name":"Chuck Carmack","email":"carmack@us.ibm.com","username":"ccarmack"},"change_message_id":"ddf7f52e3d36b0a9b8460f03a8cb7bbef60d10b0","unresolved":false,"context_lines":[{"line_number":303,"context_line":"            print(print_format % (key, value[\u0027limit\u0027], value[\u0027in_use\u0027],"},{"line_number":304,"context_line":"                                  value[\u0027reserved\u0027]))"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    @args(\u0027--project\u0027, dest\u003d\u0027project_id\u0027, metavar\u003d\u0027\u003cProject name\u003e\u0027,"},{"line_number":307,"context_line":"            help\u003d\u0027Project name\u0027)"},{"line_number":308,"context_line":"    @args(\u0027--user\u0027, dest\u003d\u0027user_id\u0027, metavar\u003d\u0027\u003cUser name\u003e\u0027,"},{"line_number":309,"context_line":"            help\u003d\u0027User name\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_6d5ff972","line":306,"range":{"start_line":306,"start_character":60,"end_line":306,"end_character":64},"in_reply_to":"faac7902_f5c912ae","updated":"2016-05-06 14:13:07.000000000","message":"I remember trying it with names and ids, and both worked.  I\u0027ll try it again and update the user and project help accordingly.","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"39c45248f4cd55658df1ae08d864e98231cd9f59","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                                  value[\u0027reserved\u0027]))"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    @args(\u0027--project\u0027, dest\u003d\u0027project_id\u0027, metavar\u003d\u0027\u003cProject name\u003e\u0027,"},{"line_number":307,"context_line":"            help\u003d\u0027Project name\u0027)"},{"line_number":308,"context_line":"    @args(\u0027--user\u0027, dest\u003d\u0027user_id\u0027, metavar\u003d\u0027\u003cUser name\u003e\u0027,"},{"line_number":309,"context_line":"            help\u003d\u0027User name\u0027)"},{"line_number":310,"context_line":"    @args(\u0027--key\u0027, metavar\u003d\u0027\u003ckey\u003e\u0027, help\u003d\u0027Key\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"faac7902_35c43a91","line":307,"range":{"start_line":307,"start_character":26,"end_line":307,"end_character":30},"updated":"2016-05-05 20:00:42.000000000","message":"Same comment","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":17139,"name":"Chuck Carmack","email":"carmack@us.ibm.com","username":"ccarmack"},"change_message_id":"efb03e55c207f0889b81c584155c62211dea03bc","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                                  value[\u0027reserved\u0027]))"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    @args(\u0027--project\u0027, dest\u003d\u0027project_id\u0027, metavar\u003d\u0027\u003cProject name\u003e\u0027,"},{"line_number":307,"context_line":"            help\u003d\u0027Project name\u0027)"},{"line_number":308,"context_line":"    @args(\u0027--user\u0027, dest\u003d\u0027user_id\u0027, metavar\u003d\u0027\u003cUser name\u003e\u0027,"},{"line_number":309,"context_line":"            help\u003d\u0027User name\u0027)"},{"line_number":310,"context_line":"    @args(\u0027--key\u0027, metavar\u003d\u0027\u003ckey\u003e\u0027, help\u003d\u0027Key\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_56d0c653","line":307,"range":{"start_line":307,"start_character":26,"end_line":307,"end_character":30},"in_reply_to":"faac7902_35c43a91","updated":"2016-05-06 15:07:56.000000000","message":"Done","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"39c45248f4cd55658df1ae08d864e98231cd9f59","unresolved":false,"context_lines":[{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    @args(\u0027--project\u0027, dest\u003d\u0027project_id\u0027, metavar\u003d\u0027\u003cProject name\u003e\u0027,"},{"line_number":307,"context_line":"            help\u003d\u0027Project name\u0027)"},{"line_number":308,"context_line":"    @args(\u0027--user\u0027, dest\u003d\u0027user_id\u0027, metavar\u003d\u0027\u003cUser name\u003e\u0027,"},{"line_number":309,"context_line":"            help\u003d\u0027User name\u0027)"},{"line_number":310,"context_line":"    @args(\u0027--key\u0027, metavar\u003d\u0027\u003ckey\u003e\u0027, help\u003d\u0027Key\u0027)"},{"line_number":311,"context_line":"    def quota_usage_refresh(self, project_id, user_id\u003dNone, key\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"faac7902_3596fa94","line":308,"range":{"start_line":308,"start_character":46,"end_line":308,"end_character":55},"updated":"2016-05-05 20:00:42.000000000","message":"This shouldn\u0027t say \u0027User name\u0027 as you\u0027re looking for user_id i.e. uuid","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":17139,"name":"Chuck Carmack","email":"carmack@us.ibm.com","username":"ccarmack"},"change_message_id":"efb03e55c207f0889b81c584155c62211dea03bc","unresolved":false,"context_lines":[{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    @args(\u0027--project\u0027, dest\u003d\u0027project_id\u0027, metavar\u003d\u0027\u003cProject name\u003e\u0027,"},{"line_number":307,"context_line":"            help\u003d\u0027Project name\u0027)"},{"line_number":308,"context_line":"    @args(\u0027--user\u0027, dest\u003d\u0027user_id\u0027, metavar\u003d\u0027\u003cUser name\u003e\u0027,"},{"line_number":309,"context_line":"            help\u003d\u0027User name\u0027)"},{"line_number":310,"context_line":"    @args(\u0027--key\u0027, metavar\u003d\u0027\u003ckey\u003e\u0027, help\u003d\u0027Key\u0027)"},{"line_number":311,"context_line":"    def quota_usage_refresh(self, project_id, user_id\u003dNone, key\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_96ca2ea0","line":308,"range":{"start_line":308,"start_character":46,"end_line":308,"end_character":55},"in_reply_to":"faac7902_3596fa94","updated":"2016-05-06 15:07:56.000000000","message":"Done","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"39c45248f4cd55658df1ae08d864e98231cd9f59","unresolved":false,"context_lines":[{"line_number":306,"context_line":"    @args(\u0027--project\u0027, dest\u003d\u0027project_id\u0027, metavar\u003d\u0027\u003cProject name\u003e\u0027,"},{"line_number":307,"context_line":"            help\u003d\u0027Project name\u0027)"},{"line_number":308,"context_line":"    @args(\u0027--user\u0027, dest\u003d\u0027user_id\u0027, metavar\u003d\u0027\u003cUser name\u003e\u0027,"},{"line_number":309,"context_line":"            help\u003d\u0027User name\u0027)"},{"line_number":310,"context_line":"    @args(\u0027--key\u0027, metavar\u003d\u0027\u003ckey\u003e\u0027, help\u003d\u0027Key\u0027)"},{"line_number":311,"context_line":"    def quota_usage_refresh(self, project_id, user_id\u003dNone, key\u003dNone):"},{"line_number":312,"context_line":"        \"\"\"Refresh the quotas for project/user"}],"source_content_type":"text/x-python","patch_set":3,"id":"faac7902_b5814a50","line":309,"range":{"start_line":309,"start_character":18,"end_line":309,"end_character":27},"updated":"2016-05-05 20:00:42.000000000","message":"Same comment","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":17139,"name":"Chuck Carmack","email":"carmack@us.ibm.com","username":"ccarmack"},"change_message_id":"efb03e55c207f0889b81c584155c62211dea03bc","unresolved":false,"context_lines":[{"line_number":306,"context_line":"    @args(\u0027--project\u0027, dest\u003d\u0027project_id\u0027, metavar\u003d\u0027\u003cProject name\u003e\u0027,"},{"line_number":307,"context_line":"            help\u003d\u0027Project name\u0027)"},{"line_number":308,"context_line":"    @args(\u0027--user\u0027, dest\u003d\u0027user_id\u0027, metavar\u003d\u0027\u003cUser name\u003e\u0027,"},{"line_number":309,"context_line":"            help\u003d\u0027User name\u0027)"},{"line_number":310,"context_line":"    @args(\u0027--key\u0027, metavar\u003d\u0027\u003ckey\u003e\u0027, help\u003d\u0027Key\u0027)"},{"line_number":311,"context_line":"    def quota_usage_refresh(self, project_id, user_id\u003dNone, key\u003dNone):"},{"line_number":312,"context_line":"        \"\"\"Refresh the quotas for project/user"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_76cfcab0","line":309,"range":{"start_line":309,"start_character":18,"end_line":309,"end_character":27},"in_reply_to":"faac7902_b5814a50","updated":"2016-05-06 15:07:56.000000000","message":"Done","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"4c988e63172b8577bc60a39726aa812c5da4053d","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                                  value[\u0027reserved\u0027]))"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    @args(\u0027--project\u0027, dest\u003d\u0027project_id\u0027, metavar\u003d\u0027\u003cProject Id\u003e\u0027,"},{"line_number":307,"context_line":"            help\u003d\u0027Project Id\u0027)"},{"line_number":308,"context_line":"    @args(\u0027--user\u0027, dest\u003d\u0027user_id\u0027, metavar\u003d\u0027\u003cUser Id\u003e\u0027,"},{"line_number":309,"context_line":"            help\u003d\u0027User Id\u0027)"},{"line_number":310,"context_line":"    @args(\u0027--key\u0027, metavar\u003d\u0027\u003ckey\u003e\u0027, help\u003d\u0027Key\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab6814e_428a1b65","line":307,"updated":"2016-05-27 02:17:01.000000000","message":"I think we need to add required\u003dTrue to --project as it seems the minimum requirement for refreshing quotas (refreshing project-scoped quotas only) and we\u0027re not setting project_id in the context. That is, IIUC, it\u0027s not valid to refresh quotas without a project_id.","commit_id":"fde1e53d1225d7c9239fc09162f6de78cbe65631"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8e5752d34c3ddac285115be531984578b67d262d","unresolved":false,"context_lines":[{"line_number":315,"context_line":"        If a valid quota key is provided and it does not exist,"},{"line_number":316,"context_line":"        it will be created. Otherwise, it will be refreshed."},{"line_number":317,"context_line":"        \"\"\""},{"line_number":318,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        keys \u003d None"},{"line_number":321,"context_line":"        if key:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_7da26c9a","line":318,"range":{"start_line":318,"start_character":8,"end_line":318,"end_character":42},"updated":"2016-07-06 19:26:16.000000000","message":"I wonder if we should just let the quota engine construct this if needed, but then it would be inconsistent with the other methods in the quota engine code so it\u0027s probably best to just send it in even though it\u0027s empty (no user_id/project_id set), and the DB API probably doesn\u0027t even use it really since we don\u0027t enforce policy like that anymore.","commit_id":"8e0a075ede525c907a7b05fb037dd1dc5b4509fe"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"df0dca23ad1ab2138d727f799c856c82b3d47c3e","unresolved":false,"context_lines":[{"line_number":315,"context_line":"        If a valid quota key is provided and it does not exist,"},{"line_number":316,"context_line":"        it will be created. Otherwise, it will be refreshed."},{"line_number":317,"context_line":"        \"\"\""},{"line_number":318,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        keys \u003d None"},{"line_number":321,"context_line":"        if key:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_ac23db54","line":318,"range":{"start_line":318,"start_character":8,"end_line":318,"end_character":42},"in_reply_to":"1aa78d24_7da26c9a","updated":"2016-07-07 14:08:29.000000000","message":"I think it\u0027s easiest to assume that context is always created as early as possible and then passed down from there. But it does make nova-manage commands a bit odd in that they don\u0027t have a valid context.","commit_id":"8e0a075ede525c907a7b05fb037dd1dc5b4509fe"}],"nova/tests/unit/test_nova_manage.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"39c45248f4cd55658df1ae08d864e98231cd9f59","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    def test_quota_usage_refresh_with_keys(self):"},{"line_number":343,"context_line":"        self.assertIsNone(self.commands.quota_usage_refresh(\u0027project1\u0027,"},{"line_number":344,"context_line":"                                                             \u0027user1\u0027,"},{"line_number":345,"context_line":"                                                             \u0027ram\u0027))"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def test_quota_usage_refresh_invalid_user_key(self):"},{"line_number":348,"context_line":"        self.assertEqual(2, self.commands.quota_usage_refresh(\u0027project1\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"faac7902_d5b4ced2","line":345,"updated":"2016-05-05 20:00:42.000000000","message":"Given that nova doesn\u0027t know anything about project names or user names, what are these tests doing? AFAICT, they won\u0027t be finding any matching data for project and user.\n\nI think at least one of these tests should do and verify a real refresh. That is, seed the db with mismatching usage and actual records, then see if the quota_usage_refresh syncs them. Though this is probably covered by the testing in the bottom patch. If that\u0027s the case, I would at least update these tests to portray realistic params to the quota_usage_refresh command.","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":17139,"name":"Chuck Carmack","email":"carmack@us.ibm.com","username":"ccarmack"},"change_message_id":"efb03e55c207f0889b81c584155c62211dea03bc","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    def test_quota_usage_refresh_with_keys(self):"},{"line_number":343,"context_line":"        self.assertIsNone(self.commands.quota_usage_refresh(\u0027project1\u0027,"},{"line_number":344,"context_line":"                                                             \u0027user1\u0027,"},{"line_number":345,"context_line":"                                                             \u0027ram\u0027))"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def test_quota_usage_refresh_invalid_user_key(self):"},{"line_number":348,"context_line":"        self.assertEqual(2, self.commands.quota_usage_refresh(\u0027project1\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_0118b61c","line":345,"in_reply_to":"dab17558_30e26ad6","updated":"2016-05-06 15:07:56.000000000","message":"Done","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":17139,"name":"Chuck Carmack","email":"carmack@us.ibm.com","username":"ccarmack"},"change_message_id":"ddf7f52e3d36b0a9b8460f03a8cb7bbef60d10b0","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    def test_quota_usage_refresh_with_keys(self):"},{"line_number":343,"context_line":"        self.assertIsNone(self.commands.quota_usage_refresh(\u0027project1\u0027,"},{"line_number":344,"context_line":"                                                             \u0027user1\u0027,"},{"line_number":345,"context_line":"                                                             \u0027ram\u0027))"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def test_quota_usage_refresh_invalid_user_key(self):"},{"line_number":348,"context_line":"        self.assertEqual(2, self.commands.quota_usage_refresh(\u0027project1\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_30e26ad6","line":345,"in_reply_to":"faac7902_d5b4ced2","updated":"2016-05-06 14:13:07.000000000","message":"These tests are checking the return code from the CLI with different combinations for parameters.  I added tests in this patch: https://review.openstack.org/#/c/299487/5\nto seed the db and do actual refreshes.\n\nI\u0027ll change to use more realistic params (although I have a fuzzy memory of names working).","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"f5c975b333fe01ad7648834e3d981660c21ccec5","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        self.assertEqual(2, self.commands.quota_usage_refresh("},{"line_number":352,"context_line":"            \u0027aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\u0027,"},{"line_number":353,"context_line":"            \u0027aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaab\u0027,"},{"line_number":354,"context_line":"            \u0027fixed_ip\u0027))"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    def test_quota_usage_refresh_invalid_project_key(self):"},{"line_number":357,"context_line":"        self.assertEqual(2, self.commands.quota_usage_refresh("}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_844dc174","line":354,"updated":"2016-05-06 23:28:56.000000000","message":"It\u0027s not immediately clear to me why this is invalid. Is it because the \u0027fixed_ip\u0027 resource is a project-based quota and a user_id is being passed?","commit_id":"326865085c261b6645726d90a8ceabb0b401075b"},{"author":{"_account_id":17139,"name":"Chuck Carmack","email":"carmack@us.ibm.com","username":"ccarmack"},"change_message_id":"5bb00525aebfff98b967ef24b68c53b520b96a9b","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        self.assertEqual(2, self.commands.quota_usage_refresh("},{"line_number":352,"context_line":"            \u0027aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\u0027,"},{"line_number":353,"context_line":"            \u0027aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaab\u0027,"},{"line_number":354,"context_line":"            \u0027fixed_ip\u0027))"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    def test_quota_usage_refresh_invalid_project_key(self):"},{"line_number":357,"context_line":"        self.assertEqual(2, self.commands.quota_usage_refresh("}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_aa8b481d","line":354,"in_reply_to":"dab17558_844dc174","updated":"2016-05-09 13:11:31.000000000","message":"Yes.  This is checked by _get_syncable_quotas() in https://review.openstack.org/#/c/299487/5/nova/quota.py","commit_id":"326865085c261b6645726d90a8ceabb0b401075b"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"f5c975b333fe01ad7648834e3d981660c21ccec5","unresolved":false,"context_lines":[{"line_number":357,"context_line":"        self.assertEqual(2, self.commands.quota_usage_refresh("},{"line_number":358,"context_line":"            \u0027aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\u0027,"},{"line_number":359,"context_line":"            None,"},{"line_number":360,"context_line":"            \u0027ram\u0027))"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"class VmCommandsTestCase(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_e465ade1","line":360,"updated":"2016-05-06 23:28:56.000000000","message":"Similarly, this is invalid because \u0027ram\u0027 is a user-based quota resource and only a project_id is being passed?","commit_id":"326865085c261b6645726d90a8ceabb0b401075b"},{"author":{"_account_id":17139,"name":"Chuck Carmack","email":"carmack@us.ibm.com","username":"ccarmack"},"change_message_id":"5bb00525aebfff98b967ef24b68c53b520b96a9b","unresolved":false,"context_lines":[{"line_number":357,"context_line":"        self.assertEqual(2, self.commands.quota_usage_refresh("},{"line_number":358,"context_line":"            \u0027aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\u0027,"},{"line_number":359,"context_line":"            None,"},{"line_number":360,"context_line":"            \u0027ram\u0027))"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"class VmCommandsTestCase(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_6ad7a0ed","line":360,"in_reply_to":"dab17558_e465ade1","updated":"2016-05-09 13:11:31.000000000","message":"Yes.","commit_id":"326865085c261b6645726d90a8ceabb0b401075b"}],"releasenotes/notes/refresh-quotas-usage-362b239171c75f5f.yaml":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"39c45248f4cd55658df1ae08d864e98231cd9f59","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Add a nova-manage command to refresh the quota"},{"line_number":4,"context_line":"    usages for a project or user.  This can be used"},{"line_number":5,"context_line":"    when the usages in the quota-usages database table"},{"line_number":6,"context_line":"    is out-of-sync with the actual usages.  In some"},{"line_number":7,"context_line":"    cases, this can prevent new VMs from being"},{"line_number":8,"context_line":"    created."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"faac7902_b5782afa","line":8,"range":{"start_line":6,"start_character":44,"end_line":8,"end_character":12},"updated":"2016-05-05 20:00:42.000000000","message":"Do you mean use of this command can prevent new VMs being created? It would be helpful to add one sentence, \"For example, ...\" that explains how it can happen.","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":17139,"name":"Chuck Carmack","email":"carmack@us.ibm.com","username":"ccarmack"},"change_message_id":"efb03e55c207f0889b81c584155c62211dea03bc","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Add a nova-manage command to refresh the quota"},{"line_number":4,"context_line":"    usages for a project or user.  This can be used"},{"line_number":5,"context_line":"    when the usages in the quota-usages database table"},{"line_number":6,"context_line":"    is out-of-sync with the actual usages.  In some"},{"line_number":7,"context_line":"    cases, this can prevent new VMs from being"},{"line_number":8,"context_line":"    created."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"dab17558_815ca626","line":8,"range":{"start_line":6,"start_character":44,"end_line":8,"end_character":12},"in_reply_to":"faac7902_b5782afa","updated":"2016-05-06 15:07:56.000000000","message":"Done","commit_id":"b11aa60659278543ee7fc244df00a3041319cad9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"f5c975b333fe01ad7648834e3d981660c21ccec5","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Add a nova-manage command to refresh the quota"},{"line_number":4,"context_line":"    usages for a project or user.  This can be used"},{"line_number":5,"context_line":"    when the usages in the quota-usages database table"},{"line_number":6,"context_line":"    are out-of-sync with the actual usages.  Fox example,"},{"line_number":7,"context_line":"    if a resource usage is at the limit in the quota_usages"},{"line_number":8,"context_line":"    table, but the actual usage is less, then nova will"},{"line_number":9,"context_line":"    not allow VMs to be created for that project or user."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"dab17558_7004dc14","line":6,"range":{"start_line":6,"start_character":45,"end_line":6,"end_character":48},"updated":"2016-05-06 23:28:56.000000000","message":"Typo :(","commit_id":"326865085c261b6645726d90a8ceabb0b401075b"},{"author":{"_account_id":17139,"name":"Chuck Carmack","email":"carmack@us.ibm.com","username":"ccarmack"},"change_message_id":"5bb00525aebfff98b967ef24b68c53b520b96a9b","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Add a nova-manage command to refresh the quota"},{"line_number":4,"context_line":"    usages for a project or user.  This can be used"},{"line_number":5,"context_line":"    when the usages in the quota-usages database table"},{"line_number":6,"context_line":"    are out-of-sync with the actual usages.  Fox example,"},{"line_number":7,"context_line":"    if a resource usage is at the limit in the quota_usages"},{"line_number":8,"context_line":"    table, but the actual usage is less, then nova will"},{"line_number":9,"context_line":"    not allow VMs to be created for that project or user."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"dab17558_8ac9247b","line":6,"range":{"start_line":6,"start_character":45,"end_line":6,"end_character":48},"in_reply_to":"dab17558_7004dc14","updated":"2016-05-09 13:11:31.000000000","message":"Done","commit_id":"326865085c261b6645726d90a8ceabb0b401075b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"263a3e8495581a8f95ad0cc531b4d53470058e8c","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    table, but the actual usage is less, then nova will"},{"line_number":9,"context_line":"    not allow VMs to be created for that project or user."},{"line_number":10,"context_line":"    The nova-manage command can be used to re-sync"},{"line_number":11,"context_line":"    the quota_usages table with the actual usage."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1aa78d24_d6e608af","line":11,"updated":"2016-07-06 09:06:32.000000000","message":"Its tempting to include the name of the command in this note, but I don\u0027t want to block on that.","commit_id":"8e0a075ede525c907a7b05fb037dd1dc5b4509fe"}]}
