summaryrefslogtreecommitdiffstats
path: root/nova/utils.py
diff options
context:
space:
mode:
authorIlya Alekseyev <ialekseev@griddynamics.com>2010-12-23 22:58:20 +0300
committerIlya Alekseyev <ialekseev@griddynamics.com>2010-12-23 22:58:20 +0300
commit57ead438d06dd5c6e98e971670f397bed5d7e29c (patch)
tree6a94815ea5d66930e4638769e463b7ec60c9cdc2 /nova/utils.py
parentd88817a360676173ac31566e13201d56f1e2b0b0 (diff)
parent75e2cbec9eb5132a49446f1b6d563d5f43d007de (diff)
downloadnova-57ead438d06dd5c6e98e971670f397bed5d7e29c.tar.gz
nova-57ead438d06dd5c6e98e971670f397bed5d7e29c.tar.xz
nova-57ead438d06dd5c6e98e971670f397bed5d7e29c.zip
Merge with trunk
Diffstat (limited to 'nova/utils.py')
-rw-r--r--nova/utils.py41
1 files changed, 40 insertions, 1 deletions
diff --git a/nova/utils.py b/nova/utils.py
index 30fd12db0..b9045a50c 100644
--- a/nova/utils.py
+++ b/nova/utils.py
@@ -29,6 +29,7 @@ import subprocess
import socket
import struct
import sys
+import time
from xml.sax import saxutils
from eventlet import event
@@ -205,13 +206,51 @@ def get_my_ip():
return "127.0.0.1"
+def utcnow():
+ """Overridable version of datetime.datetime.utcnow."""
+ if utcnow.override_time:
+ return utcnow.override_time
+ return datetime.datetime.utcnow()
+
+
+utcnow.override_time = None
+
+
+def utcnow_ts():
+ """Timestamp version of our utcnow function."""
+ return time.mktime(utcnow().timetuple())
+
+
+def set_time_override(override_time=datetime.datetime.utcnow()):
+ """Override utils.utcnow to return a constant time."""
+ utcnow.override_time = override_time
+
+
+def advance_time_delta(timedelta):
+ """Advance overriden time using a datetime.timedelta."""
+ assert(not utcnow.override_time is None)
+ utcnow.override_time += timedelta
+
+
+def advance_time_seconds(seconds):
+ """Advance overriden time by seconds."""
+ advance_time_delta(datetime.timedelta(0, seconds))
+
+
+def clear_time_override():
+ """Remove the overridden time."""
+ utcnow.override_time = None
+
+
def isotime(at=None):
+ """Returns iso formatted utcnow."""
if not at:
- at = datetime.datetime.utcnow()
+ at = utcnow()
return at.strftime(TIME_FORMAT)
def parse_isotime(timestr):
+ """Turn an iso formatted time back into a datetime"""
return datetime.datetime.strptime(timestr, TIME_FORMAT)