From: Sebastian Wagner Date: Mon, 28 Sep 2020 13:09:16 +0000 (+0200) Subject: mgr/cephadm: upgrade_state can be literally "null" X-Git-Tag: v16.1.0~958^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=155fd9800211cf4c90cecae59b5f332ecdd665e8;p=ceph.git mgr/cephadm: upgrade_state can be literally "null" Fixes: https://tracker.ceph.com/issues/47580 Signed-off-by: Sebastian Wagner --- diff --git a/src/pybind/mgr/cephadm/tests/test_upgrade.py b/src/pybind/mgr/cephadm/tests/test_upgrade.py index 079ec5c4c139..095b55408a7b 100644 --- a/src/pybind/mgr/cephadm/tests/test_upgrade.py +++ b/src/pybind/mgr/cephadm/tests/test_upgrade.py @@ -5,6 +5,7 @@ import pytest from ceph.deployment.service_spec import ServiceSpec from cephadm import CephadmOrchestrator +from cephadm.upgrade import CephadmUpgrade from .fixtures import _run_cephadm, wait, cephadm_module, with_host, with_service @@ -85,3 +86,10 @@ def test_upgrade_run(use_repo_digest, cephadm_module: CephadmOrchestrator): assert image == 'to_image@repo_digest' else: assert image == 'to_image' + + +def test_upgrade_state_null(cephadm_module: CephadmOrchestrator): + # This test validates https://tracker.ceph.com/issues/47580 + cephadm_module.set_store('upgrade_state', 'null') + CephadmUpgrade(cephadm_module) + assert CephadmUpgrade(cephadm_module).upgrade_state is None diff --git a/src/pybind/mgr/cephadm/upgrade.py b/src/pybind/mgr/cephadm/upgrade.py index 804f7df8760d..6a130681d0cd 100644 --- a/src/pybind/mgr/cephadm/upgrade.py +++ b/src/pybind/mgr/cephadm/upgrade.py @@ -49,8 +49,11 @@ class UpgradeState: } @classmethod - def from_json(cls, data) -> 'UpgradeState': - return cls(**data) + def from_json(cls, data) -> Optional['UpgradeState']: + if data: + return cls(**data) + else: + return None class CephadmUpgrade: