From: Sage Weil Date: Fri, 14 Feb 2020 18:00:57 +0000 (-0600) Subject: mgr/orch: serialize DaemonDescription last_refresh X-Git-Tag: v15.1.1~368^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=66775ece9af2f4384f7ad00aa6be519e93d50b8f;p=ceph.git mgr/orch: serialize DaemonDescription last_refresh Signed-off-by: Sage Weil --- diff --git a/src/pybind/mgr/orchestrator/_interface.py b/src/pybind/mgr/orchestrator/_interface.py index 8901c4a9c1fb..1448cdeecb0f 100644 --- a/src/pybind/mgr/orchestrator/_interface.py +++ b/src/pybind/mgr/orchestrator/_interface.py @@ -35,6 +35,7 @@ except ImportError: logger = logging.getLogger(__name__) +DATEFMT = '%Y-%m-%dT%H:%M:%S.%f' class HostPlacementSpec(namedtuple('HostPlacementSpec', ['hostname', 'network', 'name'])): def __str__(self): @@ -1178,7 +1179,8 @@ class DaemonDescription(object): container_image_name=None, version=None, status=None, - status_desc=None): + status_desc=None, + last_refresh=None): # Node is at the same granularity as InventoryNode self.nodename = nodename @@ -1208,7 +1210,7 @@ class DaemonDescription(object): self.status_desc = status_desc # datetime when this info was last refreshed - self.last_refresh = None # type: Optional[datetime.datetime] + self.last_refresh = last_refresh # type: Optional[datetime.datetime] def name(self): return '%s.%s' % (self.daemon_type, self.daemon_id) @@ -1229,11 +1231,17 @@ class DaemonDescription(object): 'status': self.status, 'status_desc': self.status_desc, } + if self.last_refresh: + out['last_refresh'] = self.last_refresh.strftime(DATEFMT) return {k: v for (k, v) in out.items() if v is not None} @classmethod @handle_type_error def from_json(cls, data): + if 'last_refresh' in data: + data['last_refresh'] = datetime.datetime.strptime( + data['last_refresh'], + DATEFMT) return cls(**data) class ServiceDescription(object):