Add delete user job

This commit is contained in:
richard-dds
2019-10-04 14:15:59 -04:00
parent f877b0a1d8
commit 00f76ae5af
5 changed files with 125 additions and 2 deletions

View File

@@ -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"

View File

@@ -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()

View File

@@ -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)