)]}'
{"doc/source/admin/drivers/ipmitool.rst":[{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"95f7922430b3ab8124eab216bfedc9ba5942e7c4","unresolved":false,"context_lines":[{"line_number":202,"context_line":"~~~~~~~~~~~~~~~~~~"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"While the Intelligent Platform Management Interface (IPMI) interface is based"},{"line_number":205,"context_line":"upon a defined standard, The Ironic community is aware of at least one vendor"},{"line_number":206,"context_line":"which utilizes a non-standard boot device selector. In essence, this could be"},{"line_number":207,"context_line":"something as simple as different interpretation of the standard."},{"line_number":208,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7f6b1bfe_e7b0bd8e","line":205,"range":{"start_line":205,"start_character":25,"end_line":205,"end_character":29},"updated":"2020-10-14 06:47:19.000000000","message":"Typo: the","commit_id":"759396947a6c2cad5b11802d1effcfd8d765b6ab"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"95f7922430b3ab8124eab216bfedc9ba5942e7c4","unresolved":false,"context_lines":[{"line_number":229,"context_line":""},{"line_number":230,"context_line":"This can be invoked by using the following command::"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    baremetal node boot device show \u003cUUID or name\u003e\u003e"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"While similar vendor issues may when setting the default boot mode and target"},{"line_number":235,"context_line":"boot device in other vendor\u0027s BMCs, we are not aware of them at present."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7f6b1bfe_6762ed18","line":232,"range":{"start_line":232,"start_character":49,"end_line":232,"end_character":51},"updated":"2020-10-14 06:47:19.000000000","message":"Nit: double \u003e\u003e","commit_id":"759396947a6c2cad5b11802d1effcfd8d765b6ab"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"95f7922430b3ab8124eab216bfedc9ba5942e7c4","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    baremetal node boot device show \u003cUUID or name\u003e\u003e"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"While similar vendor issues may when setting the default boot mode and target"},{"line_number":235,"context_line":"boot device in other vendor\u0027s BMCs, we are not aware of them at present."},{"line_number":236,"context_line":"Should you encounter such an issue, please feel free to report this via"},{"line_number":237,"context_line":"`Storyboard \u003chttps://storyboard.openstack.org\u003e`_, and be sure to include"},{"line_number":238,"context_line":"the ``chassis bootparam get 5`` output value from your BMC."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7f6b1bfe_2759155a","line":235,"range":{"start_line":234,"start_character":0,"end_line":235,"end_character":34},"updated":"2020-10-14 06:47:19.000000000","message":"There is sth missing in this sentence.\n\"While similar issues may occur when ...\" maybe?","commit_id":"759396947a6c2cad5b11802d1effcfd8d765b6ab"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e9b7264afe973d1122e412f3fa1c403488626e0d","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    baremetal node boot device show \u003cUUID or name\u003e\u003e"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"While similar vendor issues may when setting the default boot mode and target"},{"line_number":235,"context_line":"boot device in other vendor\u0027s BMCs, we are not aware of them at present."},{"line_number":236,"context_line":"Should you encounter such an issue, please feel free to report this via"},{"line_number":237,"context_line":"`Storyboard \u003chttps://storyboard.openstack.org\u003e`_, and be sure to include"},{"line_number":238,"context_line":"the ``chassis bootparam get 5`` output value from your BMC."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7f6b1bfe_7a09d8db","line":235,"range":{"start_line":234,"start_character":0,"end_line":235,"end_character":34},"in_reply_to":"7f6b1bfe_2759155a","updated":"2020-10-14 20:18:05.000000000","message":"Yeah, that sounds better, I think I stopped and restarted this sentence a couple times. :(","commit_id":"759396947a6c2cad5b11802d1effcfd8d765b6ab"},{"author":{"_account_id":21909,"name":"Bob Fournier","email":"bfournie@redhat.com","username":"bfournie"},"change_message_id":"1c5aeb30abdf6e341aa53676b3fbf7e5ecc34418","unresolved":false,"context_lines":[{"line_number":213,"context_line":"the selector to be a value of ``0x08``."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"Because the BMC does not respond with any sort of error, nor do we want to"},{"line_number":216,"context_line":"risk BMC connectivity issues by explicitly quering all BMCs what vendor it may"},{"line_number":217,"context_line":"be before every operation, the vendor can automatically be recorded in the"},{"line_number":218,"context_line":"``driver_info`` field ``ipmi_vendor``. When this is set to a value of"},{"line_number":219,"context_line":"``supermicro``, Ironic will navigate the UEFI behavior difference enabling"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7f6b1bfe_7093b750","line":216,"range":{"start_line":216,"start_character":43,"end_line":216,"end_character":50},"updated":"2020-10-15 01:46:07.000000000","message":"nit - querying","commit_id":"2ef1a6b7f500a8ad80ce3615615df5f389d24152"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a2cde4a0dc2b47079ec3f2f3f6cd7129c5e88e46","unresolved":false,"context_lines":[{"line_number":213,"context_line":"the selector to be a value of ``0x08``."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"Because the BMC does not respond with any sort of error, nor do we want to"},{"line_number":216,"context_line":"risk BMC connectivity issues by explicitly quering all BMCs what vendor it may"},{"line_number":217,"context_line":"be before every operation, the vendor can automatically be recorded in the"},{"line_number":218,"context_line":"``driver_info`` field ``ipmi_vendor``. When this is set to a value of"},{"line_number":219,"context_line":"``supermicro``, Ironic will navigate the UEFI behavior difference enabling"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f65232a_fbbcc76a","line":216,"range":{"start_line":216,"start_character":43,"end_line":216,"end_character":50},"in_reply_to":"7f6b1bfe_7093b750","updated":"2020-10-22 21:40:51.000000000","message":"Done","commit_id":"2ef1a6b7f500a8ad80ce3615615df5f389d24152"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"0f174e38897f00a705cef634768a6cbb1938adc5","unresolved":false,"context_lines":[{"line_number":217,"context_line":"be before every operation, the vendor can automatically be recorded in the"},{"line_number":218,"context_line":"``driver_info`` field ``ipmi_vendor``. When this is set to a value of"},{"line_number":219,"context_line":"``supermicro``, Ironic will navigate the UEFI behavior difference enabling"},{"line_number":220,"context_line":"the UEFI to be reqeusted with boot to disk."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Example::"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f681702_be689dba","line":220,"range":{"start_line":220,"start_character":15,"end_line":220,"end_character":24},"updated":"2020-10-16 08:46:42.000000000","message":"Typo: requested","commit_id":"2ef1a6b7f500a8ad80ce3615615df5f389d24152"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a2cde4a0dc2b47079ec3f2f3f6cd7129c5e88e46","unresolved":false,"context_lines":[{"line_number":217,"context_line":"be before every operation, the vendor can automatically be recorded in the"},{"line_number":218,"context_line":"``driver_info`` field ``ipmi_vendor``. When this is set to a value of"},{"line_number":219,"context_line":"``supermicro``, Ironic will navigate the UEFI behavior difference enabling"},{"line_number":220,"context_line":"the UEFI to be reqeusted with boot to disk."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Example::"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f65232a_3bae3f2e","line":220,"range":{"start_line":220,"start_character":15,"end_line":220,"end_character":24},"in_reply_to":"5f681702_be689dba","updated":"2020-10-22 21:40:51.000000000","message":"Done","commit_id":"2ef1a6b7f500a8ad80ce3615615df5f389d24152"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"0f174e38897f00a705cef634768a6cbb1938adc5","unresolved":false,"context_lines":[{"line_number":224,"context_line":"    baremetal node set \u003cUUID or name\u003e \\"},{"line_number":225,"context_line":"        --driver-info ipmi_vendor\u003dsupermicro"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"Alternatively, should ironic be requested to identify the current boot device"},{"line_number":228,"context_line":"it will automatically attempt to record the vendor if it is not already set."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"This can be invoked by using the following command::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f681702_de5f590c","line":227,"range":{"start_line":227,"start_character":22,"end_line":227,"end_character":28},"updated":"2020-10-16 08:46:42.000000000","message":"Nit: capital I as above?","commit_id":"2ef1a6b7f500a8ad80ce3615615df5f389d24152"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a2cde4a0dc2b47079ec3f2f3f6cd7129c5e88e46","unresolved":false,"context_lines":[{"line_number":224,"context_line":"    baremetal node set \u003cUUID or name\u003e \\"},{"line_number":225,"context_line":"        --driver-info ipmi_vendor\u003dsupermicro"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"Alternatively, should ironic be requested to identify the current boot device"},{"line_number":228,"context_line":"it will automatically attempt to record the vendor if it is not already set."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"This can be invoked by using the following command::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f65232a_7ba8b71e","line":227,"range":{"start_line":227,"start_character":22,"end_line":227,"end_character":28},"in_reply_to":"5f681702_de5f590c","updated":"2020-10-22 21:40:51.000000000","message":"Done","commit_id":"2ef1a6b7f500a8ad80ce3615615df5f389d24152"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"0f174e38897f00a705cef634768a6cbb1938adc5","unresolved":false,"context_lines":[{"line_number":232,"context_line":"    baremetal node boot device show \u003cUUID or name\u003e"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"While similar issues may exist when setting the boot mode and target"},{"line_number":235,"context_line":"boot device in other vendor\u0027s BMCs, we are not aware of them at present."},{"line_number":236,"context_line":"Should you encounter such an issue, please feel free to report this via"},{"line_number":237,"context_line":"`Storyboard \u003chttps://storyboard.openstack.org\u003e`_, and be sure to include"},{"line_number":238,"context_line":"the ``chassis bootparam get 5`` output value from your BMC."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f681702_7ea44509","line":235,"range":{"start_line":235,"start_character":21,"end_line":235,"end_character":29},"updated":"2020-10-16 08:46:42.000000000","message":"Nit: vendors\u0027 ?","commit_id":"2ef1a6b7f500a8ad80ce3615615df5f389d24152"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a2cde4a0dc2b47079ec3f2f3f6cd7129c5e88e46","unresolved":false,"context_lines":[{"line_number":232,"context_line":"    baremetal node boot device show \u003cUUID or name\u003e"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"While similar issues may exist when setting the boot mode and target"},{"line_number":235,"context_line":"boot device in other vendor\u0027s BMCs, we are not aware of them at present."},{"line_number":236,"context_line":"Should you encounter such an issue, please feel free to report this via"},{"line_number":237,"context_line":"`Storyboard \u003chttps://storyboard.openstack.org\u003e`_, and be sure to include"},{"line_number":238,"context_line":"the ``chassis bootparam get 5`` output value from your BMC."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f65232a_9bab131c","line":235,"range":{"start_line":235,"start_character":21,"end_line":235,"end_character":29},"in_reply_to":"5f681702_7ea44509","updated":"2020-10-22 21:40:51.000000000","message":"Done","commit_id":"2ef1a6b7f500a8ad80ce3615615df5f389d24152"}],"ironic/drivers/base.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"a5da7ffbb18ce2a1eda5dc3cf44d16e6f7cb090b","unresolved":false,"context_lines":[{"line_number":1111,"context_line":"        \"\"\"Detects, stores, and returns the hardware vendor."},{"line_number":1112,"context_line":""},{"line_number":1113,"context_line":"        If the Node object ``properties`` field does not already contain"},{"line_number":1114,"context_line":"        a ``vendor`` field, then this method is intended to query "},{"line_number":1115,"context_line":"        Detects the BMC hardware vendor and stores the returned value"},{"line_number":1116,"context_line":"        with-in the Node object ``properties`` field if detected."},{"line_number":1117,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1f621f24_cc6025d2","line":1114,"updated":"2020-10-30 23:14:30.000000000","message":"nit: trailing whitespace","commit_id":"1cbc1f4b0567838003fb6f3d8eb5ab24713b1850"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"22568f51b275c5f94514a81deaa0c6fba40c6291","unresolved":false,"context_lines":[{"line_number":1121,"context_line":"        :raises: MissingParameterValue if a required parameter is missing"},{"line_number":1122,"context_line":"        :returns: String representing the BMC reported Vendor or"},{"line_number":1123,"context_line":"                  Manufacturer, otherwise returns None."},{"line_number":1124,"context_line":"        \"\"\""},{"line_number":1125,"context_line":""},{"line_number":1126,"context_line":""},{"line_number":1127,"context_line":"class InspectInterface(BaseInterface):"}],"source_content_type":"text/x-python","patch_set":8,"id":"c7aa4f35_8e94c5d2","line":1124,"updated":"2020-11-24 09:56:43.000000000","message":"nit: should likely raise rather than returning None?","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"24d8def0b3b399b0dd69dd61b0ee40bc9a4a5105","unresolved":false,"context_lines":[{"line_number":1121,"context_line":"        :raises: MissingParameterValue if a required parameter is missing"},{"line_number":1122,"context_line":"        :returns: String representing the BMC reported Vendor or"},{"line_number":1123,"context_line":"                  Manufacturer, otherwise returns None."},{"line_number":1124,"context_line":"        \"\"\""},{"line_number":1125,"context_line":""},{"line_number":1126,"context_line":""},{"line_number":1127,"context_line":"class InspectInterface(BaseInterface):"}],"source_content_type":"text/x-python","patch_set":8,"id":"348765d8_8692c3a0","line":1124,"in_reply_to":"c7aa4f35_8e94c5d2","updated":"2020-12-02 23:29:14.000000000","message":"Seems reasonable to do.","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"}],"ironic/drivers/modules/ipmitool.py":[{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"95f7922430b3ab8124eab216bfedc9ba5942e7c4","unresolved":false,"context_lines":[{"line_number":1119,"context_line":"            # start-up. Because of this, the bootparam info can be misleading"},{"line_number":1120,"context_line":"            # until the system has reset."},{"line_number":1121,"context_line":"            efi_persistence \u003d \u00270xe0\u0027 if persistent else \u00270xa0\u0027"},{"line_number":1122,"context_line":"            # 0xe0 is persistant UEFI boot, 0xa0 is one-time UEFI boot."},{"line_number":1123,"context_line":"            boot_device_map \u003d _vendor_aware_boot_device_map(task)"},{"line_number":1124,"context_line":"            raw_cmd \u003d (\u00270x00 0x08 0x05 %s %s 0x00 0x00 0x00\u0027 %"},{"line_number":1125,"context_line":"                       (efi_persistence, boot_device_map[device]))"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f6b1bfe_8718e981","line":1122,"range":{"start_line":1122,"start_character":22,"end_line":1122,"end_character":32},"updated":"2020-10-14 06:47:19.000000000","message":"Nit: persistent","commit_id":"759396947a6c2cad5b11802d1effcfd8d765b6ab"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"0c2865da75c2a51bde97f1183e3389d24c2baf02","unresolved":false,"context_lines":[{"line_number":1215,"context_line":"        # FIXME(TheJulia): This whole thing needs to be refactored to be based"},{"line_number":1216,"context_line":"        # upon the response generated by the \"Boot parameter data\"."},{"line_number":1217,"context_line":"        # See: https://storyboard.openstack.org/#!/story/2008241"},{"line_number":1218,"context_line":"        re_obj \u003d re.search(\u0027Boot Device Selector : (.+)?\\n\u0027, out)"},{"line_number":1219,"context_line":"        if re_obj:"},{"line_number":1220,"context_line":"            boot_selector \u003d re_obj.groups(\u0027\u0027)[0]"},{"line_number":1221,"context_line":"            if \u0027PXE\u0027 in boot_selector:"},{"line_number":1222,"context_line":"                response[\u0027boot_device\u0027] \u003d boot_devices.PXE"},{"line_number":1223,"context_line":"            elif \u0027Hard-Drive\u0027 in boot_selector:"},{"line_number":1224,"context_line":"                if \u0027Safe-Mode\u0027 in boot_selector:"},{"line_number":1225,"context_line":"                    response[\u0027boot_device\u0027] \u003d boot_devices.SAFE"},{"line_number":1226,"context_line":"                else:"},{"line_number":1227,"context_line":"                    response[\u0027boot_device\u0027] \u003d boot_devices.DISK"},{"line_number":1228,"context_line":"            elif \u0027BIOS\u0027 in boot_selector:"},{"line_number":1229,"context_line":"                response[\u0027boot_device\u0027] \u003d boot_devices.BIOS"},{"line_number":1230,"context_line":"            elif \u0027CD/DVD\u0027 in boot_selector:"},{"line_number":1231,"context_line":"                response[\u0027boot_device\u0027] \u003d boot_devices.CDROM"},{"line_number":1232,"context_line":""},{"line_number":1233,"context_line":"        response[\u0027persistent\u0027] \u003d \u0027Options apply to all future boots\u0027 in out"},{"line_number":1234,"context_line":"        return response"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f6b1bfe_d693b95b","line":1231,"range":{"start_line":1218,"start_character":0,"end_line":1231,"end_character":60},"updated":"2020-10-13 23:51:22.000000000","message":"so tl;dr this is all bogus in the supermicro case because ipmitool re-parses based on the numbers, but 0x00 for the field also exists which means \"don\u0027t change from what your already set. I\u0027m not sure how or even IF we want to try and refactor this to be smarter/cleaner, but it shoudl generally work for most vendors anyway. Supermicro being the exception.","commit_id":"759396947a6c2cad5b11802d1effcfd8d765b6ab"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"0f174e38897f00a705cef634768a6cbb1938adc5","unresolved":false,"context_lines":[{"line_number":202,"context_line":"    vendor \u003d node.driver_info.get(\u0027ipmi_vendor\u0027, None)"},{"line_number":203,"context_line":"    boot_dev_map \u003d BOOT_DEVICE_HEXA_MAP.copy()"},{"line_number":204,"context_line":"    boot_mode \u003d boot_mode_utils.get_boot_mode(node)"},{"line_number":205,"context_line":"    if boot_mode \u003d\u003d \u0027uefi\u0027 and vendor:"},{"line_number":206,"context_line":"        vendor \u003d str(vendor).lower()"},{"line_number":207,"context_line":"        if vendor \u003d\u003d \"supermicro\":"},{"line_number":208,"context_line":"            # This difference is only known on UEFI mode for supermicro"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f681702_1eed5125","line":205,"range":{"start_line":205,"start_character":1,"end_line":205,"end_character":38},"updated":"2020-10-16 08:46:42.000000000","message":"Shouldn\u0027t this only check if \u0027vendor\u0027 is set to signal that there may be vendor specific things to do, or do we expect all discrepancies in UEFI mode (in which case the function should only be called in UEFI mode, as below, and the if condition can be removed)?\n\nLike:\n\nif vendor:\n    if vendor \u003d\u003d \"supermicro\" and boot_mode \u003d\u003d \u0027uefi\u0027:\n        boot_dev_map[boot_devices.DISK] \u003d \u00270x24\u0027","commit_id":"2ef1a6b7f500a8ad80ce3615615df5f389d24152"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a2cde4a0dc2b47079ec3f2f3f6cd7129c5e88e46","unresolved":false,"context_lines":[{"line_number":202,"context_line":"    vendor \u003d node.driver_info.get(\u0027ipmi_vendor\u0027, None)"},{"line_number":203,"context_line":"    boot_dev_map \u003d BOOT_DEVICE_HEXA_MAP.copy()"},{"line_number":204,"context_line":"    boot_mode \u003d boot_mode_utils.get_boot_mode(node)"},{"line_number":205,"context_line":"    if boot_mode \u003d\u003d \u0027uefi\u0027 and vendor:"},{"line_number":206,"context_line":"        vendor \u003d str(vendor).lower()"},{"line_number":207,"context_line":"        if vendor \u003d\u003d \"supermicro\":"},{"line_number":208,"context_line":"            # This difference is only known on UEFI mode for supermicro"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f65232a_7b7d57b0","line":205,"range":{"start_line":205,"start_character":1,"end_line":205,"end_character":38},"in_reply_to":"5f681702_1eed5125","updated":"2020-10-22 21:40:51.000000000","message":"Yeah, that makes more sense to approach it that way. Mentally I am thinking all variation is under uefi, but it might not be.","commit_id":"2ef1a6b7f500a8ad80ce3615615df5f389d24152"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"0f174e38897f00a705cef634768a6cbb1938adc5","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            # hardware."},{"line_number":210,"context_line":"            boot_dev_map[boot_devices.DISK] \u003d \u00270x24\u0027"},{"line_number":211,"context_line":"        # NOTE(TheJulia): Similar differences may exist with Cisco UCS"},{"line_number":212,"context_line":"        # hardware when using IPMI, however at present we\u0027ve don\u0027t know"},{"line_number":213,"context_line":"        # what the setting would be."},{"line_number":214,"context_line":"    return boot_dev_map"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5f681702_7ef28508","line":212,"range":{"start_line":212,"start_character":55,"end_line":212,"end_character":60},"updated":"2020-10-16 08:46:42.000000000","message":"Typo: we","commit_id":"2ef1a6b7f500a8ad80ce3615615df5f389d24152"},{"author":{"_account_id":21909,"name":"Bob Fournier","email":"bfournie@redhat.com","username":"bfournie"},"change_message_id":"1c5aeb30abdf6e341aa53676b3fbf7e5ecc34418","unresolved":false,"context_lines":[{"line_number":1111,"context_line":"        # See: https://storyboard.openstack.org/#!/story/2008241"},{"line_number":1112,"context_line":"        boot_mode \u003d boot_mode_utils.get_boot_mode(task.node)"},{"line_number":1113,"context_line":"        if boot_mode \u003d\u003d \u0027uefi\u0027:"},{"line_number":1114,"context_line":"            # if we are not persistent, and we are in uefi mode, then we"},{"line_number":1115,"context_line":"            # need to send the appropriate flag to the BMC. Otherwise"},{"line_number":1116,"context_line":"            # we end up in situations it may not understand if the bootdev"},{"line_number":1117,"context_line":"            # is not one it is expecting or understands as a non-match"},{"line_number":1118,"context_line":"            # condition per the IPMI spec means revert to default on"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f6b1bfe_5a5fb940","line":1115,"range":{"start_line":1114,"start_character":1,"end_line":1115,"end_character":59},"updated":"2020-10-15 01:46:07.000000000","message":"Since the conditional check for persistent was removed this comment is a bit misleading as we send the flags even if not persistent.","commit_id":"2ef1a6b7f500a8ad80ce3615615df5f389d24152"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5b6f96541ce1da1baf8275be8b78bdc0ba128efe","unresolved":false,"context_lines":[{"line_number":1111,"context_line":"        # See: https://storyboard.openstack.org/#!/story/2008241"},{"line_number":1112,"context_line":"        boot_mode \u003d boot_mode_utils.get_boot_mode(task.node)"},{"line_number":1113,"context_line":"        if boot_mode \u003d\u003d \u0027uefi\u0027:"},{"line_number":1114,"context_line":"            # if we are not persistent, and we are in uefi mode, then we"},{"line_number":1115,"context_line":"            # need to send the appropriate flag to the BMC. Otherwise"},{"line_number":1116,"context_line":"            # we end up in situations it may not understand if the bootdev"},{"line_number":1117,"context_line":"            # is not one it is expecting or understands as a non-match"},{"line_number":1118,"context_line":"            # condition per the IPMI spec means revert to default on"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f6b1bfe_d08efd25","line":1115,"range":{"start_line":1114,"start_character":1,"end_line":1115,"end_character":59},"in_reply_to":"7f6b1bfe_5a5fb940","updated":"2020-10-15 16:45:12.000000000","message":"It likely makes more sense down at line 1121 since it always needs to be sent, just ipmitool is doing $something and it is not always what we want/need/require. :\\","commit_id":"2ef1a6b7f500a8ad80ce3615615df5f389d24152"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a2cde4a0dc2b47079ec3f2f3f6cd7129c5e88e46","unresolved":false,"context_lines":[{"line_number":1111,"context_line":"        # See: https://storyboard.openstack.org/#!/story/2008241"},{"line_number":1112,"context_line":"        boot_mode \u003d boot_mode_utils.get_boot_mode(task.node)"},{"line_number":1113,"context_line":"        if boot_mode \u003d\u003d \u0027uefi\u0027:"},{"line_number":1114,"context_line":"            # if we are not persistent, and we are in uefi mode, then we"},{"line_number":1115,"context_line":"            # need to send the appropriate flag to the BMC. Otherwise"},{"line_number":1116,"context_line":"            # we end up in situations it may not understand if the bootdev"},{"line_number":1117,"context_line":"            # is not one it is expecting or understands as a non-match"},{"line_number":1118,"context_line":"            # condition per the IPMI spec means revert to default on"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f65232a_9e35c1dd","line":1115,"range":{"start_line":1114,"start_character":1,"end_line":1115,"end_character":59},"in_reply_to":"7f6b1bfe_d08efd25","updated":"2020-10-22 21:40:51.000000000","message":"Rewrote to be more clear.","commit_id":"2ef1a6b7f500a8ad80ce3615615df5f389d24152"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"31ab7f72997bb555aa0dd11acf9ef1500177e201","unresolved":false,"context_lines":[{"line_number":1174,"context_line":"        if not driver_info[\u0027vendor\u0027]:"},{"line_number":1175,"context_line":"            cmd \u003d \"mc info\""},{"line_number":1176,"context_line":"            try:"},{"line_number":1177,"context_line":"                out, err \u003d _exec_ipmitool(driver_info, cmd)"},{"line_number":1178,"context_line":"                re_obj \u003d re.search(\"Manufacturer Name .*: (.+)\", out)"},{"line_number":1179,"context_line":"                if re_obj:"},{"line_number":1180,"context_line":"                    vendor \u003d str(re_obj.groups(\u0027\u0027)[0]).lower().split(\u0027:\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f65232a_43504dd5","line":1177,"updated":"2020-10-27 08:42:48.000000000","message":"This adds another IPMI call to the already synchronous API call. I don\u0027t think it\u0027s a good idea since it increases the time to complete this call quite substantially (keeping in mind that IPMI calls are serialized with a break).\n\nCould we do it on enroll-\u003emanageable instead? During each power sync?","commit_id":"1294516cfe7d6840e6d3880fe65b22c66c93764c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8f70835cd248667d27a812921109932f8e467217","unresolved":false,"context_lines":[{"line_number":1174,"context_line":"        if not driver_info[\u0027vendor\u0027]:"},{"line_number":1175,"context_line":"            cmd \u003d \"mc info\""},{"line_number":1176,"context_line":"            try:"},{"line_number":1177,"context_line":"                out, err \u003d _exec_ipmitool(driver_info, cmd)"},{"line_number":1178,"context_line":"                re_obj \u003d re.search(\"Manufacturer Name .*: (.+)\", out)"},{"line_number":1179,"context_line":"                if re_obj:"},{"line_number":1180,"context_line":"                    vendor \u003d str(re_obj.groups(\u0027\u0027)[0]).lower().split(\u0027:\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_ee59b0fe","line":1177,"in_reply_to":"3f65232a_43504dd5","updated":"2020-10-29 12:51:06.000000000","message":"Not during each power sync. I could move it to triggering upon the initial move or power state validation logic.\n\nWe discussed something similar yesterday or the day before during the ptg for another case I don\u0027t remember :(  Oh right, moving machines through the state machine automagicly.","commit_id":"1294516cfe7d6840e6d3880fe65b22c66c93764c"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"a5da7ffbb18ce2a1eda5dc3cf44d16e6f7cb090b","unresolved":false,"context_lines":[{"line_number":199,"context_line":"    boot_mode \u003d boot_mode_utils.get_boot_mode(node)"},{"line_number":200,"context_line":"    if vendor:"},{"line_number":201,"context_line":"        vendor \u003d str(vendor).lower()"},{"line_number":202,"context_line":"        print(\u0027-----------------\u003d\u003d\u003d\u003d\u003d\u0027)"},{"line_number":203,"context_line":"        print(vendor)"},{"line_number":204,"context_line":"        if boot_mode \u003d\u003d \u0027uefi\u0027 and vendor \u003d\u003d \"supermicro\":"},{"line_number":205,"context_line":"            # This difference is only known on UEFI mode for supermicro"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f621f24_6ca59104","line":202,"updated":"2020-10-30 23:14:30.000000000","message":"Leftover debugging prints? Or perhaps this code isn\u0027t meant for review yet?","commit_id":"1cbc1f4b0567838003fb6f3d8eb5ab24713b1850"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7e0263799f2dff2641a50846c221b6bbda5cf04f","unresolved":false,"context_lines":[{"line_number":1197,"context_line":"            raise exception.IPMIFailure(cmd\u003dcmd)"},{"line_number":1198,"context_line":"        # FIXME(TheJulia): This whole thing needs to be refactored to be based"},{"line_number":1199,"context_line":"        # upon the response generated by the \"Boot parameter data\"."},{"line_number":1200,"context_line":"        # See: https://storyboard.openstack.org/#!/story/2008241"},{"line_number":1201,"context_line":"        re_obj \u003d re.search(\u0027Boot Device Selector : (.+)?\\n\u0027, out)"},{"line_number":1202,"context_line":"        if re_obj:"},{"line_number":1203,"context_line":"            boot_selector \u003d re_obj.groups(\u0027\u0027)[0]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f621f24_c904971a","line":1200,"updated":"2020-11-09 19:25:01.000000000","message":"It gets worse, some bmcs, return \"00000000\" which may just make this pointless to retool.","commit_id":"1cbc1f4b0567838003fb6f3d8eb5ab24713b1850"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"695ccf4a84f2b1e01f2a6317608bbd1e8352cdf9","unresolved":false,"context_lines":[{"line_number":199,"context_line":"    boot_mode \u003d boot_mode_utils.get_boot_mode(node)"},{"line_number":200,"context_line":"    if vendor:"},{"line_number":201,"context_line":"        vendor \u003d str(vendor).lower()"},{"line_number":202,"context_line":"        print(\u0027-----------------\u003d\u003d\u003d\u003d\u003d\u0027)"},{"line_number":203,"context_line":"        print(vendor)"},{"line_number":204,"context_line":"        if boot_mode \u003d\u003d \u0027uefi\u0027 and vendor \u003d\u003d \"supermicro\":"},{"line_number":205,"context_line":"            # This difference is only known on UEFI mode for supermicro"},{"line_number":206,"context_line":"            # hardware."}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_a9e4573d","line":203,"range":{"start_line":202,"start_character":0,"end_line":203,"end_character":20},"updated":"2020-11-09 14:13:42.000000000","message":"maybe remove or change to LOG?","commit_id":"6561274878977c1cd76cb340c94d5057c8e47d54"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7e0263799f2dff2641a50846c221b6bbda5cf04f","unresolved":false,"context_lines":[{"line_number":199,"context_line":"    boot_mode \u003d boot_mode_utils.get_boot_mode(node)"},{"line_number":200,"context_line":"    if vendor:"},{"line_number":201,"context_line":"        vendor \u003d str(vendor).lower()"},{"line_number":202,"context_line":"        print(\u0027-----------------\u003d\u003d\u003d\u003d\u003d\u0027)"},{"line_number":203,"context_line":"        print(vendor)"},{"line_number":204,"context_line":"        if boot_mode \u003d\u003d \u0027uefi\u0027 and vendor \u003d\u003d \"supermicro\":"},{"line_number":205,"context_line":"            # This difference is only known on UEFI mode for supermicro"},{"line_number":206,"context_line":"            # hardware."}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_41875710","line":203,"range":{"start_line":202,"start_character":0,"end_line":203,"end_character":20},"in_reply_to":"1f621f24_a9e4573d","updated":"2020-11-09 19:25:01.000000000","message":"doh, it is from debugging tests.","commit_id":"6561274878977c1cd76cb340c94d5057c8e47d54"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"22568f51b275c5f94514a81deaa0c6fba40c6291","unresolved":false,"context_lines":[{"line_number":926,"context_line":"        # run detection upon either power state sync or in the enrollment"},{"line_number":927,"context_line":"        # to management step."},{"line_number":928,"context_line":"        try:"},{"line_number":929,"context_line":"            task.driver.management.detect_vendor(task)"},{"line_number":930,"context_line":"        except Exception:"},{"line_number":931,"context_line":"            pass"},{"line_number":932,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"d1746664_0cebfe6e","line":929,"updated":"2020-11-24 09:56:43.000000000","message":"I\u0027d prefer the return value to be handled here - see comments in ipmitool.py","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"24d8def0b3b399b0dd69dd61b0ee40bc9a4a5105","unresolved":false,"context_lines":[{"line_number":926,"context_line":"        # run detection upon either power state sync or in the enrollment"},{"line_number":927,"context_line":"        # to management step."},{"line_number":928,"context_line":"        try:"},{"line_number":929,"context_line":"            task.driver.management.detect_vendor(task)"},{"line_number":930,"context_line":"        except Exception:"},{"line_number":931,"context_line":"            pass"},{"line_number":932,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"2aab319d_af081603","line":929,"in_reply_to":"d1746664_0cebfe6e","updated":"2020-12-02 23:29:14.000000000","message":"Done","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"22568f51b275c5f94514a81deaa0c6fba40c6291","unresolved":false,"context_lines":[{"line_number":927,"context_line":"        # to management step."},{"line_number":928,"context_line":"        try:"},{"line_number":929,"context_line":"            task.driver.management.detect_vendor(task)"},{"line_number":930,"context_line":"        except Exception:"},{"line_number":931,"context_line":"            pass"},{"line_number":932,"context_line":""},{"line_number":933,"context_line":"        driver_info \u003d _parse_driver_info(task.node)"}],"source_content_type":"text/x-python","patch_set":8,"id":"be2135da_aa6ebb01","line":930,"updated":"2020-11-24 09:56:43.000000000","message":"only UnsupportedDriverExtension should be completely ignored, anything else should at least log something","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"24d8def0b3b399b0dd69dd61b0ee40bc9a4a5105","unresolved":false,"context_lines":[{"line_number":927,"context_line":"        # to management step."},{"line_number":928,"context_line":"        try:"},{"line_number":929,"context_line":"            task.driver.management.detect_vendor(task)"},{"line_number":930,"context_line":"        except Exception:"},{"line_number":931,"context_line":"            pass"},{"line_number":932,"context_line":""},{"line_number":933,"context_line":"        driver_info \u003d _parse_driver_info(task.node)"}],"source_content_type":"text/x-python","patch_set":8,"id":"96f1c6d4_7976a99d","line":930,"in_reply_to":"be2135da_aa6ebb01","updated":"2020-12-02 23:29:14.000000000","message":"Well, as is it should work and it will just ignore it as is.","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"22568f51b275c5f94514a81deaa0c6fba40c6291","unresolved":false,"context_lines":[{"line_number":1122,"context_line":"            # no change, BUT the BMC may treat that as operational default."},{"line_number":1123,"context_line":"            efi_persistence \u003d \u00270xe0\u0027 if persistent else \u00270xa0\u0027"},{"line_number":1124,"context_line":"            # 0xe0 is persistent UEFI boot, 0xa0 is one-time UEFI boot."},{"line_number":1125,"context_line":"            boot_device_map \u003d _vendor_aware_boot_device_map(task)"},{"line_number":1126,"context_line":"            raw_cmd \u003d (\u00270x00 0x08 0x05 %s %s 0x00 0x00 0x00\u0027 %"},{"line_number":1127,"context_line":"                       (efi_persistence, boot_device_map[device]))"},{"line_number":1128,"context_line":"            send_raw(task, raw_cmd)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5d34fa1d_d60f206d","line":1125,"updated":"2020-11-24 09:56:43.000000000","message":"nit: maybe pass the device in and avoid returning a whole map when we need one value?","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"22568f51b275c5f94514a81deaa0c6fba40c6291","unresolved":false,"context_lines":[{"line_number":1216,"context_line":""},{"line_number":1217,"context_line":"    # NOTE(TheJulia): Adding as a single management interface method"},{"line_number":1218,"context_line":"    # so we can backport this as a fix, but afterwards we can promote"},{"line_number":1219,"context_line":"    # detect_vendor."},{"line_number":1220,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":1221,"context_line":"    @METRICS.timer(\u0027IPMIManagement.detect_vendor\u0027)"},{"line_number":1222,"context_line":"    def detect_vendor(self, task):"}],"source_content_type":"text/x-python","patch_set":8,"id":"90a55c38_da1fdde7","line":1219,"updated":"2020-11-24 09:56:43.000000000","message":"No longer valid","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"24d8def0b3b399b0dd69dd61b0ee40bc9a4a5105","unresolved":false,"context_lines":[{"line_number":1216,"context_line":""},{"line_number":1217,"context_line":"    # NOTE(TheJulia): Adding as a single management interface method"},{"line_number":1218,"context_line":"    # so we can backport this as a fix, but afterwards we can promote"},{"line_number":1219,"context_line":"    # detect_vendor."},{"line_number":1220,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":1221,"context_line":"    @METRICS.timer(\u0027IPMIManagement.detect_vendor\u0027)"},{"line_number":1222,"context_line":"    def detect_vendor(self, task):"}],"source_content_type":"text/x-python","patch_set":8,"id":"17c4116c_3c473b4f","line":1219,"in_reply_to":"90a55c38_da1fdde7","updated":"2020-12-02 23:29:14.000000000","message":"Done","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"22568f51b275c5f94514a81deaa0c6fba40c6291","unresolved":false,"context_lines":[{"line_number":1235,"context_line":"                  Manufacturer, otherwise returns None."},{"line_number":1236,"context_line":"        \"\"\""},{"line_number":1237,"context_line":"        properties \u003d task.node.properties"},{"line_number":1238,"context_line":"        vendor \u003d properties.get(\u0027vendor\u0027)"},{"line_number":1239,"context_line":"        if not vendor:"},{"line_number":1240,"context_line":"            driver_info \u003d _parse_driver_info(task.node)"},{"line_number":1241,"context_line":"            cmd \u003d \"mc info\""}],"source_content_type":"text/x-python","patch_set":8,"id":"ff2e3db7_d3680121","line":1238,"updated":"2020-11-24 09:56:43.000000000","message":"We should leave this logic up to the caller. We don\u0027t know why this call is made, it may end up used for something else too. Also this part will be identical for all implementations.","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"24d8def0b3b399b0dd69dd61b0ee40bc9a4a5105","unresolved":false,"context_lines":[{"line_number":1235,"context_line":"                  Manufacturer, otherwise returns None."},{"line_number":1236,"context_line":"        \"\"\""},{"line_number":1237,"context_line":"        properties \u003d task.node.properties"},{"line_number":1238,"context_line":"        vendor \u003d properties.get(\u0027vendor\u0027)"},{"line_number":1239,"context_line":"        if not vendor:"},{"line_number":1240,"context_line":"            driver_info \u003d _parse_driver_info(task.node)"},{"line_number":1241,"context_line":"            cmd \u003d \"mc info\""}],"source_content_type":"text/x-python","patch_set":8,"id":"7ca17133_57f6421e","line":1238,"in_reply_to":"ff2e3db7_d3680121","updated":"2020-12-02 23:29:14.000000000","message":"Done","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"22568f51b275c5f94514a81deaa0c6fba40c6291","unresolved":false,"context_lines":[{"line_number":1247,"context_line":"                    # Pull unparsed data and save the vendor"},{"line_number":1248,"context_line":"                    properties[\u0027vendor\u0027] \u003d bmc_vendor[-1]"},{"line_number":1249,"context_line":"                    task.node.properties \u003d properties"},{"line_number":1250,"context_line":"                    task.node.save()"},{"line_number":1251,"context_line":"            except (exception.PasswordFileFailedToCreate,"},{"line_number":1252,"context_line":"                    processutils.ProcessExecutionError) as e:"},{"line_number":1253,"context_line":"                LOG.warning(\u0027IPMI get boot device failed to detect vendor \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"da8463c0_ed12eeae","line":1250,"updated":"2020-11-24 09:56:43.000000000","message":"ditto, let\u0027s handle this at the caller side","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"24d8def0b3b399b0dd69dd61b0ee40bc9a4a5105","unresolved":false,"context_lines":[{"line_number":1247,"context_line":"                    # Pull unparsed data and save the vendor"},{"line_number":1248,"context_line":"                    properties[\u0027vendor\u0027] \u003d bmc_vendor[-1]"},{"line_number":1249,"context_line":"                    task.node.properties \u003d properties"},{"line_number":1250,"context_line":"                    task.node.save()"},{"line_number":1251,"context_line":"            except (exception.PasswordFileFailedToCreate,"},{"line_number":1252,"context_line":"                    processutils.ProcessExecutionError) as e:"},{"line_number":1253,"context_line":"                LOG.warning(\u0027IPMI get boot device failed to detect vendor \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"ef11bed1_31473d01","line":1250,"in_reply_to":"da8463c0_ed12eeae","updated":"2020-12-02 23:29:14.000000000","message":"Done.","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"22568f51b275c5f94514a81deaa0c6fba40c6291","unresolved":false,"context_lines":[{"line_number":1250,"context_line":"                    task.node.save()"},{"line_number":1251,"context_line":"            except (exception.PasswordFileFailedToCreate,"},{"line_number":1252,"context_line":"                    processutils.ProcessExecutionError) as e:"},{"line_number":1253,"context_line":"                LOG.warning(\u0027IPMI get boot device failed to detect vendor \u0027"},{"line_number":1254,"context_line":"                            \u0027of bmc for %(node)s. Error %(err)s\u0027,"},{"line_number":1255,"context_line":"                            {\u0027node\u0027: task.node.uuid,"},{"line_number":1256,"context_line":"                             \u0027err\u0027: e})"}],"source_content_type":"text/x-python","patch_set":8,"id":"fea289f1_2293a922","line":1253,"updated":"2020-11-24 09:56:43.000000000","message":"nit: I wonder if we should raise and let the caller deal with the failure.. similar to above, in case this method is used for something else later on","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"24d8def0b3b399b0dd69dd61b0ee40bc9a4a5105","unresolved":true,"context_lines":[{"line_number":1250,"context_line":"                    task.node.save()"},{"line_number":1251,"context_line":"            except (exception.PasswordFileFailedToCreate,"},{"line_number":1252,"context_line":"                    processutils.ProcessExecutionError) as e:"},{"line_number":1253,"context_line":"                LOG.warning(\u0027IPMI get boot device failed to detect vendor \u0027"},{"line_number":1254,"context_line":"                            \u0027of bmc for %(node)s. Error %(err)s\u0027,"},{"line_number":1255,"context_line":"                            {\u0027node\u0027: task.node.uuid,"},{"line_number":1256,"context_line":"                             \u0027err\u0027: e})"}],"source_content_type":"text/x-python","patch_set":8,"id":"0b2014e6_88f4d05f","line":1253,"in_reply_to":"fea289f1_2293a922","updated":"2020-12-02 23:29:14.000000000","message":"Maybe?","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"3c86c5f11abb380a2394b204481383ca7745cd73","unresolved":true,"context_lines":[{"line_number":1245,"context_line":"            out, err \u003d _exec_ipmitool(driver_info, \"mc info\")"},{"line_number":1246,"context_line":"            re_obj \u003d re.search(\"Manufacturer Name .*: (.+)\", out)"},{"line_number":1247,"context_line":"            if re_obj:"},{"line_number":1248,"context_line":"                bmc_vendor \u003d str(re_obj.groups(\u0027\u0027)[0]).lower().split(\u0027:\u0027)"},{"line_number":1249,"context_line":"                # Pull unparsed data and save the vendor"},{"line_number":1250,"context_line":"                return bmc_vendor[-1]"},{"line_number":1251,"context_line":"        except (exception.PasswordFileFailedToCreate,"}],"source_content_type":"text/x-python","patch_set":9,"id":"8e81a733_f91a329e","line":1248,"updated":"2020-12-03 22:35:09.000000000","message":"I\u0027m not sure why the split(\u0027:\u0027) at the end is needed, do some vendor strings have prefixes which are worth dropping?\n\nIt looks like the following would do the same thing:\n\n  return re_obj.group(1).lower()\n\nI can\u0027t see unit tests specifically for detect_vendor, it would be worth writing some and throwing some strings at this.","commit_id":"a6c57b67b518433176229f570dfed6414a60862c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"aeaa50cbfdd5febe01daeabf1d6fc2f5ceca5b9d","unresolved":true,"context_lines":[{"line_number":1245,"context_line":"            out, err \u003d _exec_ipmitool(driver_info, \"mc info\")"},{"line_number":1246,"context_line":"            re_obj \u003d re.search(\"Manufacturer Name .*: (.+)\", out)"},{"line_number":1247,"context_line":"            if re_obj:"},{"line_number":1248,"context_line":"                bmc_vendor \u003d str(re_obj.groups(\u0027\u0027)[0]).lower().split(\u0027:\u0027)"},{"line_number":1249,"context_line":"                # Pull unparsed data and save the vendor"},{"line_number":1250,"context_line":"                return bmc_vendor[-1]"},{"line_number":1251,"context_line":"        except (exception.PasswordFileFailedToCreate,"}],"source_content_type":"text/x-python","patch_set":9,"id":"d778f64e_207e1393","line":1248,"in_reply_to":"8e81a733_f91a329e","updated":"2020-12-04 22:07:05.000000000","message":"Hmm, I did exactly that after putting in a test.\n\n testtools.matchers._impl.MismatchError: \u0027lolcatmeow\u0027 !\u003d \u0027w\u0027\n\nNot quite sure how that became what it returned :\\\n\nI\u0027m not aware of any prefixes, but I think it is like a 16 character ascii field. Oddly the same exact behavior occurs if I strip the split off. I just get a w.....","commit_id":"a6c57b67b518433176229f570dfed6414a60862c"}],"ironic/tests/unit/drivers/modules/test_ipmitool.py":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"3c86c5f11abb380a2394b204481383ca7745cd73","unresolved":true,"context_lines":[{"line_number":82,"context_line":"    0x00"},{"line_number":83,"context_line":"    0x00"},{"line_number":84,"context_line":"\"\"\", None)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"class IPMIToolCheckInitTestCase(base.TestCase):"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"18411fb7_c2599769","line":85,"updated":"2020-12-03 22:35:09.000000000","message":"MC_INFO doesn\u0027t seem to be used, possibly it is for the unit tests for detect_vendor","commit_id":"a6c57b67b518433176229f570dfed6414a60862c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"aeaa50cbfdd5febe01daeabf1d6fc2f5ceca5b9d","unresolved":true,"context_lines":[{"line_number":82,"context_line":"    0x00"},{"line_number":83,"context_line":"    0x00"},{"line_number":84,"context_line":"\"\"\", None)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"class IPMIToolCheckInitTestCase(base.TestCase):"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"19910f3b_03cafb27","line":85,"in_reply_to":"18411fb7_c2599769","updated":"2020-12-04 22:07:05.000000000","message":"Yeah, in one of the reworks I dropped testing for it because I can\u0027t run it the same way I was. *sigh*","commit_id":"a6c57b67b518433176229f570dfed6414a60862c"}],"releasenotes/notes/handle-uefi-disk-pxe-persistance-0d871825591918b5.yaml":[{"author":{"_account_id":21909,"name":"Bob Fournier","email":"bfournie@redhat.com","username":"bfournie"},"change_message_id":"3f3e8be9ed42c0179b47924143cd6b54b54aefaa","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    to the remote BMC to indicate boot from local storage. This is available"},{"line_number":18,"context_line":"    for both persistent and one-time boot applications. For more information,"},{"line_number":19,"context_line":"    please consult `story 2008241 \u003chttps://storyboard.openstack.org/#!/story/2008241\u003e`_."},{"line_number":20,"context_line":"  - Fixes handling of the ``ipmi`` hardware type where ``UEFI`` boot mode and"},{"line_number":21,"context_line":"    \"one-time\" boot to PXE has been requested. Ironic now uses only raw option"},{"line_number":22,"context_line":"    setting to assert the required values which appropriately allow"},{"line_number":23,"context_line":"    delineation between \"UEFI\" one-time and persistent booting."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"1f621f24_854a8552","line":23,"range":{"start_line":20,"start_character":4,"end_line":23,"end_character":63},"updated":"2020-10-30 19:29:18.000000000","message":"It seems that the first and third fixes are the same, no? In that now we are using the raw command for UEFI regardless if set to persistent or one-time boot.","commit_id":"9ef11981198439acf1262743c17e4811b5f104f5"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d9104ad3e9622c5a9cc04bbfd1a9fa6d6b958d2f","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    to the remote BMC to indicate boot from local storage. This is available"},{"line_number":18,"context_line":"    for both persistent and one-time boot applications. For more information,"},{"line_number":19,"context_line":"    please consult `story 2008241 \u003chttps://storyboard.openstack.org/#!/story/2008241\u003e`_."},{"line_number":20,"context_line":"  - Fixes handling of the ``ipmi`` hardware type where ``UEFI`` boot mode and"},{"line_number":21,"context_line":"    \"one-time\" boot to PXE has been requested. Ironic now uses only raw option"},{"line_number":22,"context_line":"    setting to assert the required values which appropriately allow"},{"line_number":23,"context_line":"    delineation between \"UEFI\" one-time and persistent booting."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"1f621f24_e99233f6","line":23,"range":{"start_line":20,"start_character":4,"end_line":23,"end_character":63},"in_reply_to":"1f621f24_854a8552","updated":"2020-10-30 22:47:40.000000000","message":"Slightly nuanced, and I guess I should stress that more. Basically UEFI for PXE is not groked by ipmitool.","commit_id":"9ef11981198439acf1262743c17e4811b5f104f5"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"22568f51b275c5f94514a81deaa0c6fba40c6291","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    transmits the raw commands, this setting should be properly appied where"},{"line_number":23,"context_line":"    previously PXE boot operations may have previously occured in"},{"line_number":24,"context_line":"    ``Legacy BIOS`` mode."},{"line_number":25,"context_line":"features:"},{"line_number":26,"context_line":"  - Adds a ``detect_vendor`` management interface method to the ``ipmi``"},{"line_number":27,"context_line":"    hardware type. This method is being promoted as a higher level interface"},{"line_number":28,"context_line":"    as the fundimental need to be able to have logic aware of the hardware"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"f3853b35_5708fb1c","line":25,"updated":"2020-11-24 09:56:43.000000000","message":"Should go to \u0027other\u0027, it\u0027s not an end user feature","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"24d8def0b3b399b0dd69dd61b0ee40bc9a4a5105","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    transmits the raw commands, this setting should be properly appied where"},{"line_number":23,"context_line":"    previously PXE boot operations may have previously occured in"},{"line_number":24,"context_line":"    ``Legacy BIOS`` mode."},{"line_number":25,"context_line":"features:"},{"line_number":26,"context_line":"  - Adds a ``detect_vendor`` management interface method to the ``ipmi``"},{"line_number":27,"context_line":"    hardware type. This method is being promoted as a higher level interface"},{"line_number":28,"context_line":"    as the fundimental need to be able to have logic aware of the hardware"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"a824111b_ab213ec6","line":25,"in_reply_to":"f3853b35_5708fb1c","updated":"2020-12-02 23:29:14.000000000","message":"Done","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"22568f51b275c5f94514a81deaa0c6fba40c6291","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    vendor is necessary with vendor agnostic drivers where slight differences"},{"line_number":30,"context_line":"    require slightly different behavior."},{"line_number":31,"context_line":"other:"},{"line_number":32,"context_line":"  - As a temporary measure to enable backportable automated detection of a"},{"line_number":33,"context_line":"    IPMI BMC hardware vendor, Ironic will now query this and save this value"},{"line_number":34,"context_line":"    if not already set in order to avoid querying for every single operation."},{"line_number":35,"context_line":"    Operators upgrading should expect an elongated first power state"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"21c1d8a7_a32ffdf6","line":32,"updated":"2020-11-24 09:56:43.000000000","message":"Mmm, why is it temporary? Nothing seems to indicate that.","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"24d8def0b3b399b0dd69dd61b0ee40bc9a4a5105","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    vendor is necessary with vendor agnostic drivers where slight differences"},{"line_number":30,"context_line":"    require slightly different behavior."},{"line_number":31,"context_line":"other:"},{"line_number":32,"context_line":"  - As a temporary measure to enable backportable automated detection of a"},{"line_number":33,"context_line":"    IPMI BMC hardware vendor, Ironic will now query this and save this value"},{"line_number":34,"context_line":"    if not already set in order to avoid querying for every single operation."},{"line_number":35,"context_line":"    Operators upgrading should expect an elongated first power state"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"bed7d44c_869fc887","line":32,"in_reply_to":"21c1d8a7_a32ffdf6","updated":"2020-12-02 23:29:14.000000000","message":"Because hard wiring in the same behavior on an interface on a wider scale is not going to be backportable, I guess the intent was just the check, but I\u0027ll rip it out. Out of spoons.","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"22568f51b275c5f94514a81deaa0c6fba40c6291","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    IPMI BMC hardware vendor, Ironic will now query this and save this value"},{"line_number":34,"context_line":"    if not already set in order to avoid querying for every single operation."},{"line_number":35,"context_line":"    Operators upgrading should expect an elongated first power state"},{"line_number":36,"context_line":"    synchronization if for nodes with the ``ipmi`` hardware type. The overall"},{"line_number":37,"context_line":"    workflow of detecting the BMC manufacter is anticipated to be moved to"},{"line_number":38,"context_line":"    be part of the state machine in a future major version of Ironic."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"b0925d2c_c137bec6","line":36,"updated":"2020-11-24 09:56:43.000000000","message":"If this is worth mentioning, let\u0027s move it to the upgrade section.","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"24d8def0b3b399b0dd69dd61b0ee40bc9a4a5105","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    IPMI BMC hardware vendor, Ironic will now query this and save this value"},{"line_number":34,"context_line":"    if not already set in order to avoid querying for every single operation."},{"line_number":35,"context_line":"    Operators upgrading should expect an elongated first power state"},{"line_number":36,"context_line":"    synchronization if for nodes with the ``ipmi`` hardware type. The overall"},{"line_number":37,"context_line":"    workflow of detecting the BMC manufacter is anticipated to be moved to"},{"line_number":38,"context_line":"    be part of the state machine in a future major version of Ironic."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"8bad823a_89ed8ce2","line":36,"in_reply_to":"b0925d2c_c137bec6","updated":"2020-12-02 23:29:14.000000000","message":"Done","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"22568f51b275c5f94514a81deaa0c6fba40c6291","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    Operators upgrading should expect an elongated first power state"},{"line_number":36,"context_line":"    synchronization if for nodes with the ``ipmi`` hardware type. The overall"},{"line_number":37,"context_line":"    workflow of detecting the BMC manufacter is anticipated to be moved to"},{"line_number":38,"context_line":"    be part of the state machine in a future major version of Ironic."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"393c454e_64ed734b","line":38,"updated":"2020-11-24 09:56:43.000000000","message":"I don\u0027t anticipate this tbh, let\u0027s not promise something we haven\u0027t agreed on.","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"24d8def0b3b399b0dd69dd61b0ee40bc9a4a5105","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    Operators upgrading should expect an elongated first power state"},{"line_number":36,"context_line":"    synchronization if for nodes with the ``ipmi`` hardware type. The overall"},{"line_number":37,"context_line":"    workflow of detecting the BMC manufacter is anticipated to be moved to"},{"line_number":38,"context_line":"    be part of the state machine in a future major version of Ironic."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"a21b516e_312b59ba","line":38,"in_reply_to":"393c454e_64ed734b","updated":"2020-12-02 23:29:14.000000000","message":"I thought we kind of had based on the discussion a couple months back, but I guess not. Ripping out.","commit_id":"85be6aebca63b258e02fd128118a42bb9929015e"}]}
