1306
1306
return instances
1310
def instance_get_active_by_window(context, begin, end=None, project_id=None):
1311
"""Return instances that were continuously active over window."""
1312
session = get_session()
1313
query = session.query(models.Instance).\
1314
filter(models.Instance.launched_at < begin)
1316
query = query.filter(or_(models.Instance.terminated_at == None,
1317
models.Instance.terminated_at > end))
1319
query = query.filter(models.Instance.terminated_at == None)
1321
query = query.filter_by(project_id=project_id)
1309
1325
@require_admin_context
1310
def instance_get_active_by_window(context, begin, end=None):
1311
"""Return instances that were continuously active over the given window"""
1326
def instance_get_active_by_window_joined(context, begin, end=None,
1328
"""Return instances and joins that were continuously active over window."""
1312
1329
session = get_session()
1313
1330
query = session.query(models.Instance).\
1314
options(joinedload_all('fixed_ips.floating_ips')).\
1315
options(joinedload('security_groups')).\
1316
options(joinedload_all('fixed_ips.network')).\
1317
options(joinedload('instance_type')).\
1318
filter(models.Instance.launched_at < begin)
1331
options(joinedload_all('fixed_ips.floating_ips')).\
1332
options(joinedload('security_groups')).\
1333
options(joinedload_all('fixed_ips.network')).\
1334
options(joinedload('instance_type')).\
1335
filter(models.Instance.launched_at < begin)
1320
1337
query = query.filter(or_(models.Instance.terminated_at == None,
1321
1338
models.Instance.terminated_at > end))
1323
1340
query = query.filter(models.Instance.terminated_at == None)
1342
query = query.filter_by(project_id=project_id)
1324
1343
return query.all()