summaryrefslogtreecommitdiffstats
path: root/nova/db
diff options
context:
space:
mode:
authorEric Day <eday@oddments.org>2010-12-27 12:19:36 -0800
committerEric Day <eday@oddments.org>2010-12-27 12:19:36 -0800
commit6debe20395d6ab476bfd2a237df8c2b08050e0e6 (patch)
tree3a57b37305c8fe185c0b2081bc8f58fc9c79df8d /nova/db
parent89000675dfe321240b3dae53604ba87115a3ca3e (diff)
downloadnova-6debe20395d6ab476bfd2a237df8c2b08050e0e6.tar.gz
nova-6debe20395d6ab476bfd2a237df8c2b08050e0e6.tar.xz
nova-6debe20395d6ab476bfd2a237df8c2b08050e0e6.zip
Converted Volume model and operation to use UUIDs.
Diffstat (limited to 'nova/db')
-rw-r--r--nova/db/sqlalchemy/api.py39
-rw-r--r--nova/db/sqlalchemy/models.py15
2 files changed, 7 insertions, 47 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 57b70288c..50f833a5f 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -1285,10 +1285,6 @@ def volume_create(context, values):
session = get_session()
with session.begin():
- while volume_ref.ec2_id == None:
- ec2_id = utils.generate_uid('vol')
- if not volume_ec2_id_exists(context, ec2_id, session=session):
- volume_ref.ec2_id = ec2_id
volume_ref.save(session=session)
return volume_ref
@@ -1386,41 +1382,6 @@ def volume_get_all_by_project(context, project_id):
all()
-@require_context
-def volume_get_by_ec2_id(context, ec2_id):
- session = get_session()
- result = None
-
- if is_admin_context(context):
- result = session.query(models.Volume).\
- filter_by(ec2_id=ec2_id).\
- filter_by(deleted=can_read_deleted(context)).\
- first()
- elif is_user_context(context):
- result = session.query(models.Volume).\
- filter_by(project_id=context.project_id).\
- filter_by(ec2_id=ec2_id).\
- filter_by(deleted=False).\
- first()
- else:
- raise exception.NotAuthorized()
-
- if not result:
- raise exception.NotFound(_('Volume %s not found') % ec2_id)
-
- return result
-
-
-@require_context
-def volume_ec2_id_exists(context, ec2_id, session=None):
- if not session:
- session = get_session()
-
- return session.query(exists().\
- where(models.Volume.id == ec2_id)).\
- one()[0]
-
-
@require_admin_context
def volume_get_instance(context, volume_id):
session = get_session()
diff --git a/nova/db/sqlalchemy/models.py b/nova/db/sqlalchemy/models.py
index 5634dda5e..418c8914e 100644
--- a/nova/db/sqlalchemy/models.py
+++ b/nova/db/sqlalchemy/models.py
@@ -303,8 +303,11 @@ class InstanceActions(BASE, NovaBase):
class Volume(BASE, NovaBase):
"""Represents a block storage device that can be attached to a vm."""
__tablename__ = 'volumes'
- id = Column(Integer, primary_key=True)
- ec2_id = Column(String(12), unique=True)
+ id = Column(GUID, primary_key=True, default=make_uuid)
+
+ @property
+ def name(self):
+ return "vollume-%s" % self.id
user_id = Column(String(255))
project_id = Column(String(255))
@@ -330,10 +333,6 @@ class Volume(BASE, NovaBase):
display_name = Column(String(255))
display_description = Column(String(255))
- @property
- def name(self):
- return self.ec2_id
-
class Quota(BASE, NovaBase):
"""Represents quota overrides for a project."""
@@ -357,7 +356,7 @@ class ExportDevice(BASE, NovaBase):
id = Column(Integer, primary_key=True)
shelf_id = Column(Integer)
blade_id = Column(Integer)
- volume_id = Column(Integer, ForeignKey('volumes.id'), nullable=True)
+ volume_id = Column(GUID, ForeignKey('volumes.id'), nullable=True)
volume = relationship(Volume,
backref=backref('export_device', uselist=False),
foreign_keys=volume_id,
@@ -373,7 +372,7 @@ class IscsiTarget(BASE, NovaBase):
id = Column(Integer, primary_key=True)
target_num = Column(Integer)
host = Column(String(255))
- volume_id = Column(Integer, ForeignKey('volumes.id'), nullable=True)
+ volume_id = Column(GUID, ForeignKey('volumes.id'), nullable=True)
volume = relationship(Volume,
backref=backref('iscsi_target', uselist=False),
foreign_keys=volume_id,