)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"eaecd35d74259317c23a6566bc2d97d7f70bf7fc","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Moved quota headroom calculations into quota_reserve"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Closes-Bug: #1224453 min_count ignored for instance create"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Moved headroom calculations into quota_reserve and modified headroom"},{"line_number":12,"context_line":"calculations to take into account -ve quota limits (unlimited) on"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAATH%2F%2FpEA%3D","line":9,"updated":"2013-10-11 21:15:19.000000000","message":"This goes in the block at the bottom with the rest of the machine-readable headers.","commit_id":"2313b9dd680123c3348fe7164371ca88a8031a47"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"eaecd35d74259317c23a6566bc2d97d7f70bf7fc","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Updated test cases to generate OverQuota exceptions with new headroom"},{"line_number":16,"context_line":"parameter."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Removed white space and some \u0027legacy\u0027 commented code."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I855b0cad495182c5c4ee42b2acf5eedd198557b5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAATH%2F%2FpD8%3D","line":18,"updated":"2013-10-11 21:15:19.000000000","message":"Is this still true? I don\u0027t see what you\u0027re talking about, if so.","commit_id":"2313b9dd680123c3348fe7164371ca88a8031a47"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"3945845810d8da11276402b3655a9887d5007c2a","unresolved":false,"context_lines":[{"line_number":14,"context_line":"parameter."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I855b0cad495182c5c4ee42b2acf5eedd198557b5"},{"line_number":17,"context_line":"Closes-Bug: #1224453 min_count ignored for instance create"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAATH%2F%2FgdI%3D","line":17,"updated":"2013-10-15 09:21:15.000000000","message":"This patch doesn\u0027t actually close the bug - it just sets the scene for it iiuc. I am expecting a followup patch that fixes it. If so would be good to say Related-bug instead of Closes-bug","commit_id":"a2ba15818762a3d0d6324a6464dda9caf35182fd"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"65af745747947f36036e8f5cbe37e74cfdd7fa73","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Updated test cases to generate OverQuota exceptions with new headroom"},{"line_number":14,"context_line":"parameter."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"REMINDER - missing new unit tests to test the initial bug and this fix."},{"line_number":17,"context_line":"    I don\u0027t know where to add tests"},{"line_number":18,"context_line":"        if in nova/tests/compute/test_compute_api.py"},{"line_number":19,"context_line":"            I don\u0027t know how I can set quotas to set test conditions"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAATn%2F%2F5SM%3D","line":16,"updated":"2013-10-25 15:27:07.000000000","message":"Best place to add notes like this in the future are Gerrit comments - not the commit message. Please remove them in the next version.","commit_id":"736eba274bf0de51578ef87cc13591fffaba4af8"}],"nova/compute/api.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a0936c38ba067c05589ba64a9bd3e23efe12254b","unresolved":false,"context_lines":[{"line_number":346,"context_line":"            quotas \u003d exc.kwargs[\u0027quotas\u0027]"},{"line_number":347,"context_line":"            usages \u003d exc.kwargs[\u0027usages\u0027]"},{"line_number":348,"context_line":"            overs \u003d exc.kwargs[\u0027overs\u0027]"},{"line_number":349,"context_line":"            headroom \u003d exc.kwargs[\u0027headroom\u0027]"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"            allowed \u003d headroom[\u0027instances\u0027]"},{"line_number":352,"context_line":"            # Reduce \u0027allowed\u0027 instances in line with the cores \u0026 ram headroom"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FVjY%3D","line":349,"updated":"2013-11-09 10:53:41.000000000","message":"look a bit cleaner, but, i suppose, here would be better to use get() method.","commit_id":"faf6fa2794bb226992ee90d15753cd1c9f9b0bfc"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"39ba709aba8b81afdebf014a11a0a83991a8bd2a","unresolved":false,"context_lines":[{"line_number":3232,"context_line":""},{"line_number":3233,"context_line":"        # If quota_cores is unlimited [-1]:"},{"line_number":3234,"context_line":"        # - set cores headroom based on instances headroom:"},{"line_number":3235,"context_line":"        if \u0027cores\u0027 in user_quotas and user_quotas[\u0027cores\u0027] \u003d\u003d -1:"},{"line_number":3236,"context_line":"            if deltas[\u0027cores\u0027]:"},{"line_number":3237,"context_line":"                hc \u003d headroom[\u0027instances\u0027] * deltas[\u0027cores\u0027]"},{"line_number":3238,"context_line":"                headroom[\u0027cores\u0027] \u003d hc / deltas[\u0027instances\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FlYU%3D","line":3235,"updated":"2013-10-14 08:44:52.000000000","message":"nit: you can use here\n\nif user_quotas.get(\u0027cores\u0027) \u003d\u003d -1:","commit_id":"41b3d1e4c5b1e17d29b6da3c8adffbba333155a9"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"39ba709aba8b81afdebf014a11a0a83991a8bd2a","unresolved":false,"context_lines":[{"line_number":3241,"context_line":""},{"line_number":3242,"context_line":"        # If quota_ram is unlimited [-1]:"},{"line_number":3243,"context_line":"        # - set ram headroom based on instances headroom:"},{"line_number":3244,"context_line":"        if \u0027ram\u0027 in user_quotas and user_quotas[\u0027ram\u0027] \u003d\u003d -1:"},{"line_number":3245,"context_line":"            if deltas[\u0027ram\u0027]:"},{"line_number":3246,"context_line":"                hr \u003d headroom[\u0027instances\u0027] * deltas[\u0027ram\u0027]"},{"line_number":3247,"context_line":"                headroom[\u0027ram\u0027] \u003d hr / deltas[\u0027instances\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FlYM%3D","line":3244,"updated":"2013-10-14 08:44:52.000000000","message":"ditto","commit_id":"41b3d1e4c5b1e17d29b6da3c8adffbba333155a9"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a0936c38ba067c05589ba64a9bd3e23efe12254b","unresolved":false,"context_lines":[{"line_number":3259,"context_line":"                hc \u003d headroom[\u0027instances\u0027] * deltas[\u0027cores\u0027]"},{"line_number":3260,"context_line":"                headroom[\u0027cores\u0027] \u003d hc / deltas[\u0027instances\u0027]"},{"line_number":3261,"context_line":"            else:"},{"line_number":3262,"context_line":"                headroom[\u0027cores\u0027] \u003d headroom[\u0027instances\u0027]"},{"line_number":3263,"context_line":""},{"line_number":3264,"context_line":"        # If quota_ram is unlimited [-1]:"},{"line_number":3265,"context_line":"        # - set ram headroom based on instances headroom:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FVjU%3D","line":3262,"updated":"2013-11-09 10:53:41.000000000","message":"it would be better to use update method.","commit_id":"faf6fa2794bb226992ee90d15753cd1c9f9b0bfc"}],"nova/quota.py":[{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"39ba709aba8b81afdebf014a11a0a83991a8bd2a","unresolved":false,"context_lines":[{"line_number":409,"context_line":"                 (user_quotas[key] \u003e\u003d 0 and user_quotas[key] \u003c val)]"},{"line_number":410,"context_line":"        if overs:"},{"line_number":411,"context_line":"            headroom \u003d dict((res, user_quotas[res])"},{"line_number":412,"context_line":"                       for res in user_quotas.keys())"},{"line_number":413,"context_line":"            raise exception.OverQuota(overs\u003dsorted(overs), quotas\u003dquotas,"},{"line_number":414,"context_line":"                                      usages\u003d{}, headroom\u003dheadroom)"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FlXw%3D","line":412,"updated":"2013-10-14 08:44:52.000000000","message":"nit: keys() is not required","commit_id":"41b3d1e4c5b1e17d29b6da3c8adffbba333155a9"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"3945845810d8da11276402b3655a9887d5007c2a","unresolved":false,"context_lines":[{"line_number":408,"context_line":"                 if (quotas[key] \u003e\u003d 0 and quotas[key] \u003c val) or"},{"line_number":409,"context_line":"                 (user_quotas[key] \u003e\u003d 0 and user_quotas[key] \u003c val)]"},{"line_number":410,"context_line":"        if overs:"},{"line_number":411,"context_line":"            headroom \u003d dict((res, user_quotas[res]) for res in user_quotas)"},{"line_number":412,"context_line":"            raise exception.OverQuota(overs\u003dsorted(overs), quotas\u003dquotas,"},{"line_number":413,"context_line":"                                      usages\u003d{}, headroom\u003dheadroom)"},{"line_number":414,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATH%2F%2Fgdk%3D","line":411,"updated":"2013-10-15 09:21:15.000000000","message":"Shouldn\u0027t this also take into account the project_quotas and also actually calculate_the headroom like \n\n  (res, value - max(user_quotas[res], project_quotas[res])) for ...\n\nAlso - we don\u0027t seem to be using this anywhere and does not seem to be related to the bug actually. So I am assuming there is a follow up patch to this? Maybe keep it separate from this one since it does not affect the bug directly?","commit_id":"a2ba15818762a3d0d6324a6464dda9caf35182fd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a0936c38ba067c05589ba64a9bd3e23efe12254b","unresolved":false,"context_lines":[{"line_number":412,"context_line":"            # Check project_quotas:"},{"line_number":413,"context_line":"            for key in quotas:"},{"line_number":414,"context_line":"                if (quotas[key] \u003e\u003d 0 and quotas[key] \u003c val):"},{"line_number":415,"context_line":"                    headroom[key] \u003d quotas[key]"},{"line_number":416,"context_line":"            # Check user quotas:"},{"line_number":417,"context_line":"            for key in user_quotas:"},{"line_number":418,"context_line":"                if (user_quotas[key] \u003e\u003d 0 and user_quotas[key] \u003c val and"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FVjQ%3D","line":415,"updated":"2013-11-09 10:53:41.000000000","message":"same with update","commit_id":"faf6fa2794bb226992ee90d15753cd1c9f9b0bfc"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a0936c38ba067c05589ba64a9bd3e23efe12254b","unresolved":false,"context_lines":[{"line_number":417,"context_line":"            for key in user_quotas:"},{"line_number":418,"context_line":"                if (user_quotas[key] \u003e\u003d 0 and user_quotas[key] \u003c val and"},{"line_number":419,"context_line":"                        headroom.get(key) \u003e user_quotas[key]):"},{"line_number":420,"context_line":"                    headroom[key] \u003d user_quotas[key]"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"            raise exception.OverQuota(overs\u003dsorted(overs), quotas\u003dquotas,"},{"line_number":423,"context_line":"                                      usages\u003d{}, headroom\u003dheadroom)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FVjM%3D","line":420,"updated":"2013-11-09 10:53:41.000000000","message":"same with update","commit_id":"faf6fa2794bb226992ee90d15753cd1c9f9b0bfc"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"d2d820fe005fd6fb7ddb9329d2303bd00c8fd631","unresolved":false,"context_lines":[{"line_number":411,"context_line":"            headroom \u003d {}"},{"line_number":412,"context_line":"            # Check project_quotas:"},{"line_number":413,"context_line":"            for key in quotas:"},{"line_number":414,"context_line":"                if (quotas[key] \u003e\u003d 0 and quotas[key] \u003c val):"},{"line_number":415,"context_line":"                    headroom[key] \u003d quotas[key]"},{"line_number":416,"context_line":"            # Check user quotas:"},{"line_number":417,"context_line":"            for key in user_quotas:"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F%2FSEk%3D","line":414,"updated":"2013-11-11 18:52:15.000000000","message":"The parentheses here aren\u0027t necessary (femtonit)","commit_id":"8d0845e1b45f9e89f4372cdb462eb1f453e2cb1d"}],"nova/tests/api/openstack/fakes.py":[{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"39ba709aba8b81afdebf014a11a0a83991a8bd2a","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            usages[resource][\u0027in_use\u0027] \u003d (quotas[resource] * 0.9 -"},{"line_number":172,"context_line":"                                          allowed)"},{"line_number":173,"context_line":"            usages[resource][\u0027reserved\u0027] \u003d quotas[resource] * 0.1"},{"line_number":174,"context_line":"            headroom \u003d dict((res, quotas[res] -"},{"line_number":175,"context_line":"                           (usages[res][\u0027in_use\u0027] + usages[res][\u0027reserved\u0027]))"},{"line_number":176,"context_line":"                           for res in quotas.keys())"},{"line_number":177,"context_line":"            raise exc.OverQuota(overs\u003d[resource], quotas\u003dquotas,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FlXg%3D","line":174,"updated":"2013-10-14 08:44:52.000000000","message":"can you do it more readable please?","commit_id":"41b3d1e4c5b1e17d29b6da3c8adffbba333155a9"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"39ba709aba8b81afdebf014a11a0a83991a8bd2a","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            usages[resource][\u0027reserved\u0027] \u003d quotas[resource] * 0.1"},{"line_number":174,"context_line":"            headroom \u003d dict((res, quotas[res] -"},{"line_number":175,"context_line":"                           (usages[res][\u0027in_use\u0027] + usages[res][\u0027reserved\u0027]))"},{"line_number":176,"context_line":"                           for res in quotas.keys())"},{"line_number":177,"context_line":"            raise exc.OverQuota(overs\u003d[resource], quotas\u003dquotas,"},{"line_number":178,"context_line":"                                usages\u003dusages, headroom\u003dheadroom)"},{"line_number":179,"context_line":"    stubs.Set(QUOTAS, \u0027reserve\u0027, fake_reserve)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FlXU%3D","line":176,"updated":"2013-10-14 08:44:52.000000000","message":"... for res in quotas)","commit_id":"41b3d1e4c5b1e17d29b6da3c8adffbba333155a9"}],"nova/tests/compute/test_compute_api.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"52650bb10566badbd1e07bf924ffab62e53c7031","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                          self.compute_api.stop,"},{"line_number":303,"context_line":"                          self.context, instance)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    def test_stop_a_stopped_inst(self):"},{"line_number":306,"context_line":"        params \u003d {\u0027vm_state\u0027: vm_states.STOPPED}"},{"line_number":307,"context_line":"        instance \u003d self._create_instance_obj(params\u003dparams)"},{"line_number":308,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2FPvc%3D","line":305,"updated":"2013-11-12 10:25:22.000000000","message":"Hey - how is this related to the change?\n\nI bet this just sneaked in during a rebase or something - we should drop it.","commit_id":"5b2ab903c4898c5c5eed26f0e2d0e436b86fdfaa"}],"nova/tests/test_quota.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"932212ecf75b11dc8b6cc8ca073f58a775bcf18b","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            instance_uuids.append(instance[\u0027uuid\u0027])"},{"line_number":80,"context_line":"        inst_type \u003d flavors.get_flavor_by_name(\u0027m1.small\u0027)"},{"line_number":81,"context_line":"        image_uuid \u003d \u0027cedef40a-ed67-4d10-800e-17455edce175\u0027"},{"line_number":82,"context_line":"        try:"},{"line_number":83,"context_line":"            compute.API().create(self.context, min_count\u003d1, max_count\u003d1,"},{"line_number":84,"context_line":"                             instance_type\u003dinst_type, image_href\u003dimage_uuid)"},{"line_number":85,"context_line":"        except exception.QuotaError, e:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FTro%3D","line":82,"updated":"2013-11-11 09:31:06.000000000","message":"This is not good since in case this does not raise an exception - the test will happily pass even though it is not what we expected. You could use the finally: block for cleanup, and fail the test if the exception was never raised.","commit_id":"faf6fa2794bb226992ee90d15753cd1c9f9b0bfc"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"eddd866b053348fc51821de9a7de7215cea4e0fe","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            instance_uuids.append(instance[\u0027uuid\u0027])"},{"line_number":80,"context_line":"        inst_type \u003d flavors.get_flavor_by_name(\u0027m1.small\u0027)"},{"line_number":81,"context_line":"        image_uuid \u003d \u0027cedef40a-ed67-4d10-800e-17455edce175\u0027"},{"line_number":82,"context_line":"        try:"},{"line_number":83,"context_line":"            compute.API().create(self.context, min_count\u003d1, max_count\u003d1,"},{"line_number":84,"context_line":"                             instance_type\u003dinst_type, image_href\u003dimage_uuid)"},{"line_number":85,"context_line":"        except exception.QuotaError, e:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FTa8%3D","line":82,"in_reply_to":"AAAATn%2F%2FTro%3D","updated":"2013-11-11 11:42:27.000000000","message":"agreed","commit_id":"faf6fa2794bb226992ee90d15753cd1c9f9b0bfc"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"932212ecf75b11dc8b6cc8ca073f58a775bcf18b","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        except exception.QuotaError, e:"},{"line_number":86,"context_line":"            expected_kwargs \u003d {\u0027code\u0027: 413, \u0027resource\u0027: \u0027cores\u0027, \u0027req\u0027: 1,"},{"line_number":87,"context_line":"                          \u0027used\u0027: 4, \u0027allowed\u0027: 4, \u0027overs\u0027: \u0027cores,instances\u0027}"},{"line_number":88,"context_line":"            if e.kwargs !\u003d expected_kwargs:"},{"line_number":89,"context_line":"                raise Exception(\u0027Bad kwargs on exception.QuotaError\u0027 +"},{"line_number":90,"context_line":"                                str(e.kwargs) + \" differ from expected \" +"},{"line_number":91,"context_line":"                                str(expected_kwargs))"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FTvo%3D","line":88,"updated":"2013-11-11 09:31:06.000000000","message":"You should use the assertEqual method that is part of the TestCase class we are extending here - it raises the appropriate exceptions that are expected by the testing framework and have all the data needed for proper outputting test results.  We do not raise our own exceptions on failure.","commit_id":"faf6fa2794bb226992ee90d15753cd1c9f9b0bfc"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"eddd866b053348fc51821de9a7de7215cea4e0fe","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        except exception.QuotaError, e:"},{"line_number":86,"context_line":"            expected_kwargs \u003d {\u0027code\u0027: 413, \u0027resource\u0027: \u0027cores\u0027, \u0027req\u0027: 1,"},{"line_number":87,"context_line":"                          \u0027used\u0027: 4, \u0027allowed\u0027: 4, \u0027overs\u0027: \u0027cores,instances\u0027}"},{"line_number":88,"context_line":"            if e.kwargs !\u003d expected_kwargs:"},{"line_number":89,"context_line":"                raise Exception(\u0027Bad kwargs on exception.QuotaError\u0027 +"},{"line_number":90,"context_line":"                                str(e.kwargs) + \" differ from expected \" +"},{"line_number":91,"context_line":"                                str(expected_kwargs))"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FTa4%3D","line":88,"in_reply_to":"AAAATn%2F%2FTvo%3D","updated":"2013-11-11 11:42:27.000000000","message":"agreed","commit_id":"faf6fa2794bb226992ee90d15753cd1c9f9b0bfc"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"932212ecf75b11dc8b6cc8ca073f58a775bcf18b","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            expected_kwargs \u003d {\u0027code\u0027: 413, \u0027resource\u0027: \u0027cores\u0027, \u0027req\u0027: 1,"},{"line_number":104,"context_line":"                          \u0027used\u0027: 4, \u0027allowed\u0027: 4, \u0027overs\u0027: \u0027cores\u0027}"},{"line_number":105,"context_line":"            if e.kwargs !\u003d expected_kwargs:"},{"line_number":106,"context_line":"                raise Exception(\u0027Bad kwargs on exception.QuotaError\u0027 +"},{"line_number":107,"context_line":"                                str(e.kwargs) + \" differ from expected \" +"},{"line_number":108,"context_line":"                                str(expected_kwargs))"},{"line_number":109,"context_line":"        db.instance_destroy(self.context, instance[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FTvk%3D","line":106,"updated":"2013-11-11 09:31:06.000000000","message":"Same as above.","commit_id":"faf6fa2794bb226992ee90d15753cd1c9f9b0bfc"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"eddd866b053348fc51821de9a7de7215cea4e0fe","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            expected_kwargs \u003d {\u0027code\u0027: 413, \u0027resource\u0027: \u0027cores\u0027, \u0027req\u0027: 1,"},{"line_number":104,"context_line":"                          \u0027used\u0027: 4, \u0027allowed\u0027: 4, \u0027overs\u0027: \u0027cores\u0027}"},{"line_number":105,"context_line":"            if e.kwargs !\u003d expected_kwargs:"},{"line_number":106,"context_line":"                raise Exception(\u0027Bad kwargs on exception.QuotaError\u0027 +"},{"line_number":107,"context_line":"                                str(e.kwargs) + \" differ from expected \" +"},{"line_number":108,"context_line":"                                str(expected_kwargs))"},{"line_number":109,"context_line":"        db.instance_destroy(self.context, instance[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FTa0%3D","line":106,"in_reply_to":"AAAATn%2F%2FTvk%3D","updated":"2013-11-11 11:42:27.000000000","message":"agreed","commit_id":"faf6fa2794bb226992ee90d15753cd1c9f9b0bfc"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"932212ecf75b11dc8b6cc8ca073f58a775bcf18b","unresolved":false,"context_lines":[{"line_number":2325,"context_line":"                \u0027overs\u0027: [\u0027cores\u0027, \u0027fixed_ips\u0027, \u0027instances\u0027, \u0027ram\u0027],"},{"line_number":2326,"context_line":"                \u0027quotas\u0027: {\u0027cores\u0027: 10, \u0027ram\u0027: 10240,"},{"line_number":2327,"context_line":"                           \u0027fixed_ips\u0027: 5, \u0027instances\u0027: 5}}"},{"line_number":2328,"context_line":"            if e.kwargs !\u003d expected_kwargs:"},{"line_number":2329,"context_line":"                raise Exception(\u0027Bad kwargs on exception.OverQuota\u0027 +"},{"line_number":2330,"context_line":"                                str(e.kwargs) + \" not equal to expected \" +"},{"line_number":2331,"context_line":"                                str(expected_kwargs))"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FTvM%3D","line":2328,"updated":"2013-11-11 09:31:06.000000000","message":"Same","commit_id":"faf6fa2794bb226992ee90d15753cd1c9f9b0bfc"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"eddd866b053348fc51821de9a7de7215cea4e0fe","unresolved":false,"context_lines":[{"line_number":2325,"context_line":"                \u0027overs\u0027: [\u0027cores\u0027, \u0027fixed_ips\u0027, \u0027instances\u0027, \u0027ram\u0027],"},{"line_number":2326,"context_line":"                \u0027quotas\u0027: {\u0027cores\u0027: 10, \u0027ram\u0027: 10240,"},{"line_number":2327,"context_line":"                           \u0027fixed_ips\u0027: 5, \u0027instances\u0027: 5}}"},{"line_number":2328,"context_line":"            if e.kwargs !\u003d expected_kwargs:"},{"line_number":2329,"context_line":"                raise Exception(\u0027Bad kwargs on exception.OverQuota\u0027 +"},{"line_number":2330,"context_line":"                                str(e.kwargs) + \" not equal to expected \" +"},{"line_number":2331,"context_line":"                                str(expected_kwargs))"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2FTaw%3D","line":2328,"in_reply_to":"AAAATn%2F%2FTvM%3D","updated":"2013-11-11 11:42:27.000000000","message":"agreed","commit_id":"faf6fa2794bb226992ee90d15753cd1c9f9b0bfc"}]}
