From 17ec944ad5abb71f8c2fb367f90b85ff3ca0ebf9 Mon Sep 17 00:00:00 2001 From: tomdds Date: Tue, 4 Feb 2020 14:34:59 -0500 Subject: [PATCH] Update environment queries to look for app provisioning completion as well --- atst/domain/environments.py | 5 ++++- atst/jobs.py | 2 -- tests/domain/test_environments.py | 23 +++++++++++++++++------ 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/atst/domain/environments.py b/atst/domain/environments.py index 78aa2af3..3abc4b18 100644 --- a/atst/domain/environments.py +++ b/atst/domain/environments.py @@ -124,7 +124,10 @@ class Environments(object): Any environment with an active CLIN that doesn't yet have a `cloud_id`. """ results = ( - cls.base_provision_query(now).filter(Application.cloud_id != None).all() + cls.base_provision_query(now) + .filter(Application.cloud_id != None) + .filter(Environment.cloud_id == None) + .all() ) return [id_ for id_, in results] diff --git a/atst/jobs.py b/atst/jobs.py index 0ce664da..ae0655fe 100644 --- a/atst/jobs.py +++ b/atst/jobs.py @@ -11,13 +11,11 @@ from atst.domain.csp.cloud.models import ( EnvironmentCSPPayload, UserCSPPayload, ) -from atst.domain.environment_roles import EnvironmentRoles from atst.domain.environments import Environments from atst.domain.portfolios import Portfolios from atst.models import JobFailure from atst.models.utils import claim_for_update, claim_many_for_update from atst.queue import celery -from atst.utils.localization import translate class RecordFailure(celery.Task): diff --git a/tests/domain/test_environments.py b/tests/domain/test_environments.py index ff4b8605..72f07651 100644 --- a/tests/domain/test_environments.py +++ b/tests/domain/test_environments.py @@ -132,15 +132,19 @@ class EnvQueryTest: def TOMORROW(self): return self.NOW.add(days=1) - def create_portfolio_with_clins(self, start_and_end_dates, env_data=None): + def create_portfolio_with_clins( + self, start_and_end_dates, env_data=None, app_data=None + ): env_data = env_data or {} + app_data = app_data or {} return PortfolioFactory.create( applications=[ { "name": "Mos Eisley", "description": "Where Han shot first", "environments": [{"name": "thebar", **env_data}], - } + **app_data, + }, ], task_orders=[ { @@ -168,9 +172,17 @@ class TestGetEnvironmentsPendingCreate(EnvQueryTest): self.create_portfolio_with_clins([(self.TOMORROW, self.TOMORROW)]) assert len(Environments.get_environments_pending_creation(self.NOW)) == 0 + def test_with_already_provisioned_app(self, session): + self.create_portfolio_with_clins( + [(self.YESTERDAY, self.TOMORROW)], app_data={"cloud_id": uuid4().hex} + ) + assert len(Environments.get_environments_pending_creation(self.NOW)) == 1 + def test_with_already_provisioned_env(self, session): self.create_portfolio_with_clins( - [(self.YESTERDAY, self.TOMORROW)], env_data={"cloud_id": uuid4().hex} + [(self.YESTERDAY, self.TOMORROW)], + env_data={"cloud_id": uuid4().hex}, + app_data={"cloud_id": uuid4().hex}, ) assert len(Environments.get_environments_pending_creation(self.NOW)) == 0 @@ -187,11 +199,10 @@ class TestGetEnvironmentsPendingAtatUserCreation(EnvQueryTest): def test_with_unprovisioned_environment(self): self.create_portfolio_with_clins( - [(self.YESTERDAY, self.TOMORROW)], - {"cloud_id": uuid4().hex, "root_user_info": None}, + [(self.YESTERDAY, self.TOMORROW)], app_data={"cloud_id": uuid4().hex}, ) assert ( - len(Environments.get_environments_pending_atat_user_creation(self.NOW)) == 1 + len(Environments.get_environments_pending_atat_user_creation(self.NOW)) == 0 ) def test_with_unprovisioned_expired_clins_environment(self):