]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr/orch: serialize DaemonDescription last_refresh
authorSage Weil <sage@redhat.com>
Fri, 14 Feb 2020 18:00:57 +0000 (12:00 -0600)
committerSage Weil <sage@redhat.com>
Tue, 18 Feb 2020 21:50:00 +0000 (15:50 -0600)
Signed-off-by: Sage Weil <sage@redhat.com>
src/pybind/mgr/orchestrator/_interface.py

index 8901c4a9c1fb38bba93d3dc5151593e28f6293dc..1448cdeecb0fafcfa174d094fd71747e3a76afda 100644 (file)
@@ -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):