diff --git a/brian_dashboard_manager/grafana/organization.py b/brian_dashboard_manager/grafana/organization.py index fa2a99bd19ed0d393bd4bde7eef99875db96651f..b6d8b07ff3bc2934903c608763dfe95bc65a6516 100644 --- a/brian_dashboard_manager/grafana/organization.py +++ b/brian_dashboard_manager/grafana/organization.py @@ -70,17 +70,16 @@ def create_api_token(request: AdminRequest, org_id: int, key_data=None): return result -def delete_api_token(request: AdminRequest, org_id: int, token_id: int): +def delete_api_token(request: AdminRequest, token_id: int, org_id=None): assert token_id - - switch_active_organization(request, org_id) + if org_id: + switch_active_organization(request, org_id) result = request.delete(f'api/auth/keys/{token_id}') - logger.debug(f'Deleted API token #{token_id} for organization #{org_id}') + logger.debug(f'Deleted API token #{token_id}') return result -def delete_expired_api_tokens(request: AdminRequest, org_id: int) -> bool: - assert org_id +def delete_expired_api_tokens(request: AdminRequest) -> bool: tokens = request.get('api/auth/keys', params={'includeExpired': True}) @@ -93,7 +92,7 @@ def delete_expired_api_tokens(request: AdminRequest, org_id: int) -> bool: expired_tokens = [t for t in tokens if 'expiration' in t and is_expired(t)] for token in expired_tokens: - delete_api_token(request, org_id, token['id']) + delete_api_token(request, token['id']) return True diff --git a/brian_dashboard_manager/grafana/provision.py b/brian_dashboard_manager/grafana/provision.py index db1de8ce8240c8815ab703ee4c2f935ac3d78465..1e0b65802e588b15f021d7acf033d898c3a79dd4 100644 --- a/brian_dashboard_manager/grafana/provision.py +++ b/brian_dashboard_manager/grafana/provision.py @@ -534,6 +534,7 @@ def provision(config): tokens = [] all_orgs = _provision_orgs(config) request = AdminRequest(**config) + delete_expired_api_tokens(request) def _find_org_config(org): orgs_to_provision = config.get('organizations', DEFAULT_ORGANIZATIONS) @@ -551,17 +552,16 @@ def provision(config): logger.info( f'--- Provisioning org {org["name"]} (ID #{org_id}) ---') - - delete_expired_api_tokens(request, org_id) - token = create_api_token(request, org_id) - token_request = TokenRequest(token=token['key'], **config) - tokens.append((org_id, token['id'])) - org_config = _find_org_config(org) if not org_config: # message logged from _find_org_config continue + token = create_api_token(request, org_id) + token_request = TokenRequest(token=token['key'], **config) + tokens.append((org_id, token['id'])) + logger.debug(tokens) + all_original_dashboards = find_dashboard(token_request) or [] all_original_dashboard_uids = { d['uid'] for d in all_original_dashboards} @@ -599,9 +599,7 @@ def provision(config): delete_dashboard(token_request, {'uid': uid}) _delete_unknown_folders(config, token_request) - - for org_id, token in tokens: - delete_api_token(request, org_id, token) + delete_api_token(request, token['id'], org_id=org_id) logger.info(f'Time to complete: {time.time() - start}') diff --git a/test/test_grafana_organization.py b/test/test_grafana_organization.py index 4528594eec9c679d1e43193a0124144b8593f83d..c54b38182e2af9427d3289a8515f4fc174513fc0 100644 --- a/test/test_grafana_organization.py +++ b/test/test_grafana_organization.py @@ -75,7 +75,7 @@ def test_delete_expired_api_tokens(data_config): json={ "message": "API key deleted"}) - provision.delete_expired_api_tokens(request, ORG_ID) + provision.delete_expired_api_tokens(request) @responses.activate