Skip to content
Snippets Groups Projects
Commit 2ee22849 authored by Bjarke Madsen's avatar Bjarke Madsen
Browse files

Fix API key bug to support grafana >=8.2.5

parent c03a43f8
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
......@@ -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}')
......
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment