import logging
import math
-from datetime import datetime
+from datetime import datetime, timezone
from functools import partial
from typing import Any, Dict
for trash in images:
trash['pool_name'] = pool_name
trash['namespace'] = namespace
- trash['deletion_time'] = "{}Z".format(trash['deletion_time'].isoformat())
- trash['deferment_end_time'] = "{}Z".format(
- trash['deferment_end_time'].isoformat())
+ trash['deletion_time'] = trash['deletion_time'].isoformat()
+ trash['deferment_end_time'] = trash['deferment_end_time'].isoformat()
result.append(trash)
return result
@allow_empty_body
def purge(self, pool_name=None):
"""Remove all expired images from trash."""
- now = "{}Z".format(datetime.utcnow().isoformat())
+ now = datetime.now(timezone.utc).isoformat()
pools = self._trash_list(pool_name)
for pool in pools:
import logging
-from datetime import datetime
+from datetime import datetime, timezone
from .. import mgr
from . import rbd # pylint: disable=no-name-in-module
task.update({
'name': "rbd/{}".format(action),
'metadata': metadata,
- 'begin_time': "{}Z".format(datetime.fromtimestamp(event["started_at"])
- .isoformat()),
+ 'begin_time': datetime.fromtimestamp(
+ event["started_at"], tz=timezone.utc).isoformat(),
})
return
# from the progress module
'name': "progress/{}".format(event['message']),
'metadata': dict(event.get('refs', {})),
- 'begin_time': "{}Z".format(datetime.fromtimestamp(event["started_at"])
- .isoformat()),
+ 'begin_time': datetime.fromtimestamp(
+ event["started_at"], tz=timezone.utc).isoformat(),
})
})
else:
task.update({
- 'end_time': "{}Z".format(datetime.fromtimestamp(event['finished_at'])
- .isoformat()),
+ 'end_time': datetime.fromtimestamp(
+ event['finished_at'], tz=timezone.utc).isoformat(),
'duration': event['finished_at'] - event['started_at'],
'progress': 100,
'success': 'failed' not in event,
del stat['parent_pool']
del stat['parent_name']
- stat['timestamp'] = "{}Z".format(img.create_timestamp()
- .isoformat())
+ stat['timestamp'] = img.create_timestamp().isoformat()
stat['stripe_count'] = img.stripe_count()
stat['stripe_unit'] = img.stripe_unit()
if mirror_mode:
snap['mirror_mode'] = mirror_mode
- snap['timestamp'] = "{}Z".format(
- img.get_snap_timestamp(snap['id']).isoformat())
+ snap['timestamp'] = img.get_snap_timestamp(snap['id']).isoformat()
snap['is_protected'] = None
if snap['namespace'] == rbd.RBD_SNAP_NAMESPACE_TYPE_USER:
img['unique_id'] = img_spec
img['pool_name'] = pool_name
img['namespace'] = namespace
- img['deletion_time'] = "{}Z".format(img['deletion_time'].isoformat())
- img['deferment_end_time'] = "{}Z".format(img['deferment_end_time'].isoformat())
+ img['deletion_time'] = img['deletion_time'].isoformat()
+ img['deferment_end_time'] = img['deferment_end_time'].isoformat()
return img
raise rbd.ImageNotFound('No image {} in status `REMOVING` found.'.format(img_spec),
errno=errno.ENOENT)
'unique_id': 'test_pool/3c1a5ee60a88',
'name': 'test_rbd',
'source': 'REMOVING',
- 'deletion_time': '{}Z'.format(time.isoformat()),
- 'deferment_end_time': '{}Z'.format(time.isoformat()),
+ 'deletion_time': time.isoformat(),
+ 'deferment_end_time': time.isoformat(),
'pool_name': 'test_pool',
'namespace': ''
})
'unique_id': 'test_pool/3c1a5ee60a88',
'name': 'test_rbd',
'source': 'REMOVING',
- 'deletion_time': '{}Z'.format(time.isoformat()),
- 'deferment_end_time': '{}Z'.format(time.isoformat()),
+ 'deletion_time': time.isoformat(),
+ 'deferment_end_time': time.isoformat(),
'pool_name': 'test_pool',
'namespace': ''
}
'unique_id': 'test_pool/3c1a5ee60a88',
'name': 'test_rbd',
'source': 'REMOVING',
- 'deletion_time': '{}Z'.format(time.isoformat()),
- 'deferment_end_time': '{}Z'.format(time.isoformat()),
+ 'deletion_time': time.isoformat(),
+ 'deferment_end_time': time.isoformat(),
'pool_name': 'test_pool',
'namespace': ''
}], 1))
import threading
import time
import urllib
-from datetime import datetime, timedelta
+from datetime import datetime, timedelta, timezone
import cherrypy
from ceph.utils import strtobool
return [{
'name': t.name,
'metadata': t.metadata,
- 'begin_time': "{}Z".format(datetime.fromtimestamp(t.begin_time).isoformat()),
+ 'begin_time': datetime.fromtimestamp(t.begin_time, tz=timezone.utc).isoformat(),
'progress': t.progress
} for t in ex_t if t.begin_time], [{
'name': t.name,
'metadata': t.metadata,
- 'begin_time': "{}Z".format(datetime.fromtimestamp(t.begin_time).isoformat()),
- 'end_time': "{}Z".format(datetime.fromtimestamp(t.end_time).isoformat()),
+ 'begin_time': datetime.fromtimestamp(t.begin_time, tz=timezone.utc).isoformat(),
+ 'end_time': datetime.fromtimestamp(t.end_time, tz=timezone.utc).isoformat(),
'duration': t.duration,
'progress': t.progress,
'success': not t.exception,