summaryrefslogtreecommitdiffstats
path: root/nova/volume
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@gmail.com>2010-06-28 16:01:09 -0700
committerVishvananda Ishaya <vishvananda@gmail.com>2010-06-28 16:01:09 -0700
commit286c0a6b7ae5d28792ed4e3377ecfb8f9e66aa5b (patch)
treed070246a1d9ea4a6c2ff636b59b3f8940d170fa5 /nova/volume
parent72ccc08d22aadd596a413900b6086a6f7d1a044d (diff)
downloadnova-286c0a6b7ae5d28792ed4e3377ecfb8f9e66aa5b.tar.gz
nova-286c0a6b7ae5d28792ed4e3377ecfb8f9e66aa5b.tar.xz
nova-286c0a6b7ae5d28792ed4e3377ecfb8f9e66aa5b.zip
simplified handling of tempdir for Fakes
Diffstat (limited to 'nova/volume')
-rw-r--r--nova/volume/storage.py32
1 files changed, 14 insertions, 18 deletions
diff --git a/nova/volume/storage.py b/nova/volume/storage.py
index fa1cdfaec..594881a24 100644
--- a/nova/volume/storage.py
+++ b/nova/volume/storage.py
@@ -59,6 +59,9 @@ flags.DEFINE_integer('first_shelf_id',
flags.DEFINE_integer('last_shelf_id',
utils.last_octet(utils.get_my_ip()) * 10 + 9,
'AoE starting shelf_id for this node')
+flags.DEFINE_string('aoe_export_dir',
+ '/var/lib/vblade-persist/vblades',
+ 'AoE directory where exports are created')
flags.DEFINE_integer('slots_per_shelf',
16,
'Number of AoE slots per shelf')
@@ -91,15 +94,14 @@ class BlockStore(object):
def __init__(self):
super(BlockStore, self).__init__()
self.volume_class = Volume
- self.export_dir = "/var/lib/vblade-persist/vblades"
if FLAGS.fake_storage:
- self.export_dir = tempfile.mkdtemp()
+ FLAGS.aoe_export_dir = tempfile.mkdtemp()
self.volume_class = FakeVolume
self._init_volume_group()
def __del__(self):
if FLAGS.fake_storage:
- shutil.rmtree(self.export_dir)
+ shutil.rmtree(FLAGS.aoe_export_dir)
def report_state(self):
#TODO: aggregate the state of the system
@@ -113,10 +115,7 @@ class BlockStore(object):
Volume at this point has size, owner, and zone.
"""
logging.debug("Creating volume of size: %s" % (size))
- vol = self.volume_class.create(size,
- user_id,
- project_id,
- self.export_dir)
+ vol = self.volume_class.create(size, user_id, project_id)
datastore.Redis.instance().sadd('volumes', vol['volume_id'])
datastore.Redis.instance().sadd('volumes:%s' % (FLAGS.storage_name), vol['volume_id'])
self._restart_exports()
@@ -161,16 +160,13 @@ class Volume(datastore.RedisModel):
object_type = 'volume'
- def __init__(self,
- volume_id=None,
- export_dir="/var/lib/vblade-persist/vblades"):
- self.export_dir = export_dir
+ def __init__(self, volume_id=None):
super(Volume, self).__init__(object_id=volume_id)
@classmethod
- def create(cls, size, user_id, project_id, export_dir=None):
+ def create(cls, size, user_id, project_id):
volume_id = utils.generate_uid('vol')
- vol = cls(volume_id=volume_id, export_dir=export_dir)
+ vol = cls(volume_id=volume_id)
vol['volume_id'] = volume_id
vol['node_name'] = FLAGS.storage_name
vol['size'] = size
@@ -239,7 +235,7 @@ class Volume(datastore.RedisModel):
utils.runthis("Removing LV: %s", "sudo lvremove -f %s/%s" % (FLAGS.volume_group, self['volume_id']))
def _setup_export(self):
- (shelf_id, blade_id ) = get_next_aoe_numbers(self.export_dir)
+ (shelf_id, blade_id ) = get_next_aoe_numbers()
self['aoe_device'] = "e%s.%s" % (shelf_id, blade_id)
self['shelf_id'] = shelf_id
self['blade_id'] = blade_id
@@ -264,7 +260,7 @@ class FakeVolume(Volume):
pass
def _exec_export(self):
- fname = os.path.join(self.export_dir, self['aoe_device'])
+ fname = os.path.join(FLAGS.aoe_export_dir, self['aoe_device'])
with file(fname, "w"):
pass
@@ -274,14 +270,14 @@ class FakeVolume(Volume):
def _delete_lv(self):
pass
-def get_next_aoe_numbers(dir):
+def get_next_aoe_numbers():
for shelf_id in xrange(FLAGS.first_shelf_id, FLAGS.last_shelf_id + 1):
- aoes = glob.glob("%s/e%s.*" % (dir, shelf_id))
+ aoes = glob.glob("%s/e%s.*" % (FLAGS.aoe_export_dir, shelf_id))
if not aoes:
blade_id = 0
else:
blade_id = int(max([int(a.rpartition('.')[2]) for a in aoes])) + 1
if blade_id < FLAGS.slots_per_shelf:
- print("Next shelf.blade is %s.%s" % (shelf_id, blade_id))
+ logging.debug("Next shelf.blade is %s.%s" % (shelf_id, blade_id))
return (shelf_id, blade_id)
raise NoMoreVolumes()