Merge lp:~vishvananda/nova/consistent-utcnow into lp:~hudson-openstack/nova/trunk

Proposed by Vish Ishaya
Status: Merged
Approved by: Josh Kearney
Approved revision: 1143
Merged at revision: 1147
Proposed branch: lp:~vishvananda/nova/consistent-utcnow
Merge into: lp:~hudson-openstack/nova/trunk
Diff against target: 905 lines (+77/-95)
31 files modified
bin/nova-manage (+1/-2)
nova/api/ec2/admin.py (+1/-2)
nova/api/ec2/cloud.py (+2/-3)
nova/api/openstack/auth.py (+2/-3)
nova/api/openstack/contrib/__init__.py (+1/-1)
nova/api/openstack/limits.py (+1/-1)
nova/api/openstack/ratelimiting/__init__.py (+1/-1)
nova/compute/api.py (+1/-2)
nova/compute/manager.py (+1/-2)
nova/compute/monitor.py (+1/-1)
nova/context.py (+0/-1)
nova/db/sqlalchemy/api.py (+14/-15)
nova/db/sqlalchemy/migrate_repo/versions/016_make_quotas_key_and_value.py (+5/-5)
nova/db/sqlalchemy/models.py (+4/-5)
nova/network/manager.py (+1/-1)
nova/notifier/api.py (+3/-4)
nova/scheduler/driver.py (+2/-1)
nova/scheduler/simple.py (+5/-6)
nova/scheduler/zone_manager.py (+8/-7)
nova/test.py (+2/-2)
nova/tests/api/openstack/fakes.py (+1/-2)
nova/tests/api/openstack/test_images.py (+0/-1)
nova/tests/api/openstack/test_servers.py (+4/-4)
nova/tests/test_compute.py (+2/-3)
nova/tests/test_console.py (+0/-2)
nova/tests/test_middleware.py (+0/-1)
nova/tests/test_scheduler.py (+8/-8)
nova/utils.py (+1/-1)
nova/virt/xenapi/fake.py (+2/-2)
nova/volume/api.py (+2/-3)
nova/volume/manager.py (+1/-3)
To merge this branch: bzr merge lp:~vishvananda/nova/consistent-utcnow
Reviewer Review Type Date Requested Status
Josh Kearney (community) Approve
Devin Carlen (community) Approve
Review via email: mp+63302@code.launchpad.net

Description of the change

Changes all uses of utcnow to use the version in utils. This is a simple wrapper for datetime.datetime.utcnow that allows us to use fake values for tests.

There are still a few places in the Zone code that is using datetime.now(), I'd prefer to move this to utils.utcnow() as well but I want to chat with sandy first to make sure that there won't be any issues.

To post a comment you must log in.
1143. By Vish Ishaya

switch zones to use utcnow

Revision history for this message
Devin Carlen (devcamcar) wrote :

lgtm

I'm assuming the changes to fake the values in the tests are being treated as a separate issue?

review: Approve
Revision history for this message
Vish Ishaya (vishvananda) wrote :

> I'm assuming the changes to fake the values in the tests are being treated as
> a separate issue?

The only test that is using the time override stuff right now is test_middleware.py. I don't know if this is because other parts of the system aren't time sensitive, or if people just didn't write tests because they didn't know that the time override exists.

Revision history for this message
Josh Kearney (jk0) wrote :

\o/

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'bin/nova-manage'
--- bin/nova-manage 2011-06-01 23:01:41 +0000
+++ bin/nova-manage 2011-06-02 21:52:56 +0000
@@ -53,7 +53,6 @@
53 CLI interface for nova management.53 CLI interface for nova management.
54"""54"""
5555
56import datetime
57import gettext56import gettext
58import glob57import glob
59import json58import json
@@ -689,7 +688,7 @@
689 """Show a list of all running services. Filter by host & service name.688 """Show a list of all running services. Filter by host & service name.
690 args: [host] [service]"""689 args: [host] [service]"""
691 ctxt = context.get_admin_context()690 ctxt = context.get_admin_context()
692 now = datetime.datetime.utcnow()691 now = utils.utcnow()
693 services = db.service_get_all(ctxt)692 services = db.service_get_all(ctxt)
694 if host:693 if host:
695 services = [s for s in services if s['host'] == host]694 services = [s for s in services if s['host'] == host]
696695
=== modified file 'nova/api/ec2/admin.py'
--- nova/api/ec2/admin.py 2011-04-19 16:19:52 +0000
+++ nova/api/ec2/admin.py 2011-06-02 21:52:56 +0000
@@ -21,7 +21,6 @@
21"""21"""
2222
23import base6423import base64
24import datetime
2524
26from nova import db25from nova import db
27from nova import exception26from nova import exception
@@ -305,7 +304,7 @@
305 * Volume Count304 * Volume Count
306 """305 """
307 services = db.service_get_all(context, False)306 services = db.service_get_all(context, False)
308 now = datetime.datetime.utcnow()307 now = utils.utcnow()
309 hosts = []308 hosts = []
310 rv = []309 rv = []
311 for host in [service['host'] for service in services]:310 for host in [service['host'] for service in services]:
312311
=== modified file 'nova/api/ec2/cloud.py'
--- nova/api/ec2/cloud.py 2011-05-27 05:13:17 +0000
+++ nova/api/ec2/cloud.py 2011-06-02 21:52:56 +0000
@@ -23,7 +23,6 @@
23"""23"""
2424
25import base6425import base64
26import datetime
27import IPy26import IPy
28import os27import os
29import urllib28import urllib
@@ -235,7 +234,7 @@
235 'zoneState': 'available'}]}234 'zoneState': 'available'}]}
236235
237 services = db.service_get_all(context, False)236 services = db.service_get_all(context, False)
238 now = datetime.datetime.utcnow()237 now = utils.utcnow()
239 hosts = []238 hosts = []
240 for host in [service['host'] for service in services]:239 for host in [service['host'] for service in services]:
241 if not host in hosts:240 if not host in hosts:
@@ -595,7 +594,7 @@
595 instance_id = ec2utils.ec2_id_to_id(ec2_id)594 instance_id = ec2utils.ec2_id_to_id(ec2_id)
596 output = self.compute_api.get_console_output(595 output = self.compute_api.get_console_output(
597 context, instance_id=instance_id)596 context, instance_id=instance_id)
598 now = datetime.datetime.utcnow()597 now = utils.utcnow()
599 return {"InstanceId": ec2_id,598 return {"InstanceId": ec2_id,
600 "Timestamp": now,599 "Timestamp": now,
601 "output": base64.b64encode(output)}600 "output": base64.b64encode(output)}
602601
=== modified file 'nova/api/openstack/auth.py'
--- nova/api/openstack/auth.py 2011-05-17 19:12:48 +0000
+++ nova/api/openstack/auth.py 2011-06-02 21:52:56 +0000
@@ -13,9 +13,8 @@
13# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT13# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the14# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15# License for the specific language governing permissions and limitations15# License for the specific language governing permissions and limitations
16# under the License.import datetime16# under the License.
1717
18import datetime
19import hashlib18import hashlib
20import time19import time
2120
@@ -127,7 +126,7 @@
127 except exception.NotFound:126 except exception.NotFound:
128 return None127 return None
129 if token:128 if token:
130 delta = datetime.datetime.utcnow() - token['created_at']129 delta = utils.utcnow() - token['created_at']
131 if delta.days >= 2:130 if delta.days >= 2:
132 self.db.auth_token_destroy(ctxt, token['token_hash'])131 self.db.auth_token_destroy(ctxt, token['token_hash'])
133 else:132 else:
134133
=== modified file 'nova/api/openstack/contrib/__init__.py'
--- nova/api/openstack/contrib/__init__.py 2011-03-30 01:16:09 +0000
+++ nova/api/openstack/contrib/__init__.py 2011-06-02 21:52:56 +0000
@@ -13,7 +13,7 @@
13# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT13# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the14# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15# License for the specific language governing permissions and limitations15# License for the specific language governing permissions and limitations
16# under the License.import datetime16# under the License.
1717
18"""Contrib contains extensions that are shipped with nova.18"""Contrib contains extensions that are shipped with nova.
1919
2020
=== modified file 'nova/api/openstack/limits.py'
--- nova/api/openstack/limits.py 2011-05-26 16:06:54 +0000
+++ nova/api/openstack/limits.py 2011-06-02 21:52:56 +0000
@@ -11,7 +11,7 @@
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations13# License for the specific language governing permissions and limitations
14# under the License.import datetime14# under the License.
1515
16"""16"""
17Module dedicated functions/classes dealing with rate limiting requests.17Module dedicated functions/classes dealing with rate limiting requests.
1818
=== modified file 'nova/api/openstack/ratelimiting/__init__.py'
--- nova/api/openstack/ratelimiting/__init__.py 2011-03-03 16:04:33 +0000
+++ nova/api/openstack/ratelimiting/__init__.py 2011-06-02 21:52:56 +0000
@@ -13,7 +13,7 @@
13# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT13# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the14# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15# License for the specific language governing permissions and limitations15# License for the specific language governing permissions and limitations
16# under the License.import datetime16# under the License.
1717
18"""Rate limiting of arbitrary actions."""18"""Rate limiting of arbitrary actions."""
1919
2020
=== modified file 'nova/compute/api.py'
--- nova/compute/api.py 2011-06-02 17:16:06 +0000
+++ nova/compute/api.py 2011-06-02 21:52:56 +0000
@@ -18,7 +18,6 @@
1818
19"""Handles all requests relating to instances (guest vms)."""19"""Handles all requests relating to instances (guest vms)."""
2020
21import datetime
22import eventlet21import eventlet
23import re22import re
24import time23import time
@@ -405,7 +404,7 @@
405 instance['id'],404 instance['id'],
406 state_description='terminating',405 state_description='terminating',
407 state=0,406 state=0,
408 terminated_at=datetime.datetime.utcnow())407 terminated_at=utils.utcnow())
409408
410 host = instance['host']409 host = instance['host']
411 if host:410 if host:
412411
=== modified file 'nova/compute/manager.py'
--- nova/compute/manager.py 2011-05-29 03:10:42 +0000
+++ nova/compute/manager.py 2011-06-02 21:52:56 +0000
@@ -35,7 +35,6 @@
3535
36"""36"""
3737
38import datetime
39import os38import os
40import socket39import socket
41import sys40import sys
@@ -159,7 +158,7 @@
159158
160 def _update_launched_at(self, context, instance_id, launched_at=None):159 def _update_launched_at(self, context, instance_id, launched_at=None):
161 """Update the launched_at parameter of the given instance."""160 """Update the launched_at parameter of the given instance."""
162 data = {'launched_at': launched_at or datetime.datetime.utcnow()}161 data = {'launched_at': launched_at or utils.utcnow()}
163 self.db.instance_update(context, instance_id, data)162 self.db.instance_update(context, instance_id, data)
164163
165 def _update_image_id(self, context, instance_id, image_id):164 def _update_image_id(self, context, instance_id, image_id):
166165
=== modified file 'nova/compute/monitor.py'
--- nova/compute/monitor.py 2011-04-18 23:40:03 +0000
+++ nova/compute/monitor.py 2011-06-02 21:52:56 +0000
@@ -86,7 +86,7 @@
86 ]}86 ]}
8787
8888
89utcnow = datetime.datetime.utcnow89utcnow = utils.utcnow
9090
9191
92LOG = logging.getLogger('nova.compute.monitor')92LOG = logging.getLogger('nova.compute.monitor')
9393
=== modified file 'nova/context.py'
--- nova/context.py 2011-04-20 19:08:22 +0000
+++ nova/context.py 2011-06-02 21:52:56 +0000
@@ -18,7 +18,6 @@
1818
19"""RequestContext: context for requests that persist through all of nova."""19"""RequestContext: context for requests that persist through all of nova."""
2020
21import datetime
22import random21import random
2322
24from nova import exception23from nova import exception
2524
=== modified file 'nova/db/sqlalchemy/api.py'
--- nova/db/sqlalchemy/api.py 2011-05-31 20:15:52 +0000
+++ nova/db/sqlalchemy/api.py 2011-06-02 21:52:56 +0000
@@ -19,7 +19,6 @@
19Implementation of SQLAlchemy backend.19Implementation of SQLAlchemy backend.
20"""20"""
2121
22import datetime
23import warnings22import warnings
2423
25from nova import db24from nova import db
@@ -674,7 +673,7 @@
674 filter_by(allocated=0).\673 filter_by(allocated=0).\
675 update({'instance_id': None,674 update({'instance_id': None,
676 'leased': 0,675 'leased': 0,
677 'updated_at': datetime.datetime.utcnow()},676 'updated_at': utils.utcnow()},
678 synchronize_session='fetch')677 synchronize_session='fetch')
679 return result678 return result
680679
@@ -820,17 +819,17 @@
820 session.query(models.Instance).\819 session.query(models.Instance).\
821 filter_by(id=instance_id).\820 filter_by(id=instance_id).\
822 update({'deleted': True,821 update({'deleted': True,
823 'deleted_at': datetime.datetime.utcnow(),822 'deleted_at': utils.utcnow(),
824 'updated_at': literal_column('updated_at')})823 'updated_at': literal_column('updated_at')})
825 session.query(models.SecurityGroupInstanceAssociation).\824 session.query(models.SecurityGroupInstanceAssociation).\
826 filter_by(instance_id=instance_id).\825 filter_by(instance_id=instance_id).\
827 update({'deleted': True,826 update({'deleted': True,
828 'deleted_at': datetime.datetime.utcnow(),827 'deleted_at': utils.utcnow(),
829 'updated_at': literal_column('updated_at')})828 'updated_at': literal_column('updated_at')})
830 session.query(models.InstanceMetadata).\829 session.query(models.InstanceMetadata).\
831 filter_by(instance_id=instance_id).\830 filter_by(instance_id=instance_id).\
832 update({'deleted': True,831 update({'deleted': True,
833 'deleted_at': datetime.datetime.utcnow(),832 'deleted_at': utils.utcnow(),
834 'updated_at': literal_column('updated_at')})833 'updated_at': literal_column('updated_at')})
835834
836835
@@ -1123,7 +1122,7 @@
1123 session.query(models.KeyPair).\1122 session.query(models.KeyPair).\
1124 filter_by(user_id=user_id).\1123 filter_by(user_id=user_id).\
1125 update({'deleted': 1,1124 update({'deleted': 1,
1126 'deleted_at': datetime.datetime.utcnow(),1125 'deleted_at': utils.utcnow(),
1127 'updated_at': literal_column('updated_at')})1126 'updated_at': literal_column('updated_at')})
11281127
11291128
@@ -1655,7 +1654,7 @@
1655 session.query(models.Volume).\1654 session.query(models.Volume).\
1656 filter_by(id=volume_id).\1655 filter_by(id=volume_id).\
1657 update({'deleted': 1,1656 update({'deleted': 1,
1658 'deleted_at': datetime.datetime.utcnow(),1657 'deleted_at': utils.utcnow(),
1659 'updated_at': literal_column('updated_at')})1658 'updated_at': literal_column('updated_at')})
1660 session.query(models.ExportDevice).\1659 session.query(models.ExportDevice).\
1661 filter_by(volume_id=volume_id).\1660 filter_by(volume_id=volume_id).\
@@ -1813,7 +1812,7 @@
1813 session.query(models.Snapshot).\1812 session.query(models.Snapshot).\
1814 filter_by(id=snapshot_id).\1813 filter_by(id=snapshot_id).\
1815 update({'deleted': 1,1814 update({'deleted': 1,
1816 'deleted_at': datetime.datetime.utcnow(),1815 'deleted_at': utils.utcnow(),
1817 'updated_at': literal_column('updated_at')})1816 'updated_at': literal_column('updated_at')})
18181817
18191818
@@ -1968,17 +1967,17 @@
1968 session.query(models.SecurityGroup).\1967 session.query(models.SecurityGroup).\
1969 filter_by(id=security_group_id).\1968 filter_by(id=security_group_id).\
1970 update({'deleted': 1,1969 update({'deleted': 1,
1971 'deleted_at': datetime.datetime.utcnow(),1970 'deleted_at': utils.utcnow(),
1972 'updated_at': literal_column('updated_at')})1971 'updated_at': literal_column('updated_at')})
1973 session.query(models.SecurityGroupInstanceAssociation).\1972 session.query(models.SecurityGroupInstanceAssociation).\
1974 filter_by(security_group_id=security_group_id).\1973 filter_by(security_group_id=security_group_id).\
1975 update({'deleted': 1,1974 update({'deleted': 1,
1976 'deleted_at': datetime.datetime.utcnow(),1975 'deleted_at': utils.utcnow(),
1977 'updated_at': literal_column('updated_at')})1976 'updated_at': literal_column('updated_at')})
1978 session.query(models.SecurityGroupIngressRule).\1977 session.query(models.SecurityGroupIngressRule).\
1979 filter_by(group_id=security_group_id).\1978 filter_by(group_id=security_group_id).\
1980 update({'deleted': 1,1979 update({'deleted': 1,
1981 'deleted_at': datetime.datetime.utcnow(),1980 'deleted_at': utils.utcnow(),
1982 'updated_at': literal_column('updated_at')})1981 'updated_at': literal_column('updated_at')})
19831982
19841983
@@ -1989,11 +1988,11 @@
1989 with session.begin():1988 with session.begin():
1990 session.query(models.SecurityGroup).\1989 session.query(models.SecurityGroup).\
1991 update({'deleted': 1,1990 update({'deleted': 1,
1992 'deleted_at': datetime.datetime.utcnow(),1991 'deleted_at': utils.utcnow(),
1993 'updated_at': literal_column('updated_at')})1992 'updated_at': literal_column('updated_at')})
1994 session.query(models.SecurityGroupIngressRule).\1993 session.query(models.SecurityGroupIngressRule).\
1995 update({'deleted': 1,1994 update({'deleted': 1,
1996 'deleted_at': datetime.datetime.utcnow(),1995 'deleted_at': utils.utcnow(),
1997 'updated_at': literal_column('updated_at')})1996 'updated_at': literal_column('updated_at')})
19981997
19991998
@@ -2627,7 +2626,7 @@
2627 filter_by(key=key).\2626 filter_by(key=key).\
2628 filter_by(deleted=False).\2627 filter_by(deleted=False).\
2629 update({'deleted': True,2628 update({'deleted': True,
2630 'deleted_at': datetime.datetime.utcnow(),2629 'deleted_at': utils.utcnow(),
2631 'updated_at': literal_column('updated_at')})2630 'updated_at': literal_column('updated_at')})
26322631
26332632
@@ -2638,7 +2637,7 @@
2638 filter_by(instance_id=instance_id).\2637 filter_by(instance_id=instance_id).\
2639 filter_by(deleted=False).\2638 filter_by(deleted=False).\
2640 update({'deleted': True,2639 update({'deleted': True,
2641 'deleted_at': datetime.datetime.utcnow(),2640 'deleted_at': utils.utcnow(),
2642 'updated_at': literal_column('updated_at')})2641 'updated_at': literal_column('updated_at')})
26432642
26442643
26452644
=== modified file 'nova/db/sqlalchemy/migrate_repo/versions/016_make_quotas_key_and_value.py'
--- nova/db/sqlalchemy/migrate_repo/versions/016_make_quotas_key_and_value.py 2011-06-01 14:58:17 +0000
+++ nova/db/sqlalchemy/migrate_repo/versions/016_make_quotas_key_and_value.py 2011-06-02 21:52:56 +0000
@@ -17,7 +17,7 @@
17from sqlalchemy import Boolean, Column, DateTime, Integer17from sqlalchemy import Boolean, Column, DateTime, Integer
18from sqlalchemy import MetaData, String, Table18from sqlalchemy import MetaData, String, Table
1919
20import datetime20from nova import utils
2121
22meta = MetaData()22meta = MetaData()
2323
@@ -35,9 +35,9 @@
35 return Table(name, meta,35 return Table(name, meta,
36 Column('id', Integer(), primary_key=True),36 Column('id', Integer(), primary_key=True),
37 Column('created_at', DateTime(),37 Column('created_at', DateTime(),
38 default=datetime.datetime.utcnow),38 default=utils.utcnow),
39 Column('updated_at', DateTime(),39 Column('updated_at', DateTime(),
40 onupdate=datetime.datetime.utcnow),40 onupdate=utils.utcnow),
41 Column('deleted_at', DateTime()),41 Column('deleted_at', DateTime()),
42 Column('deleted', Boolean(), default=False),42 Column('deleted', Boolean(), default=False),
43 Column('project_id',43 Column('project_id',
@@ -57,9 +57,9 @@
57 return Table(name, meta,57 return Table(name, meta,
58 Column('id', Integer(), primary_key=True),58 Column('id', Integer(), primary_key=True),
59 Column('created_at', DateTime(),59 Column('created_at', DateTime(),
60 default=datetime.datetime.utcnow),60 default=utils.utcnow),
61 Column('updated_at', DateTime(),61 Column('updated_at', DateTime(),
62 onupdate=datetime.datetime.utcnow),62 onupdate=utils.utcnow),
63 Column('deleted_at', DateTime()),63 Column('deleted_at', DateTime()),
64 Column('deleted', Boolean(), default=False),64 Column('deleted', Boolean(), default=False),
65 Column('project_id',65 Column('project_id',
6666
=== modified file 'nova/db/sqlalchemy/models.py'
--- nova/db/sqlalchemy/models.py 2011-05-27 04:50:20 +0000
+++ nova/db/sqlalchemy/models.py 2011-06-02 21:52:56 +0000
@@ -19,8 +19,6 @@
19SQLAlchemy models for nova data.19SQLAlchemy models for nova data.
20"""20"""
2121
22import datetime
23
24from sqlalchemy.orm import relationship, backref, object_mapper22from sqlalchemy.orm import relationship, backref, object_mapper
25from sqlalchemy import Column, Integer, String, schema23from sqlalchemy import Column, Integer, String, schema
26from sqlalchemy import ForeignKey, DateTime, Boolean, Text24from sqlalchemy import ForeignKey, DateTime, Boolean, Text
@@ -33,6 +31,7 @@
33from nova import auth31from nova import auth
34from nova import exception32from nova import exception
35from nova import flags33from nova import flags
34from nova import utils
3635
3736
38FLAGS = flags.FLAGS37FLAGS = flags.FLAGS
@@ -43,8 +42,8 @@
43 """Base class for Nova Models."""42 """Base class for Nova Models."""
44 __table_args__ = {'mysql_engine': 'InnoDB'}43 __table_args__ = {'mysql_engine': 'InnoDB'}
45 __table_initialized__ = False44 __table_initialized__ = False
46 created_at = Column(DateTime, default=datetime.datetime.utcnow)45 created_at = Column(DateTime, default=utils.utcnow)
47 updated_at = Column(DateTime, onupdate=datetime.datetime.utcnow)46 updated_at = Column(DateTime, onupdate=utils.utcnow)
48 deleted_at = Column(DateTime)47 deleted_at = Column(DateTime)
49 deleted = Column(Boolean, default=False)48 deleted = Column(Boolean, default=False)
5049
@@ -64,7 +63,7 @@
64 def delete(self, session=None):63 def delete(self, session=None):
65 """Delete this object."""64 """Delete this object."""
66 self.deleted = True65 self.deleted = True
67 self.deleted_at = datetime.datetime.utcnow()66 self.deleted_at = utils.utcnow()
68 self.save(session=session)67 self.save(session=session)
6968
70 def __setitem__(self, key, value):69 def __setitem__(self, key, value):
7170
=== modified file 'nova/network/manager.py'
--- nova/network/manager.py 2011-05-11 19:24:01 +0000
+++ nova/network/manager.py 2011-06-02 21:52:56 +0000
@@ -235,7 +235,7 @@
235 inst_addr = instance_ref['mac_address']235 inst_addr = instance_ref['mac_address']
236 raise exception.Error(_('IP %(address)s leased to bad mac'236 raise exception.Error(_('IP %(address)s leased to bad mac'
237 ' %(inst_addr)s vs %(mac)s') % locals())237 ' %(inst_addr)s vs %(mac)s') % locals())
238 now = datetime.datetime.utcnow()238 now = utils.utcnow()
239 self.db.fixed_ip_update(context,239 self.db.fixed_ip_update(context,
240 fixed_ip_ref['address'],240 fixed_ip_ref['address'],
241 {'leased': True,241 {'leased': True,
242242
=== modified file 'nova/notifier/api.py'
--- nova/notifier/api.py 2011-05-18 17:55:17 +0000
+++ nova/notifier/api.py 2011-06-02 21:52:56 +0000
@@ -11,9 +11,8 @@
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations13# License for the specific language governing permissions and limitations
14# under the License.import datetime14# under the License.
1515
16import datetime
17import uuid16import uuid
1817
19from nova import flags18from nova import flags
@@ -64,7 +63,7 @@
6463
65 {'message_id': str(uuid.uuid4()),64 {'message_id': str(uuid.uuid4()),
66 'publisher_id': 'compute.host1',65 'publisher_id': 'compute.host1',
67 'timestamp': datetime.datetime.utcnow(),66 'timestamp': utils.utcnow(),
68 'priority': 'WARN',67 'priority': 'WARN',
69 'event_type': 'compute.create_instance',68 'event_type': 'compute.create_instance',
70 'payload': {'instance_id': 12, ... }}69 'payload': {'instance_id': 12, ... }}
@@ -79,5 +78,5 @@
79 event_type=event_type,78 event_type=event_type,
80 priority=priority,79 priority=priority,
81 payload=payload,80 payload=payload,
82 timestamp=str(datetime.datetime.utcnow()))81 timestamp=str(utils.utcnow()))
83 driver.notify(msg)82 driver.notify(msg)
8483
=== modified file 'nova/scheduler/driver.py'
--- nova/scheduler/driver.py 2011-04-27 21:03:05 +0000
+++ nova/scheduler/driver.py 2011-06-02 21:52:56 +0000
@@ -28,6 +28,7 @@
28from nova import flags28from nova import flags
29from nova import log as logging29from nova import log as logging
30from nova import rpc30from nova import rpc
31from nova import utils
31from nova.compute import power_state32from nova.compute import power_state
3233
33FLAGS = flags.FLAGS34FLAGS = flags.FLAGS
@@ -61,7 +62,7 @@
61 """Check whether a service is up based on last heartbeat."""62 """Check whether a service is up based on last heartbeat."""
62 last_heartbeat = service['updated_at'] or service['created_at']63 last_heartbeat = service['updated_at'] or service['created_at']
63 # Timestamps in DB are UTC.64 # Timestamps in DB are UTC.
64 elapsed = datetime.datetime.utcnow() - last_heartbeat65 elapsed = utils.utcnow() - last_heartbeat
65 return elapsed < datetime.timedelta(seconds=FLAGS.service_down_time)66 return elapsed < datetime.timedelta(seconds=FLAGS.service_down_time)
6667
67 def hosts_up(self, context, topic):68 def hosts_up(self, context, topic):
6869
=== modified file 'nova/scheduler/simple.py'
--- nova/scheduler/simple.py 2011-03-31 19:29:16 +0000
+++ nova/scheduler/simple.py 2011-06-02 21:52:56 +0000
@@ -21,10 +21,9 @@
21Simple Scheduler21Simple Scheduler
22"""22"""
2323
24import datetime
25
26from nova import db24from nova import db
27from nova import flags25from nova import flags
26from nova import utils
28from nova.scheduler import driver27from nova.scheduler import driver
29from nova.scheduler import chance28from nova.scheduler import chance
3029
@@ -54,7 +53,7 @@
5453
55 # TODO(vish): this probably belongs in the manager, if we54 # TODO(vish): this probably belongs in the manager, if we
56 # can generalize this somehow55 # can generalize this somehow
57 now = datetime.datetime.utcnow()56 now = utils.utcnow()
58 db.instance_update(context, instance_id, {'host': host,57 db.instance_update(context, instance_id, {'host': host,
59 'scheduled_at': now})58 'scheduled_at': now})
60 return host59 return host
@@ -66,7 +65,7 @@
66 if self.service_is_up(service):65 if self.service_is_up(service):
67 # NOTE(vish): this probably belongs in the manager, if we66 # NOTE(vish): this probably belongs in the manager, if we
68 # can generalize this somehow67 # can generalize this somehow
69 now = datetime.datetime.utcnow()68 now = utils.utcnow()
70 db.instance_update(context,69 db.instance_update(context,
71 instance_id,70 instance_id,
72 {'host': service['host'],71 {'host': service['host'],
@@ -90,7 +89,7 @@
9089
91 # TODO(vish): this probably belongs in the manager, if we90 # TODO(vish): this probably belongs in the manager, if we
92 # can generalize this somehow91 # can generalize this somehow
93 now = datetime.datetime.utcnow()92 now = utils.utcnow()
94 db.volume_update(context, volume_id, {'host': host,93 db.volume_update(context, volume_id, {'host': host,
95 'scheduled_at': now})94 'scheduled_at': now})
96 return host95 return host
@@ -103,7 +102,7 @@
103 if self.service_is_up(service):102 if self.service_is_up(service):
104 # NOTE(vish): this probably belongs in the manager, if we103 # NOTE(vish): this probably belongs in the manager, if we
105 # can generalize this somehow104 # can generalize this somehow
106 now = datetime.datetime.utcnow()105 now = utils.utcnow()
107 db.volume_update(context,106 db.volume_update(context,
108 volume_id,107 volume_id,
109 {'host': service['host'],108 {'host': service['host'],
110109
=== modified file 'nova/scheduler/zone_manager.py'
--- nova/scheduler/zone_manager.py 2011-05-05 14:35:44 +0000
+++ nova/scheduler/zone_manager.py 2011-06-02 21:52:56 +0000
@@ -17,16 +17,17 @@
17ZoneManager oversees all communications with child Zones.17ZoneManager oversees all communications with child Zones.
18"""18"""
1919
20import datetime
20import novaclient21import novaclient
21import thread22import thread
22import traceback23import traceback
2324
24from datetime import datetime
25from eventlet import greenpool25from eventlet import greenpool
2626
27from nova import db27from nova import db
28from nova import flags28from nova import flags
29from nova import log as logging29from nova import log as logging
30from nova import utils
3031
31FLAGS = flags.FLAGS32FLAGS = flags.FLAGS
32flags.DEFINE_integer('zone_db_check_interval', 60,33flags.DEFINE_integer('zone_db_check_interval', 60,
@@ -42,7 +43,7 @@
42 self.name = None43 self.name = None
43 self.capabilities = None44 self.capabilities = None
44 self.attempt = 045 self.attempt = 0
45 self.last_seen = datetime.min46 self.last_seen = datetime.datetime.min
46 self.last_exception = None47 self.last_exception = None
47 self.last_exception_time = None48 self.last_exception_time = None
4849
@@ -56,7 +57,7 @@
56 def update_metadata(self, zone_metadata):57 def update_metadata(self, zone_metadata):
57 """Update zone metadata after successful communications with58 """Update zone metadata after successful communications with
58 child zone."""59 child zone."""
59 self.last_seen = datetime.now()60 self.last_seen = utils.utcnow()
60 self.attempt = 061 self.attempt = 0
61 self.name = zone_metadata.get("name", "n/a")62 self.name = zone_metadata.get("name", "n/a")
62 self.capabilities = ", ".join(["%s=%s" % (k, v)63 self.capabilities = ", ".join(["%s=%s" % (k, v)
@@ -72,7 +73,7 @@
72 """Something went wrong. Check to see if zone should be73 """Something went wrong. Check to see if zone should be
73 marked as offline."""74 marked as offline."""
74 self.last_exception = exception75 self.last_exception = exception
75 self.last_exception_time = datetime.now()76 self.last_exception_time = utils.utcnow()
76 api_url = self.api_url77 api_url = self.api_url
77 logging.warning(_("'%(exception)s' error talking to "78 logging.warning(_("'%(exception)s' error talking to "
78 "zone %(api_url)s") % locals())79 "zone %(api_url)s") % locals())
@@ -104,7 +105,7 @@
104class ZoneManager(object):105class ZoneManager(object):
105 """Keeps the zone states updated."""106 """Keeps the zone states updated."""
106 def __init__(self):107 def __init__(self):
107 self.last_zone_db_check = datetime.min108 self.last_zone_db_check = datetime.datetime.min
108 self.zone_states = {} # { <zone_id> : ZoneState }109 self.zone_states = {} # { <zone_id> : ZoneState }
109 self.service_states = {} # { <host> : { <service> : { cap k : v }}}110 self.service_states = {} # { <host> : { <service> : { cap k : v }}}
110 self.green_pool = greenpool.GreenPool()111 self.green_pool = greenpool.GreenPool()
@@ -158,10 +159,10 @@
158159
159 def ping(self, context=None):160 def ping(self, context=None):
160 """Ping should be called periodically to update zone status."""161 """Ping should be called periodically to update zone status."""
161 diff = datetime.now() - self.last_zone_db_check162 diff = utils.utcnow() - self.last_zone_db_check
162 if diff.seconds >= FLAGS.zone_db_check_interval:163 if diff.seconds >= FLAGS.zone_db_check_interval:
163 logging.debug(_("Updating zone cache from db."))164 logging.debug(_("Updating zone cache from db."))
164 self.last_zone_db_check = datetime.now()165 self.last_zone_db_check = utils.utcnow()
165 self._refresh_from_db(context)166 self._refresh_from_db(context)
166 self._poll_zones(context)167 self._poll_zones(context)
167168
168169
=== modified file 'nova/test.py'
--- nova/test.py 2011-05-25 22:42:49 +0000
+++ nova/test.py 2011-06-02 21:52:56 +0000
@@ -23,7 +23,6 @@
2323
24"""24"""
2525
26import datetime
27import functools26import functools
28import os27import os
29import shutil28import shutil
@@ -37,6 +36,7 @@
37from nova import fakerabbit36from nova import fakerabbit
38from nova import flags37from nova import flags
39from nova import rpc38from nova import rpc
39from nova import utils
40from nova import service40from nova import service
41from nova import wsgi41from nova import wsgi
42from nova.virt import fake42from nova.virt import fake
@@ -69,7 +69,7 @@
69 # NOTE(vish): We need a better method for creating fixtures for tests69 # NOTE(vish): We need a better method for creating fixtures for tests
70 # now that we have some required db setup for the system70 # now that we have some required db setup for the system
71 # to work properly.71 # to work properly.
72 self.start = datetime.datetime.utcnow()72 self.start = utils.utcnow()
73 shutil.copyfile(os.path.join(FLAGS.state_path, FLAGS.sqlite_clean_db),73 shutil.copyfile(os.path.join(FLAGS.state_path, FLAGS.sqlite_clean_db),
74 os.path.join(FLAGS.state_path, FLAGS.sqlite_db))74 os.path.join(FLAGS.state_path, FLAGS.sqlite_db))
7575
7676
=== modified file 'nova/tests/api/openstack/fakes.py'
--- nova/tests/api/openstack/fakes.py 2011-05-24 20:44:28 +0000
+++ nova/tests/api/openstack/fakes.py 2011-06-02 21:52:56 +0000
@@ -16,7 +16,6 @@
16# under the License.16# under the License.
1717
18import copy18import copy
19import datetime
20import json19import json
21import random20import random
22import string21import string
@@ -253,7 +252,7 @@
253252
254 @staticmethod253 @staticmethod
255 def auth_token_create(context, token):254 def auth_token_create(context, token):
256 fake_token = FakeToken(created_at=datetime.datetime.now(), **token)255 fake_token = FakeToken(created_at=utils.utcnow(), **token)
257 FakeAuthDatabase.data[fake_token.token_hash] = fake_token256 FakeAuthDatabase.data[fake_token.token_hash] = fake_token
258 FakeAuthDatabase.data['id_%i' % fake_token.id] = fake_token257 FakeAuthDatabase.data['id_%i' % fake_token.id] = fake_token
259 return fake_token258 return fake_token
260259
=== modified file 'nova/tests/api/openstack/test_images.py'
--- nova/tests/api/openstack/test_images.py 2011-05-26 17:59:25 +0000
+++ nova/tests/api/openstack/test_images.py 2011-06-02 21:52:56 +0000
@@ -22,7 +22,6 @@
2222
23import copy23import copy
24import json24import json
25import datetime
26import os25import os
27import shutil26import shutil
28import tempfile27import tempfile
2928
=== modified file 'nova/tests/api/openstack/test_servers.py'
--- nova/tests/api/openstack/test_servers.py 2011-06-01 22:46:01 +0000
+++ nova/tests/api/openstack/test_servers.py 2011-06-02 21:52:56 +0000
@@ -16,7 +16,6 @@
16# under the License.16# under the License.
1717
18import base6418import base64
19import datetime
20import json19import json
21import unittest20import unittest
22from xml.dom import minidom21from xml.dom import minidom
@@ -29,6 +28,7 @@
29from nova import exception28from nova import exception
30from nova import flags29from nova import flags
31from nova import test30from nova import test
31from nova import utils
32import nova.api.openstack32import nova.api.openstack
33from nova.api.openstack import servers33from nova.api.openstack import servers
34import nova.compute.api34import nova.compute.api
@@ -114,9 +114,9 @@
114 "user_data": "",114 "user_data": "",
115 "reservation_id": "",115 "reservation_id": "",
116 "mac_address": "",116 "mac_address": "",
117 "scheduled_at": datetime.datetime.now(),117 "scheduled_at": utils.utcnow(),
118 "launched_at": datetime.datetime.now(),118 "launched_at": utils.utcnow(),
119 "terminated_at": datetime.datetime.now(),119 "terminated_at": utils.utcnow(),
120 "availability_zone": "",120 "availability_zone": "",
121 "display_name": "server%s" % id,121 "display_name": "server%s" % id,
122 "display_description": "",122 "display_description": "",
123123
=== modified file 'nova/tests/test_compute.py'
--- nova/tests/test_compute.py 2011-05-11 19:41:39 +0000
+++ nova/tests/test_compute.py 2011-06-02 21:52:56 +0000
@@ -19,7 +19,6 @@
19Tests For Compute19Tests For Compute
20"""20"""
2121
22import datetime
23import mox22import mox
24import stubout23import stubout
2524
@@ -217,12 +216,12 @@
217 instance_ref = db.instance_get(self.context, instance_id)216 instance_ref = db.instance_get(self.context, instance_id)
218 self.assertEqual(instance_ref['launched_at'], None)217 self.assertEqual(instance_ref['launched_at'], None)
219 self.assertEqual(instance_ref['deleted_at'], None)218 self.assertEqual(instance_ref['deleted_at'], None)
220 launch = datetime.datetime.utcnow()219 launch = utils.utcnow()
221 self.compute.run_instance(self.context, instance_id)220 self.compute.run_instance(self.context, instance_id)
222 instance_ref = db.instance_get(self.context, instance_id)221 instance_ref = db.instance_get(self.context, instance_id)
223 self.assert_(instance_ref['launched_at'] > launch)222 self.assert_(instance_ref['launched_at'] > launch)
224 self.assertEqual(instance_ref['deleted_at'], None)223 self.assertEqual(instance_ref['deleted_at'], None)
225 terminate = datetime.datetime.utcnow()224 terminate = utils.utcnow()
226 self.compute.terminate_instance(self.context, instance_id)225 self.compute.terminate_instance(self.context, instance_id)
227 self.context = self.context.elevated(True)226 self.context = self.context.elevated(True)
228 instance_ref = db.instance_get(self.context, instance_id)227 instance_ref = db.instance_get(self.context, instance_id)
229228
=== modified file 'nova/tests/test_console.py'
--- nova/tests/test_console.py 2011-04-04 20:17:04 +0000
+++ nova/tests/test_console.py 2011-06-02 21:52:56 +0000
@@ -20,8 +20,6 @@
20Tests For Console proxy.20Tests For Console proxy.
21"""21"""
2222
23import datetime
24
25from nova import context23from nova import context
26from nova import db24from nova import db
27from nova import exception25from nova import exception
2826
=== modified file 'nova/tests/test_middleware.py'
--- nova/tests/test_middleware.py 2011-03-18 13:56:05 +0000
+++ nova/tests/test_middleware.py 2011-06-02 21:52:56 +0000
@@ -16,7 +16,6 @@
16# License for the specific language governing permissions and limitations16# License for the specific language governing permissions and limitations
17# under the License.17# under the License.
1818
19import datetime
20import webob19import webob
21import webob.dec20import webob.dec
22import webob.exc21import webob.exc
2322
=== modified file 'nova/tests/test_scheduler.py'
--- nova/tests/test_scheduler.py 2011-05-13 01:07:54 +0000
+++ nova/tests/test_scheduler.py 2011-06-02 21:52:56 +0000
@@ -196,7 +196,7 @@
196 service.topic = 'compute'196 service.topic = 'compute'
197 service.id = kwargs['id']197 service.id = kwargs['id']
198 service.availability_zone = kwargs['zone']198 service.availability_zone = kwargs['zone']
199 service.created_at = datetime.datetime.utcnow()199 service.created_at = utils.utcnow()
200 return service200 return service
201201
202 def test_with_two_zones(self):202 def test_with_two_zones(self):
@@ -290,7 +290,7 @@
290 dic['host'] = kwargs.get('host', 'dummy')290 dic['host'] = kwargs.get('host', 'dummy')
291 s_ref = db.service_create(self.context, dic)291 s_ref = db.service_create(self.context, dic)
292 if 'created_at' in kwargs.keys() or 'updated_at' in kwargs.keys():292 if 'created_at' in kwargs.keys() or 'updated_at' in kwargs.keys():
293 t = datetime.datetime.utcnow() - datetime.timedelta(0)293 t = utils.utcnow() - datetime.timedelta(0)
294 dic['created_at'] = kwargs.get('created_at', t)294 dic['created_at'] = kwargs.get('created_at', t)
295 dic['updated_at'] = kwargs.get('updated_at', t)295 dic['updated_at'] = kwargs.get('updated_at', t)
296 db.service_update(self.context, s_ref['id'], dic)296 db.service_update(self.context, s_ref['id'], dic)
@@ -401,7 +401,7 @@
401 FLAGS.compute_manager)401 FLAGS.compute_manager)
402 compute1.start()402 compute1.start()
403 s1 = db.service_get_by_args(self.context, 'host1', 'nova-compute')403 s1 = db.service_get_by_args(self.context, 'host1', 'nova-compute')
404 now = datetime.datetime.utcnow()404 now = utils.utcnow()
405 delta = datetime.timedelta(seconds=FLAGS.service_down_time * 2)405 delta = datetime.timedelta(seconds=FLAGS.service_down_time * 2)
406 past = now - delta406 past = now - delta
407 db.service_update(self.context, s1['id'], {'updated_at': past})407 db.service_update(self.context, s1['id'], {'updated_at': past})
@@ -542,7 +542,7 @@
542 def test_wont_sechedule_if_specified_host_is_down(self):542 def test_wont_sechedule_if_specified_host_is_down(self):
543 compute1 = self.start_service('compute', host='host1')543 compute1 = self.start_service('compute', host='host1')
544 s1 = db.service_get_by_args(self.context, 'host1', 'nova-compute')544 s1 = db.service_get_by_args(self.context, 'host1', 'nova-compute')
545 now = datetime.datetime.utcnow()545 now = utils.utcnow()
546 delta = datetime.timedelta(seconds=FLAGS.service_down_time * 2)546 delta = datetime.timedelta(seconds=FLAGS.service_down_time * 2)
547 past = now - delta547 past = now - delta
548 db.service_update(self.context, s1['id'], {'updated_at': past})548 db.service_update(self.context, s1['id'], {'updated_at': past})
@@ -692,7 +692,7 @@
692 dic = {'instance_id': instance_id, 'size': 1}692 dic = {'instance_id': instance_id, 'size': 1}
693 v_ref = db.volume_create(self.context, {'instance_id': instance_id,693 v_ref = db.volume_create(self.context, {'instance_id': instance_id,
694 'size': 1})694 'size': 1})
695 t1 = datetime.datetime.utcnow() - datetime.timedelta(1)695 t1 = utils.utcnow() - datetime.timedelta(1)
696 dic = {'created_at': t1, 'updated_at': t1, 'binary': 'nova-volume',696 dic = {'created_at': t1, 'updated_at': t1, 'binary': 'nova-volume',
697 'topic': 'volume', 'report_count': 0}697 'topic': 'volume', 'report_count': 0}
698 s_ref = db.service_create(self.context, dic)698 s_ref = db.service_create(self.context, dic)
@@ -709,7 +709,7 @@
709 """Confirms src-compute node is alive."""709 """Confirms src-compute node is alive."""
710 instance_id = self._create_instance()710 instance_id = self._create_instance()
711 i_ref = db.instance_get(self.context, instance_id)711 i_ref = db.instance_get(self.context, instance_id)
712 t = datetime.datetime.utcnow() - datetime.timedelta(10)712 t = utils.utcnow() - datetime.timedelta(10)
713 s_ref = self._create_compute_service(created_at=t, updated_at=t,713 s_ref = self._create_compute_service(created_at=t, updated_at=t,
714 host=i_ref['host'])714 host=i_ref['host'])
715715
@@ -737,7 +737,7 @@
737 """Confirms exception raises in case dest host does not exist."""737 """Confirms exception raises in case dest host does not exist."""
738 instance_id = self._create_instance()738 instance_id = self._create_instance()
739 i_ref = db.instance_get(self.context, instance_id)739 i_ref = db.instance_get(self.context, instance_id)
740 t = datetime.datetime.utcnow() - datetime.timedelta(10)740 t = utils.utcnow() - datetime.timedelta(10)
741 s_ref = self._create_compute_service(created_at=t, updated_at=t,741 s_ref = self._create_compute_service(created_at=t, updated_at=t,
742 host=i_ref['host'])742 host=i_ref['host'])
743743
@@ -796,7 +796,7 @@
796 # mocks for live_migration_common_check()796 # mocks for live_migration_common_check()
797 instance_id = self._create_instance()797 instance_id = self._create_instance()
798 i_ref = db.instance_get(self.context, instance_id)798 i_ref = db.instance_get(self.context, instance_id)
799 t1 = datetime.datetime.utcnow() - datetime.timedelta(10)799 t1 = utils.utcnow() - datetime.timedelta(10)
800 s_ref = self._create_compute_service(created_at=t1, updated_at=t1,800 s_ref = self._create_compute_service(created_at=t1, updated_at=t1,
801 host=dest)801 host=dest)
802802
803803
=== modified file 'nova/utils.py'
--- nova/utils.py 2011-05-16 18:14:03 +0000
+++ nova/utils.py 2011-06-02 21:52:56 +0000
@@ -307,7 +307,7 @@
307307
308308
309def utcnow():309def utcnow():
310 """Overridable version of datetime.datetime.utcnow."""310 """Overridable version of utils.utcnow."""
311 if utcnow.override_time:311 if utcnow.override_time:
312 return utcnow.override_time312 return utcnow.override_time
313 return datetime.datetime.utcnow()313 return datetime.datetime.utcnow()
314314
=== modified file 'nova/virt/xenapi/fake.py'
--- nova/virt/xenapi/fake.py 2011-05-26 19:27:27 +0000
+++ nova/virt/xenapi/fake.py 2011-06-02 21:52:56 +0000
@@ -51,13 +51,13 @@
51"""51"""
5252
5353
54import datetime
55import uuid54import uuid
5655
57from pprint import pformat56from pprint import pformat
5857
59from nova import exception58from nova import exception
60from nova import log as logging59from nova import log as logging
60from nova import utils
6161
6262
63_CLASSES = ['host', 'network', 'session', 'SR', 'VBD',63_CLASSES = ['host', 'network', 'session', 'SR', 'VBD',
@@ -540,7 +540,7 @@
540 except Failure, exc:540 except Failure, exc:
541 task['error_info'] = exc.details541 task['error_info'] = exc.details
542 task['status'] = 'failed'542 task['status'] = 'failed'
543 task['finished'] = datetime.datetime.now()543 task['finished'] = utils.utcnow()
544 return task_ref544 return task_ref
545545
546 def _check_session(self, params):546 def _check_session(self, params):
547547
=== modified file 'nova/volume/api.py'
--- nova/volume/api.py 2011-05-27 05:13:17 +0000
+++ nova/volume/api.py 2011-06-02 21:52:56 +0000
@@ -20,14 +20,13 @@
20Handles all requests relating to volumes.20Handles all requests relating to volumes.
21"""21"""
2222
23import datetime
2423
25from nova import db
26from nova import exception24from nova import exception
27from nova import flags25from nova import flags
28from nova import log as logging26from nova import log as logging
29from nova import quota27from nova import quota
30from nova import rpc28from nova import rpc
29from nova import utils
31from nova.db import base30from nova.db import base
3231
33FLAGS = flags.FLAGS32FLAGS = flags.FLAGS
@@ -78,7 +77,7 @@
78 volume = self.get(context, volume_id)77 volume = self.get(context, volume_id)
79 if volume['status'] != "available":78 if volume['status'] != "available":
80 raise exception.ApiError(_("Volume status must be available"))79 raise exception.ApiError(_("Volume status must be available"))
81 now = datetime.datetime.utcnow()80 now = utils.utcnow()
82 self.db.volume_update(context, volume_id, {'status': 'deleting',81 self.db.volume_update(context, volume_id, {'status': 'deleting',
83 'terminated_at': now})82 'terminated_at': now})
84 host = volume['host']83 host = volume['host']
8584
=== modified file 'nova/volume/manager.py'
--- nova/volume/manager.py 2011-05-27 05:13:17 +0000
+++ nova/volume/manager.py 2011-06-02 21:52:56 +0000
@@ -42,8 +42,6 @@
4242
43"""43"""
4444
45import datetime
46
4745
48from nova import context46from nova import context
49from nova import exception47from nova import exception
@@ -127,7 +125,7 @@
127 volume_ref['id'], {'status': 'error'})125 volume_ref['id'], {'status': 'error'})
128 raise126 raise
129127
130 now = datetime.datetime.utcnow()128 now = utils.utcnow()
131 self.db.volume_update(context,129 self.db.volume_update(context,
132 volume_ref['id'], {'status': 'available',130 volume_ref['id'], {'status': 'available',
133 'launched_at': now})131 'launched_at': now})