diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-01-24 22:48:00 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-01-24 22:48:00 +0000 |
| commit | 57cf8312b88852f2e1de883c4bda28f873fcde47 (patch) | |
| tree | d1ba6c28a20c9be9ae9d83bddf80b87def6360cd | |
| parent | 06ba4a2c2c37b464fb14a963dd97364cf71f1456 (diff) | |
| parent | 4110addd4d450954aa32aa9045b99de8205543d0 (diff) | |
Merge "usage: Fix time filtering"
| -rw-r--r-- | nova/db/sqlalchemy/api.py | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index 258d6e1f0..43b386945 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -1581,36 +1581,36 @@ def instance_get_all_by_filters(context, filters): @require_context def instance_get_active_by_window(context, begin, end=None, project_id=None): - """Return instances that were continuously active over window.""" + """Return instances that were active during window.""" session = get_session() - query = session.query(models.Instance).\ - filter(models.Instance.launched_at < begin) + query = session.query(models.Instance) + + query = query.filter(or_(models.Instance.terminated_at == None, + models.Instance.terminated_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) + query = query.filter(models.Instance.launched_at < end) if project_id: query = query.filter_by(project_id=project_id) + return query.all() @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.""" + """Return instances and joins that were active during window.""" session = get_session() - query = session.query(models.Instance).\ - options(joinedload('security_groups')).\ - options(joinedload('instance_type')).\ - filter(models.Instance.launched_at < begin) + query = session.query(models.Instance) + + query = query.options(joinedload('security_groups')).\ + options(joinedload('instance_type')).\ + filter(or_(models.Instance.terminated_at == None, + models.Instance.terminated_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) + query = query.filter(models.Instance.launched_at < end) if project_id: query = query.filter_by(project_id=project_id) + return query.all() |
