From 66775ece9af2f4384f7ad00aa6be519e93d50b8f Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 14 Feb 2020 12:00:57 -0600 Subject: [PATCH] mgr/orch: serialize DaemonDescription last_refresh Signed-off-by: Sage Weil --- src/pybind/mgr/orchestrator/_interface.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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): -- 2.47.3