Move "envs pending creation" query to Environments domain

This commit is contained in:
richard-dds
2019-09-09 11:39:09 -04:00
parent 4a5ca1cd27
commit e3ea2d2fe5
4 changed files with 63 additions and 54 deletions

View File

@@ -1,7 +1,7 @@
from sqlalchemy.orm.exc import NoResultFound
from atst.database import db
from atst.models.environment import Environment
from atst.models import Environment, Application, Portfolio, TaskOrder, CLIN
from atst.domain.environment_roles import EnvironmentRoles
from atst.domain.application_roles import ApplicationRoles
@@ -102,3 +102,17 @@ class Environments(object):
# TODO: How do we work around environment deletion being a largely manual process in the CSPs
return environment
@classmethod
def get_environments_pending_creation(cls, now) -> [str]:
query = (
db.session.query(Environment.id)
.join(Application)
.join(Portfolio)
.join(TaskOrder)
.join(CLIN)
.filter(CLIN.start_date <= now)
.filter(CLIN.end_date > now)
.filter(Environment.cloud_id == None)
)
return [environment_id for (environment_id,) in query.all()]

View File

@@ -120,21 +120,9 @@ def create_environment_baseline(self, environment_id=None):
do_work(do_create_environment_baseline, self, app.csp.cloud, **kwargs)
def environments_to_create(now):
query = (
db.session.query(Environment.id)
.join(Application)
.join(Portfolio)
.join(TaskOrder)
.join(CLIN)
.filter(CLIN.start_date <= now)
.filter(CLIN.end_date > now)
.filter(Environment.cloud_id == None)
)
return [environment_id for (environment_id,) in query.all()]
@celery.task(bind=True)
def dispatch_create_environment(self):
for environment_id in environments_to_create(pendulum.now()):
for environment_id in Environments.get_environments_pending_creation(
pendulum.now()
):
create_environment.delay(environment_id=environment_id, atat_user_id="TODO")