Revert user deletion job
This commit is contained in:
@@ -27,6 +27,7 @@ class EnvironmentRoles(object):
|
||||
.filter(
|
||||
EnvironmentRole.application_role_id == application_role_id,
|
||||
EnvironmentRole.environment_id == environment_id,
|
||||
EnvironmentRole.deleted == False,
|
||||
)
|
||||
.one_or_none()
|
||||
)
|
||||
@@ -49,6 +50,7 @@ class EnvironmentRoles(object):
|
||||
.filter(
|
||||
ApplicationRole.user_id == user_id,
|
||||
EnvironmentRole.environment_id == environment_id,
|
||||
EnvironmentRole.deleted == False,
|
||||
)
|
||||
.one_or_none()
|
||||
)
|
||||
@@ -56,20 +58,12 @@ class EnvironmentRoles(object):
|
||||
|
||||
@classmethod
|
||||
def delete(cls, application_role_id, environment_id):
|
||||
existing_env_role = (
|
||||
db.session.query(EnvironmentRole)
|
||||
.join(ApplicationRole)
|
||||
.filter(
|
||||
ApplicationRole.id == application_role_id,
|
||||
EnvironmentRole.environment_id == environment_id,
|
||||
EnvironmentRole.status != EnvironmentRole.Status.PENDING_DELETE,
|
||||
)
|
||||
.one_or_none()
|
||||
)
|
||||
existing_env_role = EnvironmentRoles.get(application_role_id, environment_id)
|
||||
|
||||
if existing_env_role:
|
||||
existing_env_role.status = EnvironmentRole.Status.PENDING_DELETE
|
||||
existing_env_role.role = "deleted"
|
||||
# TODO: Implement suspension
|
||||
existing_env_role.deleted = True
|
||||
db.session.add(existing_env_role)
|
||||
db.session.commit()
|
||||
return True
|
||||
else:
|
||||
@@ -97,17 +91,3 @@ 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]
|
||||
|
28
atst/jobs.py
28
atst/jobs.py
@@ -132,19 +132,6 @@ def do_provision_user(csp: CloudProviderInterface, environment_role_id=None):
|
||||
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
|
||||
environment_role.deleted = True
|
||||
db.session.add(environment_role)
|
||||
db.session.commit()
|
||||
|
||||
|
||||
def do_work(fn, task, csp, **kwargs):
|
||||
try:
|
||||
fn(csp, **kwargs)
|
||||
@@ -181,13 +168,6 @@ 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(
|
||||
@@ -218,11 +198,3 @@ 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)
|
||||
|
@@ -40,7 +40,6 @@ class EnvironmentRole(
|
||||
PENDING = "pending"
|
||||
COMPLETED = "completed"
|
||||
PENDING_DELETE = "pending_delete"
|
||||
DELETED = "deleted"
|
||||
|
||||
status = Column(SQLAEnum(Status, native_enum=False), default=Status.PENDING)
|
||||
|
||||
|
@@ -22,10 +22,6 @@ def update_celery(celery, app):
|
||||
"task": "atst.jobs.dispatch_provision_user",
|
||||
"schedule": 60,
|
||||
},
|
||||
"beat-dispatch_delete_user": {
|
||||
"task": "atst.jobs.dispatch_delete_user",
|
||||
"schedule": 60,
|
||||
},
|
||||
}
|
||||
|
||||
class ContextTask(celery.Task):
|
||||
|
Reference in New Issue
Block a user