)]}'
{"ironic_python_agent/hardware.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"27f47ca54fa6f7d41bcbb4760c74a491d2d9924c","unresolved":true,"context_lines":[{"line_number":1816,"context_line":"            # From all the channels 0-15, only 1-11 can be assigned to"},{"line_number":1817,"context_line":"            # different types of communication media and protocols and"},{"line_number":1818,"context_line":"            # effectively used"},{"line_number":1819,"context_line":"            for channel in range(1, 12):"},{"line_number":1820,"context_line":"                out, e \u003d utils.execute("},{"line_number":1821,"context_line":"                    \"ipmitool lan print {} | awk \u0027/(IP|MAC) Address[ \\\\t]*:/\""},{"line_number":1822,"context_line":"                    \" {{print $4}}\u0027\".format(channel), shell\u003dTrue)"},{"line_number":1823,"context_line":"                if e.startswith(\"Invalid channel\"):"},{"line_number":1824,"context_line":"                    continue"},{"line_number":1825,"context_line":""},{"line_number":1826,"context_line":"                try:"},{"line_number":1827,"context_line":"                    ip, mac \u003d out.strip().split(\"\\n\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"0c430295_a91c4717","line":1824,"range":{"start_line":1819,"start_character":0,"end_line":1824,"end_character":28},"updated":"2021-07-20 14:02:27.000000000","message":"I have one concern here, we already have reports that on some hardware architectures, in some cases, ipmitool can hang. While this code makes sense, it is a risk which we may be making worse. Just thinking outloud really.","commit_id":"6e0d48356cc56beddea5cda648dc63741548faba"},{"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":"b9b4093012f457b142b479bb76716c8f64d92d38","unresolved":true,"context_lines":[{"line_number":1808,"context_line":"                 case none of them has one or is configured properly"},{"line_number":1809,"context_line":"        \"\"\""},{"line_number":1810,"context_line":"        # These modules are rarely loaded automatically"},{"line_number":1811,"context_line":"        il_utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_msghandler\u0027)"},{"line_number":1812,"context_line":"        il_utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_devintf\u0027)"},{"line_number":1813,"context_line":"        il_utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_si\u0027)"},{"line_number":1814,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"f312bab4_de7f25f8","line":1811,"updated":"2021-07-26 01:23:09.000000000","message":"I wonder if it\u0027ll cause a problem that get_bmc_address() calls these too. I suggest we try and only do the IPMI module loading once.","commit_id":"d348f4a17ce5b969e3e6af92b33db53324b3fc1d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6339c8174afd290a66ed1cf077125ea893c9c3f2","unresolved":false,"context_lines":[{"line_number":1808,"context_line":"                 case none of them has one or is configured properly"},{"line_number":1809,"context_line":"        \"\"\""},{"line_number":1810,"context_line":"        # These modules are rarely loaded automatically"},{"line_number":1811,"context_line":"        il_utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_msghandler\u0027)"},{"line_number":1812,"context_line":"        il_utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_devintf\u0027)"},{"line_number":1813,"context_line":"        il_utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_si\u0027)"},{"line_number":1814,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"a73e8421_1eb5d66d","line":1811,"updated":"2021-08-06 08:14:40.000000000","message":"Maybe move to evaluate_hardware_support?","commit_id":"d348f4a17ce5b969e3e6af92b33db53324b3fc1d"},{"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":"70b2a73e9e2f3855478fa3d52112f8d51a99636e","unresolved":true,"context_lines":[{"line_number":1808,"context_line":"                 case none of them has one or is configured properly"},{"line_number":1809,"context_line":"        \"\"\""},{"line_number":1810,"context_line":"        # These modules are rarely loaded automatically"},{"line_number":1811,"context_line":"        il_utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_msghandler\u0027)"},{"line_number":1812,"context_line":"        il_utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_devintf\u0027)"},{"line_number":1813,"context_line":"        il_utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_si\u0027)"},{"line_number":1814,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"65536253_471fa1a2","line":1811,"in_reply_to":"99816373_e1a39c30","updated":"2021-07-29 14:08:00.000000000","message":"I\u0027ll be honest, I don\u0027t think it\u0027s ideal that we\u0027re relying on the modprobe idempotence instead of implementing it ourselves in the code; but I won\u0027t block the code for that reason.","commit_id":"d348f4a17ce5b969e3e6af92b33db53324b3fc1d"},{"author":{"_account_id":33742,"name":"Jonas Schäfer","email":"jonas.schaefer@cloudandheat.com","username":"jssfr"},"change_message_id":"9b0e800a3756a90ab9a8e1a8a50f985b060b4495","unresolved":false,"context_lines":[{"line_number":1808,"context_line":"                 case none of them has one or is configured properly"},{"line_number":1809,"context_line":"        \"\"\""},{"line_number":1810,"context_line":"        # These modules are rarely loaded automatically"},{"line_number":1811,"context_line":"        il_utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_msghandler\u0027)"},{"line_number":1812,"context_line":"        il_utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_devintf\u0027)"},{"line_number":1813,"context_line":"        il_utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_si\u0027)"},{"line_number":1814,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"12c9858e_d7b54f59","line":1811,"in_reply_to":"a73e8421_1eb5d66d","updated":"2021-08-06 08:36:43.000000000","message":"-\u003e https://review.opendev.org/c/openstack/ironic-python-agent/+/803710","commit_id":"d348f4a17ce5b969e3e6af92b33db53324b3fc1d"},{"author":{"_account_id":33742,"name":"Jonas Schäfer","email":"jonas.schaefer@cloudandheat.com","username":"jssfr"},"change_message_id":"d0cab6eec260a64a5051a7ae2534ac9f8b596eb2","unresolved":true,"context_lines":[{"line_number":1808,"context_line":"                 case none of them has one or is configured properly"},{"line_number":1809,"context_line":"        \"\"\""},{"line_number":1810,"context_line":"        # These modules are rarely loaded automatically"},{"line_number":1811,"context_line":"        il_utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_msghandler\u0027)"},{"line_number":1812,"context_line":"        il_utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_devintf\u0027)"},{"line_number":1813,"context_line":"        il_utils.try_execute(\u0027modprobe\u0027, \u0027ipmi_si\u0027)"},{"line_number":1814,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"99816373_e1a39c30","line":1811,"in_reply_to":"f312bab4_de7f25f8","updated":"2021-07-29 10:38:45.000000000","message":"I intended to keep the methods able to run standalone and independent of the order they are called in.\n\nTo my knowledge, modprobe(1) is idempotent, so I don\u0027t expect any issues here.","commit_id":"d348f4a17ce5b969e3e6af92b33db53324b3fc1d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6339c8174afd290a66ed1cf077125ea893c9c3f2","unresolved":false,"context_lines":[{"line_number":1849,"context_line":"            LOG.warning(\"Cannot get BMC MAC address: %s\", e)"},{"line_number":1850,"context_line":"            return"},{"line_number":1851,"context_line":""},{"line_number":1852,"context_line":"        return \u002700:00:00:00:00:00\u0027"},{"line_number":1853,"context_line":""},{"line_number":1854,"context_line":"    def get_bmc_v6address(self):"},{"line_number":1855,"context_line":"        \"\"\"Attempt to detect BMC v6 address"}],"source_content_type":"text/x-python","patch_set":4,"id":"cabb6c53_091cd795","line":1852,"updated":"2021-08-06 08:14:40.000000000","message":"Since there is already an option that bmc_mac won\u0027t be present, I\u0027d rather return None or even raise IncompatibleHardwareMethodError","commit_id":"d348f4a17ce5b969e3e6af92b33db53324b3fc1d"},{"author":{"_account_id":33742,"name":"Jonas Schäfer","email":"jonas.schaefer@cloudandheat.com","username":"jssfr"},"change_message_id":"9b0e800a3756a90ab9a8e1a8a50f985b060b4495","unresolved":false,"context_lines":[{"line_number":1849,"context_line":"            LOG.warning(\"Cannot get BMC MAC address: %s\", e)"},{"line_number":1850,"context_line":"            return"},{"line_number":1851,"context_line":""},{"line_number":1852,"context_line":"        return \u002700:00:00:00:00:00\u0027"},{"line_number":1853,"context_line":""},{"line_number":1854,"context_line":"    def get_bmc_v6address(self):"},{"line_number":1855,"context_line":"        \"\"\"Attempt to detect BMC v6 address"}],"source_content_type":"text/x-python","patch_set":4,"id":"5c2395a6_6fd5a16d","line":1852,"in_reply_to":"cabb6c53_091cd795","updated":"2021-08-06 08:36:43.000000000","message":"Returning the zero MAC would have the advantage of being able to differentiate between \"bmc_mac is not supported by IPA\" and \"the BMC has no valid LAN interface\". Now that I write it out loud I realize that you can detect the lack of a valid LAN interface already by looking at bmc_address. So yeah, I\u0027m gonna return None or somesuch.","commit_id":"d348f4a17ce5b969e3e6af92b33db53324b3fc1d"}],"releasenotes/notes/bmc-mac-introspection-e4c2e203d8529710.yaml":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"371fcfac68ac5169552697b62e02be1695b0f2a8","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The introspection will now include the MAC address of the IPMI LAN channel"},{"line_number":5,"context_line":"    which has a valid IP address and MAC address assigned in the hardware"},{"line_number":6,"context_line":"    inventory data as `bmc_mac`. If a custom HardwareManager is used, the"},{"line_number":7,"context_line":"    `get_bmc_mac` method must be implemented for the field to be present."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"6d1e164a_a65b3528","line":6,"range":{"start_line":6,"start_character":21,"end_line":6,"end_character":32},"updated":"2021-07-20 14:04:46.000000000","message":"minor nit:, we use ``around`` things to bold the text and highlight it is a parameter or value.","commit_id":"6e0d48356cc56beddea5cda648dc63741548faba"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"371fcfac68ac5169552697b62e02be1695b0f2a8","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    The introspection will now include the MAC address of the IPMI LAN channel"},{"line_number":5,"context_line":"    which has a valid IP address and MAC address assigned in the hardware"},{"line_number":6,"context_line":"    inventory data as `bmc_mac`. If a custom HardwareManager is used, the"},{"line_number":7,"context_line":"    `get_bmc_mac` method must be implemented for the field to be present."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"0cdd51e3_20d1df17","line":7,"range":{"start_line":7,"start_character":5,"end_line":7,"end_character":16},"updated":"2021-07-20 14:04:46.000000000","message":"Same as above.","commit_id":"6e0d48356cc56beddea5cda648dc63741548faba"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6339c8174afd290a66ed1cf077125ea893c9c3f2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The introspection will now include the MAC address of the IPMI LAN channel"},{"line_number":5,"context_line":"    which has a valid IP address and MAC address assigned in the hardware"},{"line_number":6,"context_line":"    inventory data as ``bmc_mac``. If a custom HardwareManager is used, the"},{"line_number":7,"context_line":"    ``get_bmc_mac`` method must be implemented for the field to be present."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"41714470_cdaa83d4","line":4,"updated":"2021-08-06 08:14:40.000000000","message":"nit: \"now includes\" (we use present)","commit_id":"d348f4a17ce5b969e3e6af92b33db53324b3fc1d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6339c8174afd290a66ed1cf077125ea893c9c3f2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    The introspection will now include the MAC address of the IPMI LAN channel"},{"line_number":5,"context_line":"    which has a valid IP address and MAC address assigned in the hardware"},{"line_number":6,"context_line":"    inventory data as ``bmc_mac``. If a custom HardwareManager is used, the"},{"line_number":7,"context_line":"    ``get_bmc_mac`` method must be implemented for the field to be present."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"b976bdeb_0ecb1d64","line":7,"updated":"2021-08-06 08:14:40.000000000","message":"Actually, since you implement it in GenericHardwareManager, there will always be an implementation","commit_id":"d348f4a17ce5b969e3e6af92b33db53324b3fc1d"},{"author":{"_account_id":33742,"name":"Jonas Schäfer","email":"jonas.schaefer@cloudandheat.com","username":"jssfr"},"change_message_id":"295d3915822c00e70957ba9b7f9e2f147b41e6cc","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    The introspection will now include the MAC address of the IPMI LAN channel"},{"line_number":5,"context_line":"    which has a valid IP address and MAC address assigned in the hardware"},{"line_number":6,"context_line":"    inventory data as ``bmc_mac``. If a custom HardwareManager is used, the"},{"line_number":7,"context_line":"    ``get_bmc_mac`` method must be implemented for the field to be present."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"5681c8f5_7047d4ef","line":7,"in_reply_to":"5cf7883b_71779922","updated":"2021-08-06 11:15:11.000000000","message":"Thanks for the clarification, I\u0027ll remove the remark :).","commit_id":"d348f4a17ce5b969e3e6af92b33db53324b3fc1d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e5b4131e9e8da2440c4c000df82bfd5a2908089","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    The introspection will now include the MAC address of the IPMI LAN channel"},{"line_number":5,"context_line":"    which has a valid IP address and MAC address assigned in the hardware"},{"line_number":6,"context_line":"    inventory data as ``bmc_mac``. If a custom HardwareManager is used, the"},{"line_number":7,"context_line":"    ``get_bmc_mac`` method must be implemented for the field to be present."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"5cf7883b_71779922","line":7,"in_reply_to":"981ee89b_992d1221","updated":"2021-08-06 11:12:44.000000000","message":"No, it\u0027s actually an anti-pattern to derive from GenericHardwareManager. But IPA uses *all* hardware managers to route a call, not just the one with the highest priority. Meaning, GenericHardwareManager is always used as a fall-back.","commit_id":"d348f4a17ce5b969e3e6af92b33db53324b3fc1d"},{"author":{"_account_id":33742,"name":"Jonas Schäfer","email":"jonas.schaefer@cloudandheat.com","username":"jssfr"},"change_message_id":"9b0e800a3756a90ab9a8e1a8a50f985b060b4495","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    The introspection will now include the MAC address of the IPMI LAN channel"},{"line_number":5,"context_line":"    which has a valid IP address and MAC address assigned in the hardware"},{"line_number":6,"context_line":"    inventory data as ``bmc_mac``. If a custom HardwareManager is used, the"},{"line_number":7,"context_line":"    ``get_bmc_mac`` method must be implemented for the field to be present."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"981ee89b_992d1221","line":7,"in_reply_to":"b976bdeb_0ecb1d64","updated":"2021-08-06 08:36:43.000000000","message":"Is it a requirement somehow to derive from GenericHardwareManager? I assumed that implementations may exist which only derive from HardwareManager.","commit_id":"d348f4a17ce5b969e3e6af92b33db53324b3fc1d"}]}
