From: Adam King Date: Wed, 17 Apr 2024 15:36:12 +0000 (-0400) Subject: cephadm: have agent check for errors before json loading mgr response X-Git-Tag: testing/wip-rishabh-testing-20240908.193014-reef~19^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=e0da4195d0bcc8385010638fb8044b9b96785b8b;p=ceph-ci.git cephadm: have agent check for errors before json loading mgr response Currently, since it tries to json.loads the response payload before checking the return code, if there was an error it fails with Failed to send metadata to mgr: the JSON object must be str, bytes or bytearray, not ConnectionRefusedError which is masking the actual failure. Also adds more context to the RuntimeError raised Fixes: https://tracker.ceph.com/issues/65553 Signed-off-by: Adam King (cherry picked from commit 287bd34eec09815602700747c62e0a709e6e5ff0) --- diff --git a/src/cephadm/cephadm.py b/src/cephadm/cephadm.py index 0f6257331c2..03653f5a82e 100755 --- a/src/cephadm/cephadm.py +++ b/src/cephadm/cephadm.py @@ -5125,10 +5125,10 @@ WantedBy=ceph-{fsid}.target data=data, endpoint='/data', ssl_ctx=self.ssl_ctx) - response_json = json.loads(response) if status != 200: logger.error(f'HTTP error {status} while querying agent endpoint: {response}') - raise RuntimeError + raise RuntimeError(f'non-200 response <{status}> from agent endpoint: {response}') + response_json = json.loads(response) total_request_time = datetime.timedelta(seconds=(time.monotonic() - send_time)).total_seconds() logger.info(f'Received mgr response: "{response_json["result"]}" {total_request_time} seconds after sending request.') except Exception as e: