summaryrefslogtreecommitdiffstats
path: root/nova/db
diff options
context:
space:
mode:
authorEric Day <eday@oddments.org>2010-12-30 19:35:02 -0800
committerEric Day <eday@oddments.org>2010-12-30 19:35:02 -0800
commite0c83a438eb780407e94a7b48ff8f20fb1783a9f (patch)
treedc704dd3ca533f9448a1a75477703f3415c0dce8 /nova/db
parent6debe20395d6ab476bfd2a237df8c2b08050e0e6 (diff)
parent7080fb40cae33017b0365bb8e2c94f515bf39d3d (diff)
downloadnova-e0c83a438eb780407e94a7b48ff8f20fb1783a9f.tar.gz
nova-e0c83a438eb780407e94a7b48ff8f20fb1783a9f.tar.xz
nova-e0c83a438eb780407e94a7b48ff8f20fb1783a9f.zip
Merged trunk.
Diffstat (limited to 'nova/db')
-rw-r--r--nova/db/api.py5
-rw-r--r--nova/db/sqlalchemy/api.py12
-rw-r--r--nova/db/sqlalchemy/models.py26
3 files changed, 24 insertions, 19 deletions
diff --git a/nova/db/api.py b/nova/db/api.py
index d4fe4a7c8..5bf5b2b7e 100644
--- a/nova/db/api.py
+++ b/nova/db/api.py
@@ -383,6 +383,11 @@ def instance_action_create(context, values):
return IMPL.instance_action_create(context, values)
+def instance_get_actions(context, instance_id):
+ """Get instance actions by instance id."""
+ return IMPL.instance_get_actions(context, instance_id)
+
+
###################
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 50f833a5f..0cff88bb4 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -838,6 +838,18 @@ def instance_action_create(context, values):
return action_ref
+@require_admin_context
+def instance_get_actions(context, instance_id):
+ """Return the actions associated to the given instance id"""
+ session = get_session()
+ actions = {}
+ for action in session.query(models.InstanceActions).\
+ filter_by(instance_id=instance_id).\
+ all():
+ actions[action.action] = action.error
+ return actions
+
+
###################
diff --git a/nova/db/sqlalchemy/models.py b/nova/db/sqlalchemy/models.py
index 418c8914e..da9058a6c 100644
--- a/nova/db/sqlalchemy/models.py
+++ b/nova/db/sqlalchemy/models.py
@@ -22,7 +22,8 @@ SQLAlchemy models for nova data.
import datetime
import uuid
-from sqlalchemy import Column, Integer, Float, String, schema
+from sqlalchemy.orm import relationship, backref, object_mapper
+from sqlalchemy import Column, Integer, String, schema
from sqlalchemy import ForeignKey, DateTime, Boolean, Text
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.exc import IntegrityError
@@ -67,7 +68,9 @@ class GUID(TypeDecorator):
elif dialect.name == 'postgresql':
return str(value)
else:
- if not isinstance(value, uuid.UUID):
+ if isinstance(value, int):
+ return "%.32x" % uuid.UUID(int=value)
+ elif not isinstance(value, uuid.UUID):
return "%.32x" % uuid.UUID(value)
else:
# hexstring
@@ -275,21 +278,6 @@ class Instance(BASE, NovaBase):
# 'shutdown', 'shutoff', 'crashed'])
-class InstanceDiagnostics(BASE, NovaBase):
- """Represents a guest VM's diagnostics"""
- __tablename__ = "instance_diagnostics"
- id = Column(Integer, primary_key=True)
- instance_id = Column(GUID, ForeignKey('instances.id'))
-
- memory_available = Column(Float)
- memory_free = Column(Float)
- cpu_load = Column(Float)
- disk_read = Column(Float)
- disk_write = Column(Float)
- net_tx = Column(Float)
- net_rx = Column(Float)
-
-
class InstanceActions(BASE, NovaBase):
"""Represents a guest VM's actions and results"""
__tablename__ = "instance_actions"
@@ -490,7 +478,7 @@ class AuthToken(BASE, NovaBase):
"""
__tablename__ = 'auth_tokens'
token_hash = Column(String(255), primary_key=True)
- user_id = Column(Integer)
+ user_id = Column(String(255))
server_manageent_url = Column(String(255))
storage_url = Column(String(255))
cdn_management_url = Column(String(255))
@@ -599,7 +587,7 @@ def register_models():
it will never need to be called explicitly elsewhere.
"""
from sqlalchemy import create_engine
- models = (Service, Instance, InstanceDiagnostics, InstanceActions,
+ models = (Service, Instance, InstanceActions,
Volume, ExportDevice, IscsiTarget, FixedIp, FloatingIp,
Network, SecurityGroup, SecurityGroupIngressRule,
SecurityGroupInstanceAssociation, AuthToken, User,