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): ...@@ -70,17 +70,16 @@ def create_api_token(request: AdminRequest, org_id: int, key_data=None):
return result 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 assert token_id
if org_id:
switch_active_organization(request, org_id) switch_active_organization(request, org_id)
result = request.delete(f'api/auth/keys/{token_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 return result
def delete_expired_api_tokens(request: AdminRequest, org_id: int) -> bool: def delete_expired_api_tokens(request: AdminRequest) -> bool:
assert org_id
tokens = request.get('api/auth/keys', params={'includeExpired': True}) tokens = request.get('api/auth/keys', params={'includeExpired': True})
...@@ -93,7 +92,7 @@ def delete_expired_api_tokens(request: AdminRequest, org_id: int) -> bool: ...@@ -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)] expired_tokens = [t for t in tokens if 'expiration' in t and is_expired(t)]
for token in expired_tokens: for token in expired_tokens:
delete_api_token(request, org_id, token['id']) delete_api_token(request, token['id'])
return True return True
......
...@@ -534,6 +534,7 @@ def provision(config): ...@@ -534,6 +534,7 @@ def provision(config):
tokens = [] tokens = []
all_orgs = _provision_orgs(config) all_orgs = _provision_orgs(config)
request = AdminRequest(**config) request = AdminRequest(**config)
delete_expired_api_tokens(request)
def _find_org_config(org): def _find_org_config(org):
orgs_to_provision = config.get('organizations', DEFAULT_ORGANIZATIONS) orgs_to_provision = config.get('organizations', DEFAULT_ORGANIZATIONS)
...@@ -551,17 +552,16 @@ def provision(config): ...@@ -551,17 +552,16 @@ def provision(config):
logger.info( logger.info(
f'--- Provisioning org {org["name"]} (ID #{org_id}) ---') 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) org_config = _find_org_config(org)
if not org_config: if not org_config:
# message logged from _find_org_config # message logged from _find_org_config
continue 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_dashboards = find_dashboard(token_request) or []
all_original_dashboard_uids = { all_original_dashboard_uids = {
d['uid'] for d in all_original_dashboards} d['uid'] for d in all_original_dashboards}
...@@ -599,9 +599,7 @@ def provision(config): ...@@ -599,9 +599,7 @@ def provision(config):
delete_dashboard(token_request, {'uid': uid}) delete_dashboard(token_request, {'uid': uid})
_delete_unknown_folders(config, token_request) _delete_unknown_folders(config, token_request)
delete_api_token(request, token['id'], org_id=org_id)
for org_id, token in tokens:
delete_api_token(request, org_id, token)
logger.info(f'Time to complete: {time.time() - start}') logger.info(f'Time to complete: {time.time() - start}')
......
...@@ -75,7 +75,7 @@ def test_delete_expired_api_tokens(data_config): ...@@ -75,7 +75,7 @@ def test_delete_expired_api_tokens(data_config):
json={ json={
"message": "API key deleted"}) "message": "API key deleted"})
provision.delete_expired_api_tokens(request, ORG_ID) provision.delete_expired_api_tokens(request)
@responses.activate @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