Add Environments.provisioning_status

This commit is contained in:
richard-dds 2019-09-10 16:47:45 -04:00
parent 1a9c34d856
commit 365a50efce
2 changed files with 44 additions and 1 deletions

View File

@ -1,6 +1,7 @@
from sqlalchemy import Column, ForeignKey, String
from sqlalchemy.orm import relationship
from sqlalchemy.dialects.postgresql import JSONB
from enum import Enum
from atst.models import Base
from atst.models.types import Id
@ -30,6 +31,10 @@ class Environment(
job_failures = relationship("EnvironmentJobFailure")
class ProvisioningStatus(Enum):
PENDING = "pending"
COMPLETED = "completed"
@property
def users(self):
return {r.application_role.user for r in self.roles}
@ -50,6 +55,17 @@ class Environment(
def portfolio_id(self):
return self.application.portfolio_id
@property
def provisioning_status(self) -> ProvisioningStatus:
if (
self.cloud_id is None
or self.root_user_info is None
or self.baseline_info is None
):
return self.ProvisioningStatus.PENDING
else:
return self.ProvisioningStatus.COMPLETED
def __repr__(self):
return "<Environment(name='{}', num_users='{}', application='{}', portfolio='{}', id='{}')>".format(
self.name,

View File

@ -1,6 +1,7 @@
import pytest
from atst.models import AuditEvent
from atst.models.environment_role import CSPRole
from atst.domain.environments import Environments
from atst.domain.applications import Applications
from tests.factories import *
@ -46,3 +47,29 @@ def test_audit_event_for_environment_deletion(session):
before, after = update_event.changed_state["deleted"]
assert not before
assert after
@pytest.mark.parametrize(
"env_data,expected_status",
[
[
{"cloud_id": None, "root_user_info": None, "baseline_info": None},
Environment.ProvisioningStatus.PENDING,
],
[
{"cloud_id": 1, "root_user_info": None, "baseline_info": None},
Environment.ProvisioningStatus.PENDING,
],
[
{"cloud_id": 1, "root_user_info": {}, "baseline_info": None},
Environment.ProvisioningStatus.PENDING,
],
[
{"cloud_id": 1, "root_user_info": {}, "baseline_info": {}},
Environment.ProvisioningStatus.COMPLETED,
],
],
)
def test_environment_provisioning_status(env_data, expected_status):
environment = EnvironmentFactory.create(**env_data)
assert environment.provisioning_status == expected_status