Closes #70. Reviewed-on: #72
This commit is contained in:
parent
953bee549e
commit
651f4fb702
|
@ -19,8 +19,7 @@ class ICloudStackService(Interface):
|
|||
The dict is mapping of usernames to account IDs.
|
||||
"""
|
||||
|
||||
def delete_account(account_id: str):
|
||||
def delete_account(username: str, account_id: str):
|
||||
"""
|
||||
Delete the given CloudStack account.
|
||||
Note that a CloudStack account ID must be given, not a username.
|
||||
"""
|
||||
|
|
|
@ -35,6 +35,11 @@ def create_user():
|
|||
# directly create new LDAP records.
|
||||
g.need_admin_creds = True
|
||||
|
||||
if terms:
|
||||
logger.info(f"Creating member {body['uid']} for terms {terms}")
|
||||
else:
|
||||
logger.info(f"Creating club rep {body['uid']} for non-member terms {non_member_terms}")
|
||||
|
||||
txn = AddMemberTransaction(
|
||||
uid=body['uid'],
|
||||
cn=body['cn'],
|
||||
|
@ -104,14 +109,17 @@ def renew_user(username: str):
|
|||
user.set_expired(False)
|
||||
try:
|
||||
user.subscribe_to_mailing_list(member_list)
|
||||
logger.debug(f'Unsubscribed {user.uid} from {member_list}')
|
||||
except UserAlreadySubscribedError:
|
||||
pass
|
||||
logger.debug(f'{user.uid} is already unsubscribed from {member_list}')
|
||||
|
||||
if body.get('terms'):
|
||||
logger.info(f"Renewing member {username} for terms {body['terms']}")
|
||||
user.add_terms(body['terms'])
|
||||
unexpire(user)
|
||||
return {'terms_added': body['terms']}
|
||||
elif body.get('non_member_terms'):
|
||||
logger.info(f"Renewing club rep {username} for non-member terms {body['non_member_terms']}")
|
||||
user.add_non_member_terms(body['non_member_terms'])
|
||||
unexpire(user)
|
||||
return {'non_member_terms_added': body['non_member_terms']}
|
||||
|
@ -149,11 +157,13 @@ def expire_users():
|
|||
|
||||
if not dry_run:
|
||||
for member in members:
|
||||
logger.info(f'Expiring {member.uid}')
|
||||
member.set_expired(True)
|
||||
try:
|
||||
member.unsubscribe_from_mailing_list(member_list)
|
||||
logger.debug(f'Unsubscribed {member.uid} from {member_list}')
|
||||
except UserNotSubscribedError:
|
||||
pass
|
||||
logger.debug(f'{member.uid} is already unsubscribed from {member_list}')
|
||||
|
||||
return jsonify([member.uid for member in members])
|
||||
|
||||
|
|
|
@ -97,7 +97,7 @@ class CloudResourceManager:
|
|||
resources = accounts[username]['resources']
|
||||
if 'cloudstack' in resources:
|
||||
account_id = accounts[username]['cloudstack_account_id']
|
||||
cloudstack_srv.delete_account(account_id)
|
||||
cloudstack_srv.delete_account(username, account_id)
|
||||
if 'vhost' in resources:
|
||||
vhost_mgr.delete_all_vhosts_for_user(username)
|
||||
if 'k8s' in resources:
|
||||
|
|
|
@ -76,7 +76,8 @@ class CloudStackService:
|
|||
for account in d['account']
|
||||
}
|
||||
|
||||
def delete_account(self, account_id: str):
|
||||
def delete_account(self, username: str, account_id: str):
|
||||
logger.info(f'Deleting CloudStack account for {username}')
|
||||
url = self._create_url({
|
||||
'command': 'deleteAccount',
|
||||
'id': account_id,
|
||||
|
|
|
@ -7,6 +7,9 @@ from zope.interface import implementer
|
|||
|
||||
from ceo_common.errors import UserNotFoundError
|
||||
from ceo_common.interfaces import IContainerRegistryService, IConfig
|
||||
from ceo_common.logger_factory import logger_factory
|
||||
|
||||
logger = logger_factory(__name__)
|
||||
|
||||
|
||||
@implementer(IContainerRegistryService)
|
||||
|
@ -70,6 +73,7 @@ class ContainerRegistryService:
|
|||
resp.raise_for_status()
|
||||
|
||||
def delete_project_for_user(self, username: str):
|
||||
logger.info(f'Deleting Harbor project for {username}')
|
||||
# Delete all of the repositories inside the project first
|
||||
resp = self._http_get(f'/projects/{username}/repositories')
|
||||
if resp.status_code == 403:
|
||||
|
|
|
@ -11,6 +11,9 @@ from zope import component
|
|||
from zope.interface import implementer
|
||||
|
||||
from ceo_common.interfaces import IConfig, IKubernetesService
|
||||
from ceo_common.logger_factory import logger_factory
|
||||
|
||||
logger = logger_factory(__name__)
|
||||
|
||||
|
||||
@implementer(IKubernetesService)
|
||||
|
@ -100,6 +103,7 @@ class KubernetesService:
|
|||
return body
|
||||
|
||||
def delete_account(self, username: str):
|
||||
logger.info(f'Deleting Kubernetes namespace for {username}')
|
||||
namespace = self._get_namespace(username)
|
||||
# don't check exit code because namespace might not exist
|
||||
self._run(['kubectl', 'delete', 'namespace', namespace], check=False)
|
||||
|
|
Loading…
Reference in New Issue