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: v20.0.0~2044^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=287bd34eec09815602700747c62e0a709e6e5ff0;p=ceph.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 --- diff --git a/src/cephadm/cephadm.py b/src/cephadm/cephadm.py index 0a8292c5f00b..e3781aef81a5 100755 --- a/src/cephadm/cephadm.py +++ b/src/cephadm/cephadm.py @@ -1577,10 +1577,10 @@ class CephadmAgent(DaemonForm): 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: