summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArathi <arathi_darshanam@persistent.co.in>2012-09-26 11:04:20 +0530
committerArathi <arathi_darshanam@persistent.co.in>2012-09-26 14:22:16 +0530
commitee2dd66c9c2350d9c4aa4ae535daed7e8d72dfb3 (patch)
treed6453952386b02f28454f6769ab8650d2aba9266
parentc367fa5e4a5e4712bde9fc319ae6c2f4f2add606 (diff)
downloadnova-ee2dd66c9c2350d9c4aa4ae535daed7e8d72dfb3.tar.gz
nova-ee2dd66c9c2350d9c4aa4ae535daed7e8d72dfb3.tar.xz
nova-ee2dd66c9c2350d9c4aa4ae535daed7e8d72dfb3.zip
Updated code to update attach_time of a volume while detaching
While detaching volume from an instance, attach_time of the volume is not updated. This task updates volume['attach_time'] to NONE at detach_volume. Also modified the default value of XML attribute volume['attach_time'] '-' to ''(a 0 length string) to maintain consistency with existing code. Fixes bug: 1056122 Change-Id: If56ceda6caab80fb803fcf194ed1dfb18808ec3a
-rw-r--r--nova/api/ec2/cloud.py2
-rw-r--r--nova/db/sqlalchemy/api.py1
-rw-r--r--nova/tests/api/ec2/test_cloud.py2
-rw-r--r--nova/tests/test_volume.py2
4 files changed, 6 insertions, 1 deletions
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py
index 5cb07eeac..7c742b034 100644
--- a/nova/api/ec2/cloud.py
+++ b/nova/api/ec2/cloud.py
@@ -978,7 +978,7 @@ class CloudController(object):
# TODO(yamahata): volume attach time
ebs = {'volumeId': volume_id,
'deleteOnTermination': bdm['delete_on_termination'],
- 'attachTime': vol['attach_time'] or '-',
+ 'attachTime': vol['attach_time'] or '',
'status': vol['status'], }
res = {'deviceName': bdm['device_name'],
'ebs': ebs, }
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 3798cade8..39f1f8be0 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -2981,6 +2981,7 @@ def volume_detached(context, volume_id):
volume_ref['mountpoint'] = None
volume_ref['attach_status'] = 'detached'
volume_ref['instance_uuid'] = None
+ volume_ref['attach_time'] = None
volume_ref.save(session=session)
diff --git a/nova/tests/api/ec2/test_cloud.py b/nova/tests/api/ec2/test_cloud.py
index 979409077..9b83c3bca 100644
--- a/nova/tests/api/ec2/test_cloud.py
+++ b/nova/tests/api/ec2/test_cloud.py
@@ -2051,12 +2051,14 @@ class CloudTestCase(test.TestCase):
self.assertEqual(vol['mountpoint'], mountpoint)
self.assertEqual(vol['status'], "in-use")
self.assertEqual(vol['attach_status'], "attached")
+ self.assertNotEqual(vol['attach_time'], None)
def _assert_volume_detached(self, vol):
self.assertEqual(vol['instance_uuid'], None)
self.assertEqual(vol['mountpoint'], None)
self.assertEqual(vol['status'], "available")
self.assertEqual(vol['attach_status'], "detached")
+ self.assertEqual(vol['attach_time'], None)
def test_stop_start_with_volume(self):
"""Make sure run instance with block device mapping works"""
diff --git a/nova/tests/test_volume.py b/nova/tests/test_volume.py
index 0c5328456..7b14d8a99 100644
--- a/nova/tests/test_volume.py
+++ b/nova/tests/test_volume.py
@@ -273,6 +273,7 @@ class VolumeTestCase(test.TestCase):
self.assertEqual(vol['attach_status'], "attached")
self.assertEqual(vol['mountpoint'], mountpoint)
self.assertEqual(vol['instance_uuid'], instance_uuid)
+ self.assertNotEqual(vol['attach_time'], None)
self.assertRaises(exception.VolumeAttached,
self.volume.delete_volume,
@@ -286,6 +287,7 @@ class VolumeTestCase(test.TestCase):
volume_id)
vol = db.volume_get(self.context, volume_id)
self.assertEqual(vol['status'], "available")
+ self.assertEqual(vol['attach_time'], None)
self.volume.delete_volume(self.context, volume_id)
self.assertRaises(exception.VolumeNotFound,