summaryrefslogtreecommitdiffstats
path: root/nova/volume
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@yahoo.com>2010-10-25 03:11:00 -0700
committerVishvananda Ishaya <vishvananda@yahoo.com>2010-10-25 03:11:00 -0700
commit43a545a8bd8f763eba7741a240c29da447aef61e (patch)
treed99eab3234191bc9431d1c0a23c6bc02263ab2a0 /nova/volume
parentbde0d8d0f0e864d5b5d0f87e55ab23839846f71e (diff)
more bugfixes, flag for local volumes
Diffstat (limited to 'nova/volume')
-rw-r--r--nova/volume/driver.py9
-rw-r--r--nova/volume/manager.py12
2 files changed, 12 insertions, 9 deletions
diff --git a/nova/volume/driver.py b/nova/volume/driver.py
index eff56d9c6..bffe4d6b5 100644
--- a/nova/volume/driver.py
+++ b/nova/volume/driver.py
@@ -49,8 +49,8 @@ flags.DEFINE_integer('iscsi_target_ids',
'Number of iscsi target ids per host')
flags.DEFINE_string('iscsi_target_prefix', 'iqn.2010-10.org.openstack:',
'prefix for iscsi volumes')
-flags.DEFINE_string('iscsi_ip_prefix', '127.0.0',
- 'only connect to the specified ip')
+flags.DEFINE_string('iscsi_ip_prefix', '127.0',
+ 'discover volumes on the ip that starts with this prefix')
class VolumeDriver(object):
@@ -107,6 +107,7 @@ class VolumeDriver(object):
@defer.inlineCallbacks
def local_path(self, volume):
+ yield # NOTE(vish): stops deprecation warning
defer.returnValue("/dev/%s/%s" % (FLAGS.volume_group, volume['name']))
def ensure_export(self, context, volume):
@@ -261,7 +262,7 @@ class ISCSIDriver(VolumeDriver):
@defer.inlineCallbacks
def remove_export(self, context, volume):
"""Removes an export for a logical volume"""
- target_id = self.db.volume_get_target_id(context, volume['name'])
+ target_id = self.db.volume_get_target_id(context, volume['id'])
yield self._execute("sudo ietadm --op delete --tid=%s "
"--lun=0" % target_id)
yield self._execute("sudo ietadm --op delete --tid=%s" %
@@ -282,7 +283,7 @@ class ISCSIDriver(VolumeDriver):
def discover_volume(self, volume):
"""Discover volume on a remote host"""
(iscsi_name,
- iscsi_portal) = yield self._get_name_and_portal(volume['id'],
+ iscsi_portal) = yield self._get_name_and_portal(volume['name'],
volume['host'])
yield self._execute("sudo iscsiadm -m node -T %s -p %s --login" %
(iscsi_name, iscsi_portal))
diff --git a/nova/volume/manager.py b/nova/volume/manager.py
index f6146efe9..bc49e28ee 100644
--- a/nova/volume/manager.py
+++ b/nova/volume/manager.py
@@ -39,6 +39,8 @@ flags.DEFINE_string('storage_availability_zone',
'availability zone of this service')
flags.DEFINE_string('volume_driver', 'nova.volume.driver.ISCSIDriver',
'Driver to use for volume creation')
+flags.DEFINE_boolean('use_local_volumes', True,
+ 'if True, will not discover local volumes')
class VolumeManager(manager.Manager):
@@ -61,7 +63,7 @@ class VolumeManager(manager.Manager):
volumes = self.db.volume_get_all_by_host(ctxt, self.host)
logging.debug("Re-exporting %s volumes", len(volumes))
for volume in volumes:
- self.driver.ensure_export(context, volume)
+ self.driver.ensure_export(ctxt, volume)
@defer.inlineCallbacks
def create_volume(self, context, volume_id):
@@ -100,6 +102,8 @@ class VolumeManager(manager.Manager):
raise exception.Error("Volume is still attached")
if volume_ref['host'] != self.host:
raise exception.Error("Volume is not local to this node")
+ logging.debug("volume %s: removing export", volume_ref['name'])
+ yield self.driver.remove_export(context, volume_ref)
logging.debug("volume %s: deleting", volume_ref['name'])
yield self.driver.delete_volume(volume_ref)
self.db.volume_destroy(context, volume_id)
@@ -114,8 +118,7 @@ class VolumeManager(manager.Manager):
"""
context = context.elevated()
volume_ref = self.db.volume_get(context, volume_id)
- if volume_ref['host'] == self.host:
- # NOTE(vish): No need to discover local volumes.
+ if volume_ref['host'] == self.host and FLAGS.use_local_volumes:
path = yield self.driver.local_path(volume_ref)
else:
path = yield self.driver.discover_volume(volume_ref)
@@ -126,8 +129,7 @@ class VolumeManager(manager.Manager):
"""Remove remote volume on compute host """
context = context.elevated()
volume_ref = self.db.volume_get(context, volume_id)
- if volume_ref['host'] == self.host:
- # NOTE(vish): No need to undiscover local volumes.
+ if volume_ref['host'] == self.host and FLAGS.use_local_volumes:
defer.returnValue(True)
else:
yield self.driver.undiscover_volume(volume_ref)