)]}'
{"doc/source/deploy/install-guide.rst":[{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"a068b362577047dafb59c0e8599d1fd42ec78fc5","unresolved":false,"context_lines":[{"line_number":344,"context_line":"------------"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"If using the IPMITool driver, the ``ipmitool`` command must be present on the"},{"line_number":347,"context_line":"service node(s) where ``ironic-conductor`` is running. On most distos, this"},{"line_number":348,"context_line":"is provided as part of the ``ipmitool`` package. Source code is available at"},{"line_number":349,"context_line":"http://ipmitool.sourceforge.net/"},{"line_number":350,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_2615c048","line":347,"updated":"2014-06-04 23:02:56.000000000","message":"typo: s/distos/distros/","commit_id":"5aad192aa0bdbfce22badb23b723d3b36d0e2a3b"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"256c970838c68680c5014536d18f270b6857cb50","unresolved":false,"context_lines":[{"line_number":344,"context_line":"------------"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"If using the IPMITool driver, the ``ipmitool`` command must be present on the"},{"line_number":347,"context_line":"service node(s) where ``ironic-conductor`` is running. On most distos, this"},{"line_number":348,"context_line":"is provided as part of the ``ipmitool`` package. Source code is available at"},{"line_number":349,"context_line":"http://ipmitool.sourceforge.net/"},{"line_number":350,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_b511b055","line":347,"in_reply_to":"1ae5cdf2_2615c048","updated":"2014-06-06 16:02:27.000000000","message":"Done","commit_id":"5aad192aa0bdbfce22badb23b723d3b36d0e2a3b"}],"ironic/drivers/modules/ipmitool.py":[{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"7661274020f366e2f95c16df7c12d19c409779ee","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    # calculate number of retries"},{"line_number":159,"context_line":"    num_tries \u003d int(CONF.ipmi.retry_timeout / CONF.ipmi.min_command_interval)"},{"line_number":160,"context_line":"    args.append(\u0027-N\u0027)"},{"line_number":161,"context_line":"    args.append(num_tries)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    args.append(\u0027-R\u0027)"},{"line_number":164,"context_line":"    args.append(CONF.ipmi.min_command_interval)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_55d747ed","line":161,"updated":"2014-06-02 06:33:27.000000000","message":"Number of retries is -R.  This looks like a bug.","commit_id":"d072c7a9967c4817f767bb4ad71fd13ed2b69eac"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"7661274020f366e2f95c16df7c12d19c409779ee","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    args.append(num_tries)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    args.append(\u0027-R\u0027)"},{"line_number":164,"context_line":"    args.append(CONF.ipmi.min_command_interval)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    # \u0027ipmitool\u0027 command will prompt password if there is no \u0027-f\u0027 option,"},{"line_number":167,"context_line":"    # we set it to \u0027\\0\u0027 to write a password file to support empty password"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_b5ffab66","line":164,"updated":"2014-06-02 06:33:27.000000000","message":"Minimum command interval is -N.  This looks like a bug.","commit_id":"d072c7a9967c4817f767bb4ad71fd13ed2b69eac"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"5fe3473687878a0bda69e5ed6af8d95c6c977c9b","unresolved":false,"context_lines":[{"line_number":62,"context_line":"VALID_BOOT_DEVICES \u003d [\u0027pxe\u0027, \u0027disk\u0027, \u0027safe\u0027, \u0027cdrom\u0027, \u0027bios\u0027]"},{"line_number":63,"context_line":"VALID_PRIV_LEVELS \u003d [\u0027ADMINISTRATOR\u0027, \u0027CALLBACK\u0027, \u0027OPERATOR\u0027, \u0027USER\u0027]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"TIMING_MIN_VER \u003d version.LooseVersion(\"1.8.12\")"},{"line_number":66,"context_line":"TIMING_SUPPORT \u003d None"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1ae5cdf2_9b0a5e24","line":65,"updated":"2014-06-05 08:55:43.000000000","message":"Lucas wrote: \"Oddly enough, RHEL 6.4 also have ipmitool version 1.8.11, but those options seems to be supported: http://paste.openstack.org/show/82561/ \"","commit_id":"5aad192aa0bdbfce22badb23b723d3b36d0e2a3b"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"a068b362577047dafb59c0e8599d1fd42ec78fc5","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        args.append(\u0027-f\u0027)"},{"line_number":205,"context_line":"        args.append(pw_file)"},{"line_number":206,"context_line":"        args.extend(command.split(\" \"))"},{"line_number":207,"context_line":"        out, err \u003d utils.execute(*args)"},{"line_number":208,"context_line":"        LOG.debug(\"ipmitool stdout: \u0027%(out)s\u0027, stderr: \u0027%(err)s\u0027\","},{"line_number":209,"context_line":"                  {\u0027out\u0027: out, \u0027err\u0027: err})"},{"line_number":210,"context_line":"        return out, err"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ae5cdf2_69e5d907","line":207,"updated":"2014-06-04 23:02:56.000000000","message":"Do we want to still pass attempts\u003d3 if timing support isn\u0027t there?","commit_id":"5aad192aa0bdbfce22badb23b723d3b36d0e2a3b"},{"author":{"_account_id":7589,"name":"linggao","email":"linggao@us.ibm.com","username":"linggao"},"change_message_id":"e8681257c88f333d265c93fcbce45e584435b717","unresolved":false,"context_lines":[{"line_number":56,"context_line":"CONF.import_opt(\u0027min_command_interval\u0027,"},{"line_number":57,"context_line":"                \u0027ironic.drivers.modules.ipminative\u0027,"},{"line_number":58,"context_line":"                group\u003d\u0027ipmi\u0027)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"VALID_BOOT_DEVICES \u003d [\u0027pxe\u0027, \u0027disk\u0027, \u0027safe\u0027, \u0027cdrom\u0027, \u0027bios\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_3da0cb42","line":59,"updated":"2014-06-10 13:52:03.000000000","message":"Since ipmitool is required and ipminative is optional now, it makes sense to register the opts in ipmi driver and have ipminative driver import the opts.","commit_id":"ae48dce5021bac21ec6acae066a6ca85250eccf8"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c1959e842364483067b2cad4b4e44c5635474ae7","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    intended to be called from the __init__ method of such classes only."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    :returns: boolean indicating whether support for -N -R is present"},{"line_number":83,"context_line":"    :raises: OSError, ProcessExecutionError"},{"line_number":84,"context_line":"    \"\"\""},{"line_number":85,"context_line":"    global TIMING_SUPPORT"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_6b1f28b8","line":83,"updated":"2014-06-09 09:14:25.000000000","message":"nit: one exception per line","commit_id":"ae48dce5021bac21ec6acae066a6ca85250eccf8"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"03b3b24297c11d826c0f9a2ba085466b4b6eef42","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    global TIMING_SUPPORT"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    if TIMING_SUPPORT is None:"},{"line_number":88,"context_line":"        # create SemVer object by popping the last \"word\" from the output"},{"line_number":89,"context_line":"        out, err \u003d utils.execute(*[\u0027ipmitool\u0027, \u0027-V\u0027])"},{"line_number":90,"context_line":"        ver \u003d version.LooseVersion("},{"line_number":91,"context_line":"                out.strip().split(\u0027 \u0027).pop())"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_e1b5197f","line":88,"updated":"2014-06-09 10:19:21.000000000","message":"it\u0027s a bit confusing if people don\u0027t know how ipmitool exposes its version.\n\nMaybe it should just say: \"get the version from the ipmitool -V output\"... If the version number is the last word or first is irrelevant and causes a bit of confusion IMO.\n\nOR\n\nmaybe showing one example of the ipmittool -V output: \n\n [lucasagomes@lucasagomes ironic]$ ipmitool -V\n ipmitool version 1.8.13","commit_id":"ae48dce5021bac21ec6acae066a6ca85250eccf8"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"065dbc1363f93d703dd4a9634e30071653335032","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    global TIMING_SUPPORT"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    if TIMING_SUPPORT is None:"},{"line_number":88,"context_line":"        # create SemVer object by popping the last \"word\" from the output"},{"line_number":89,"context_line":"        out, err \u003d utils.execute(*[\u0027ipmitool\u0027, \u0027-V\u0027])"},{"line_number":90,"context_line":"        ver \u003d version.LooseVersion("},{"line_number":91,"context_line":"                out.strip().split(\u0027 \u0027).pop())"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_1ee133fe","line":88,"in_reply_to":"1ae5cdf2_e1b5197f","updated":"2014-06-11 00:01:42.000000000","message":"this is being reworked in the next patch","commit_id":"ae48dce5021bac21ec6acae066a6ca85250eccf8"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c1959e842364483067b2cad4b4e44c5635474ae7","unresolved":false,"context_lines":[{"line_number":190,"context_line":"    # specify retry timing more precisely, if supported"},{"line_number":191,"context_line":"    if TIMING_SUPPORT:"},{"line_number":192,"context_line":"        num_tries \u003d int("},{"line_number":193,"context_line":"                CONF.ipmi.retry_timeout / CONF.ipmi.min_command_interval)"},{"line_number":194,"context_line":"        args.append(\u0027-R\u0027)"},{"line_number":195,"context_line":"        args.append(str(num_tries))"},{"line_number":196,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_0bbb0473","line":193,"updated":"2014-06-09 09:14:25.000000000","message":"Should we add some sanity here, for e.g if the retry_timeout is smaller and this operation returns 0, should we default to 1? at least 1 try?\n\ne.g\n\n max(int(CONF.ipmi.retry_timeout / CONF.ipmi.min_command_interval), 1)","commit_id":"ae48dce5021bac21ec6acae066a6ca85250eccf8"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"065dbc1363f93d703dd4a9634e30071653335032","unresolved":false,"context_lines":[{"line_number":190,"context_line":"    # specify retry timing more precisely, if supported"},{"line_number":191,"context_line":"    if TIMING_SUPPORT:"},{"line_number":192,"context_line":"        num_tries \u003d int("},{"line_number":193,"context_line":"                CONF.ipmi.retry_timeout / CONF.ipmi.min_command_interval)"},{"line_number":194,"context_line":"        args.append(\u0027-R\u0027)"},{"line_number":195,"context_line":"        args.append(str(num_tries))"},{"line_number":196,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_de2fcb3c","line":193,"in_reply_to":"1ae5cdf2_0bbb0473","updated":"2014-06-11 00:01:42.000000000","message":"no. 0 is a valid number -- it means \"send one packet, do not retry if that fails\"","commit_id":"ae48dce5021bac21ec6acae066a6ca85250eccf8"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"a45be4923f44e0b09e6b8903e257d1f86f344652","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        args.append(\u0027-f\u0027)"},{"line_number":205,"context_line":"        args.append(pw_file)"},{"line_number":206,"context_line":"        args.extend(command.split(\" \"))"},{"line_number":207,"context_line":"        out, err \u003d utils.execute(*args)"},{"line_number":208,"context_line":"        LOG.debug(\"ipmitool stdout: \u0027%(out)s\u0027, stderr: \u0027%(err)s\u0027\","},{"line_number":209,"context_line":"                  {\u0027out\u0027: out, \u0027err\u0027: err})"},{"line_number":210,"context_line":"        return out, err"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_378d7a32","line":207,"updated":"2014-06-09 13:42:56.000000000","message":"Do we want to still pass attempts\u003d3 if timing support isn\u0027t there?","commit_id":"ae48dce5021bac21ec6acae066a6ca85250eccf8"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"065dbc1363f93d703dd4a9634e30071653335032","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        args.append(\u0027-f\u0027)"},{"line_number":205,"context_line":"        args.append(pw_file)"},{"line_number":206,"context_line":"        args.extend(command.split(\" \"))"},{"line_number":207,"context_line":"        out, err \u003d utils.execute(*args)"},{"line_number":208,"context_line":"        LOG.debug(\"ipmitool stdout: \u0027%(out)s\u0027, stderr: \u0027%(err)s\u0027\","},{"line_number":209,"context_line":"                  {\u0027out\u0027: out, \u0027err\u0027: err})"},{"line_number":210,"context_line":"        return out, err"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_feb487f3","line":207,"in_reply_to":"1ae5cdf2_378d7a32","updated":"2014-06-11 00:01:42.000000000","message":"definitely not. This was the source of HUGE pain for tripleo. We should never retry at this layer because, in the older version of ipmitool (before it supported -N -R) it retried ** 18 ** times already. I did some packet sniffing of different versions last week to determine this.\n\nNewer versions default to retry slightly less. But still a lot.","commit_id":"ae48dce5021bac21ec6acae066a6ca85250eccf8"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c1959e842364483067b2cad4b4e44c5635474ae7","unresolved":false,"context_lines":[{"line_number":340,"context_line":"            raise exception.DriverLoadError("},{"line_number":341,"context_line":"                    driver\u003dself.__class__.__name__,"},{"line_number":342,"context_line":"                    reason\u003d\"Unable to locate usable ipmitool command in \""},{"line_number":343,"context_line":"                           \"the system path when checking ipmitool version\")"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    def validate(self, task, node):"},{"line_number":346,"context_line":"        \"\"\"Validate driver_info for ipmitool driver."}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_ab8e9025","line":343,"updated":"2014-06-09 09:14:25.000000000","message":"i18n? Or we are not translating exception errors anymore ? (I kinda remember something going on about it)","commit_id":"ae48dce5021bac21ec6acae066a6ca85250eccf8"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c1959e842364483067b2cad4b4e44c5635474ae7","unresolved":false,"context_lines":[{"line_number":478,"context_line":"            raise exception.DriverLoadError("},{"line_number":479,"context_line":"                    driver\u003dself.__class__.__name__,"},{"line_number":480,"context_line":"                    reason\u003d\"Unable to locate usable ipmitool command in \""},{"line_number":481,"context_line":"                           \"the system path when checking ipmitool version\")"},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"    def validate(self, task, node):"},{"line_number":484,"context_line":"        \"\"\"Validate the Node console info."}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_0bedc48b","line":481,"updated":"2014-06-09 09:14:25.000000000","message":"same q as L 343","commit_id":"ae48dce5021bac21ec6acae066a6ca85250eccf8"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"d22ea8e082357e693676987d8ad19b831df9f6a9","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                group\u003d\u0027ipmi\u0027)"},{"line_number":55,"context_line":"CONF.import_opt(\u0027min_command_interval\u0027,"},{"line_number":56,"context_line":"                \u0027ironic.drivers.modules.ipminative\u0027,"},{"line_number":57,"context_line":"                group\u003d\u0027ipmi\u0027)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_60bb680f","line":57,"updated":"2014-06-11 09:00:40.000000000","message":"Agree with linggao comment about register this options in ipmitool driver.","commit_id":"defcd60ea6e01b0b1b6537d47abba197511a19ac"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"a929a0c0bb0cb6356194c32e80b1b0d4b50f2d39","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                group\u003d\u0027ipmi\u0027)"},{"line_number":55,"context_line":"CONF.import_opt(\u0027min_command_interval\u0027,"},{"line_number":56,"context_line":"                \u0027ironic.drivers.modules.ipminative\u0027,"},{"line_number":57,"context_line":"                group\u003d\u0027ipmi\u0027)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_b145b644","line":57,"in_reply_to":"1ae5cdf2_60bb680f","updated":"2014-06-11 14:22:51.000000000","message":"I would like to see ipmi native be the default, and remove ipmitool. So I am ok with importing the options here. Can others weigh on this.","commit_id":"defcd60ea6e01b0b1b6537d47abba197511a19ac"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"d22ea8e082357e693676987d8ad19b831df9f6a9","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":93,"context_line":"            # the local ipmitool does not support the -N and -R options."},{"line_number":94,"context_line":"            TIMING_SUPPORT \u003d False"},{"line_number":95,"context_line":"        except OSError:"},{"line_number":96,"context_line":"            # looks like ipmitool was not found."},{"line_number":97,"context_line":"            excutils.save_and_reraise_exception()"},{"line_number":98,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_4024ac0c","line":95,"updated":"2014-06-11 09:00:40.000000000","message":"This clause not needed.","commit_id":"defcd60ea6e01b0b1b6537d47abba197511a19ac"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"a929a0c0bb0cb6356194c32e80b1b0d4b50f2d39","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":93,"context_line":"            # the local ipmitool does not support the -N and -R options."},{"line_number":94,"context_line":"            TIMING_SUPPORT \u003d False"},{"line_number":95,"context_line":"        except OSError:"},{"line_number":96,"context_line":"            # looks like ipmitool was not found."},{"line_number":97,"context_line":"            excutils.save_and_reraise_exception()"},{"line_number":98,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_c6b36a4b","line":95,"in_reply_to":"1ae5cdf2_4024ac0c","updated":"2014-06-11 14:22:51.000000000","message":"Done","commit_id":"defcd60ea6e01b0b1b6537d47abba197511a19ac"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"d22ea8e082357e693676987d8ad19b831df9f6a9","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            # looks like ipmitool supports timing options."},{"line_number":100,"context_line":"            TIMING_SUPPORT \u003d True"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    return TIMING_SUPPORT"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"def _console_pwfile_path(uuid):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_008624db","line":102,"updated":"2014-06-11 09:00:40.000000000","message":"Return value not used.","commit_id":"defcd60ea6e01b0b1b6537d47abba197511a19ac"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"a929a0c0bb0cb6356194c32e80b1b0d4b50f2d39","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            # looks like ipmitool supports timing options."},{"line_number":100,"context_line":"            TIMING_SUPPORT \u003d True"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    return TIMING_SUPPORT"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"def _console_pwfile_path(uuid):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_6697f690","line":102,"in_reply_to":"1ae5cdf2_008624db","updated":"2014-06-11 14:22:51.000000000","message":"Done","commit_id":"defcd60ea6e01b0b1b6537d47abba197511a19ac"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"d22ea8e082357e693676987d8ad19b831df9f6a9","unresolved":false,"context_lines":[{"line_number":199,"context_line":"    # specify retry timing more precisely, if supported"},{"line_number":200,"context_line":"    if TIMING_SUPPORT:"},{"line_number":201,"context_line":"        num_tries \u003d max(int("},{"line_number":202,"context_line":"                CONF.ipmi.retry_timeout / CONF.ipmi.min_command_interval), 1)"},{"line_number":203,"context_line":"        args.append(\u0027-R\u0027)"},{"line_number":204,"context_line":"        args.append(str(num_tries))"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_20032043","line":202,"updated":"2014-06-11 09:00:40.000000000","message":"You can use // (floor division) operator here w/o conversion to int.","commit_id":"defcd60ea6e01b0b1b6537d47abba197511a19ac"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"a929a0c0bb0cb6356194c32e80b1b0d4b50f2d39","unresolved":false,"context_lines":[{"line_number":199,"context_line":"    # specify retry timing more precisely, if supported"},{"line_number":200,"context_line":"    if TIMING_SUPPORT:"},{"line_number":201,"context_line":"        num_tries \u003d max(int("},{"line_number":202,"context_line":"                CONF.ipmi.retry_timeout / CONF.ipmi.min_command_interval), 1)"},{"line_number":203,"context_line":"        args.append(\u0027-R\u0027)"},{"line_number":204,"context_line":"        args.append(str(num_tries))"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_e632260f","line":202,"in_reply_to":"1ae5cdf2_20032043","updated":"2014-06-11 14:22:51.000000000","message":"Done","commit_id":"defcd60ea6e01b0b1b6537d47abba197511a19ac"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"d22ea8e082357e693676987d8ad19b831df9f6a9","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        num_tries \u003d max(int("},{"line_number":202,"context_line":"                CONF.ipmi.retry_timeout / CONF.ipmi.min_command_interval), 1)"},{"line_number":203,"context_line":"        args.append(\u0027-R\u0027)"},{"line_number":204,"context_line":"        args.append(str(num_tries))"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        args.append(\u0027-N\u0027)"},{"line_number":207,"context_line":"        args.append(str(CONF.ipmi.min_command_interval))"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_a032d00d","line":204,"updated":"2014-06-11 09:00:40.000000000","message":"str() conversion not needed, Oslo code does this https://github.com/openstack/ironic/blob/master/ironic/openstack/common/processutils.py#L137","commit_id":"defcd60ea6e01b0b1b6537d47abba197511a19ac"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"a929a0c0bb0cb6356194c32e80b1b0d4b50f2d39","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        num_tries \u003d max(int("},{"line_number":202,"context_line":"                CONF.ipmi.retry_timeout / CONF.ipmi.min_command_interval), 1)"},{"line_number":203,"context_line":"        args.append(\u0027-R\u0027)"},{"line_number":204,"context_line":"        args.append(str(num_tries))"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        args.append(\u0027-N\u0027)"},{"line_number":207,"context_line":"        args.append(str(CONF.ipmi.min_command_interval))"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_f1057e11","line":204,"in_reply_to":"1ae5cdf2_a032d00d","updated":"2014-06-11 14:22:51.000000000","message":"this was causing errors for us.","commit_id":"defcd60ea6e01b0b1b6537d47abba197511a19ac"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"d22ea8e082357e693676987d8ad19b831df9f6a9","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        args.append(str(num_tries))"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        args.append(\u0027-N\u0027)"},{"line_number":207,"context_line":"        args.append(str(CONF.ipmi.min_command_interval))"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    # \u0027ipmitool\u0027 command will prompt password if there is no \u0027-f\u0027 option,"},{"line_number":210,"context_line":"    # we set it to \u0027\\0\u0027 to write a password file to support empty password"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_e03858f0","line":207,"updated":"2014-06-11 09:00:40.000000000","message":"ditto","commit_id":"defcd60ea6e01b0b1b6537d47abba197511a19ac"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"a929a0c0bb0cb6356194c32e80b1b0d4b50f2d39","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        args.append(str(num_tries))"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        args.append(\u0027-N\u0027)"},{"line_number":207,"context_line":"        args.append(str(CONF.ipmi.min_command_interval))"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    # \u0027ipmitool\u0027 command will prompt password if there is no \u0027-f\u0027 option,"},{"line_number":210,"context_line":"    # we set it to \u0027\\0\u0027 to write a password file to support empty password"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_51147243","line":207,"in_reply_to":"1ae5cdf2_e03858f0","updated":"2014-06-11 14:22:51.000000000","message":"ditto","commit_id":"defcd60ea6e01b0b1b6537d47abba197511a19ac"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"d22ea8e082357e693676987d8ad19b831df9f6a9","unresolved":false,"context_lines":[{"line_number":345,"context_line":"    def __init__(self):"},{"line_number":346,"context_line":"        try:"},{"line_number":347,"context_line":"            check_timing_support()"},{"line_number":348,"context_line":"        except (OSError, processutils.ProcessExecutionError):"},{"line_number":349,"context_line":"            raise exception.DriverLoadError("},{"line_number":350,"context_line":"                    driver\u003dself.__class__.__name__,"},{"line_number":351,"context_line":"                    reason\u003d\"Unable to locate usable ipmitool command in \""}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_948a7562","line":348,"updated":"2014-06-11 09:00:40.000000000","message":"ProcessExecutionError catched inside check_timing_support(), not needed here.","commit_id":"defcd60ea6e01b0b1b6537d47abba197511a19ac"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"a929a0c0bb0cb6356194c32e80b1b0d4b50f2d39","unresolved":false,"context_lines":[{"line_number":345,"context_line":"    def __init__(self):"},{"line_number":346,"context_line":"        try:"},{"line_number":347,"context_line":"            check_timing_support()"},{"line_number":348,"context_line":"        except (OSError, processutils.ProcessExecutionError):"},{"line_number":349,"context_line":"            raise exception.DriverLoadError("},{"line_number":350,"context_line":"                    driver\u003dself.__class__.__name__,"},{"line_number":351,"context_line":"                    reason\u003d\"Unable to locate usable ipmitool command in \""}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_86f7a2d2","line":348,"in_reply_to":"1ae5cdf2_948a7562","updated":"2014-06-11 14:22:51.000000000","message":"Done","commit_id":"defcd60ea6e01b0b1b6537d47abba197511a19ac"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"d22ea8e082357e693676987d8ad19b831df9f6a9","unresolved":false,"context_lines":[{"line_number":483,"context_line":"    def __init__(self):"},{"line_number":484,"context_line":"        try:"},{"line_number":485,"context_line":"            check_timing_support()"},{"line_number":486,"context_line":"        except (OSError, processutils.ProcessExecutionError):"},{"line_number":487,"context_line":"            raise exception.DriverLoadError("},{"line_number":488,"context_line":"                    driver\u003dself.__class__.__name__,"},{"line_number":489,"context_line":"                    reason\u003d\"Unable to locate usable ipmitool command in \""}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_d4ef9d1c","line":486,"updated":"2014-06-11 09:00:40.000000000","message":"ditto","commit_id":"defcd60ea6e01b0b1b6537d47abba197511a19ac"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"a929a0c0bb0cb6356194c32e80b1b0d4b50f2d39","unresolved":false,"context_lines":[{"line_number":483,"context_line":"    def __init__(self):"},{"line_number":484,"context_line":"        try:"},{"line_number":485,"context_line":"            check_timing_support()"},{"line_number":486,"context_line":"        except (OSError, processutils.ProcessExecutionError):"},{"line_number":487,"context_line":"            raise exception.DriverLoadError("},{"line_number":488,"context_line":"                    driver\u003dself.__class__.__name__,"},{"line_number":489,"context_line":"                    reason\u003d\"Unable to locate usable ipmitool command in \""}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_e62dc647","line":486,"in_reply_to":"1ae5cdf2_d4ef9d1c","updated":"2014-06-11 14:22:51.000000000","message":"Done","commit_id":"defcd60ea6e01b0b1b6537d47abba197511a19ac"}],"ironic/tests/drivers/test_ipmitool.py":[{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"7661274020f366e2f95c16df7c12d19c409779ee","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            \u0027-L\u0027, self.info[\u0027priv_level\u0027],"},{"line_number":118,"context_line":"            \u0027-U\u0027, self.info[\u0027username\u0027],"},{"line_number":119,"context_line":"            \u0027-N\u0027, 12,"},{"line_number":120,"context_line":"            \u0027-R\u0027, 5,"},{"line_number":121,"context_line":"            \u0027-f\u0027, file_handle,"},{"line_number":122,"context_line":"            \u0027A\u0027, \u0027B\u0027, \u0027C\u0027,"},{"line_number":123,"context_line":"            ]"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_95f2af6d","line":120,"updated":"2014-06-02 06:33:27.000000000","message":"This is 12 second intervals between commands and 5 retries.  Is this what you want?","commit_id":"d072c7a9967c4817f767bb4ad71fd13ed2b69eac"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"7661274020f366e2f95c16df7c12d19c409779ee","unresolved":false,"context_lines":[{"line_number":144,"context_line":"            \u0027-L\u0027, self.info[\u0027priv_level\u0027],"},{"line_number":145,"context_line":"            \u0027-U\u0027, self.info[\u0027username\u0027],"},{"line_number":146,"context_line":"            \u0027-N\u0027, 12,"},{"line_number":147,"context_line":"            \u0027-R\u0027, 5,"},{"line_number":148,"context_line":"            \u0027-f\u0027, file_handle,"},{"line_number":149,"context_line":"            \u0027A\u0027, \u0027B\u0027, \u0027C\u0027,"},{"line_number":150,"context_line":"            ]"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_35f39b9f","line":147,"updated":"2014-06-02 06:33:27.000000000","message":"\"as above\"","commit_id":"d072c7a9967c4817f767bb4ad71fd13ed2b69eac"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"7661274020f366e2f95c16df7c12d19c409779ee","unresolved":false,"context_lines":[{"line_number":168,"context_line":"            \u0027-H\u0027, self.info[\u0027address\u0027],"},{"line_number":169,"context_line":"            \u0027-L\u0027, self.info[\u0027priv_level\u0027],"},{"line_number":170,"context_line":"            \u0027-N\u0027, 12,"},{"line_number":171,"context_line":"            \u0027-R\u0027, 5,"},{"line_number":172,"context_line":"            \u0027-f\u0027, file_handle,"},{"line_number":173,"context_line":"            \u0027A\u0027, \u0027B\u0027, \u0027C\u0027,"},{"line_number":174,"context_line":"            ]"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_55ee67b5","line":171,"updated":"2014-06-02 06:33:27.000000000","message":"\"as above\"","commit_id":"d072c7a9967c4817f767bb4ad71fd13ed2b69eac"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"7661274020f366e2f95c16df7c12d19c409779ee","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            \u0027-L\u0027, self.info[\u0027priv_level\u0027],"},{"line_number":193,"context_line":"            \u0027-U\u0027, self.info[\u0027username\u0027],"},{"line_number":194,"context_line":"            \u0027-N\u0027, 12,"},{"line_number":195,"context_line":"            \u0027-R\u0027, 5,"},{"line_number":196,"context_line":"            \u0027-f\u0027, file_handle,"},{"line_number":197,"context_line":"            \u0027A\u0027, \u0027B\u0027, \u0027C\u0027,"},{"line_number":198,"context_line":"            ]"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_752c4303","line":195,"updated":"2014-06-02 06:33:27.000000000","message":"\"as above\"","commit_id":"d072c7a9967c4817f767bb4ad71fd13ed2b69eac"}]}
