Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions Babylon/commands/powerbi/dataset/services/powerbi_params_svc.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import logging
from time import sleep

from Babylon.utils.request import oauth_request

Expand All @@ -21,14 +22,21 @@ def get(self, workspace_id: str, dataset_id: str):
output_data = response.json().get("value")
return output_data

def update(self, workspace_id: str, params: list[tuple[str, str]], dataset_id: str):
def update(self, workspace_id: str, params: list[tuple[str, str]], dataset_id: str, max_retries: int = 2):
workspace_id = workspace_id or self.state["powerbi"]["workspace"]["id"]
# Preparing parameter data
details = {"updateDetails": [{"name": param.get("id"), "newValue": param.get('value')} for param in params]}
update_url = (f"https://api.powerbi.com/v1.0/myorg/groups/{workspace_id}"
f"/datasets/{dataset_id}/Default.UpdateParameters")
tries = 0
response = oauth_request(update_url, self.powerbi_token, json=details, type="POST")
while response is None and tries < max_retries:
tries += 1
sleep(1)
response = oauth_request(update_url, self.powerbi_token, json=details, type="POST")
if response is None:
logger.info(f"[powerbi] failled to update dataset with id: {dataset_id}")
logger.info(f"[powerbi] failled to update dataset with id: {dataset_id}"
f"\n parameters: {details}"
f"\n tries: {1 + tries}")
return None
logger.info("[powerbi] parameters successfully updated")
logger.info(f"[powerbi] parameters successfully updated (try #{tries})")
Loading