summaryrefslogtreecommitdiffstats
path: root/nova/db
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@gmail.com>2011-08-30 12:01:18 -0700
committerVishvananda Ishaya <vishvananda@gmail.com>2011-08-30 12:01:18 -0700
commitdcf5970dd9bed27201c593d7d053970a632e5eee (patch)
tree5b3b765ac87f9f27fd73aad40369a8efadd1832b /nova/db
parent30a1d84529cfc093b1652ac9bb72871f8bc3ce36 (diff)
make two functions instead of fast flag and add compute api commands instead of hitting db directly
Diffstat (limited to 'nova/db')
-rw-r--r--nova/db/api.py16
-rw-r--r--nova/db/sqlalchemy/api.py36
2 files changed, 36 insertions, 16 deletions
diff --git a/nova/db/api.py b/nova/db/api.py
index 3233985b6..148887635 100644
--- a/nova/db/api.py
+++ b/nova/db/api.py
@@ -496,14 +496,20 @@ def instance_get_all_by_filters(context, filters):
return IMPL.instance_get_all_by_filters(context, filters)
-def instance_get_active_by_window(context, begin, end=None,
- project_id=None, fast=False):
+def instance_get_active_by_window(context, begin, end=None, project_id=None):
"""Get instances active during a certain time window.
- Setting fast to true will stop all joinedloads.
Specifying a project_id will filter for a certain project."""
- return IMPL.instance_get_active_by_window(context, begin, end,
- project_id, fast)
+ return IMPL.instance_get_active_by_window(context, begin, end, project_id)
+
+
+def instance_get_active_by_window_joined(context, begin, end=None,
+ project_id=None):
+ """Get instances and joins active during a certain time window.
+
+ Specifying a project_id will filter for a certain project."""
+ return IMPL.instance_get_active_by_window_joined(context, begin, end,
+ project_id)
def instance_get_all_by_user(context, user_id):
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index c4cc199eb..d76dc22ed 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -1306,19 +1306,33 @@ def instance_get_all_by_filters(context, filters):
return instances
-@require_admin_context
-def instance_get_active_by_window(context, begin, end=None,
- project_id=None, fast=False):
- """Return instances that were continuously active over the given window"""
+@require_context
+def instance_get_active_by_window(context, begin, end=None, project_id=None):
+ """Return instances that were continuously active over window."""
session = get_session()
- query = session.query(models.Instance)
- if not fast:
- query = query.options(joinedload_all('fixed_ips.floating_ips')).\
- options(joinedload('security_groups')).\
- options(joinedload_all('fixed_ips.network')).\
- options(joinedload('instance_type'))
+ query = session.query(models.Instance).\
+ filter(models.Instance.launched_at < begin)
+ if end:
+ query = query.filter(or_(models.Instance.terminated_at == None,
+ models.Instance.terminated_at > end))
+ else:
+ query = query.filter(models.Instance.terminated_at == None)
+ if project_id:
+ query = query.filter_by(project_id=project_id)
+ return query.all()
+
- query = query.filter(models.Instance.launched_at < begin)
+@require_admin_context
+def instance_get_active_by_window_joined(context, begin, end=None,
+ project_id=None):
+ """Return instances and joins that were continuously active over window."""
+ session = get_session()
+ query = session.query(models.Instance).\
+ options(joinedload_all('fixed_ips.floating_ips')).\
+ options(joinedload('security_groups')).\
+ options(joinedload_all('fixed_ips.network')).\
+ options(joinedload('instance_type')).\
+ filter(models.Instance.launched_at < begin)
if end:
query = query.filter(or_(models.Instance.terminated_at == None,
models.Instance.terminated_at > end))