"""QA users cleanup script. Removes users broken by neo4j sync. """ import argparse import requests from podcast.models import user request_headers = { 'Grass-Account-Type': 'vendor', 'Grass-Account-Id': '1', 'Correlation-Id': '12', 'Orchard-Identity-UUID': 'podcast-admin', 'Content-Type': 'application/json' } OWS_USERS_URL = 'https://qa-ows-users.theorchard.io' TEST_USERS = [ 'podcast-admin@theorchard.com', 'jodonnell+google123@theorchard.com', 'automation@theorchard.com', 'ubandy+podcastqa@theorchard.com', 'apavlov+orchardorg@theorchard.com', 'apavlov+smeorg@theorchard.com', 'mbalan+automationorgadmin@theorchard.com', 'mbalan+automationnetworkadmin@theorchard.com' ] def _delete_auth0_user_by_id(auth0_response): if len(auth0_response) == 0: return None request_url = '{}/auth0/users/{}'.format(OWS_USERS_URL, auth0_response[0]) user_response = requests.delete(request_url, headers=request_headers) return user_response.status_code == 204 def _delete_user(user_id, email, delete_type): if delete_type == 'hard_delete': user.hard_delete_user(user_id) else: user.delete_user(user_id) request_url = '{}/users/auth0/email/{}'.format(OWS_USERS_URL, email) auth0_user = requests.get(request_url, headers=request_headers) if auth0_user.status_code != 404: _delete_auth0_user_by_id(auth0_user.json()['result']) def main(): """Delete qa users broken by neo4j sync.""" argparser = argparse.ArgumentParser(prog='qa user cleanup') argparser.add_argument('-delete', required=False, help='hard_delete, soft_delete') args = argparser.parse_args() delete_type = args.delete or 'soft_delete' qa_users = user.get_users(limit=1000)['items'] for qa_user in qa_users: try: email = qa_user['email'] if email in TEST_USERS: continue # get user by identity id request_url = '{}/users/identity/{}'.format(OWS_USERS_URL, qa_user['uuid']) identity_user = requests.get(request_url, headers=request_headers) if identity_user.status_code == 404: # Invalid (Phantom) User _delete_user(qa_user['id'], email, delete_type) except Exception: print('failed: {}'.format(qa_user)) if __name__ == '__main__': main()