]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: upgrade_state can be literally "null"
authorSebastian Wagner <sebastian.wagner@suse.com>
Mon, 28 Sep 2020 13:09:16 +0000 (15:09 +0200)
committerSebastian Wagner <sebastian.wagner@suse.com>
Wed, 18 Nov 2020 10:51:52 +0000 (11:51 +0100)
Fixes: https://tracker.ceph.com/issues/47580
Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
(cherry picked from commit 155fd9800211cf4c90cecae59b5f332ecdd665e8)

src/pybind/mgr/cephadm/tests/test_upgrade.py
src/pybind/mgr/cephadm/upgrade.py

index 079ec5c4c139346d82205e02cbe166fafa80ccb2..095b55408a7bdd74e1318d78c72e4ad439b7492f 100644 (file)
@@ -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
index 804f7df8760d4a87bca3fdee1c7d30b6717377db..6a130681d0cd51db9c41c6df3a181e90e51ff324 100644 (file)
@@ -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: