Add Environments.provisioning_status
This commit is contained in:
parent
1a9c34d856
commit
365a50efce
@ -1,6 +1,7 @@
|
|||||||
from sqlalchemy import Column, ForeignKey, String
|
from sqlalchemy import Column, ForeignKey, String
|
||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import relationship
|
||||||
from sqlalchemy.dialects.postgresql import JSONB
|
from sqlalchemy.dialects.postgresql import JSONB
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
from atst.models import Base
|
from atst.models import Base
|
||||||
from atst.models.types import Id
|
from atst.models.types import Id
|
||||||
@ -30,6 +31,10 @@ class Environment(
|
|||||||
|
|
||||||
job_failures = relationship("EnvironmentJobFailure")
|
job_failures = relationship("EnvironmentJobFailure")
|
||||||
|
|
||||||
|
class ProvisioningStatus(Enum):
|
||||||
|
PENDING = "pending"
|
||||||
|
COMPLETED = "completed"
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def users(self):
|
def users(self):
|
||||||
return {r.application_role.user for r in self.roles}
|
return {r.application_role.user for r in self.roles}
|
||||||
@ -50,6 +55,17 @@ class Environment(
|
|||||||
def portfolio_id(self):
|
def portfolio_id(self):
|
||||||
return self.application.portfolio_id
|
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):
|
def __repr__(self):
|
||||||
return "<Environment(name='{}', num_users='{}', application='{}', portfolio='{}', id='{}')>".format(
|
return "<Environment(name='{}', num_users='{}', application='{}', portfolio='{}', id='{}')>".format(
|
||||||
self.name,
|
self.name,
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
|
import pytest
|
||||||
|
|
||||||
from atst.models import AuditEvent
|
from atst.models import AuditEvent
|
||||||
from atst.models.environment_role import CSPRole
|
from atst.models.environment_role import CSPRole
|
||||||
from atst.domain.environments import Environments
|
|
||||||
from atst.domain.applications import Applications
|
from atst.domain.applications import Applications
|
||||||
|
|
||||||
from tests.factories import *
|
from tests.factories import *
|
||||||
@ -46,3 +47,29 @@ def test_audit_event_for_environment_deletion(session):
|
|||||||
before, after = update_event.changed_state["deleted"]
|
before, after = update_event.changed_state["deleted"]
|
||||||
assert not before
|
assert not before
|
||||||
assert after
|
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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user