)]}'
{"ironic/drivers/modules/ipmitool.py":[{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"70f0b9d976c15f0f5c4ecedb1493a07cfb090a7a","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            raise loopingcall.LoopingCallDone()"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        if retries[0] \u003e CONF.ipmi.retry_timeout:"},{"line_number":122,"context_line":"            LOG.error(_(\"IPMI power on failed after %d tries\") % ("},{"line_number":123,"context_line":"                CONF.ipmi.retry_timeout))"},{"line_number":124,"context_line":"            state[0] \u003d states.ERROR"},{"line_number":125,"context_line":"            raise loopingcall.LoopingCallDone()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BgKU%3D","line":122,"updated":"2013-11-25 12:26:05.000000000","message":"Could lead to confusion logging the number of tries using the retry_timeout conf option (number of attemps vs number of seconds)","commit_id":"0d2913babeb3cba9c37f0e01edf52eff176e017c"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"83d202d0bee47cb27aef54d50a31253d2a997b31","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            raise loopingcall.LoopingCallDone()"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        if retries[0] \u003e CONF.ipmi.retry_timeout:"},{"line_number":122,"context_line":"            LOG.error(_(\"IPMI power on failed after %d tries\") % ("},{"line_number":123,"context_line":"                CONF.ipmi.retry_timeout))"},{"line_number":124,"context_line":"            state[0] \u003d states.ERROR"},{"line_number":125,"context_line":"            raise loopingcall.LoopingCallDone()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Bf1s%3D","line":122,"in_reply_to":"AAAATn%2F%2BgFk%3D","updated":"2013-11-25 13:37:58.000000000","message":"Ah good catch, will fix it! Thanks","commit_id":"0d2913babeb3cba9c37f0e01edf52eff176e017c"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"d9175dbf0d7bad1be604a5bf3395627610d1d561","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            raise loopingcall.LoopingCallDone()"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        if retries[0] \u003e CONF.ipmi.retry_timeout:"},{"line_number":122,"context_line":"            LOG.error(_(\"IPMI power on failed after %d tries\") % ("},{"line_number":123,"context_line":"                CONF.ipmi.retry_timeout))"},{"line_number":124,"context_line":"            state[0] \u003d states.ERROR"},{"line_number":125,"context_line":"            raise loopingcall.LoopingCallDone()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BgFk%3D","line":122,"in_reply_to":"AAAATn%2F%2BgKU%3D","updated":"2013-11-25 12:40:02.000000000","message":"Agree with Ghe.","commit_id":"0d2913babeb3cba9c37f0e01edf52eff176e017c"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"70f0b9d976c15f0f5c4ecedb1493a07cfb090a7a","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        if retries[0] \u003e CONF.ipmi.retry_timeout:"},{"line_number":157,"context_line":"            LOG.error(_(\"IPMI power off failed after %d tries\") % ("},{"line_number":158,"context_line":"                CONF.ipmi.retry_timeout))"},{"line_number":159,"context_line":"            state[0] \u003d states.ERROR"},{"line_number":160,"context_line":"            raise loopingcall.LoopingCallDone()"},{"line_number":161,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BgKM%3D","line":158,"updated":"2013-11-25 12:26:05.000000000","message":"ditto","commit_id":"0d2913babeb3cba9c37f0e01edf52eff176e017c"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"dfbeaf53611e6037819003b78252bab390496884","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        if retries[0] \u003e CONF.ipmi.retry_timeout:"},{"line_number":122,"context_line":"            LOG.error(_(\u0027IPMI power on timed out after %(secs)d seconds and \u0027"},{"line_number":123,"context_line":"                        \u0027%(tries)d tries\u0027), {\u0027secs\u0027: CONF.ipmi.retry_timeout,"},{"line_number":124,"context_line":"                                             \u0027tries\u0027: retries[0]})"},{"line_number":125,"context_line":"            state[0] \u003d states.ERROR"},{"line_number":126,"context_line":"            raise loopingcall.LoopingCallDone()"},{"line_number":127,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F91PQ%3D","line":124,"updated":"2014-02-03 15:01:24.000000000","message":"And for python logging, don\u0027t interpolate here. Instead do\n\nLOG.error(_(\u0027IPMI power on timed out after %(secs)d seconds and %(tries)d tries\u0027), secs\u003dCONF.ipmi.retry_timeout, tries\u003dretries[0])","commit_id":"62f40d5db961d4da0fd5687def694743af594e8d"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"3bc020ccbb26bd4f82ef8af2b161f015ca1b9a46","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        if retries[0] \u003e CONF.ipmi.retry_timeout:"},{"line_number":122,"context_line":"            LOG.error(_(\u0027IPMI power on timed out after %(secs)d seconds and \u0027"},{"line_number":123,"context_line":"                        \u0027%(tries)d tries\u0027), {\u0027secs\u0027: CONF.ipmi.retry_timeout,"},{"line_number":124,"context_line":"                                             \u0027tries\u0027: retries[0]})"},{"line_number":125,"context_line":"            state[0] \u003d states.ERROR"},{"line_number":126,"context_line":"            raise loopingcall.LoopingCallDone()"},{"line_number":127,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Bbis%3D","line":124,"updated":"2013-11-26 07:21:29.000000000","message":"Lucas, it is better that we keep consistent to use double quotes for the message text string, and use single quote for the data item id.","commit_id":"62f40d5db961d4da0fd5687def694743af594e8d"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"1fa410eb53013efb80b198e531c8669824e62d17","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        if retries[0] \u003e CONF.ipmi.retry_timeout:"},{"line_number":122,"context_line":"            LOG.error(_(\u0027IPMI power on timed out after %(secs)d seconds and \u0027"},{"line_number":123,"context_line":"                        \u0027%(tries)d tries\u0027), {\u0027secs\u0027: CONF.ipmi.retry_timeout,"},{"line_number":124,"context_line":"                                             \u0027tries\u0027: retries[0]})"},{"line_number":125,"context_line":"            state[0] \u003d states.ERROR"},{"line_number":126,"context_line":"            raise loopingcall.LoopingCallDone()"},{"line_number":127,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Bfdc%3D","line":124,"updated":"2013-11-25 14:59:51.000000000","message":"Taking a deep look at the code, looks like retries and retry_timeout are tighly coupled (retries incremented by 1 each time, untill is bigger than the timeout), so in this case, retries will be always 1 unit bigger than the timeout.","commit_id":"62f40d5db961d4da0fd5687def694743af594e8d"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"771c6be8ded3b382cc854e8d5b0343fda9c9df26","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        if retries[0] \u003e CONF.ipmi.retry_timeout:"},{"line_number":122,"context_line":"            LOG.error(_(\u0027IPMI power on timed out after %(secs)d seconds and \u0027"},{"line_number":123,"context_line":"                        \u0027%(tries)d tries\u0027), {\u0027secs\u0027: CONF.ipmi.retry_timeout,"},{"line_number":124,"context_line":"                                             \u0027tries\u0027: retries[0]})"},{"line_number":125,"context_line":"            state[0] \u003d states.ERROR"},{"line_number":126,"context_line":"            raise loopingcall.LoopingCallDone()"},{"line_number":127,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BCbM%3D","line":124,"in_reply_to":"AAAATn%2F%2Bfdc%3D","updated":"2014-01-30 19:08:23.000000000","message":"I agree with Ghe here -- this log message unnecessarily includes the same information twice. Also, because loopingcall is not an exact timer, it is incorrect to say \"after %(secs)d seconds\" -- it may actually be more than that.","commit_id":"62f40d5db961d4da0fd5687def694743af594e8d"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"0916e150a3b2123dc2eb00b31645d37ef5b7b47d","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        if retries[0] \u003e CONF.ipmi.retry_timeout:"},{"line_number":122,"context_line":"            LOG.error(_(\u0027IPMI power on timed out after %(secs)d seconds and \u0027"},{"line_number":123,"context_line":"                        \u0027%(tries)d tries\u0027), {\u0027secs\u0027: CONF.ipmi.retry_timeout,"},{"line_number":124,"context_line":"                                             \u0027tries\u0027: retries[0]})"},{"line_number":125,"context_line":"            state[0] \u003d states.ERROR"},{"line_number":126,"context_line":"            raise loopingcall.LoopingCallDone()"},{"line_number":127,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FrO4%3D","line":124,"in_reply_to":"AAAAUH%2F91PQ%3D","updated":"2014-02-11 15:33:00.000000000","message":"just ignore my previous comment \u003d)","commit_id":"62f40d5db961d4da0fd5687def694743af594e8d"},{"author":{"_account_id":1726,"name":"Ghe Rivero","email":"ghe.rivero@gmail.com","username":"ghe.rivero"},"change_message_id":"1fa410eb53013efb80b198e531c8669824e62d17","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            raise loopingcall.LoopingCallDone()"},{"line_number":127,"context_line":"        try:"},{"line_number":128,"context_line":"            # only issue \"power on\" once"},{"line_number":129,"context_line":"            if retries[0] \u003d\u003d 0:"},{"line_number":130,"context_line":"                _exec_ipmitool(driver_info, \"power on\")"},{"line_number":131,"context_line":"            retries[0] +\u003d 1"},{"line_number":132,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BfcU%3D","line":129,"updated":"2013-11-25 14:59:51.000000000","message":"We only try the first time, so maybe this variable name is not very accurated.","commit_id":"62f40d5db961d4da0fd5687def694743af594e8d"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"dfbeaf53611e6037819003b78252bab390496884","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        if retries[0] \u003e CONF.ipmi.retry_timeout:"},{"line_number":158,"context_line":"            LOG.error(_(\u0027IPMI power off timed out after %(secs)d seconds and \u0027"},{"line_number":159,"context_line":"                        \u0027%(tries)d tries\u0027), {\u0027secs\u0027: CONF.ipmi.retry_timeout,"},{"line_number":160,"context_line":"                                             \u0027tries\u0027: retries[0]})"},{"line_number":161,"context_line":"            state[0] \u003d states.ERROR"},{"line_number":162,"context_line":"            raise loopingcall.LoopingCallDone()"},{"line_number":163,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F91Os%3D","line":160,"updated":"2014-02-03 15:01:24.000000000","message":"Same here about logging.","commit_id":"62f40d5db961d4da0fd5687def694743af594e8d"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"3bc020ccbb26bd4f82ef8af2b161f015ca1b9a46","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        if retries[0] \u003e CONF.ipmi.retry_timeout:"},{"line_number":158,"context_line":"            LOG.error(_(\u0027IPMI power off timed out after %(secs)d seconds and \u0027"},{"line_number":159,"context_line":"                        \u0027%(tries)d tries\u0027), {\u0027secs\u0027: CONF.ipmi.retry_timeout,"},{"line_number":160,"context_line":"                                             \u0027tries\u0027: retries[0]})"},{"line_number":161,"context_line":"            state[0] \u003d states.ERROR"},{"line_number":162,"context_line":"            raise loopingcall.LoopingCallDone()"},{"line_number":163,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Bbik%3D","line":160,"updated":"2013-11-26 07:21:29.000000000","message":"ditto","commit_id":"62f40d5db961d4da0fd5687def694743af594e8d"}]}
