diff --git a/ceo_common/interfaces/ICloudStackService.py b/ceo_common/interfaces/ICloudStackService.py index 0e0ea73..927505f 100644 --- a/ceo_common/interfaces/ICloudStackService.py +++ b/ceo_common/interfaces/ICloudStackService.py @@ -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. """ diff --git a/ceod/api/members.py b/ceod/api/members.py index 9c1a945..167434f 100644 --- a/ceod/api/members.py +++ b/ceod/api/members.py @@ -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]) diff --git a/ceod/model/CloudResourceManager.py b/ceod/model/CloudResourceManager.py index 00c830a..8b7eaa7 100644 --- a/ceod/model/CloudResourceManager.py +++ b/ceod/model/CloudResourceManager.py @@ -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: diff --git a/ceod/model/CloudStackService.py b/ceod/model/CloudStackService.py index 0d99cef..ccb920a 100644 --- a/ceod/model/CloudStackService.py +++ b/ceod/model/CloudStackService.py @@ -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, diff --git a/ceod/model/ContainerRegistryService.py b/ceod/model/ContainerRegistryService.py index 2767dfb..289ab59 100644 --- a/ceod/model/ContainerRegistryService.py +++ b/ceod/model/ContainerRegistryService.py @@ -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: diff --git a/ceod/model/KubernetesService.py b/ceod/model/KubernetesService.py index 03d039c..cd195b4 100644 --- a/ceod/model/KubernetesService.py +++ b/ceod/model/KubernetesService.py @@ -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)