Implement dispatch_delete_user job
This commit is contained in:
@@ -9,6 +9,7 @@ import redis
|
||||
from unipath import Path
|
||||
from flask_wtf.csrf import CSRFProtect
|
||||
import json
|
||||
from enum import Enum
|
||||
|
||||
from atst.database import db
|
||||
from atst.assets import environment as assets_environment
|
||||
@@ -150,7 +151,7 @@ def set_default_headers(app): # pragma: no cover
|
||||
|
||||
def map_config(config):
|
||||
def sqlalchemy_dumps(dct):
|
||||
def _default(self, obj):
|
||||
def _default(obj):
|
||||
if isinstance(obj, Enum):
|
||||
return obj.name
|
||||
else:
|
||||
|
@@ -87,3 +87,17 @@ class EnvironmentRoles(object):
|
||||
.all()
|
||||
)
|
||||
return [id_ for id_, in results]
|
||||
|
||||
@classmethod
|
||||
def get_environment_roles_pending_deletion(cls) -> List[UUID]:
|
||||
results = (
|
||||
db.session.query(EnvironmentRole.id)
|
||||
.join(Environment)
|
||||
.join(ApplicationRole)
|
||||
.filter(Environment.deleted == False)
|
||||
.filter(Environment.baseline_info != None)
|
||||
.filter(EnvironmentRole.status == EnvironmentRole.Status.PENDING_DELETE)
|
||||
.filter(ApplicationRole.status == ApplicationRoleStatus.ACTIVE)
|
||||
.all()
|
||||
)
|
||||
return [id_ for id_, in results]
|
||||
|
15
atst/jobs.py
15
atst/jobs.py
@@ -169,6 +169,13 @@ def provision_user(self, environment_role_id=None):
|
||||
)
|
||||
|
||||
|
||||
@celery.task(bind=True)
|
||||
def delete_user(self, environment_role_id=None):
|
||||
do_work(
|
||||
do_delete_user, self, app.csp.cloud, environment_role_id=environment_role_id
|
||||
)
|
||||
|
||||
|
||||
@celery.task(bind=True)
|
||||
def dispatch_create_environment(self):
|
||||
for environment_id in Environments.get_environments_pending_creation(
|
||||
@@ -199,3 +206,11 @@ def dispatch_provision_user(self):
|
||||
environment_role_id
|
||||
) in EnvironmentRoles.get_environment_roles_pending_creation():
|
||||
provision_user.delay(environment_role_id=environment_role_id)
|
||||
|
||||
|
||||
@celery.task(bind=True)
|
||||
def dispatch_delete_user(self):
|
||||
for (
|
||||
environment_role_id
|
||||
) in EnvironmentRoles.get_environment_roles_pending_deletion():
|
||||
delete_user.delay(environment_role_id=environment_role_id)
|
||||
|
Reference in New Issue
Block a user