)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"644e06206fcbfbb4f4523dc9a7e14da0bd8974e4","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Claim.test() returns True/False. It tests memory, disk, and"},{"line_number":10,"context_line":"cpu separately and could return either a tuple of bools or a dict of"},{"line_number":11,"context_line":"True/False values with the keys indicating the resources."},{"line_number":12,"context_line":"This patch not only return the bool value, but also specify the reason"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I5bf9c81bba747a6c164144e60a92dc6da2f98f4c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAATn%2F8984%3D","line":11,"updated":"2013-12-18 10:20:23.000000000","message":"It *could* - in fact the dict sounds like a nice solution - but your patch doesn\u0027t do either of these things, so I think it shouldn\u0027t be in the commit message.","commit_id":"a11c3c50bdbbd95711f8274d6d96256c649b5ad3"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"849d2b0a5fc0c1ec707bc6ad79c35b4ce0d63ae5","unresolved":false,"context_lines":[{"line_number":10,"context_line":"This patch removes the True/False test because False"},{"line_number":11,"context_line":"value is ignored, instead, it will test the claim in"},{"line_number":12,"context_line":"the constructor of Claim class and raise Exception"},{"line_number":13,"context_line":"right after any claim can\u0027t be satisfied."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I5bf9c81bba747a6c164144e60a92dc6da2f98f4c"},{"line_number":16,"context_line":"Closes-Bug: #1212768"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"AAAAVX%2F%2F%2Bzk%3D","line":13,"updated":"2014-02-27 01:36:27.000000000","message":"could you please help to update the commit message? \nmaybe we need to say \u0027all the failed reason\u0027 etc...","commit_id":"ecb5ee45d998705982d0d20d1881ca4238a4471e"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"96fb43493e9893ba1d3fbfe5d547e5b4a4af7713","unresolved":false,"context_lines":[{"line_number":10,"context_line":"This patch removes the True/False test because False"},{"line_number":11,"context_line":"value is ignored, instead, it will test the claim in"},{"line_number":12,"context_line":"the constructor of Claim class and raise Exception"},{"line_number":13,"context_line":"right after any claim can\u0027t be satisfied."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I5bf9c81bba747a6c164144e60a92dc6da2f98f4c"},{"line_number":16,"context_line":"Closes-Bug: #1212768"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"AAAAVX%2F%2F7y8%3D","line":13,"in_reply_to":"AAAAVX%2F%2F%2Bzk%3D","updated":"2014-02-27 09:17:55.000000000","message":"Done","commit_id":"ecb5ee45d998705982d0d20d1881ca4238a4471e"}],"nova/compute/claims.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"926c9dc81f197489a93b3c38e239a4d300df6f38","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        (can_claim, reason) \u003d self._test_disk(resources, disk_gb_limit)"},{"line_number":142,"context_line":"        if not can_claim:"},{"line_number":143,"context_line":"            LOG.audit(_(\"Claim failed\"), instance\u003dself.instance)"},{"line_number":144,"context_line":"            return can_claim, reason"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        (can_claim, reason) \u003d self._test_cpu(resources, vcpu_limit)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9A3Y%3D","line":143,"updated":"2013-12-17 17:53:55.000000000","message":"maybe you can specify in the log messages which one are failing ?","commit_id":"ad001e97008abb7586c26abe11ef47ff07de2a44"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"ac6ab894d88a38dadf230f98755d51e4ca8008de","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        (can_claim, reason) \u003d self._test_disk(resources, disk_gb_limit)"},{"line_number":142,"context_line":"        if not can_claim:"},{"line_number":143,"context_line":"            LOG.audit(_(\"Claim failed\"), instance\u003dself.instance)"},{"line_number":144,"context_line":"            return can_claim, reason"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        (can_claim, reason) \u003d self._test_cpu(resources, vcpu_limit)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F8%2Bdw%3D","line":143,"in_reply_to":"AAAATn%2F9A3Y%3D","updated":"2013-12-18 07:52:17.000000000","message":"I think the _test_disk function already reported detailed info, so I followed\nprevious version\u0027s code ,and keep the \u0027Claim failed\u0027","commit_id":"ad001e97008abb7586c26abe11ef47ff07de2a44"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"926c9dc81f197489a93b3c38e239a4d300df6f38","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        can_claim \u003d self._test_pci()"},{"line_number":152,"context_line":"        if not can_claim:"},{"line_number":153,"context_line":"            reason \u003d _(\"Claim pci failed\")"},{"line_number":154,"context_line":"            LOG.audit(_(\"Claim failed\"), instance\u003dself.instance)"},{"line_number":155,"context_line":"            return can_claim, reason"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F9A2Y%3D","line":153,"updated":"2013-12-17 17:53:55.000000000","message":"You can remove reason to return the message directly\n\nreturn can_claim, _(\"Claim pci failed\")","commit_id":"ad001e97008abb7586c26abe11ef47ff07de2a44"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"ac6ab894d88a38dadf230f98755d51e4ca8008de","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        can_claim \u003d self._test_pci()"},{"line_number":152,"context_line":"        if not can_claim:"},{"line_number":153,"context_line":"            reason \u003d _(\"Claim pci failed\")"},{"line_number":154,"context_line":"            LOG.audit(_(\"Claim failed\"), instance\u003dself.instance)"},{"line_number":155,"context_line":"            return can_claim, reason"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F8%2Bdo%3D","line":153,"in_reply_to":"AAAATn%2F9A2Y%3D","updated":"2013-12-18 07:52:17.000000000","message":"Done","commit_id":"ad001e97008abb7586c26abe11ef47ff07de2a44"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"644e06206fcbfbb4f4523dc9a7e14da0bd8974e4","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        (can_claim, reason) \u003d self._test_memory(resources, memory_mb_limit)"},{"line_number":137,"context_line":"        if not can_claim:"},{"line_number":138,"context_line":"            LOG.audit(_(\"Claim failed\"), instance\u003dself.instance)"},{"line_number":139,"context_line":"            return can_claim, reason"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        (can_claim, reason) \u003d self._test_disk(resources, disk_gb_limit)"},{"line_number":142,"context_line":"        if not can_claim:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F890o%3D","line":139,"updated":"2013-12-18 10:20:23.000000000","message":"If I submit a claim which would fail for multiple reasons I have to make multiple requests to find out.  I think it would be better to perform all the tests and return all the results (and reasons) here.","commit_id":"a11c3c50bdbbd95711f8274d6d96256c649b5ad3"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"47fcf65a29819ce2399b7a8a5e40db6b6d62d795","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            LOG.audit(_(\"Claim failed\"), instance\u003dself.instance)"},{"line_number":139,"context_line":"            return can_claim, reason"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        (can_claim, reason) \u003d self._test_disk(resources, disk_gb_limit)"},{"line_number":142,"context_line":"        if not can_claim:"},{"line_number":143,"context_line":"            LOG.audit(_(\"Claim failed\"), instance\u003dself.instance)"},{"line_number":144,"context_line":"            return can_claim, reason"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F89vQ%3D","line":141,"updated":"2013-12-18 10:32:12.000000000","message":"there\u0027s some duplication here, could we make this more data driven? EG:\n\nreasons \u003d []\nfor (test, limit) in\n [(self._test_disk, disk_gb_limit),\n  (self._test_cpu, vcpu_limit),\n   ...]:\n    (ok, reason) \u003d test(resources, limit)\n    if not ok:\n        reasons +\u003d reason\nif len(reasons) \u003d\u003d 0:\n    LOG.audit(_(\"Claim failed\"), instance\u003dself.instance)\n    return False, reasons\n\nYou might have noticed ok/can_claim are fairly redundant here","commit_id":"a11c3c50bdbbd95711f8274d6d96256c649b5ad3"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"b5d18d9c602f13a55031c7b752178da72386acbd","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            LOG.audit(_(\"Claim failed\"), instance\u003dself.instance)"},{"line_number":139,"context_line":"            return can_claim, reason"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        (can_claim, reason) \u003d self._test_disk(resources, disk_gb_limit)"},{"line_number":142,"context_line":"        if not can_claim:"},{"line_number":143,"context_line":"            LOG.audit(_(\"Claim failed\"), instance\u003dself.instance)"},{"line_number":144,"context_line":"            return can_claim, reason"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F89oc%3D","line":141,"in_reply_to":"AAAATn%2F89vQ%3D","updated":"2013-12-18 10:57:46.000000000","message":"I like this kind solution","commit_id":"a11c3c50bdbbd95711f8274d6d96256c649b5ad3"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"644e06206fcbfbb4f4523dc9a7e14da0bd8974e4","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                  {\u0027type\u0027: type_, \u0027total\u0027: total, \u0027unit\u0027: unit, \u0027used\u0027: used},"},{"line_number":201,"context_line":"                  instance\u003dself.instance)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        reason \u003d _(\u0027Claim successful\u0027)"},{"line_number":204,"context_line":"        if limit is None:"},{"line_number":205,"context_line":"            # treat resource as unlimited:"},{"line_number":206,"context_line":"            LOG.audit(_(\u0027%(type)s limit not specified, defaulting to \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F896c%3D","line":203,"updated":"2013-12-18 10:20:23.000000000","message":"nitpick: consistency of \" and \u0027 for reasons.","commit_id":"a11c3c50bdbbd95711f8274d6d96256c649b5ad3"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e5b9bdd21b6afe1048f6c666b5f4ebc442dbf5d7","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                  {\u0027type\u0027: type_, \u0027total\u0027: total, \u0027unit\u0027: unit, \u0027used\u0027: used},"},{"line_number":196,"context_line":"                  instance\u003dself.instance)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        reason \u003d []"},{"line_number":199,"context_line":"        if limit is None:"},{"line_number":200,"context_line":"            # treat resource as unlimited:"},{"line_number":201,"context_line":"            LOG.audit(_(\u0027%(type)s limit not specified, defaulting to \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F84HU%3D","line":198,"updated":"2013-12-19 09:25:06.000000000","message":"consider reasons instead of reason","commit_id":"eb22ba048130ce485ee4c076e857df89ff7c2c63"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"d5b21f2504ca0a431ee3c3b39317876eecc27efe","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                  {\u0027type\u0027: type_, \u0027total\u0027: total, \u0027unit\u0027: unit, \u0027used\u0027: used},"},{"line_number":196,"context_line":"                  instance\u003dself.instance)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        reason \u003d []"},{"line_number":199,"context_line":"        if limit is None:"},{"line_number":200,"context_line":"            # treat resource as unlimited:"},{"line_number":201,"context_line":"            LOG.audit(_(\u0027%(type)s limit not specified, defaulting to \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8z4o%3D","line":198,"in_reply_to":"AAAATn%2F84HU%3D","updated":"2013-12-20 03:18:37.000000000","message":"updated to None since one string is expected as return value, not an array, thanks for point out","commit_id":"eb22ba048130ce485ee4c076e857df89ff7c2c63"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e5b9bdd21b6afe1048f6c666b5f4ebc442dbf5d7","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        can_claim \u003d requested \u003c\u003d free"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        if not can_claim:"},{"line_number":216,"context_line":"            reason \u003d (_(\u0027Unable to claim resources. Free %(type)s %(free).02f \u0027"},{"line_number":217,"context_line":"                        \u0027%(unit)s \u003c requested %(requested)d %(unit)s.\u0027) %"},{"line_number":218,"context_line":"                       {\u0027type\u0027: type_, \u0027free\u0027: free, \u0027unit\u0027: unit,"},{"line_number":219,"context_line":"                        \u0027requested\u0027: requested})"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F84HY%3D","line":216,"updated":"2013-12-19 09:25:06.000000000","message":"above you return an array. if this flow is encountered then an array of reasons will not be returned","commit_id":"eb22ba048130ce485ee4c076e857df89ff7c2c63"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"d5b21f2504ca0a431ee3c3b39317876eecc27efe","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        can_claim \u003d requested \u003c\u003d free"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        if not can_claim:"},{"line_number":216,"context_line":"            reason \u003d (_(\u0027Unable to claim resources. Free %(type)s %(free).02f \u0027"},{"line_number":217,"context_line":"                        \u0027%(unit)s \u003c requested %(requested)d %(unit)s.\u0027) %"},{"line_number":218,"context_line":"                       {\u0027type\u0027: type_, \u0027free\u0027: free, \u0027unit\u0027: unit,"},{"line_number":219,"context_line":"                        \u0027requested\u0027: requested})"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8z4M%3D","line":216,"in_reply_to":"AAAATn%2F84HY%3D","updated":"2013-12-20 03:18:37.000000000","message":"string is expected, so updated code above","commit_id":"eb22ba048130ce485ee4c076e857df89ff7c2c63"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"b2cc5f820dde87ea46ba4bf139a4ecdcac26e588","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        LOG.audit(msg % params, instance\u003dself.instance)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        reasons \u003d []"},{"line_number":136,"context_line":"        testfuncs \u003d [(self._test_memory, memory_mb_limit),"},{"line_number":137,"context_line":"            (self._test_disk, disk_gb_limit),"},{"line_number":138,"context_line":"            (self._test_cpu, vcpu_limit)]"},{"line_number":139,"context_line":"        for (test, limit) in testfuncs:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAT3%2F%2FrSQ%3D","line":136,"updated":"2014-01-03 17:00:15.000000000","message":"IMO, this reads a bit awkward.  See my top level comment please.\n\nAlso, I think it would be fine to short-circuit and raise a resource unavailable exception on the first test failure.  (better performance)","commit_id":"af9ed1c641bece6d51c738cb8e49caa87ba6de12"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"619818508cef0449e9cddf22552ac4fe2807b298","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        LOG.audit(msg % params, instance\u003dself.instance)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        reasons \u003d []"},{"line_number":136,"context_line":"        testfuncs \u003d [(self._test_memory, memory_mb_limit),"},{"line_number":137,"context_line":"            (self._test_disk, disk_gb_limit),"},{"line_number":138,"context_line":"            (self._test_cpu, vcpu_limit)]"},{"line_number":139,"context_line":"        for (test, limit) in testfuncs:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2F9sw%3D","line":136,"in_reply_to":"AAAAT3%2F%2FrSQ%3D","updated":"2014-01-06 06:14:34.000000000","message":"According to previous talks, someone suggested to return all failed claim info to avoid multi-try, I agree with that comments so I prefer to use existing code\nI guess the performance will not be highly impacted, what do you think? thanks a lot for your comments.","commit_id":"af9ed1c641bece6d51c738cb8e49caa87ba6de12"},{"author":{"_account_id":8430,"name":"Christopher Lefelhocz","email":"christopher.lefelhoc@rackspace.com","username":"leif"},"change_message_id":"672025c484a56d2ad62135919415670a1ef674ff","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            (self._test_disk, disk_gb_limit),"},{"line_number":144,"context_line":"            (self._test_cpu, vcpu_limit)]"},{"line_number":145,"context_line":"        for (test, limit) in testfuncs:"},{"line_number":146,"context_line":"            (claim, reason) \u003d test(resources, limit)"},{"line_number":147,"context_line":"            if not claim:"},{"line_number":148,"context_line":"                reasons.append(reason)"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FrPU%3D","line":146,"updated":"2014-01-09 18:35:26.000000000","message":"Thinking about this more, I think I agree with Brian.  It\u0027s probably better to adjust this to a try/except block.  I think it\u0027s good to return all claims that fail, so you can continue from the exception block to continue the for loop and then raise a larger exception.  \n\nIt\u0027s more consistent then and removes the need to tuple the return values.","commit_id":"2680400b8fb273df64b52ae4ff285fa4fbf60d94"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"4fa8ea3a229a67ce0335b17a0777b6ac57dedfb9","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            (self._test_disk, disk_gb_limit),"},{"line_number":144,"context_line":"            (self._test_cpu, vcpu_limit)]"},{"line_number":145,"context_line":"        for (test, limit) in testfuncs:"},{"line_number":146,"context_line":"            (claim, reason) \u003d test(resources, limit)"},{"line_number":147,"context_line":"            if not claim:"},{"line_number":148,"context_line":"                reasons.append(reason)"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FokU%3D","line":146,"in_reply_to":"AAAAUH%2F%2FrPU%3D","updated":"2014-01-10 09:19:35.000000000","message":"Thanks, will follow the try/catch exception block method\nbut I double check the code and I think it will not be very useful for user to get more than one resource not available since he definitely need to claim again and system resource will keep changing\n\nwill follow Brian\u0027s suggestion and raise exception if any resource is not available.\n\nthanks for review my code and comments","commit_id":"2680400b8fb273df64b52ae4ff285fa4fbf60d94"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"43fed5c45ad11314888de34bcfa91b46abaf2ad4","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    \"\"\""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def __init__(self, instance, tracker, overhead\u003dNone,"},{"line_number":76,"context_line":"                 resources\u003dNone, limits\u003dNone):"},{"line_number":77,"context_line":"        super(Claim, self).__init__()"},{"line_number":78,"context_line":"        # Stash a copy of the instance at the current point of time"},{"line_number":79,"context_line":"        if isinstance(instance, instance_obj.Instance):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2FQCs%3D","line":76,"updated":"2014-01-15 22:03:27.000000000","message":"Resources are not an optional parameter, so should not be a kwarg IMO.","commit_id":"702287414277aa531a9fe859ee8fa72446554cc9"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"1d6ce963451455dad924273f38f4020ef4b6c378","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    \"\"\""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def __init__(self, instance, tracker, overhead\u003dNone,"},{"line_number":76,"context_line":"                 resources\u003dNone, limits\u003dNone):"},{"line_number":77,"context_line":"        super(Claim, self).__init__()"},{"line_number":78,"context_line":"        # Stash a copy of the instance at the current point of time"},{"line_number":79,"context_line":"        if isinstance(instance, instance_obj.Instance):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2FOxY%3D","line":76,"in_reply_to":"AAAAUH%2F%2FQCs%3D","updated":"2014-01-16 06:02:17.000000000","message":"Done","commit_id":"702287414277aa531a9fe859ee8fa72446554cc9"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"43fed5c45ad11314888de34bcfa91b46abaf2ad4","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            self._test_disk(resources, disk_gb_limit)"},{"line_number":144,"context_line":"            self._test_cpu(resources, vcpu_limit)"},{"line_number":145,"context_line":"        except exception.ComputeResourcesUnavailable:"},{"line_number":146,"context_line":"            LOG.audit(_(\"Claim failed\"), instance\u003dself.instance)"},{"line_number":147,"context_line":"            raise"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        claim \u003d self._test_pci()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2FQCg%3D","line":146,"updated":"2014-01-15 22:03:27.000000000","message":"May need to use the excutils save and reraise exception function.  If eventlet swaps, it will clear the exception info.","commit_id":"702287414277aa531a9fe859ee8fa72446554cc9"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"1d6ce963451455dad924273f38f4020ef4b6c378","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            self._test_disk(resources, disk_gb_limit)"},{"line_number":144,"context_line":"            self._test_cpu(resources, vcpu_limit)"},{"line_number":145,"context_line":"        except exception.ComputeResourcesUnavailable:"},{"line_number":146,"context_line":"            LOG.audit(_(\"Claim failed\"), instance\u003dself.instance)"},{"line_number":147,"context_line":"            raise"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        claim \u003d self._test_pci()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2FOt4%3D","line":146,"in_reply_to":"AAAAUH%2F%2FQCg%3D","updated":"2014-01-16 06:02:17.000000000","message":"thanks a lot for your guide, I didn\u0027t pay attention to this before\nwill follow your suggestions for later works","commit_id":"702287414277aa531a9fe859ee8fa72446554cc9"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"43fed5c45ad11314888de34bcfa91b46abaf2ad4","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            LOG.audit(_(\"Claim failed\"), instance\u003dself.instance)"},{"line_number":147,"context_line":"            raise"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        claim \u003d self._test_pci()"},{"line_number":150,"context_line":"        if not claim:"},{"line_number":151,"context_line":"            reason \u003d _(\u0027Claim pci failed.\u0027)"},{"line_number":152,"context_line":"            LOG.audit(_(\"Claim failed\"), instance\u003dself.instance)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2FP98%3D","line":149,"updated":"2014-01-15 22:03:27.000000000","message":"It\u0027s a little awkward that this test is different than the above 3 in terms of its exception handling.","commit_id":"702287414277aa531a9fe859ee8fa72446554cc9"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"1d6ce963451455dad924273f38f4020ef4b6c378","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            LOG.audit(_(\"Claim failed\"), instance\u003dself.instance)"},{"line_number":147,"context_line":"            raise"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        claim \u003d self._test_pci()"},{"line_number":150,"context_line":"        if not claim:"},{"line_number":151,"context_line":"            reason \u003d _(\u0027Claim pci failed.\u0027)"},{"line_number":152,"context_line":"            LOG.audit(_(\"Claim failed\"), instance\u003dself.instance)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2FOtU%3D","line":149,"in_reply_to":"AAAAUH%2F%2FP98%3D","updated":"2014-01-16 06:02:17.000000000","message":"Code logic adjusted","commit_id":"702287414277aa531a9fe859ee8fa72446554cc9"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"43fed5c45ad11314888de34bcfa91b46abaf2ad4","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            # treat resource as unlimited:"},{"line_number":202,"context_line":"            LOG.audit(_(\u0027%(type)s limit not specified, defaulting to \u0027"},{"line_number":203,"context_line":"                        \u0027unlimited\u0027), {\u0027type\u0027: type_}, instance\u003dself.instance)"},{"line_number":204,"context_line":"            return True, reason"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        free \u003d limit - used"},{"line_number":207,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2FP9w%3D","line":204,"updated":"2014-01-15 22:03:27.000000000","message":"Again, awkward to have a return value only used in one particular case","commit_id":"702287414277aa531a9fe859ee8fa72446554cc9"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"1d6ce963451455dad924273f38f4020ef4b6c378","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            # treat resource as unlimited:"},{"line_number":202,"context_line":"            LOG.audit(_(\u0027%(type)s limit not specified, defaulting to \u0027"},{"line_number":203,"context_line":"                        \u0027unlimited\u0027), {\u0027type\u0027: type_}, instance\u003dself.instance)"},{"line_number":204,"context_line":"            return True, reason"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        free \u003d limit - used"},{"line_number":207,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2FOts%3D","line":204,"in_reply_to":"AAAAUH%2F%2FP9w%3D","updated":"2014-01-16 06:02:17.000000000","message":"Removed","commit_id":"702287414277aa531a9fe859ee8fa72446554cc9"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"e2372bc1e51009617f8d74dfd1cf9ac49e842ebc","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                pci_requests)"},{"line_number":177,"context_line":"            if not claim:"},{"line_number":178,"context_line":"                reason \u003d _(\u0027Claim pci failed.\u0027)"},{"line_number":179,"context_line":"                LOG.audit(_(\"Claim failed\"), instance\u003dself.instance)"},{"line_number":180,"context_line":"                raise exception.ComputeResourcesUnavailable(reason\u003dreason)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _test_cpu(self, resources, limit):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2FKeo%3D","line":179,"updated":"2014-01-16 20:21:29.000000000","message":"I think this message will get double logged.","commit_id":"d2951eb9524beb7d2ac9d14dce45a5b1381d6dec"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"18e3355f7559da7a6fda26f0307e35324e03ed3a","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                pci_requests)"},{"line_number":177,"context_line":"            if not claim:"},{"line_number":178,"context_line":"                reason \u003d _(\u0027Claim pci failed.\u0027)"},{"line_number":179,"context_line":"                LOG.audit(_(\"Claim failed\"), instance\u003dself.instance)"},{"line_number":180,"context_line":"                raise exception.ComputeResourcesUnavailable(reason\u003dreason)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _test_cpu(self, resources, limit):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2FJN4%3D","line":179,"in_reply_to":"AAAAUH%2F%2FKeo%3D","updated":"2014-01-17 01:26:37.000000000","message":"Compare to other places such as cpu/mem, I think the message \u0027Claim pci failed\u0027 would be better here ,thanks","commit_id":"d2951eb9524beb7d2ac9d14dce45a5b1381d6dec"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"ffdf2971b6903339ef40b94cd8bd25a8736af833","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                pci_requests)"},{"line_number":177,"context_line":"            if not can_claim:"},{"line_number":178,"context_line":"                reason \u003d _(\u0027Claim pci failed.\u0027)"},{"line_number":179,"context_line":"                LOG.audit(_(\u0027Claim pci failed\u0027), instance\u003dself.instance)"},{"line_number":180,"context_line":"                raise exception.ComputeResourcesUnavailable(reason\u003dreason)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _test_cpu(self, resources, limit):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2B9t8%3D","line":179,"updated":"2014-01-20 11:04:46.000000000","message":"Do you need this LOG.audit here since it will be logged by the caller anyway?","commit_id":"328eb665d9e09276e94d6bee44ad1d7691390dfb"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"55ff06840825c831babf041ab7b49a62a9ba12ed","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                pci_requests)"},{"line_number":177,"context_line":"            if not can_claim:"},{"line_number":178,"context_line":"                reason \u003d _(\u0027Claim pci failed.\u0027)"},{"line_number":179,"context_line":"                LOG.audit(_(\u0027Claim pci failed\u0027), instance\u003dself.instance)"},{"line_number":180,"context_line":"                raise exception.ComputeResourcesUnavailable(reason\u003dreason)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def _test_cpu(self, resources, limit):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2B9GU%3D","line":179,"in_reply_to":"AAAAUH%2F%2B9t8%3D","updated":"2014-01-20 13:04:43.000000000","message":"ok, I can remove it, thanks","commit_id":"328eb665d9e09276e94d6bee44ad1d7691390dfb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"85d31b0a606bf0fc0adde62648fda074c49e53b7","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        self.overhead \u003d overhead"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        # Check claim at constuctor to avoid mess code"},{"line_number":95,"context_line":"        # Raise exception ComputeResourcesUnavailable if claim failed"},{"line_number":96,"context_line":"        self._claim_test(resources, limits)"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BTW0%3D","line":94,"updated":"2014-01-28 07:43:57.000000000","message":"mess  \u003d\u003e messy\nMaybe this line could be omitted","commit_id":"ff7bacd720b06d7ce582d86eaa36c8ed956a3553"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"5f40040396b0c70f3fff56145dae4ba227c44467","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        self.overhead \u003d overhead"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        # Check claim at constuctor to avoid mess code"},{"line_number":95,"context_line":"        # Raise exception ComputeResourcesUnavailable if claim failed"},{"line_number":96,"context_line":"        self._claim_test(resources, limits)"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fs6M%3D","line":94,"in_reply_to":"AAAAUH%2F%2BTW0%3D","updated":"2014-02-25 07:17:24.000000000","message":"Done","commit_id":"ff7bacd720b06d7ce582d86eaa36c8ed956a3553"}],"nova/compute/resource_tracker.py":[{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"d5d5d6f138970397c6138deb1152d538de6e532e","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                            \u0027overhead\u0027: overhead[\u0027memory_mb\u0027]})"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        claim \u003d claims.Claim(instance_ref, self, overhead\u003doverhead)"},{"line_number":120,"context_line":"        (can_claim, reason) \u003d claim.test(self.compute_node, limits)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        if can_claim:"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F84Ho%3D","line":120,"updated":"2013-12-19 09:29:27.000000000","message":"Prefer you rename this to reasons as it\u0027s a list now.","commit_id":"eb22ba048130ce485ee4c076e857df89ff7c2c63"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"d5b21f2504ca0a431ee3c3b39317876eecc27efe","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                            \u0027overhead\u0027: overhead[\u0027memory_mb\u0027]})"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        claim \u003d claims.Claim(instance_ref, self, overhead\u003doverhead)"},{"line_number":120,"context_line":"        (can_claim, reason) \u003d claim.test(self.compute_node, limits)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        if can_claim:"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8z4E%3D","line":120,"in_reply_to":"AAAATn%2F84Ho%3D","updated":"2013-12-20 03:18:37.000000000","message":"Done","commit_id":"eb22ba048130ce485ee4c076e857df89ff7c2c63"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"d5d5d6f138970397c6138deb1152d538de6e532e","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            return claim"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        else:"},{"line_number":136,"context_line":"            raise exception.ComputeResourcesUnavailable(reason\u003dreason)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":139,"context_line":"    def resize_claim(self, context, instance, instance_type, limits\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F84Hg%3D","line":136,"updated":"2013-12-19 09:29:27.000000000","message":"reasons is now a list, so I\u0027d expect the kwarg to be something like:\n  reason\u003d\", \".join(reasons)","commit_id":"eb22ba048130ce485ee4c076e857df89ff7c2c63"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"d5b21f2504ca0a431ee3c3b39317876eecc27efe","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            return claim"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        else:"},{"line_number":136,"context_line":"            raise exception.ComputeResourcesUnavailable(reason\u003dreason)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":139,"context_line":"    def resize_claim(self, context, instance, instance_type, limits\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8z4A%3D","line":136,"in_reply_to":"AAAATn%2F84Hg%3D","updated":"2013-12-20 03:18:37.000000000","message":"Done","commit_id":"eb22ba048130ce485ee4c076e857df89ff7c2c63"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"d5d5d6f138970397c6138deb1152d538de6e532e","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        claim \u003d claims.ResizeClaim(instance_ref, instance_type, self,"},{"line_number":166,"context_line":"                                   overhead\u003doverhead)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        (can_claim, reason) \u003d claim.test(self.compute_node, limits)"},{"line_number":169,"context_line":"        if can_claim:"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"            migration \u003d self._create_migration(context, instance_ref,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F84Gs%3D","line":168,"updated":"2013-12-19 09:29:27.000000000","message":"as above","commit_id":"eb22ba048130ce485ee4c076e857df89ff7c2c63"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"d5b21f2504ca0a431ee3c3b39317876eecc27efe","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        claim \u003d claims.ResizeClaim(instance_ref, instance_type, self,"},{"line_number":166,"context_line":"                                   overhead\u003doverhead)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        (can_claim, reason) \u003d claim.test(self.compute_node, limits)"},{"line_number":169,"context_line":"        if can_claim:"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"            migration \u003d self._create_migration(context, instance_ref,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8z38%3D","line":168,"in_reply_to":"AAAATn%2F84Gs%3D","updated":"2013-12-20 03:18:37.000000000","message":"Done","commit_id":"eb22ba048130ce485ee4c076e857df89ff7c2c63"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"d5d5d6f138970397c6138deb1152d538de6e532e","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            return claim"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        else:"},{"line_number":185,"context_line":"            raise exception.ComputeResourcesUnavailable(reason\u003dreason)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def _create_migration(self, context, instance, instance_type):"},{"line_number":188,"context_line":"        \"\"\"Create a migration record for the upcoming resize.  This should"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F84Go%3D","line":185,"updated":"2013-12-19 09:29:27.000000000","message":"as above","commit_id":"eb22ba048130ce485ee4c076e857df89ff7c2c63"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"d5b21f2504ca0a431ee3c3b39317876eecc27efe","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            return claim"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        else:"},{"line_number":185,"context_line":"            raise exception.ComputeResourcesUnavailable(reason\u003dreason)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def _create_migration(self, context, instance, instance_type):"},{"line_number":188,"context_line":"        \"\"\"Create a migration record for the upcoming resize.  This should"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8z34%3D","line":185,"in_reply_to":"AAAATn%2F84Go%3D","updated":"2013-12-20 03:18:37.000000000","message":"Done","commit_id":"eb22ba048130ce485ee4c076e857df89ff7c2c63"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"b2cc5f820dde87ea46ba4bf139a4ecdcac26e588","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                            \u0027overhead\u0027: overhead[\u0027memory_mb\u0027]})"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        claim \u003d claims.Claim(instance_ref, self, overhead\u003doverhead)"},{"line_number":120,"context_line":"        (can_claim, reasons) \u003d claim.test(self.compute_node, limits)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        if can_claim:"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAT3%2F%2FrTA%3D","line":120,"updated":"2014-01-03 17:00:15.000000000","message":"See my top-level comment on the review.  This assignment and the if/else block below can go away.","commit_id":"af9ed1c641bece6d51c738cb8e49caa87ba6de12"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"619818508cef0449e9cddf22552ac4fe2807b298","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                            \u0027overhead\u0027: overhead[\u0027memory_mb\u0027]})"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        claim \u003d claims.Claim(instance_ref, self, overhead\u003doverhead)"},{"line_number":120,"context_line":"        (can_claim, reasons) \u003d claim.test(self.compute_node, limits)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        if can_claim:"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2F9t0%3D","line":120,"in_reply_to":"AAAAT3%2F%2FrTA%3D","updated":"2014-01-06 06:14:34.000000000","message":"thanks for your suggestion, I think it\u0027s a better method","commit_id":"af9ed1c641bece6d51c738cb8e49caa87ba6de12"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"b2cc5f820dde87ea46ba4bf139a4ecdcac26e588","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        claim \u003d claims.ResizeClaim(instance_ref, instance_type, self,"},{"line_number":167,"context_line":"                                   overhead\u003doverhead)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        (can_claim, reasons) \u003d claim.test(self.compute_node, limits)"},{"line_number":170,"context_line":"        if can_claim:"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"            migration \u003d self._create_migration(context, instance_ref,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAT3%2F%2FrSw%3D","line":169,"updated":"2014-01-03 17:00:15.000000000","message":"same as above","commit_id":"af9ed1c641bece6d51c738cb8e49caa87ba6de12"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"619818508cef0449e9cddf22552ac4fe2807b298","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        claim \u003d claims.ResizeClaim(instance_ref, instance_type, self,"},{"line_number":167,"context_line":"                                   overhead\u003doverhead)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        (can_claim, reasons) \u003d claim.test(self.compute_node, limits)"},{"line_number":170,"context_line":"        if can_claim:"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"            migration \u003d self._create_migration(context, instance_ref,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2F9ts%3D","line":169,"in_reply_to":"AAAAT3%2F%2FrSw%3D","updated":"2014-01-06 06:14:34.000000000","message":"Done","commit_id":"af9ed1c641bece6d51c738cb8e49caa87ba6de12"}],"nova/exception.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"eb07cb746433a4d44c7b197b34b4a5510e7b750f","unresolved":false,"context_lines":[{"line_number":393,"context_line":""},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"class ComputeResourcesUnavailable(ServiceUnavailable):"},{"line_number":396,"context_line":"    msg_fmt \u003d _(\"Insufficient compute resources: %(reason)s\")"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"class HypervisorUnavailable(NovaException):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAT3%2F%2Frbg%3D","line":396,"updated":"2014-01-03 16:36:24.000000000","message":"nit: the final point \".\" (if you upload a new patchset)","commit_id":"af9ed1c641bece6d51c738cb8e49caa87ba6de12"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"619818508cef0449e9cddf22552ac4fe2807b298","unresolved":false,"context_lines":[{"line_number":393,"context_line":""},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"class ComputeResourcesUnavailable(ServiceUnavailable):"},{"line_number":396,"context_line":"    msg_fmt \u003d _(\"Insufficient compute resources: %(reason)s\")"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"class HypervisorUnavailable(NovaException):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2F9uM%3D","line":396,"in_reply_to":"AAAAT3%2F%2Frbg%3D","updated":"2014-01-06 06:14:34.000000000","message":"Done","commit_id":"af9ed1c641bece6d51c738cb8e49caa87ba6de12"}],"nova/tests/compute/test_claims.py":[{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"644e06206fcbfbb4f4523dc9a7e14da0bd8974e4","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def test_memory_unlimited(self):"},{"line_number":100,"context_line":"        claim \u003d self._claim(memory_mb\u003d99999999)"},{"line_number":101,"context_line":"        self.assertTrue(claim.test(self.resources)[0])"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def test_disk_unlimited_root(self):"},{"line_number":104,"context_line":"        claim \u003d self._claim(root_gb\u003d999999)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F890I%3D","line":101,"updated":"2013-12-18 10:20:23.000000000","message":"I\u0027d like to see some tests for the reasons to be added, too.","commit_id":"a11c3c50bdbbd95711f8274d6d96256c649b5ad3"},{"author":{"_account_id":8430,"name":"Christopher Lefelhocz","email":"christopher.lefelhoc@rackspace.com","username":"leif"},"change_message_id":"3a8620dc5a45302b8947e4f9c1c98e393a76d6f0","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_cpu_unlimited(self):"},{"line_number":96,"context_line":"        claim \u003d self._claim(vcpus\u003d100000)"},{"line_number":97,"context_line":"        self.assertTrue(claim.test(self.resources))"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def test_memory_unlimited(self):"},{"line_number":100,"context_line":"        claim \u003d self._claim(memory_mb\u003d99999999)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F87uM%3D","line":97,"updated":"2013-12-18 16:40:52.000000000","message":"Missed a claim fix test...","commit_id":"7d73b0701ae8176de4975ee382538e376d0ef1e5"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3958accbde33c91ec88825b7c594101f258b212d","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_cpu_unlimited(self):"},{"line_number":96,"context_line":"        claim \u003d self._claim(vcpus\u003d100000)"},{"line_number":97,"context_line":"        self.assertTrue(claim.test(self.resources))"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def test_memory_unlimited(self):"},{"line_number":100,"context_line":"        claim \u003d self._claim(memory_mb\u003d99999999)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F84rg%3D","line":97,"in_reply_to":"AAAATn%2F87uM%3D","updated":"2013-12-19 06:52:06.000000000","message":"Done","commit_id":"7d73b0701ae8176de4975ee382538e376d0ef1e5"},{"author":{"_account_id":8430,"name":"Christopher Lefelhocz","email":"christopher.lefelhoc@rackspace.com","username":"leif"},"change_message_id":"3a8620dc5a45302b8947e4f9c1c98e393a76d6f0","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        limits \u003d {\u0027memory_mb\u0027: 2048}"},{"line_number":136,"context_line":"        (can_claim, reason) \u003d claim.test(self.resources, limits)"},{"line_number":137,"context_line":"        self.assertFalse(can_claim)"},{"line_number":138,"context_line":"        self.assertTrue(len(reason) !\u003d 0)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def test_cpu_insufficient(self):"},{"line_number":141,"context_line":"        claim \u003d self._claim(vcpus\u003d17)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F87sg%3D","line":138,"updated":"2013-12-18 16:40:52.000000000","message":"Shouldn\u0027t we check this is \u003d\u003d 1 and subsequent claims \u003d\u003d 1 as well?","commit_id":"7d73b0701ae8176de4975ee382538e376d0ef1e5"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3958accbde33c91ec88825b7c594101f258b212d","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        limits \u003d {\u0027memory_mb\u0027: 2048}"},{"line_number":136,"context_line":"        (can_claim, reason) \u003d claim.test(self.resources, limits)"},{"line_number":137,"context_line":"        self.assertFalse(can_claim)"},{"line_number":138,"context_line":"        self.assertTrue(len(reason) !\u003d 0)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def test_cpu_insufficient(self):"},{"line_number":141,"context_line":"        claim \u003d self._claim(vcpus\u003d17)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F84rY%3D","line":138,"in_reply_to":"AAAATn%2F87sg%3D","updated":"2013-12-19 06:52:06.000000000","message":"I agree, it will be better","commit_id":"7d73b0701ae8176de4975ee382538e376d0ef1e5"},{"author":{"_account_id":8430,"name":"Christopher Lefelhocz","email":"christopher.lefelhoc@rackspace.com","username":"leif"},"change_message_id":"3a8620dc5a45302b8947e4f9c1c98e393a76d6f0","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        (can_claim, reason) \u003d claim.test(self.resources, limits)"},{"line_number":170,"context_line":"        self.assertFalse(can_claim)"},{"line_number":171,"context_line":"        self.assertTrue(len(reason) !\u003d 0)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def test_pci_pass(self):"},{"line_number":174,"context_line":"        dev_dict \u003d {"},{"line_number":175,"context_line":"            \u0027compute_node_id\u0027: 1,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F87rg%3D","line":172,"updated":"2013-12-18 16:40:52.000000000","message":"If we are changing to this form, we might as well test one form of multiple insufficient resources.","commit_id":"7d73b0701ae8176de4975ee382538e376d0ef1e5"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"3958accbde33c91ec88825b7c594101f258b212d","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        (can_claim, reason) \u003d claim.test(self.resources, limits)"},{"line_number":170,"context_line":"        self.assertFalse(can_claim)"},{"line_number":171,"context_line":"        self.assertTrue(len(reason) !\u003d 0)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def test_pci_pass(self):"},{"line_number":174,"context_line":"        dev_dict \u003d {"},{"line_number":175,"context_line":"            \u0027compute_node_id\u0027: 1,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F84rQ%3D","line":172,"in_reply_to":"AAAATn%2F87rg%3D","updated":"2013-12-19 06:52:06.000000000","message":"Added several test cases for multiple reason , thanks","commit_id":"7d73b0701ae8176de4975ee382538e376d0ef1e5"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"d5d5d6f138970397c6138deb1152d538de6e532e","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_cpu_unlimited(self):"},{"line_number":96,"context_line":"        claim \u003d self._claim(vcpus\u003d100000)"},{"line_number":97,"context_line":"        (can_claim, reason) \u003d claim.test(self.resources)"},{"line_number":98,"context_line":"        self.assertTrue(can_claim)"},{"line_number":99,"context_line":"        self.assertTrue(len(reason) \u003d\u003d 0)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F84GM%3D","line":97,"updated":"2013-12-19 09:29:27.000000000","message":"I prefer this to be (can_claim, reasons) throughout, as it\u0027s now a list.","commit_id":"eb22ba048130ce485ee4c076e857df89ff7c2c63"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"d5b21f2504ca0a431ee3c3b39317876eecc27efe","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_cpu_unlimited(self):"},{"line_number":96,"context_line":"        claim \u003d self._claim(vcpus\u003d100000)"},{"line_number":97,"context_line":"        (can_claim, reason) \u003d claim.test(self.resources)"},{"line_number":98,"context_line":"        self.assertTrue(can_claim)"},{"line_number":99,"context_line":"        self.assertTrue(len(reason) \u003d\u003d 0)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F8z30%3D","line":97,"in_reply_to":"AAAATn%2F84GM%3D","updated":"2013-12-20 03:18:37.000000000","message":"Done","commit_id":"eb22ba048130ce485ee4c076e857df89ff7c2c63"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"959e04bc728afde29c63030b6f6507708490ef6c","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        self.assertRaises(exception.ComputeResourcesUnavailable,"},{"line_number":147,"context_line":"                          self._claim, limits\u003dlimits,"},{"line_number":148,"context_line":"                          root_gb\u003d10, ephemeral_gb\u003d40)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def test_disk_and_memory_insufficient(self):"},{"line_number":151,"context_line":"        limits \u003d {\u0027disk_gb\u0027: 45, \u0027memory_mb\u0027: 8192}"},{"line_number":152,"context_line":"        self.assertRaises(exception.ComputeResourcesUnavailable,"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVX%2F%2Fx%2BY%3D","line":149,"updated":"2014-02-28 10:35:50.000000000","message":"In these 3 tests, how would you check that the right information is in the ComputeResourcesUnavailable?  I\u0027m not a big fan of string-matching on error messages but how else do you know that _all_ the failure reasons are in the response?","commit_id":"3ed2e20d043dcc85cfb16911223a1b8bc97a52cb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"412b69931bad63a0c3391c41df7cf42790773637","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        self.assertRaises(exception.ComputeResourcesUnavailable,"},{"line_number":147,"context_line":"                          self._claim, limits\u003dlimits,"},{"line_number":148,"context_line":"                          root_gb\u003d10, ephemeral_gb\u003d40)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def test_disk_and_memory_insufficient(self):"},{"line_number":151,"context_line":"        limits \u003d {\u0027disk_gb\u0027: 45, \u0027memory_mb\u0027: 8192}"},{"line_number":152,"context_line":"        self.assertRaises(exception.ComputeResourcesUnavailable,"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAVX%2F%2FwfE%3D","line":149,"in_reply_to":"AAAAVX%2F%2Fx%2BY%3D","updated":"2014-02-28 14:14:15.000000000","message":"Done","commit_id":"3ed2e20d043dcc85cfb16911223a1b8bc97a52cb"}]}
