def purge_user(username: str): """ Removes all system's artifacts that belong to a removed user. K8s objects are removed during removal of a namespace. :param username: name of a user for which artifacts should be removed It throws exception in case of any problems detected during removal of a user """ try: # remove data from elasticsearch with spinner(text=TextsDel.DELETION_DELETING_USERS_EXPERIMENTS): es_client = K8sElasticSearchClient( host=f'{get_kubectl_host(with_port=True)}' f'/api/v1/namespaces/nauta/services/nauta-elasticsearch:nauta/proxy', verify_certs=False, use_ssl=True, headers={'Authorization': get_api_key()}) es_client.delete_logs_for_namespace(username) # remove data from git repo manager with k8s_proxy_context_manager.K8sProxy(NAUTAAppNames.GIT_REPO_MANAGER) as proxy,\ spinner(text=TextsDel.DELETION_DELETING_USERS_REPOSITORY): grm_client = GitRepoManagerClient(host='127.0.0.1', port=proxy.tunnel_port) grm_client.delete_nauta_user(username=username) except K8sProxyCloseError as exe: logger.exception("Error during closing of a proxy.") raise exe except Exception as exe: logger.exception(f"Error during removal of {username} user data") raise exe
def test_delete_nauta_user(mocker, git_repo_manager: GitRepoManagerClient): delete_user = mocker.patch.object(git_repo_manager, 'delete_user') delete_repo = mocker.patch.object(git_repo_manager, 'delete_repository') git_repo_manager.delete_nauta_user(username='******') assert delete_user.call_count == 1 assert delete_repo.call_count == 1
def test_delete_nauta_user_failure(mocker, git_repo_manager: GitRepoManagerClient): delete_user = mocker.patch.object(git_repo_manager, 'delete_user', side_effect=RuntimeError) delete_repo = mocker.patch.object(git_repo_manager, 'delete_repository') with pytest.raises(RuntimeError): git_repo_manager.delete_nauta_user(username='******') assert delete_user.call_count == 1 assert delete_repo.call_count == 1