Skip to content

Commit a99c77a

Browse files
authored
Merge pull request ceph#66008 from afreen23/fix-timezone-format
mgr/dashboard: Fix timestamps in APIs Reviewed-by: Ernesto Puerta <[email protected]>
2 parents 3fc9a48 + 9b606ad commit a99c77a

File tree

5 files changed

+25
-28
lines changed

5 files changed

+25
-28
lines changed

src/pybind/mgr/dashboard/controllers/rbd.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import logging
66
import math
7-
from datetime import datetime
7+
from datetime import datetime, timezone
88
from functools import partial
99
from typing import Any, Dict
1010

@@ -347,9 +347,8 @@ def _trash_pool_list(self, pool_name):
347347
for trash in images:
348348
trash['pool_name'] = pool_name
349349
trash['namespace'] = namespace
350-
trash['deletion_time'] = "{}Z".format(trash['deletion_time'].isoformat())
351-
trash['deferment_end_time'] = "{}Z".format(
352-
trash['deferment_end_time'].isoformat())
350+
trash['deletion_time'] = trash['deletion_time'].isoformat()
351+
trash['deferment_end_time'] = trash['deferment_end_time'].isoformat()
353352
result.append(trash)
354353
return result
355354

@@ -385,7 +384,7 @@ def list(self, pool_name=None):
385384
@allow_empty_body
386385
def purge(self, pool_name=None):
387386
"""Remove all expired images from trash."""
388-
now = "{}Z".format(datetime.utcnow().isoformat())
387+
now = datetime.now(timezone.utc).isoformat()
389388
pools = self._trash_list(pool_name)
390389

391390
for pool in pools:

src/pybind/mgr/dashboard/services/progress.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010

1111
import logging
12-
from datetime import datetime
12+
from datetime import datetime, timezone
1313

1414
from .. import mgr
1515
from . import rbd # pylint: disable=no-name-in-module
@@ -40,8 +40,8 @@ def _progress_event_to_dashboard_task_common(event, task):
4040
task.update({
4141
'name': "rbd/{}".format(action),
4242
'metadata': metadata,
43-
'begin_time': "{}Z".format(datetime.fromtimestamp(event["started_at"])
44-
.isoformat()),
43+
'begin_time': datetime.fromtimestamp(
44+
event["started_at"], tz=timezone.utc).isoformat(),
4545
})
4646
return
4747

@@ -50,8 +50,8 @@ def _progress_event_to_dashboard_task_common(event, task):
5050
# from the progress module
5151
'name': "progress/{}".format(event['message']),
5252
'metadata': dict(event.get('refs', {})),
53-
'begin_time': "{}Z".format(datetime.fromtimestamp(event["started_at"])
54-
.isoformat()),
53+
'begin_time': datetime.fromtimestamp(
54+
event["started_at"], tz=timezone.utc).isoformat(),
5555
})
5656

5757

@@ -64,8 +64,8 @@ def _progress_event_to_dashboard_task(event, completed=False):
6464
})
6565
else:
6666
task.update({
67-
'end_time': "{}Z".format(datetime.fromtimestamp(event['finished_at'])
68-
.isoformat()),
67+
'end_time': datetime.fromtimestamp(
68+
event['finished_at'], tz=timezone.utc).isoformat(),
6969
'duration': event['finished_at'] - event['started_at'],
7070
'progress': 100,
7171
'success': 'failed' not in event,

src/pybind/mgr/dashboard/services/rbd.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -349,8 +349,7 @@ def _rbd_image(cls, ioctx, pool_name, namespace, image_name, # pylint: disable=
349349
del stat['parent_pool']
350350
del stat['parent_name']
351351

352-
stat['timestamp'] = "{}Z".format(img.create_timestamp()
353-
.isoformat())
352+
stat['timestamp'] = img.create_timestamp().isoformat()
354353

355354
stat['stripe_count'] = img.stripe_count()
356355
stat['stripe_unit'] = img.stripe_unit()
@@ -373,8 +372,7 @@ def _rbd_image(cls, ioctx, pool_name, namespace, image_name, # pylint: disable=
373372
if mirror_mode:
374373
snap['mirror_mode'] = mirror_mode
375374

376-
snap['timestamp'] = "{}Z".format(
377-
img.get_snap_timestamp(snap['id']).isoformat())
375+
snap['timestamp'] = img.get_snap_timestamp(snap['id']).isoformat()
378376

379377
snap['is_protected'] = None
380378
if snap['namespace'] == rbd.RBD_SNAP_NAMESPACE_TYPE_USER:
@@ -471,8 +469,8 @@ def _rbd_image_stat_removing(cls, ioctx, pool_name, namespace, image_id):
471469
img['unique_id'] = img_spec
472470
img['pool_name'] = pool_name
473471
img['namespace'] = namespace
474-
img['deletion_time'] = "{}Z".format(img['deletion_time'].isoformat())
475-
img['deferment_end_time'] = "{}Z".format(img['deferment_end_time'].isoformat())
472+
img['deletion_time'] = img['deletion_time'].isoformat()
473+
img['deferment_end_time'] = img['deferment_end_time'].isoformat()
476474
return img
477475
raise rbd.ImageNotFound('No image {} in status `REMOVING` found.'.format(img_spec),
478476
errno=errno.ENOENT)

src/pybind/mgr/dashboard/tests/test_rbd_service.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ def test_rbd_image_stat_removing(self):
7878
'unique_id': 'test_pool/3c1a5ee60a88',
7979
'name': 'test_rbd',
8080
'source': 'REMOVING',
81-
'deletion_time': '{}Z'.format(time.isoformat()),
82-
'deferment_end_time': '{}Z'.format(time.isoformat()),
81+
'deletion_time': time.isoformat(),
82+
'deferment_end_time': time.isoformat(),
8383
'pool_name': 'test_pool',
8484
'namespace': ''
8585
})
@@ -124,8 +124,8 @@ def test_rbd_pool_list(self, rbd_image_ref_mock, rbd_image_stat_mock,
124124
'unique_id': 'test_pool/3c1a5ee60a88',
125125
'name': 'test_rbd',
126126
'source': 'REMOVING',
127-
'deletion_time': '{}Z'.format(time.isoformat()),
128-
'deferment_end_time': '{}Z'.format(time.isoformat()),
127+
'deletion_time': time.isoformat(),
128+
'deferment_end_time': time.isoformat(),
129129
'pool_name': 'test_pool',
130130
'namespace': ''
131131
}
@@ -142,8 +142,8 @@ def test_rbd_pool_list(self, rbd_image_ref_mock, rbd_image_stat_mock,
142142
'unique_id': 'test_pool/3c1a5ee60a88',
143143
'name': 'test_rbd',
144144
'source': 'REMOVING',
145-
'deletion_time': '{}Z'.format(time.isoformat()),
146-
'deferment_end_time': '{}Z'.format(time.isoformat()),
145+
'deletion_time': time.isoformat(),
146+
'deferment_end_time': time.isoformat(),
147147
'pool_name': 'test_pool',
148148
'namespace': ''
149149
}], 1))

src/pybind/mgr/dashboard/tools.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import threading
99
import time
1010
import urllib
11-
from datetime import datetime, timedelta
11+
from datetime import datetime, timedelta, timezone
1212

1313
import cherrypy
1414
from ceph.utils import strtobool
@@ -491,13 +491,13 @@ def list_serializable(cls, ns_glob=None):
491491
return [{
492492
'name': t.name,
493493
'metadata': t.metadata,
494-
'begin_time': "{}Z".format(datetime.fromtimestamp(t.begin_time).isoformat()),
494+
'begin_time': datetime.fromtimestamp(t.begin_time, tz=timezone.utc).isoformat(),
495495
'progress': t.progress
496496
} for t in ex_t if t.begin_time], [{
497497
'name': t.name,
498498
'metadata': t.metadata,
499-
'begin_time': "{}Z".format(datetime.fromtimestamp(t.begin_time).isoformat()),
500-
'end_time': "{}Z".format(datetime.fromtimestamp(t.end_time).isoformat()),
499+
'begin_time': datetime.fromtimestamp(t.begin_time, tz=timezone.utc).isoformat(),
500+
'end_time': datetime.fromtimestamp(t.end_time, tz=timezone.utc).isoformat(),
501501
'duration': t.duration,
502502
'progress': t.progress,
503503
'success': not t.exception,

0 commit comments

Comments
 (0)