Example #1
0
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
Example #2
0
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
Example #3
0
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