)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"669550c2acabe5972e9c65c975c4a3db4fbfeb49","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e9ea7843_5d09abef","updated":"2025-02-26 12:27:13.000000000","message":"Somehow forgot to post a nit","commit_id":"a132e167f4709080c97871c4668ab55115f39d47"}],"ironic_python_agent/extensions/standby.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":"d1198adc2b6ba153ca4abbf7bd4f6c18f7b508fa","unresolved":true,"context_lines":[{"line_number":72,"context_line":"        )"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"class SuppliedAuth(requests.auth.HTTPBasicAuth):"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def __init__(self, authorization):"},{"line_number":78,"context_line":"        self.authorization \u003d authorization"}],"source_content_type":"text/x-python","patch_set":1,"id":"15787486_0e102cb0","line":75,"updated":"2025-02-13 00:05:28.000000000","message":"So... it looks like this doesn\u0027t quite work.\n\n\n[   95.324597] ironic-python-agent[425]: 2025-02-12 18:56:48.571 425 INFO root [-] Picked root device /dev/vda for node a1471d0a-8662-4b28-8685-d9a19af6be27 based on root device hints None\n[   95.332325] ironic-python-agent[425]: 2025-02-12 18:56:48.579 425 INFO ironic_python_agent.extensions.standby [-] Attempting to download image from https://default-route-openshift-image-registry.apps-crc.testing/v2/openshift/tests/blobs/sha256:7d6355852aeb6dbcd191bcda7cd74f1536cfe5cbf8a10495a7283a8396e4b75b\n[   95.367778] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root [-] Command failed: prepare_image, error: \u0027NoneType\u0027 object has no attribute \u0027__dict__\u0027: AttributeError: \u0027NoneType\u0027 object has no attribute \u0027__dict__\u0027\n[   95.369732] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root Traceback (most recent call last):\n[   95.370850] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/extensions/base.py\", line 174, in run\n[   95.376291] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root     result \u003d self.execute_method(**self.command_params)\n[   95.379641] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/extensions/standby.py\", line 1022, in prepare_image\n[   95.381306] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root     self._cache_and_write_image(image_info, device, configdrive)\n[   95.384552] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/extensions/standby.py\", line 883, in _cache_and_write_image\n[   95.389560] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root     _download_image(image_info)\n[   95.390970] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/extensions/standby.py\", line 724, in _download_image\n[   95.393875] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root     image_download \u003d ImageDownload(image_info, time_obj\u003dstarttime)\n[   95.394584] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/extensions/standby.py\", line 618, in __init__\n[   95.395500] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root     self._request \u003d _download_with_proxy(image_info, url,\n[   95.396477] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/extensions/standby.py\", line 221, in _download_with_proxy\n[   95.397376] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root     resp \u003d requests.get(url, **image_download_attributes)  # nosec\n[   95.397883] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/requests/api.py\", line 73, in get\n[   95.398607] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root     return request(\"get\", url, params\u003dparams, **kwargs)\n[   95.399382] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/requests/api.py\", line 59, in request\n[   95.400072] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root     return session.request(method\u003dmethod, url\u003durl, **kwargs)\n[   95.400788] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/requests/sessions.py\", line 575, in request\n[   95.401514] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root     prep \u003d self.prepare_request(req)\n[   95.402017] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/requests/sessions.py\", line 484, in prepare_request\n[   95.402631] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root     p.prepare(\n[   95.403317] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/requests/models.py\", line 371, in prepare\n[   95.403909] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root     self.prepare_auth(auth, url)\n[   95.404835] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/requests/models.py\", line 605, in prepare_auth\n[   95.405571] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root     self.__dict__.update(r.__dict__)\n[   95.406290] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root AttributeError: \u0027NoneType\u0027 object has no attribute \u0027__dict__\u0027\n[   95.406835] ironic-python-agent[425]: 2025-02-12 18:56:48.590 425 ERROR root\n[   95.407884] ironic-python-agent[425]: 2025-02-12 18:56:48.610 425 ERROR root [-] Unexpected error dispatching write_image to manager \u003cironic_python_agent.hardware.GenericHardwareManager object at 0x7f7882096880\u003e: Command execution failed: \u0027NoneType\u0027 object has no attribute \u0027__dict__\u0027: ironic_python_agent.errors.CommandExecutionError: Command execution failed: \u0027NoneType\u0027 object has no attribute \u0027__dict__\u0027\n[   95.408703] ironic-python-agent[425]: 2025-02-12 18:56:48.610 425 ERROR root Traceback (most recent call last):\n[   95.409626] ironic-python-agent[425]: 2025-02-12 18:56:48.610 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/hardware.py\", line 3662, in dispatch_to_managers\n[   95.410369] ironic-python-agent[425]: 2025-02-12 18:56:48.610 425 ERROR root     return getattr(manager, method)(*args, **kwargs)\n[   95.410987] ironic-python-agent[425]: 2025-02-12 18:56:48.610 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/hardware.py\", line 3402, in write_image\n[   95.411731] ironic-python-agent[425]: 2025-02-12 18:56:48.610 425 ERROR root     return cmd.wait()\n[   95.412507] ironic-python-agent[425]: 2025-02-12 18:56:48.610 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/extensions/base.py\", line 89, in wait\n[   95.413210] ironic-python-agent[425]: 2025-02-12 18:56:48.610 425 ERROR root     raise self.command_error\n[   95.413775] ironic-python-agent[425]: 2025-02-12 18:56:48.610 425 ERROR root ironic_python_agent.errors.CommandExecutionError: Command execution failed: \u0027NoneType\u0027 object has no attribute \u0027__dict__\u0027\n[   95.414522] ironic-python-agent[425]: 2025-02-12 18:56:48.610 425 ERROR root\n[   95.414970] ironic-python-agent[425]: 2025-02-12 18:56:48.628 425 ERROR root [-] Error performing deploy step write_image: ironic_python_agent.errors.CommandExecutionError: Command execution failed: \u0027NoneType\u0027 object has no attribute \u0027__dict__\u0027\n[   95.415653] ironic-python-agent[425]: 2025-02-12 18:56:48.628 425 ERROR root Traceback (most recent call last):\n[   95.416593] ironic-python-agent[425]: 2025-02-12 18:56:48.628 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/extensions/deploy.py\", line 76, in execute_deploy_step\n[   95.417021] ironic-python-agent[425]: 2025-02-12 18:56:48.628 425 ERROR root     result \u003d hardware.dispatch_to_managers(step[\u0027step\u0027], node, ports,\n[   95.417846] ironic-python-agent[425]: 2025-02-12 18:56:48.628 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/hardware.py\", line 3662, in dispatch_to_managers\n[   95.418618] ironic-python-agent[425]: 2025-02-12 18:56:48.628 425 ERROR root     return getattr(manager, method)(*args, **kwargs)\n[   95.419289] ironic-python-agent[425]: 2025-02-12 18:56:48.628 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/hardware.py\", line 3402, in write_image\n[   95.419788] ironic-python-agent[425]: 2025-02-12 18:56:48.628 425 ERROR root     return cmd.wait()\n[   95.420650] ironic-python-agent[425]: 2025-02-12 18:56:48.628 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/extensions/base.py\", line 89, in wait\n[   95.421498] ironic-python-agent[425]: 2025-02-12 18:56:48.628 425 ERROR root     raise self.command_error\n[   95.422301] ironic-python-agent[425]: 2025-02-12 18:56:48.628 425 ERROR root ironic_python_agent.errors.CommandExecutionError: Command execution failed: \u0027NoneType\u0027 object has no attribute \u0027__dict__\u0027\n[   95.422790] ironic-python-agent[425]: 2025-02-12 18:56:48.628 425 ERROR root\n[   95.423673] ironic-python-agent[425]: 2025-02-12 18:56:48.636 425 ERROR root [-] Command failed: execute_deploy_step, error: Command execution failed: \u0027NoneType\u0027 object has no attribute \u0027__dict__\u0027: ironic_python_agent.errors.CommandExecutionError: Command execution failed: \u0027NoneType\u0027 object has no attribute \u0027__dict__\u0027\n[   95.424379] ironic-python-agent[425]: 2025-02-12 18:56:48.636 425 ERROR root Traceback (most recent call last):\n[   95.425261] ironic-python-agent[425]: 2025-02-12 18:56:48.636 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/extensions/base.py\", line 174, in run\n[   95.425729] ironic-python-agent[425]: 2025-02-12 18:56:48.636 425 ERROR root     result \u003d self.execute_method(**self.command_params)\n[   95.426664] ironic-python-agent[425]: 2025-02-12 18:56:48.636 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/extensions/deploy.py\", line 76, in execute_deploy_step\n[   95.427447] ironic-python-agent[425]: 2025-02-12 18:56:48.636 425 ERROR root     result \u003d hardware.dispatch_to_managers(step[\u0027step\u0027], node, ports,\n[   95.428226] ironic-python-agent[425]: 2025-02-12 18:56:48.636 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/hardware.py\", line 3662, in dispatch_to_managers\n[   95.428865] ironic-python-agent[425]: 2025-02-12 18:56:48.636 425 ERROR root     return getattr(manager, method)(*args, **kwargs)\n[   95.429674] ironic-python-agent[425]: 2025-02-12 18:56:48.636 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/hardware.py\", line 3402, in write_image\n[   95.430418] ironic-python-agent[425]: 2025-02-12 18:56:48.636 425 ERROR root     return cmd.wait()\n[   95.430978] ironic-python-agent[425]: 2025-02-12 18:56:48.636 425 ERROR root   File \"/opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/extensions/base.py\", line 89, in wait\n[   95.431769] ironic-python-agent[425]: 2025-02-12 18:56:48.636 425 ERROR root     raise self.command_error\n[   95.432568] ironic-python-agent[425]: 2025-02-12 18:56:48.636 425 ERROR root ironic_python_agent.errors.CommandExecutionError: Command execution failed: \u0027NoneType\u0027 object has no attribute \u0027__dict__\u0027\n[   95.433019] ironic-python-agent[425]: 2025-02-12 18:56:48.636 425 ERROR root\n[   99.610885] ironic-python-agent[425]: 2025-02-12 18:56:52.831 425 DEBUG ironic_python_agent.ironic_api_client [-] Heartbeat: announcing callback URL https://10.1.0.16:9999, API version is 1.68 heartbeat /opt/ironic-python-agent/lib64/python3.9/site-packages/ironic_python_agent/ironic_api_client.py:186","commit_id":"20ff2aabd47414402aa222bc48e629b0104b2b21"},{"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":"fa315dda6ef885d7ef75f5fe1c7c9bc1f1d51194","unresolved":true,"context_lines":[{"line_number":72,"context_line":"        )"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"class SuppliedAuth(requests.auth.HTTPBasicAuth):"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def __init__(self, authorization):"},{"line_number":78,"context_line":"        self.authorization \u003d authorization"}],"source_content_type":"text/x-python","patch_set":1,"id":"f827fc8c_c13b2dc8","line":75,"in_reply_to":"15787486_0e102cb0","updated":"2025-02-14 21:36:26.000000000","message":"voting +2 on the assumption the return r on ln82 fixes this","commit_id":"20ff2aabd47414402aa222bc48e629b0104b2b21"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"669550c2acabe5972e9c65c975c4a3db4fbfeb49","unresolved":true,"context_lines":[{"line_number":82,"context_line":"        return r"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def __eq__(self, other):"},{"line_number":85,"context_line":"        return all("},{"line_number":86,"context_line":"            ["},{"line_number":87,"context_line":"                self.authorization \u003d\u003d getattr(other, \"authorization\", None)"},{"line_number":88,"context_line":"            ]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7bd0e917_e86a8893","line":85,"updated":"2025-02-26 12:27:13.000000000","message":"nit: The usage of all() does not make much sense here","commit_id":"a132e167f4709080c97871c4668ab55115f39d47"}]}
