]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/orch: Fixes some deserialization errors
authorKiefer Chang <kiefer.chang@suse.com>
Thu, 16 Apr 2020 07:30:24 +0000 (15:30 +0800)
committerKiefer Chang <kiefer.chang@suse.com>
Thu, 16 Apr 2020 07:30:24 +0000 (15:30 +0800)
Fixes errors when calling `from_json` of these classes:
- InventoryHost: parsing labels
- ServiceDescription: `last_refresh` and `created` fields should be parsed
  to datetime type.

Signed-off-by: Kiefer Chang <kiefer.chang@suse.com>
src/pybind/mgr/orchestrator/_interface.py

index 336febc569367740bc79d1580250d1e527de8ec6..4622fa6be287932372c0fa81331e07a3b6441180 100644 (file)
@@ -1426,7 +1426,7 @@ class ServiceDescription(object):
 
         c_status = status.copy()
         for k in ['last_refresh', 'created']:
-            if k in c:
+            if k in c_status:
                 c_status[k] = datetime.datetime.strptime(c_status[k], DATEFMT)
         return cls(spec=spec, **c_status)
 
@@ -1487,10 +1487,10 @@ class InventoryHost(object):
             name = _data.pop('name')
             addr = _data.pop('addr', None) or name
             devices = inventory.Devices.from_json(_data.pop('devices'))
+            labels = _data.pop('labels', list())
             if _data:
                 error_msg = 'Unknown key(s) in Inventory: {}'.format(','.join(_data.keys()))
                 raise OrchestratorValidationError(error_msg)
-            labels = _data.get('labels', list())
             return cls(name, devices, labels, addr)
         except KeyError as e:
             error_msg = '{} is required for {}'.format(e, cls.__name__)