)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"bae1f1ade87e67c9ac9b88be8f3f4cd45d5d5525","unresolved":false,"context_lines":[{"line_number":12,"context_line":"received).  Some BMCs do not support setting this.  Sending the command"},{"line_number":13,"context_line":"aborts the node boot."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"A new driver option ``ipmi_do_timeout_disable`` is added to bypass"},{"line_number":16,"context_line":"sending this command."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I1dda3cf3e4b7b888ed9d8931c8ede3a918dd01f4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3f79a3b5_d7a24598","line":15,"range":{"start_line":15,"start_character":22,"end_line":15,"end_character":45},"updated":"2018-11-08 04:59:54.000000000","message":"Gah that\u0027s the old name","commit_id":"0536e2efc7718df45f89da3d8039fcfcaa019b8b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b74ddb0fc8af37f71f74a5de4e04d1448bec006","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Tony Breeds \u003ctony@bakeyournoodle.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-11-11 15:02:33 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add ipmi_do_timeout_disable to avoid problematic IPMI command"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The IPMI driver unconditionally instructed the BMC not automatically"},{"line_number":10,"context_line":"clear boot flag valid bit if Chassis Control command not received within"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f79a3b5_3f3e6b88","line":7,"updated":"2018-11-16 11:45:42.000000000","message":"ipmi_disable_timeout","commit_id":"ddf027f9bc6603568d85c84411e3a54e3cd8c0f3"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"cf193e227ee3d6b006e4ac8c9affd2b013ff591f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Tony Breeds \u003ctony@bakeyournoodle.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-11-11 15:02:33 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add ipmi_do_timeout_disable to avoid problematic IPMI command"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The IPMI driver unconditionally instructed the BMC not automatically"},{"line_number":10,"context_line":"clear boot flag valid bit if Chassis Control command not received within"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f79a3b5_7ec1b72f","line":7,"in_reply_to":"3f79a3b5_3f3e6b88","updated":"2018-11-27 05:31:16.000000000","message":"Done","commit_id":"ddf027f9bc6603568d85c84411e3a54e3cd8c0f3"}],"api-ref/source/samples/driver-property-response.json":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f58b06385a43e7f7c96209127ec6fb12e7c12a8a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"  \"image_no_proxy\": \"A comma-separated list of host names, IP addresses and domain names (with optional :port) that will be excluded from proxying. To denote a domain name, use a dot to prefix the domain name. This value will be ignored if ``image_http_proxy`` and ``image_https_proxy`` are not specified. Optional.\","},{"line_number":8,"context_line":"  \"ipmi_address\": \"IP address or hostname of the node. Required.\","},{"line_number":9,"context_line":"  \"ipmi_bridging\": \"bridging_type; default is \\\"no\\\". One of \\\"single\\\", \\\"dual\\\", \\\"no\\\". Optional.\","},{"line_number":10,"context_line":"  \"ipmi_do_timeout_disable\": \"By default ironic will send a RAW IPMI command to disable the 60second timeout for booting.  Setting this option to False will NOT send that command; default value is True.  Optional.\","},{"line_number":11,"context_line":"  \"ipmi_force_boot_device\": \"Whether Ironic should specify the boot device to the BMC each time the server is turned on, eg. because the BMC is not capable of remembering the selected boot device across power cycles; default value is False. Optional.\","},{"line_number":12,"context_line":"  \"ipmi_local_address\": \"local IPMB address for bridged requests. Used only if ipmi_bridging is set to \\\"single\\\" or \\\"dual\\\". Optional.\","},{"line_number":13,"context_line":"  \"ipmi_password\": \"password. Optional.\","}],"source_content_type":"application/json","patch_set":1,"id":"3f79a3b5_bdae9fe2","line":10,"updated":"2018-11-07 10:59:10.000000000","message":"\"ipmi_disable_timeout\"? also missing space after 60","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"ab459f33a8ec2ce0124a09725a5168b4a75c7874","unresolved":false,"context_lines":[{"line_number":7,"context_line":"  \"image_no_proxy\": \"A comma-separated list of host names, IP addresses and domain names (with optional :port) that will be excluded from proxying. To denote a domain name, use a dot to prefix the domain name. This value will be ignored if ``image_http_proxy`` and ``image_https_proxy`` are not specified. Optional.\","},{"line_number":8,"context_line":"  \"ipmi_address\": \"IP address or hostname of the node. Required.\","},{"line_number":9,"context_line":"  \"ipmi_bridging\": \"bridging_type; default is \\\"no\\\". One of \\\"single\\\", \\\"dual\\\", \\\"no\\\". Optional.\","},{"line_number":10,"context_line":"  \"ipmi_do_timeout_disable\": \"By default ironic will send a RAW IPMI command to disable the 60second timeout for booting.  Setting this option to False will NOT send that command; default value is True.  Optional.\","},{"line_number":11,"context_line":"  \"ipmi_force_boot_device\": \"Whether Ironic should specify the boot device to the BMC each time the server is turned on, eg. because the BMC is not capable of remembering the selected boot device across power cycles; default value is False. Optional.\","},{"line_number":12,"context_line":"  \"ipmi_local_address\": \"local IPMB address for bridged requests. Used only if ipmi_bridging is set to \\\"single\\\" or \\\"dual\\\". Optional.\","},{"line_number":13,"context_line":"  \"ipmi_password\": \"password. Optional.\","}],"source_content_type":"application/json","patch_set":1,"id":"3f79a3b5_8f303b56","line":10,"in_reply_to":"3f79a3b5_bdae9fe2","updated":"2018-11-08 01:05:59.000000000","message":"Done","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"}],"ironic/drivers/modules/ipmitool.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"213f752ff040076eb4e98e68050eead8f8d52290","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                                \"capable of remembering the selected boot \""},{"line_number":99,"context_line":"                                \"device across power cycles; default value \""},{"line_number":100,"context_line":"                                \"is False. Optional.\"),"},{"line_number":101,"context_line":"    \u0027ipmi_do_timeout_disable\u0027: _(\u0027By default ironic will send a RAW IPMI \u0027"},{"line_number":102,"context_line":"                                 \u0027command to disable the 60second timeout \u0027"},{"line_number":103,"context_line":"                                 \u0027for booting.  Setting this option to \u0027"},{"line_number":104,"context_line":"                                 \u0027False will NOT send that command; default \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_2ffb367a","line":101,"range":{"start_line":101,"start_character":5,"end_line":101,"end_character":28},"updated":"2018-11-07 12:18:56.000000000","message":"Can it be named more explicitly say, \u0027ipmi_boot_timeout_disable\u0027?","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":11929,"name":"Michael Turek","email":"mjturek@linux.vnet.ibm.com","username":"mjturek"},"change_message_id":"5f44f9c0407cca99bded725e69f9e8afb3702338","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                                \"capable of remembering the selected boot \""},{"line_number":99,"context_line":"                                \"device across power cycles; default value \""},{"line_number":100,"context_line":"                                \"is False. Optional.\"),"},{"line_number":101,"context_line":"    \u0027ipmi_do_timeout_disable\u0027: _(\u0027By default ironic will send a RAW IPMI \u0027"},{"line_number":102,"context_line":"                                 \u0027command to disable the 60second timeout \u0027"},{"line_number":103,"context_line":"                                 \u0027for booting.  Setting this option to \u0027"},{"line_number":104,"context_line":"                                 \u0027False will NOT send that command; default \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_c37e126c","line":101,"range":{"start_line":101,"start_character":64,"end_line":101,"end_character":67},"updated":"2018-11-07 20:58:42.000000000","message":"nit: I believe RAW isn\u0027t an acronym  here, so s/RAW/raw","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"ab459f33a8ec2ce0124a09725a5168b4a75c7874","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                                \"capable of remembering the selected boot \""},{"line_number":99,"context_line":"                                \"device across power cycles; default value \""},{"line_number":100,"context_line":"                                \"is False. Optional.\"),"},{"line_number":101,"context_line":"    \u0027ipmi_do_timeout_disable\u0027: _(\u0027By default ironic will send a RAW IPMI \u0027"},{"line_number":102,"context_line":"                                 \u0027command to disable the 60second timeout \u0027"},{"line_number":103,"context_line":"                                 \u0027for booting.  Setting this option to \u0027"},{"line_number":104,"context_line":"                                 \u0027False will NOT send that command; default \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_af25f717","line":101,"range":{"start_line":101,"start_character":5,"end_line":101,"end_character":28},"in_reply_to":"3f79a3b5_2ffb367a","updated":"2018-11-08 01:05:59.000000000","message":"I went with Dmitry\u0027s suggestion.\n\n#naming_is_hard","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"ab459f33a8ec2ce0124a09725a5168b4a75c7874","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                                \"capable of remembering the selected boot \""},{"line_number":99,"context_line":"                                \"device across power cycles; default value \""},{"line_number":100,"context_line":"                                \"is False. Optional.\"),"},{"line_number":101,"context_line":"    \u0027ipmi_do_timeout_disable\u0027: _(\u0027By default ironic will send a RAW IPMI \u0027"},{"line_number":102,"context_line":"                                 \u0027command to disable the 60second timeout \u0027"},{"line_number":103,"context_line":"                                 \u0027for booting.  Setting this option to \u0027"},{"line_number":104,"context_line":"                                 \u0027False will NOT send that command; default \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_0fe74bd9","line":101,"range":{"start_line":101,"start_character":64,"end_line":101,"end_character":67},"in_reply_to":"3f79a3b5_c37e126c","updated":"2018-11-08 01:05:59.000000000","message":"Done","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"213f752ff040076eb4e98e68050eead8f8d52290","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                                \"device across power cycles; default value \""},{"line_number":100,"context_line":"                                \"is False. Optional.\"),"},{"line_number":101,"context_line":"    \u0027ipmi_do_timeout_disable\u0027: _(\u0027By default ironic will send a RAW IPMI \u0027"},{"line_number":102,"context_line":"                                 \u0027command to disable the 60second timeout \u0027"},{"line_number":103,"context_line":"                                 \u0027for booting.  Setting this option to \u0027"},{"line_number":104,"context_line":"                                 \u0027False will NOT send that command; default \u0027"},{"line_number":105,"context_line":"                                 \u0027value is True.  Optional.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_2fad7682","line":102,"range":{"start_line":102,"start_character":57,"end_line":102,"end_character":66},"updated":"2018-11-07 12:18:56.000000000","message":"s/ 60second / 60 second /","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"ab459f33a8ec2ce0124a09725a5168b4a75c7874","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                                \"device across power cycles; default value \""},{"line_number":100,"context_line":"                                \"is False. Optional.\"),"},{"line_number":101,"context_line":"    \u0027ipmi_do_timeout_disable\u0027: _(\u0027By default ironic will send a RAW IPMI \u0027"},{"line_number":102,"context_line":"                                 \u0027command to disable the 60second timeout \u0027"},{"line_number":103,"context_line":"                                 \u0027for booting.  Setting this option to \u0027"},{"line_number":104,"context_line":"                                 \u0027False will NOT send that command; default \u0027"},{"line_number":105,"context_line":"                                 \u0027value is True.  Optional.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_efe9afab","line":102,"range":{"start_line":102,"start_character":57,"end_line":102,"end_character":66},"in_reply_to":"3f79a3b5_2fad7682","updated":"2018-11-08 01:05:59.000000000","message":"Done","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":11929,"name":"Michael Turek","email":"mjturek@linux.vnet.ibm.com","username":"mjturek"},"change_message_id":"5f44f9c0407cca99bded725e69f9e8afb3702338","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                                \"capable of remembering the selected boot \""},{"line_number":99,"context_line":"                                \"device across power cycles; default value \""},{"line_number":100,"context_line":"                                \"is False. Optional.\"),"},{"line_number":101,"context_line":"    \u0027ipmi_do_timeout_disable\u0027: _(\u0027By default ironic will send a RAW IPMI \u0027"},{"line_number":102,"context_line":"                                 \u0027command to disable the 60second timeout \u0027"},{"line_number":103,"context_line":"                                 \u0027for booting.  Setting this option to \u0027"},{"line_number":104,"context_line":"                                 \u0027False will NOT send that command; default \u0027"},{"line_number":105,"context_line":"                                 \u0027value is True.  Optional.\u0027),"},{"line_number":106,"context_line":"}"},{"line_number":107,"context_line":"COMMON_PROPERTIES \u003d REQUIRED_PROPERTIES.copy()"},{"line_number":108,"context_line":"COMMON_PROPERTIES.update(OPTIONAL_PROPERTIES)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_8337baae","line":105,"range":{"start_line":101,"start_character":34,"end_line":105,"end_character":62},"updated":"2018-11-07 20:58:42.000000000","message":"We","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"213f752ff040076eb4e98e68050eead8f8d52290","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                                 \u0027command to disable the 60second timeout \u0027"},{"line_number":103,"context_line":"                                 \u0027for booting.  Setting this option to \u0027"},{"line_number":104,"context_line":"                                 \u0027False will NOT send that command; default \u0027"},{"line_number":105,"context_line":"                                 \u0027value is True.  Optional.\u0027),"},{"line_number":106,"context_line":"}"},{"line_number":107,"context_line":"COMMON_PROPERTIES \u003d REQUIRED_PROPERTIES.copy()"},{"line_number":108,"context_line":"COMMON_PROPERTIES.update(OPTIONAL_PROPERTIES)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_afb8a6c0","line":105,"range":{"start_line":105,"start_character":43,"end_line":105,"end_character":59},"updated":"2018-11-07 12:18:56.000000000","message":"s/ \"True.  Optional.\" / \"True. Optional.\"/","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":11929,"name":"Michael Turek","email":"mjturek@linux.vnet.ibm.com","username":"mjturek"},"change_message_id":"ea9cfb11774b70f397d3a7acef6399c293b9e298","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                                \"capable of remembering the selected boot \""},{"line_number":99,"context_line":"                                \"device across power cycles; default value \""},{"line_number":100,"context_line":"                                \"is False. Optional.\"),"},{"line_number":101,"context_line":"    \u0027ipmi_do_timeout_disable\u0027: _(\u0027By default ironic will send a RAW IPMI \u0027"},{"line_number":102,"context_line":"                                 \u0027command to disable the 60second timeout \u0027"},{"line_number":103,"context_line":"                                 \u0027for booting.  Setting this option to \u0027"},{"line_number":104,"context_line":"                                 \u0027False will NOT send that command; default \u0027"},{"line_number":105,"context_line":"                                 \u0027value is True.  Optional.\u0027),"},{"line_number":106,"context_line":"}"},{"line_number":107,"context_line":"COMMON_PROPERTIES \u003d REQUIRED_PROPERTIES.copy()"},{"line_number":108,"context_line":"COMMON_PROPERTIES.update(OPTIONAL_PROPERTIES)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_262a622e","line":105,"range":{"start_line":101,"start_character":34,"end_line":105,"end_character":62},"in_reply_to":"3f79a3b5_6f2b5fe8","updated":"2018-11-08 15:07:57.000000000","message":"Not sure what this comment was going to be, sorry lol","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"ab459f33a8ec2ce0124a09725a5168b4a75c7874","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                                \"capable of remembering the selected boot \""},{"line_number":99,"context_line":"                                \"device across power cycles; default value \""},{"line_number":100,"context_line":"                                \"is False. Optional.\"),"},{"line_number":101,"context_line":"    \u0027ipmi_do_timeout_disable\u0027: _(\u0027By default ironic will send a RAW IPMI \u0027"},{"line_number":102,"context_line":"                                 \u0027command to disable the 60second timeout \u0027"},{"line_number":103,"context_line":"                                 \u0027for booting.  Setting this option to \u0027"},{"line_number":104,"context_line":"                                 \u0027False will NOT send that command; default \u0027"},{"line_number":105,"context_line":"                                 \u0027value is True.  Optional.\u0027),"},{"line_number":106,"context_line":"}"},{"line_number":107,"context_line":"COMMON_PROPERTIES \u003d REQUIRED_PROPERTIES.copy()"},{"line_number":108,"context_line":"COMMON_PROPERTIES.update(OPTIONAL_PROPERTIES)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_6f2b5fe8","line":105,"range":{"start_line":101,"start_character":34,"end_line":105,"end_character":62},"in_reply_to":"3f79a3b5_8337baae","updated":"2018-11-08 01:05:59.000000000","message":"We?","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":11929,"name":"Michael Turek","email":"mjturek@linux.vnet.ibm.com","username":"mjturek"},"change_message_id":"5f44f9c0407cca99bded725e69f9e8afb3702338","unresolved":false,"context_lines":[{"line_number":919,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":920,"context_line":"                \"Invalid boot device %s specified.\") % device)"},{"line_number":921,"context_line":""},{"line_number":922,"context_line":"        # NOTE(tonyb): Some BMCs do not implement Option 0x03 and will error"},{"line_number":923,"context_line":"        # when we try to set this.  Resulting in an abort.  If the BMC doesn\u0027t"},{"line_number":924,"context_line":"        # support this timeout there isn\u0027t a need to disable it.  Let\u0027s use a"},{"line_number":925,"context_line":"        # driver option to signify that"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_236b4654","line":922,"range":{"start_line":922,"start_character":23,"end_line":922,"end_character":61},"updated":"2018-11-07 20:58:42.000000000","message":"s/...do not implement Option 0x03/...do not implement Option 0x03, such as OpenBMC,/\n\n\nIt would be helpful to operators to enumerate BMCs that are known to need this, even if it\u0027s currently just OpenBMC. It might belong in documentation but no harm in mentioning it here as well.","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"ab459f33a8ec2ce0124a09725a5168b4a75c7874","unresolved":false,"context_lines":[{"line_number":919,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":920,"context_line":"                \"Invalid boot device %s specified.\") % device)"},{"line_number":921,"context_line":""},{"line_number":922,"context_line":"        # NOTE(tonyb): Some BMCs do not implement Option 0x03 and will error"},{"line_number":923,"context_line":"        # when we try to set this.  Resulting in an abort.  If the BMC doesn\u0027t"},{"line_number":924,"context_line":"        # support this timeout there isn\u0027t a need to disable it.  Let\u0027s use a"},{"line_number":925,"context_line":"        # driver option to signify that"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_8ffb5b78","line":922,"range":{"start_line":922,"start_character":23,"end_line":922,"end_character":61},"in_reply_to":"3f79a3b5_236b4654","updated":"2018-11-08 01:05:59.000000000","message":"Done","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f58b06385a43e7f7c96209127ec6fb12e7c12a8a","unresolved":false,"context_lines":[{"line_number":923,"context_line":"        # when we try to set this.  Resulting in an abort.  If the BMC doesn\u0027t"},{"line_number":924,"context_line":"        # support this timeout there isn\u0027t a need to disable it.  Let\u0027s use a"},{"line_number":925,"context_line":"        # driver option to signify that"},{"line_number":926,"context_line":"        if task.node.driver_info.get(\u0027ipmi_do_timeout_disable\u0027, True):"},{"line_number":927,"context_line":"            # note(JayF): IPMI spec indicates unless you send these raw bytes"},{"line_number":928,"context_line":"            # the boot device setting times out after 60s. Since it\u0027s possible"},{"line_number":929,"context_line":"            # it could be \u003e60s before a node is rebooted, we should always send"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_fda897da","line":926,"updated":"2018-11-07 10:59:10.000000000","message":"I think the name of the option is confusing..","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"602121e8c4556da63f4e7f19b37305c2f53748b6","unresolved":false,"context_lines":[{"line_number":923,"context_line":"        # when we try to set this.  Resulting in an abort.  If the BMC doesn\u0027t"},{"line_number":924,"context_line":"        # support this timeout there isn\u0027t a need to disable it.  Let\u0027s use a"},{"line_number":925,"context_line":"        # driver option to signify that"},{"line_number":926,"context_line":"        if task.node.driver_info.get(\u0027ipmi_do_timeout_disable\u0027, True):"},{"line_number":927,"context_line":"            # note(JayF): IPMI spec indicates unless you send these raw bytes"},{"line_number":928,"context_line":"            # the boot device setting times out after 60s. Since it\u0027s possible"},{"line_number":929,"context_line":"            # it could be \u003e60s before a node is rebooted, we should always send"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_cb607da1","line":926,"range":{"start_line":926,"start_character":64,"end_line":926,"end_character":68},"updated":"2018-11-07 05:18:08.000000000","message":"we should not change the default behavior here. if this field is not set, we assume it\u0027s False.","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"213f752ff040076eb4e98e68050eead8f8d52290","unresolved":false,"context_lines":[{"line_number":923,"context_line":"        # when we try to set this.  Resulting in an abort.  If the BMC doesn\u0027t"},{"line_number":924,"context_line":"        # support this timeout there isn\u0027t a need to disable it.  Let\u0027s use a"},{"line_number":925,"context_line":"        # driver option to signify that"},{"line_number":926,"context_line":"        if task.node.driver_info.get(\u0027ipmi_do_timeout_disable\u0027, True):"},{"line_number":927,"context_line":"            # note(JayF): IPMI spec indicates unless you send these raw bytes"},{"line_number":928,"context_line":"            # the boot device setting times out after 60s. Since it\u0027s possible"},{"line_number":929,"context_line":"            # it could be \u003e60s before a node is rebooted, we should always send"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_4f73121d","line":926,"in_reply_to":"3f79a3b5_fda897da","updated":"2018-11-07 12:18:56.000000000","message":"+1","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":11929,"name":"Michael Turek","email":"mjturek@linux.vnet.ibm.com","username":"mjturek"},"change_message_id":"5f44f9c0407cca99bded725e69f9e8afb3702338","unresolved":false,"context_lines":[{"line_number":930,"context_line":"            # them.  This mimics pyghmi\u0027s current behavior, and the"},{"line_number":931,"context_line":"            # \"option\u003dtimeout\" setting on newer ipmitool binaries."},{"line_number":932,"context_line":"            timeout_disable \u003d \"0x00 0x08 0x03 0x08\""},{"line_number":933,"context_line":"            send_raw(task, timeout_disable)"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"        if task.node.driver_info.get(\u0027ipmi_force_boot_device\u0027, False):"},{"line_number":936,"context_line":"            driver_utils.force_persistent_boot(task,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_e3dc6e18","line":933,"updated":"2018-11-07 20:58:42.000000000","message":"Is it worth issuing a warning that this wasn\u0027t sent?","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"ab459f33a8ec2ce0124a09725a5168b4a75c7874","unresolved":false,"context_lines":[{"line_number":930,"context_line":"            # them.  This mimics pyghmi\u0027s current behavior, and the"},{"line_number":931,"context_line":"            # \"option\u003dtimeout\" setting on newer ipmitool binaries."},{"line_number":932,"context_line":"            timeout_disable \u003d \"0x00 0x08 0x03 0x08\""},{"line_number":933,"context_line":"            send_raw(task, timeout_disable)"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"        if task.node.driver_info.get(\u0027ipmi_force_boot_device\u0027, False):"},{"line_number":936,"context_line":"            driver_utils.force_persistent_boot(task,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_2ff48787","line":933,"in_reply_to":"3f79a3b5_e3dc6e18","updated":"2018-11-08 01:05:59.000000000","message":"Done","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"ae2dc3f180d8fdd6db86db0143d300fb93fac7f5","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                                \"is False. Optional.\"),"},{"line_number":101,"context_line":"    \u0027ipmi_disable_timeout\u0027: _(\u0027By default ironic will send a raw IPMI \u0027"},{"line_number":102,"context_line":"                              \u0027command to disable the 60 second timeout \u0027"},{"line_number":103,"context_line":"                              \u0027for booting.  Setting this option to \u0027"},{"line_number":104,"context_line":"                              \u0027False will NOT send that command; default \u0027"},{"line_number":105,"context_line":"                              \u0027value is True. Optional.\u0027),"},{"line_number":106,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_2d569e2c","line":103,"range":{"start_line":103,"start_character":43,"end_line":103,"end_character":45},"updated":"2018-11-10 14:30:03.000000000","message":"nit: Extra space?","commit_id":"134ccf4657c18818b1535870ea4806c6247fe058"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"0a519752a46417f19eaa42b5e1ff12e9a42d686e","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                                \"is False. Optional.\"),"},{"line_number":101,"context_line":"    \u0027ipmi_disable_timeout\u0027: _(\u0027By default ironic will send a raw IPMI \u0027"},{"line_number":102,"context_line":"                              \u0027command to disable the 60 second timeout \u0027"},{"line_number":103,"context_line":"                              \u0027for booting.  Setting this option to \u0027"},{"line_number":104,"context_line":"                              \u0027False will NOT send that command; default \u0027"},{"line_number":105,"context_line":"                              \u0027value is True. Optional.\u0027),"},{"line_number":106,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_41f08192","line":103,"range":{"start_line":103,"start_character":43,"end_line":103,"end_character":45},"in_reply_to":"3f79a3b5_2d569e2c","updated":"2018-11-11 13:50:22.000000000","message":"It was intentional, to add a double \u0027 \u0027 after a \u0027.\u0027.  I don\u0027t know if that convention is used in ironic.","commit_id":"134ccf4657c18818b1535870ea4806c6247fe058"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"2147ccd6c35bf254311a7a92fedcb78860bbbc81","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                                \"is False. Optional.\"),"},{"line_number":101,"context_line":"    \u0027ipmi_disable_timeout\u0027: _(\u0027By default ironic will send a raw IPMI \u0027"},{"line_number":102,"context_line":"                              \u0027command to disable the 60 second timeout \u0027"},{"line_number":103,"context_line":"                              \u0027for booting.  Setting this option to \u0027"},{"line_number":104,"context_line":"                              \u0027False will NOT send that command; default \u0027"},{"line_number":105,"context_line":"                              \u0027value is True. Optional.\u0027),"},{"line_number":106,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_c895913f","line":103,"range":{"start_line":103,"start_character":43,"end_line":103,"end_character":45},"in_reply_to":"3f79a3b5_41f08192","updated":"2018-11-12 03:15:34.000000000","message":"never seen that in ironic :)","commit_id":"134ccf4657c18818b1535870ea4806c6247fe058"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"ae2dc3f180d8fdd6db86db0143d300fb93fac7f5","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    \u0027ipmi_disable_timeout\u0027: _(\u0027By default ironic will send a raw IPMI \u0027"},{"line_number":102,"context_line":"                              \u0027command to disable the 60 second timeout \u0027"},{"line_number":103,"context_line":"                              \u0027for booting.  Setting this option to \u0027"},{"line_number":104,"context_line":"                              \u0027False will NOT send that command; default \u0027"},{"line_number":105,"context_line":"                              \u0027value is True. Optional.\u0027),"},{"line_number":106,"context_line":"}"},{"line_number":107,"context_line":"COMMON_PROPERTIES \u003d REQUIRED_PROPERTIES.copy()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_4d3d1ae4","line":104,"range":{"start_line":104,"start_character":42,"end_line":104,"end_character":45},"updated":"2018-11-10 14:30:03.000000000","message":"s/ NOT / not /\nWe do not add emphasis using capitals.","commit_id":"134ccf4657c18818b1535870ea4806c6247fe058"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"0a519752a46417f19eaa42b5e1ff12e9a42d686e","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    \u0027ipmi_disable_timeout\u0027: _(\u0027By default ironic will send a raw IPMI \u0027"},{"line_number":102,"context_line":"                              \u0027command to disable the 60 second timeout \u0027"},{"line_number":103,"context_line":"                              \u0027for booting.  Setting this option to \u0027"},{"line_number":104,"context_line":"                              \u0027False will NOT send that command; default \u0027"},{"line_number":105,"context_line":"                              \u0027value is True. Optional.\u0027),"},{"line_number":106,"context_line":"}"},{"line_number":107,"context_line":"COMMON_PROPERTIES \u003d REQUIRED_PROPERTIES.copy()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_e1eaed9e","line":104,"range":{"start_line":104,"start_character":42,"end_line":104,"end_character":45},"in_reply_to":"3f79a3b5_4d3d1ae4","updated":"2018-11-11 13:50:22.000000000","message":"Done","commit_id":"134ccf4657c18818b1535870ea4806c6247fe058"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"98935e3e8c6d01f54e7ff6e9240cc1ac1e064019","unresolved":false,"context_lines":[{"line_number":290,"context_line":"    protocol_version \u003d str(info.get(\u0027ipmi_protocol_version\u0027, \u00272.0\u0027))"},{"line_number":291,"context_line":"    force_boot_device \u003d info.get(\u0027ipmi_force_boot_device\u0027, False)"},{"line_number":292,"context_line":"    disable_timeout \u003d info.get(\u0027ipmi_disable_timeout\u0027, True)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"    if not username:"},{"line_number":295,"context_line":"        LOG.warning(\u0027ipmi_username is not defined or empty for node %s: \u0027"},{"line_number":296,"context_line":"                    \u0027NULL user will be utilized.\u0027, node.uuid)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_e49698a0","line":293,"updated":"2018-11-09 01:21:11.000000000","message":"I think changes here is not required, since the code below didn\u0027t utilize this method at all.","commit_id":"134ccf4657c18818b1535870ea4806c6247fe058"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"0a519752a46417f19eaa42b5e1ff12e9a42d686e","unresolved":false,"context_lines":[{"line_number":290,"context_line":"    protocol_version \u003d str(info.get(\u0027ipmi_protocol_version\u0027, \u00272.0\u0027))"},{"line_number":291,"context_line":"    force_boot_device \u003d info.get(\u0027ipmi_force_boot_device\u0027, False)"},{"line_number":292,"context_line":"    disable_timeout \u003d info.get(\u0027ipmi_disable_timeout\u0027, True)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"    if not username:"},{"line_number":295,"context_line":"        LOG.warning(\u0027ipmi_username is not defined or empty for node %s: \u0027"},{"line_number":296,"context_line":"                    \u0027NULL user will be utilized.\u0027, node.uuid)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_4135e141","line":293,"in_reply_to":"3f79a3b5_87fa4641","updated":"2018-11-11 13:50:22.000000000","message":"Done","commit_id":"134ccf4657c18818b1535870ea4806c6247fe058"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"5e2ea8fde35b5de9c7b66b95a98069c305b2a534","unresolved":false,"context_lines":[{"line_number":290,"context_line":"    protocol_version \u003d str(info.get(\u0027ipmi_protocol_version\u0027, \u00272.0\u0027))"},{"line_number":291,"context_line":"    force_boot_device \u003d info.get(\u0027ipmi_force_boot_device\u0027, False)"},{"line_number":292,"context_line":"    disable_timeout \u003d info.get(\u0027ipmi_disable_timeout\u0027, True)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"    if not username:"},{"line_number":295,"context_line":"        LOG.warning(\u0027ipmi_username is not defined or empty for node %s: \u0027"},{"line_number":296,"context_line":"                    \u0027NULL user will be utilized.\u0027, node.uuid)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_87fa4641","line":293,"in_reply_to":"3f79a3b5_e49698a0","updated":"2018-11-09 03:42:52.000000000","message":"Yup I was just trying to be complete.  I\u0027m happy to remove it.","commit_id":"134ccf4657c18818b1535870ea4806c6247fe058"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c0bd71b8c4bb4e2bec37db9bd2ab7b65b965640c","unresolved":false,"context_lines":[{"line_number":923,"context_line":"        # and will error when we try to set this.  Resulting in an abort.  If"},{"line_number":924,"context_line":"        # the BMC doesn\u0027t support this timeout there isn\u0027t a need to disable"},{"line_number":925,"context_line":"        # it.  Let\u0027s use a driver option to signify that"},{"line_number":926,"context_line":"        if task.node.driver_info.get(\u0027ipmi_disable_timeout\u0027, True):"},{"line_number":927,"context_line":"            # note(JayF): IPMI spec indicates unless you send these raw bytes"},{"line_number":928,"context_line":"            # the boot device setting times out after 60s. Since it\u0027s possible"},{"line_number":929,"context_line":"            # it could be \u003e60s before a node is rebooted, we should always send"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_7e1bf782","line":926,"updated":"2018-11-08 23:33:44.000000000","message":"Huh?  So this doesn\u0027t work.  I added some debugging and I see the following driver_info:\n\n driver_info \u003d {u\u0027ipmi_disable_timeout\u0027: u\u0027False\u0027, u\u0027ipmi_address\u0027: u\u00271.2.3.4\u0027, u\u0027deploy_ramdisk\u0027: u\u0027e4e490df-5fcd-42a2-a560-9d2325cc760e\u0027, u\u0027ipmi_password\u0027: u\u0027super-secret\u0027, u\u0027rescue_kernel\u0027: u\u00272ecc5a04-69b3-40fe-8aef-82a0255c6663\u0027, u\u0027rescue_ramdisk\u0027: u\u0027e4e490df-5fcd-42a2-a560-9d2325cc760e\u0027, u\u0027deploy_kernel\u0027: u\u00272ecc5a04-69b3-40fe-8aef-82a0255c6663\u0027}\n\nAnd ipmi_disable_timeout is a string rather than a Boolean so I get:\n\n \u003e\u003e\u003e driver_info.get(\u0027ipmi_disable_timeout\u0027, True)\n \u0027False\u0027\n \u003e\u003e\u003e bool(driver_info.get(\u0027ipmi_disable_timeout\u0027, True))\n True\n\nSo either I messed up setting the property and there is a way to get this\nstored as a Bool() or I need to process it as a string an make it do the right thing.\n\nI\u0027m a little confused as I used ``ipmi_force_boot_device`` as a template and it isn\u0027t doing anything like that?\n\n#help!?","commit_id":"134ccf4657c18818b1535870ea4806c6247fe058"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"98935e3e8c6d01f54e7ff6e9240cc1ac1e064019","unresolved":false,"context_lines":[{"line_number":923,"context_line":"        # and will error when we try to set this.  Resulting in an abort.  If"},{"line_number":924,"context_line":"        # the BMC doesn\u0027t support this timeout there isn\u0027t a need to disable"},{"line_number":925,"context_line":"        # it.  Let\u0027s use a driver option to signify that"},{"line_number":926,"context_line":"        if task.node.driver_info.get(\u0027ipmi_disable_timeout\u0027, True):"},{"line_number":927,"context_line":"            # note(JayF): IPMI spec indicates unless you send these raw bytes"},{"line_number":928,"context_line":"            # the boot device setting times out after 60s. Since it\u0027s possible"},{"line_number":929,"context_line":"            # it could be \u003e60s before a node is rebooted, we should always send"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_846004d2","line":926,"in_reply_to":"3f79a3b5_7e1bf782","updated":"2018-11-09 01:21:11.000000000","message":"I think there is nothing wrong with your code, but I wonder how do you get the output above, have you manually set the ipmi_disable_timeout to the driver_info?\n\nIf it\u0027s true, my suspect is, you used:\n\n  openstack baremetal node set --driver-info debug_mode\u003dTrue node-0\n\ninstead of:\n\n  openstack baremetal node set --driver-info debug_mode\u003dtrue node-0\n\nNotice that True/true, the former result a string in the driver_info, while the latter result a bool.","commit_id":"134ccf4657c18818b1535870ea4806c6247fe058"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"5e2ea8fde35b5de9c7b66b95a98069c305b2a534","unresolved":false,"context_lines":[{"line_number":923,"context_line":"        # and will error when we try to set this.  Resulting in an abort.  If"},{"line_number":924,"context_line":"        # the BMC doesn\u0027t support this timeout there isn\u0027t a need to disable"},{"line_number":925,"context_line":"        # it.  Let\u0027s use a driver option to signify that"},{"line_number":926,"context_line":"        if task.node.driver_info.get(\u0027ipmi_disable_timeout\u0027, True):"},{"line_number":927,"context_line":"            # note(JayF): IPMI spec indicates unless you send these raw bytes"},{"line_number":928,"context_line":"            # the boot device setting times out after 60s. Since it\u0027s possible"},{"line_number":929,"context_line":"            # it could be \u003e60s before a node is rebooted, we should always send"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_67ffea34","line":926,"in_reply_to":"3f79a3b5_846004d2","updated":"2018-11-09 03:42:52.000000000","message":"Ahh great!  Thanks.  That does seem to have fixed it.","commit_id":"134ccf4657c18818b1535870ea4806c6247fe058"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"ae2dc3f180d8fdd6db86db0143d300fb93fac7f5","unresolved":false,"context_lines":[{"line_number":932,"context_line":"            timeout_disable \u003d \"0x00 0x08 0x03 0x08\""},{"line_number":933,"context_line":"            send_raw(task, timeout_disable)"},{"line_number":934,"context_line":"        else:"},{"line_number":935,"context_line":"            LOG.info(\u0027Not sending timeout_disable commands at driver request\u0027)"},{"line_number":936,"context_line":""},{"line_number":937,"context_line":"        if task.node.driver_info.get(\u0027ipmi_force_boot_device\u0027, False):"},{"line_number":938,"context_line":"            driver_utils.force_persistent_boot(task,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_4d32fa0f","line":935,"range":{"start_line":935,"start_character":34,"end_line":935,"end_character":49},"updated":"2018-11-10 14:30:03.000000000","message":"This is ironic variable name. May be:\ns/ \u0027timeout_disable\u0027 / \u0027boot timeout disable\u0027 /","commit_id":"134ccf4657c18818b1535870ea4806c6247fe058"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"0a519752a46417f19eaa42b5e1ff12e9a42d686e","unresolved":false,"context_lines":[{"line_number":932,"context_line":"            timeout_disable \u003d \"0x00 0x08 0x03 0x08\""},{"line_number":933,"context_line":"            send_raw(task, timeout_disable)"},{"line_number":934,"context_line":"        else:"},{"line_number":935,"context_line":"            LOG.info(\u0027Not sending timeout_disable commands at driver request\u0027)"},{"line_number":936,"context_line":""},{"line_number":937,"context_line":"        if task.node.driver_info.get(\u0027ipmi_force_boot_device\u0027, False):"},{"line_number":938,"context_line":"            driver_utils.force_persistent_boot(task,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_213a2534","line":935,"range":{"start_line":935,"start_character":34,"end_line":935,"end_character":49},"in_reply_to":"3f79a3b5_4d32fa0f","updated":"2018-11-11 13:50:22.000000000","message":"Done","commit_id":"134ccf4657c18818b1535870ea4806c6247fe058"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"17a10a87b28498bf4a5762526c61a7ec2c35339b","unresolved":false,"context_lines":[{"line_number":921,"context_line":"        # and will error when we try to set this.  Resulting in an abort.  If"},{"line_number":922,"context_line":"        # the BMC doesn\u0027t support this timeout there isn\u0027t a need to disable"},{"line_number":923,"context_line":"        # it.  Let\u0027s use a driver option to signify that"},{"line_number":924,"context_line":"        if task.node.driver_info.get(\u0027ipmi_disable_timeout\u0027, True):"},{"line_number":925,"context_line":"            # note(JayF): IPMI spec indicates unless you send these raw bytes"},{"line_number":926,"context_line":"            # the boot device setting times out after 60s. Since it\u0027s possible"},{"line_number":927,"context_line":"            # it could be \u003e60s before a node is rebooted, we should always send"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_75bb22dd","line":924,"updated":"2018-11-26 16:14:55.000000000","message":"that isn\u0027t going to work well if they put \u0027False\u0027 as the value. (Did you use 0?) We should probably use strutils.bool_from_string() to convert the string to a Boolean.","commit_id":"ddf027f9bc6603568d85c84411e3a54e3cd8c0f3"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"cf193e227ee3d6b006e4ac8c9affd2b013ff591f","unresolved":false,"context_lines":[{"line_number":921,"context_line":"        # and will error when we try to set this.  Resulting in an abort.  If"},{"line_number":922,"context_line":"        # the BMC doesn\u0027t support this timeout there isn\u0027t a need to disable"},{"line_number":923,"context_line":"        # it.  Let\u0027s use a driver option to signify that"},{"line_number":924,"context_line":"        if task.node.driver_info.get(\u0027ipmi_disable_timeout\u0027, True):"},{"line_number":925,"context_line":"            # note(JayF): IPMI spec indicates unless you send these raw bytes"},{"line_number":926,"context_line":"            # the boot device setting times out after 60s. Since it\u0027s possible"},{"line_number":927,"context_line":"            # it could be \u003e60s before a node is rebooted, we should always send"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_fe9e2766","line":924,"in_reply_to":"3f79a3b5_75bb22dd","updated":"2018-11-27 05:31:16.000000000","message":"Will do.   I copied the logic from just below this.  Should I add a follow-up patch to use strutils.bool_from_string() there also?","commit_id":"ddf027f9bc6603568d85c84411e3a54e3cd8c0f3"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"deb8304aa0f96d873d7f8627daca1f5db83babc6","unresolved":false,"context_lines":[{"line_number":921,"context_line":"        # and will error when we try to set this.  Resulting in an abort.  If"},{"line_number":922,"context_line":"        # the BMC doesn\u0027t support this timeout there isn\u0027t a need to disable"},{"line_number":923,"context_line":"        # it.  Let\u0027s use a driver option to signify that"},{"line_number":924,"context_line":"        if task.node.driver_info.get(\u0027ipmi_disable_timeout\u0027, True):"},{"line_number":925,"context_line":"            # note(JayF): IPMI spec indicates unless you send these raw bytes"},{"line_number":926,"context_line":"            # the boot device setting times out after 60s. Since it\u0027s possible"},{"line_number":927,"context_line":"            # it could be \u003e60s before a node is rebooted, we should always send"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_edd7464c","line":924,"in_reply_to":"3f79a3b5_d921fa4f","updated":"2018-11-28 04:29:54.000000000","message":"Done: https://storyboard.openstack.org/#!/story/2004444 and https://review.openstack.org/#/c/620453/","commit_id":"ddf027f9bc6603568d85c84411e3a54e3cd8c0f3"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5897a7053ee7be9d5df2b8a7b6b05384f55abb1f","unresolved":false,"context_lines":[{"line_number":921,"context_line":"        # and will error when we try to set this.  Resulting in an abort.  If"},{"line_number":922,"context_line":"        # the BMC doesn\u0027t support this timeout there isn\u0027t a need to disable"},{"line_number":923,"context_line":"        # it.  Let\u0027s use a driver option to signify that"},{"line_number":924,"context_line":"        if task.node.driver_info.get(\u0027ipmi_disable_timeout\u0027, True):"},{"line_number":925,"context_line":"            # note(JayF): IPMI spec indicates unless you send these raw bytes"},{"line_number":926,"context_line":"            # the boot device setting times out after 60s. Since it\u0027s possible"},{"line_number":927,"context_line":"            # it could be \u003e60s before a node is rebooted, we should always send"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_d921fa4f","line":924,"in_reply_to":"3f79a3b5_fe9e2766","updated":"2018-11-27 15:55:46.000000000","message":"Ugh. Clearly folks don\u0027t use ipmi_force_boot_device :-( Yes, follow-up patch (and story/bug) would be great, thx!","commit_id":"ddf027f9bc6603568d85c84411e3a54e3cd8c0f3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5b74ddb0fc8af37f71f74a5de4e04d1448bec006","unresolved":false,"context_lines":[{"line_number":931,"context_line":"            send_raw(task, timeout_disable)"},{"line_number":932,"context_line":"        else:"},{"line_number":933,"context_line":"            LOG.info(\u0027Not sending boot timeout disable commands at driver \u0027"},{"line_number":934,"context_line":"                     \u0027request\u0027)"},{"line_number":935,"context_line":""},{"line_number":936,"context_line":"        if task.node.driver_info.get(\u0027ipmi_force_boot_device\u0027, False):"},{"line_number":937,"context_line":"            driver_utils.force_persistent_boot(task,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_df4c1742","line":934,"updated":"2018-11-16 11:45:42.000000000","message":"++","commit_id":"ddf027f9bc6603568d85c84411e3a54e3cd8c0f3"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"2147ccd6c35bf254311a7a92fedcb78860bbbc81","unresolved":false,"context_lines":[{"line_number":931,"context_line":"            send_raw(task, timeout_disable)"},{"line_number":932,"context_line":"        else:"},{"line_number":933,"context_line":"            LOG.info(\u0027Not sending boot timeout disable commands at driver \u0027"},{"line_number":934,"context_line":"                     \u0027request\u0027)"},{"line_number":935,"context_line":""},{"line_number":936,"context_line":"        if task.node.driver_info.get(\u0027ipmi_force_boot_device\u0027, False):"},{"line_number":937,"context_line":"            driver_utils.force_persistent_boot(task,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_8885590c","line":934,"updated":"2018-11-12 03:15:34.000000000","message":"maybe adds a node uuid in the log message","commit_id":"ddf027f9bc6603568d85c84411e3a54e3cd8c0f3"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"17a10a87b28498bf4a5762526c61a7ec2c35339b","unresolved":false,"context_lines":[{"line_number":931,"context_line":"            send_raw(task, timeout_disable)"},{"line_number":932,"context_line":"        else:"},{"line_number":933,"context_line":"            LOG.info(\u0027Not sending boot timeout disable commands at driver \u0027"},{"line_number":934,"context_line":"                     \u0027request\u0027)"},{"line_number":935,"context_line":""},{"line_number":936,"context_line":"        if task.node.driver_info.get(\u0027ipmi_force_boot_device\u0027, False):"},{"line_number":937,"context_line":"            driver_utils.force_persistent_boot(task,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_f577328c","line":934,"in_reply_to":"3f79a3b5_df4c1742","updated":"2018-11-26 16:14:55.000000000","message":"\u0027driver\u0027 is overloaded. how about something like\n\n\u0027For node \u003cnode\u003e, driver_info[\u0027impi_disable_timeout\u0027] not set so not sending ipmi boot-disable-timeout request\u0027","commit_id":"ddf027f9bc6603568d85c84411e3a54e3cd8c0f3"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"cf193e227ee3d6b006e4ac8c9affd2b013ff591f","unresolved":false,"context_lines":[{"line_number":931,"context_line":"            send_raw(task, timeout_disable)"},{"line_number":932,"context_line":"        else:"},{"line_number":933,"context_line":"            LOG.info(\u0027Not sending boot timeout disable commands at driver \u0027"},{"line_number":934,"context_line":"                     \u0027request\u0027)"},{"line_number":935,"context_line":""},{"line_number":936,"context_line":"        if task.node.driver_info.get(\u0027ipmi_force_boot_device\u0027, False):"},{"line_number":937,"context_line":"            driver_utils.force_persistent_boot(task,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_5ec63b4c","line":934,"in_reply_to":"3f79a3b5_f577328c","updated":"2018-11-27 05:31:16.000000000","message":"Done","commit_id":"ddf027f9bc6603568d85c84411e3a54e3cd8c0f3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5dc46edfe04db540494ba9a57d7d8d548aa429e5","unresolved":false,"context_lines":[{"line_number":922,"context_line":"        # the BMC doesn\u0027t support this timeout there isn\u0027t a need to disable"},{"line_number":923,"context_line":"        # it.  Let\u0027s use a driver option to signify that"},{"line_number":924,"context_line":"        idt \u003d task.node.driver_info.get(\u0027ipmi_disable_timeout\u0027, True)"},{"line_number":925,"context_line":"        if strutils.bool_from_string(idt) is True:"},{"line_number":926,"context_line":"            # note(JayF): IPMI spec indicates unless you send these raw bytes"},{"line_number":927,"context_line":"            # the boot device setting times out after 60s. Since it\u0027s possible"},{"line_number":928,"context_line":"            # it could be \u003e60s before a node is rebooted, we should always send"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_24fed006","line":925,"updated":"2018-11-27 08:42:18.000000000","message":"nit: s/is True//","commit_id":"ffe7df84eb7eaa5ac84845c34e4c47a8516db0cf"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5dc46edfe04db540494ba9a57d7d8d548aa429e5","unresolved":false,"context_lines":[{"line_number":932,"context_line":"            send_raw(task, timeout_disable)"},{"line_number":933,"context_line":"        else:"},{"line_number":934,"context_line":"            LOG.info(\u0027For node %(node_uuid)s, \u0027"},{"line_number":935,"context_line":"                     \u0027driver_info[\\\u0027ipmi_disable_timeout\\\u0027] is not set, so \u0027"},{"line_number":936,"context_line":"                     \u0027not sending ipmi boot-timeout-disable\u0027,"},{"line_number":937,"context_line":"                     {\u0027node_uuid\u0027, task.node.uuid})"},{"line_number":938,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_44f98c1a","line":935,"updated":"2018-11-27 08:42:18.000000000","message":"s/is not set/is set to False/ because not setting it results in True","commit_id":"ffe7df84eb7eaa5ac84845c34e4c47a8516db0cf"}],"ironic/tests/unit/drivers/modules/test_ipmitool.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5897a7053ee7be9d5df2b8a7b6b05384f55abb1f","unresolved":false,"context_lines":[{"line_number":1960,"context_line":""},{"line_number":1961,"context_line":"        with task_manager.acquire(self.context, self.node.uuid) as task:"},{"line_number":1962,"context_line":"            driver_info \u003d task.node.driver_info"},{"line_number":1963,"context_line":"            driver_info[\u0027ipmi_disable_timeout\u0027] \u003d False"},{"line_number":1964,"context_line":"            task.node.driver_info \u003d driver_info"},{"line_number":1965,"context_line":"            self.management.set_boot_device(task, boot_devices.PXE)"},{"line_number":1966,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_594baa7e","line":1963,"updated":"2018-11-27 15:55:46.000000000","message":"To be more realistic, this should be s/False/\"False\"/","commit_id":"efd42ef6e004e07f5170f8e86282fc39841558ec"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"26c4a730b866ace23fbfc9cd657c6352ffc5fc80","unresolved":false,"context_lines":[{"line_number":1960,"context_line":""},{"line_number":1961,"context_line":"        with task_manager.acquire(self.context, self.node.uuid) as task:"},{"line_number":1962,"context_line":"            driver_info \u003d task.node.driver_info"},{"line_number":1963,"context_line":"            driver_info[\u0027ipmi_disable_timeout\u0027] \u003d False"},{"line_number":1964,"context_line":"            task.node.driver_info \u003d driver_info"},{"line_number":1965,"context_line":"            self.management.set_boot_device(task, boot_devices.PXE)"},{"line_number":1966,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_4483baaa","line":1963,"in_reply_to":"3f79a3b5_594baa7e","updated":"2018-11-28 01:28:19.000000000","message":"Okay will do.","commit_id":"efd42ef6e004e07f5170f8e86282fc39841558ec"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"309b49b65b1e6a83d310f74b39120ff321166d3f","unresolved":false,"context_lines":[{"line_number":1965,"context_line":"            self.management.set_boot_device(task, boot_devices.PXE)"},{"line_number":1966,"context_line":""},{"line_number":1967,"context_line":"        mock_calls \u003d [mock.call(self.info, \"chassis bootdev pxe\")]"},{"line_number":1968,"context_line":"        mock_exec.assert_has_calls(mock_calls)"},{"line_number":1969,"context_line":""},{"line_number":1970,"context_line":"    @mock.patch.object(ipmi, \u0027_exec_ipmitool\u0027, autospec\u003dTrue)"},{"line_number":1971,"context_line":"    def test_management_interface_set_boot_device_exec_failed(self, mock_exec):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_fecdbc91","line":1968,"updated":"2018-11-27 14:53:17.000000000","message":"This does not actuall check that the wrong command was not called, does it?","commit_id":"efd42ef6e004e07f5170f8e86282fc39841558ec"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"26c4a730b866ace23fbfc9cd657c6352ffc5fc80","unresolved":false,"context_lines":[{"line_number":1965,"context_line":"            self.management.set_boot_device(task, boot_devices.PXE)"},{"line_number":1966,"context_line":""},{"line_number":1967,"context_line":"        mock_calls \u003d [mock.call(self.info, \"chassis bootdev pxe\")]"},{"line_number":1968,"context_line":"        mock_exec.assert_has_calls(mock_calls)"},{"line_number":1969,"context_line":""},{"line_number":1970,"context_line":"    @mock.patch.object(ipmi, \u0027_exec_ipmitool\u0027, autospec\u003dTrue)"},{"line_number":1971,"context_line":"    def test_management_interface_set_boot_device_exec_failed(self, mock_exec):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_e4bbe670","line":1968,"in_reply_to":"3f79a3b5_94082725","updated":"2018-11-28 01:28:19.000000000","message":"I used a similar[1] test as a template.  This does check that things are only called once.  If you look at the test in [1] if the code wasn\u0027t working we\u0027d need to include the \u0027raw ....\u0027 in mock calls.  I chose to follow a similar test as it seemed to be the established pattern in this file.\n\n\n\n[1] https://review.openstack.org/#/c/616053/6/ironic/tests/unit/drivers/modules/test_ipmitool.py@1933","commit_id":"efd42ef6e004e07f5170f8e86282fc39841558ec"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4c0cac8d8d630e3b48ec6b51ebfdb63ddd06818b","unresolved":false,"context_lines":[{"line_number":1965,"context_line":"            self.management.set_boot_device(task, boot_devices.PXE)"},{"line_number":1966,"context_line":""},{"line_number":1967,"context_line":"        mock_calls \u003d [mock.call(self.info, \"chassis bootdev pxe\")]"},{"line_number":1968,"context_line":"        mock_exec.assert_has_calls(mock_calls)"},{"line_number":1969,"context_line":""},{"line_number":1970,"context_line":"    @mock.patch.object(ipmi, \u0027_exec_ipmitool\u0027, autospec\u003dTrue)"},{"line_number":1971,"context_line":"    def test_management_interface_set_boot_device_exec_failed(self, mock_exec):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_bd5e4adf","line":1968,"in_reply_to":"3f79a3b5_e4bbe670","updated":"2018-11-28 19:50:26.000000000","message":"With the existing test @1933, we expect exactly two calls (because the code doesn\u0027t make more than 2 calls). To be more robust, it could have checked that exactly two calls were made.\n\nIn this particular test, we expect exactly one call. But the mock_exec.return_value returns 2 values (so can handle 2 calls to it), and mock_exec.assert_has_calls() only checks if those calls were made. There could have been additional calls -- that\u0027s what we want to make sure didn\u0027t happen.","commit_id":"efd42ef6e004e07f5170f8e86282fc39841558ec"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5897a7053ee7be9d5df2b8a7b6b05384f55abb1f","unresolved":false,"context_lines":[{"line_number":1965,"context_line":"            self.management.set_boot_device(task, boot_devices.PXE)"},{"line_number":1966,"context_line":""},{"line_number":1967,"context_line":"        mock_calls \u003d [mock.call(self.info, \"chassis bootdev pxe\")]"},{"line_number":1968,"context_line":"        mock_exec.assert_has_calls(mock_calls)"},{"line_number":1969,"context_line":""},{"line_number":1970,"context_line":"    @mock.patch.object(ipmi, \u0027_exec_ipmitool\u0027, autospec\u003dTrue)"},{"line_number":1971,"context_line":"    def test_management_interface_set_boot_device_exec_failed(self, mock_exec):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_94082725","line":1968,"in_reply_to":"3f79a3b5_fecdbc91","updated":"2018-11-27 15:55:46.000000000","message":"Ugh, wonder if this is copy/paste from another test that is wrong.\n\nIdeally, you\u0027d want to mock the send_raw() method and check that it wasn\u0027t called.\n\nOr at least here, check that mock_exec was only called once (not twice) with that call.","commit_id":"efd42ef6e004e07f5170f8e86282fc39841558ec"}],"releasenotes/notes/story-2004266-4725d327900850bf.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f58b06385a43e7f7c96209127ec6fb12e7c12a8a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The IPMI driver unconditionally instructed the BMC not automatically clear"},{"line_number":5,"context_line":"    boot flag valid bit if Chassis Control command not received within"},{"line_number":6,"context_line":"    60-second timeout (countdown restarts when a Chassis Control command is"},{"line_number":7,"context_line":"    received).  Some BMCs do not support setting this.  Sending the command"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3f79a3b5_1da6b30e","line":4,"updated":"2018-11-07 10:59:10.000000000","message":"nit: \"to not\"?","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"ab459f33a8ec2ce0124a09725a5168b4a75c7874","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The IPMI driver unconditionally instructed the BMC not automatically clear"},{"line_number":5,"context_line":"    boot flag valid bit if Chassis Control command not received within"},{"line_number":6,"context_line":"    60-second timeout (countdown restarts when a Chassis Control command is"},{"line_number":7,"context_line":"    received).  Some BMCs do not support setting this.  Sending the command"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3f79a3b5_ef3e8f25","line":4,"in_reply_to":"3f79a3b5_1da6b30e","updated":"2018-11-08 01:05:59.000000000","message":"Done","commit_id":"5de0fdf32b244c61581b64a85639c2f29d353c2c"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4114f6045b5dabb6b16bb78eb627c956702aa3ab","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The IPMI driver unconditionally instructed the BMC to not automatically"},{"line_number":5,"context_line":"    clear boot flag valid bit if Chassis Control command not received within"},{"line_number":6,"context_line":"    60-second timeout (countdown restarts when a Chassis Control command is"},{"line_number":7,"context_line":"    received).  Some BMCs do not support setting this.  Sending the command"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3f79a3b5_751322b2","line":4,"updated":"2018-11-26 16:15:48.000000000","message":"Dmitry, are we trying to avoid using the term \u0027driver\u0027? Maybe s/IPMI driver/IPMI hardware type/","commit_id":"ddf027f9bc6603568d85c84411e3a54e3cd8c0f3"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"17a10a87b28498bf4a5762526c61a7ec2c35339b","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    clear boot flag valid bit if Chassis Control command not received within"},{"line_number":6,"context_line":"    60-second timeout (countdown restarts when a Chassis Control command is"},{"line_number":7,"context_line":"    received).  Some BMCs do not support setting this.  Sending the command"},{"line_number":8,"context_line":"    aborts the node boot.  A new driver option ``ipmi_disable_timeout`` is"},{"line_number":9,"context_line":"    added to bypass sending this command.  See `story 2004266"},{"line_number":10,"context_line":"    \u003chttps://storyboard.openstack.org/#!/story/2004266\u003e`_ for additional"},{"line_number":11,"context_line":"    information."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3f79a3b5_d52b16e6","line":8,"updated":"2018-11-26 16:14:55.000000000","message":"sending the command aborts the node boot for the BMCs that doesn\u0027t support this command, right?\n\nMaybe clarify that, eg, \"Some BMCs do not support setting this; if sent it causes the boot to be aborted instead.\"\n\nLet\u0027s make this clearer. s/A new driver option.../For nodes using the IPMI hardware type, a new node[\u0027driver_option\u0027][\u0027ipmi_disable_timeout\u0027] can be specified. It is \u0027True\u0027 by default; set it to \u0027False\u0027 to bypass sending this command./","commit_id":"ddf027f9bc6603568d85c84411e3a54e3cd8c0f3"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"cf193e227ee3d6b006e4ac8c9affd2b013ff591f","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    clear boot flag valid bit if Chassis Control command not received within"},{"line_number":6,"context_line":"    60-second timeout (countdown restarts when a Chassis Control command is"},{"line_number":7,"context_line":"    received).  Some BMCs do not support setting this.  Sending the command"},{"line_number":8,"context_line":"    aborts the node boot.  A new driver option ``ipmi_disable_timeout`` is"},{"line_number":9,"context_line":"    added to bypass sending this command.  See `story 2004266"},{"line_number":10,"context_line":"    \u003chttps://storyboard.openstack.org/#!/story/2004266\u003e`_ for additional"},{"line_number":11,"context_line":"    information."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3f79a3b5_beabcf6d","line":8,"in_reply_to":"3f79a3b5_d52b16e6","updated":"2018-11-27 05:31:16.000000000","message":"Done","commit_id":"ddf027f9bc6603568d85c84411e3a54e3cd8c0f3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5dc46edfe04db540494ba9a57d7d8d548aa429e5","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    received within 60-second timeout (countdown restarts when a Chassis"},{"line_number":7,"context_line":"    Control command is received).  Some BMCs do not support setting this; if"},{"line_number":8,"context_line":"    sent it causes the boot to be aborted instead.  For IPMI hardware type a"},{"line_number":9,"context_line":"    new driver option ``node[\u0027driver_option\u0027][\u0027ipmi_disable_timeout\u0027]`` can be"},{"line_number":10,"context_line":"    specified.  It is ``True`` by default; set it to ``False`` to bypass"},{"line_number":11,"context_line":"    sending this command.  See `story 2004266"},{"line_number":12,"context_line":"    \u003chttps://storyboard.openstack.org/#!/story/2004266\u003e`_ for additional"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3f79a3b5_84032411","line":9,"updated":"2018-11-27 08:42:18.000000000","message":"s/driver_option/driver_info/","commit_id":"ffe7df84eb7eaa5ac84845c34e4c47a8516db0cf"}]}
