Add delete user job
This commit is contained in:
11
atst/app.py
11
atst/app.py
@@ -8,6 +8,7 @@ from flask_session import Session
|
||||
import redis
|
||||
from unipath import Path
|
||||
from flask_wtf.csrf import CSRFProtect
|
||||
import json
|
||||
|
||||
from atst.database import db
|
||||
from atst.assets import environment as assets_environment
|
||||
@@ -148,6 +149,15 @@ def set_default_headers(app): # pragma: no cover
|
||||
|
||||
|
||||
def map_config(config):
|
||||
def sqlalchemy_dumps(dct):
|
||||
def _default(self, obj):
|
||||
if isinstance(obj, Enum):
|
||||
return obj.name
|
||||
else:
|
||||
raise TypeError()
|
||||
|
||||
return json.dumps(dct, default=_default)
|
||||
|
||||
return {
|
||||
**config["default"],
|
||||
"ENV": config["default"]["ENVIRONMENT"],
|
||||
@@ -158,6 +168,7 @@ def map_config(config):
|
||||
"PORT": int(config["default"]["PORT"]),
|
||||
"SQLALCHEMY_DATABASE_URI": config["default"]["DATABASE_URI"],
|
||||
"SQLALCHEMY_TRACK_MODIFICATIONS": False,
|
||||
"SQLALCHEMY_ENGINE_OPTIONS": {"json_serializer": sqlalchemy_dumps},
|
||||
"WTF_CSRF_ENABLED": config.getboolean("default", "WTF_CSRF_ENABLED"),
|
||||
"PERMANENT_SESSION_LIFETIME": config.getint(
|
||||
"default", "PERMANENT_SESSION_LIFETIME"
|
||||
|
19
atst/jobs.py
19
atst/jobs.py
@@ -3,7 +3,11 @@ import pendulum
|
||||
|
||||
from atst.database import db
|
||||
from atst.queue import celery
|
||||
from atst.models import EnvironmentJobFailure, EnvironmentRoleJobFailure
|
||||
from atst.models import (
|
||||
EnvironmentJobFailure,
|
||||
EnvironmentRoleJobFailure,
|
||||
EnvironmentRole,
|
||||
)
|
||||
from atst.domain.csp.cloud import CloudProviderInterface, GeneralCSPException
|
||||
from atst.domain.environments import Environments
|
||||
from atst.domain.environment_roles import EnvironmentRoles
|
||||
@@ -112,6 +116,19 @@ def do_provision_user(csp: CloudProviderInterface, environment_role_id=None):
|
||||
credentials, environment_role, environment_role.role
|
||||
)
|
||||
environment_role.csp_user_id = csp_user_id
|
||||
environment_role.status = EnvironmentRole.Status.COMPLETED
|
||||
db.session.add(environment_role)
|
||||
db.session.commit()
|
||||
|
||||
|
||||
def do_delete_user(csp: CloudProviderInterface, environment_role_id=None):
|
||||
environment_role = EnvironmentRoles.get_by_id(environment_role_id)
|
||||
|
||||
with claim_for_update(environment_role) as environment_role:
|
||||
credentials = environment_role.environment.csp_credentials
|
||||
|
||||
csp.delete_user(credentials, environment_role.csp_user_id)
|
||||
environment_role.status = EnvironmentRole.Status.DELETED
|
||||
db.session.add(environment_role)
|
||||
db.session.commit()
|
||||
|
||||
|
@@ -40,6 +40,7 @@ class EnvironmentRole(
|
||||
PENDING = "pending"
|
||||
COMPLETED = "completed"
|
||||
PENDING_DELETE = "pending_delete"
|
||||
DELETED = "deleted"
|
||||
|
||||
status = Column(SQLAEnum(Status, native_enum=False), default=Status.PENDING)
|
||||
|
||||
|
Reference in New Issue
Block a user