merged from trunk

This commit is contained in:
Chris Behrens
2010-08-05 10:31:14 -05:00
2 changed files with 15 additions and 16 deletions

View File

@@ -295,17 +295,16 @@ class CloudController(object):
return v return v
@rbac.allow('projectmanager', 'sysadmin') @rbac.allow('projectmanager', 'sysadmin')
@defer.inlineCallbacks
def create_volume(self, context, size, **kwargs): def create_volume(self, context, size, **kwargs):
# TODO(vish): refactor this to create the volume object here and tell service to create it # TODO(vish): refactor this to create the volume object here and tell service to create it
res = rpc.call(FLAGS.volume_topic, {"method": "create_volume", result = yield rpc.call(FLAGS.volume_topic, {"method": "create_volume",
"args" : {"size": size, "args" : {"size": size,
"user_id": context.user.id, "user_id": context.user.id,
"project_id": context.project.id}}) "project_id": context.project.id}})
def _format_result(result): # NOTE(vish): rpc returned value is in the result key in the dictionary
volume = self._get_volume(context, result['result']) volume = self._get_volume(context, result['result'])
return {'volumeSet': [self.format_volume(context, volume)]} defer.returnValue({'volumeSet': [self.format_volume(context, volume)]})
res.addCallback(_format_result)
return res
def _get_address(self, context, public_ip): def _get_address(self, context, public_ip):
# FIXME(vish) this should move into network.py # FIXME(vish) this should move into network.py

View File

@@ -42,15 +42,14 @@ class VolumeTestCase(test.TrialTestCase):
vol_size = '0' vol_size = '0'
user_id = 'fake' user_id = 'fake'
project_id = 'fake' project_id = 'fake'
volume_id = self.volume.create_volume(vol_size, user_id, project_id) volume_id = yield self.volume.create_volume(vol_size, user_id, project_id)
# TODO(termie): get_volume returns differently than create_volume # TODO(termie): get_volume returns differently than create_volume
self.assertEqual(volume_id, self.assertEqual(volume_id,
volume_service.get_volume(volume_id)['volume_id']) volume_service.get_volume(volume_id)['volume_id'])
rv = self.volume.delete_volume(volume_id) rv = self.volume.delete_volume(volume_id)
self.assertRaises(exception.Error, self.assertFailure(volume_service.get_volume(volume_id),
volume_service.get_volume, exception.Error)
volume_id)
def test_too_big_volume(self): def test_too_big_volume(self):
vol_size = '1001' vol_size = '1001'
@@ -68,13 +67,14 @@ class VolumeTestCase(test.TrialTestCase):
total_slots = FLAGS.slots_per_shelf * num_shelves total_slots = FLAGS.slots_per_shelf * num_shelves
vols = [] vols = []
for i in xrange(total_slots): for i in xrange(total_slots):
vid = self.volume.create_volume(vol_size, user_id, project_id) vid = yield self.volume.create_volume(vol_size, user_id, project_id)
vols.append(vid) vols.append(vid)
self.assertRaises(volume_service.NoMoreVolumes, self.assertFailure(self.volume.create_volume(vol_size,
self.volume.create_volume, user_id,
vol_size, user_id, project_id) project_id),
volume_service.NoMoreVolumes)
for id in vols: for id in vols:
self.volume.delete_volume(id) yield self.volume.delete_volume(id)
def test_run_attach_detach_volume(self): def test_run_attach_detach_volume(self):
# Create one volume and one compute to test with # Create one volume and one compute to test with
@@ -83,7 +83,7 @@ class VolumeTestCase(test.TrialTestCase):
user_id = "fake" user_id = "fake"
project_id = 'fake' project_id = 'fake'
mountpoint = "/dev/sdf" mountpoint = "/dev/sdf"
volume_id = self.volume.create_volume(vol_size, user_id, project_id) volume_id = yield self.volume.create_volume(vol_size, user_id, project_id)
volume_obj = volume_service.get_volume(volume_id) volume_obj = volume_service.get_volume(volume_id)
volume_obj.start_attach(instance_id, mountpoint) volume_obj.start_attach(instance_id, mountpoint)