Skip to content
This repository was archived by the owner on May 17, 2024. It is now read-only.

Commit 946eb48

Browse files
committed
cloud api token flow
1 parent f406c0a commit 946eb48

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

data_diff/dbt.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import json
22
import os
33
import time
4+
import webbrowser
45
import rich
6+
from rich.prompt import Confirm
57

68
from collections import defaultdict
79
from dataclasses import dataclass
@@ -220,16 +222,24 @@ def _local_diff(diff_vars: DiffVars) -> None:
220222

221223

222224
def _cloud_diff(diff_vars: DiffVars) -> None:
225+
datafold_host = os.environ.get("DATAFOLD_HOST", "https://app.datafold.com").rstrip("/")
223226
api_key = os.environ.get("DATAFOLD_API_KEY")
227+
rich.print(f"Cloud datafold host: {datafold_host}")
228+
if not api_key:
229+
rich.print("[red]API key not found, add it as an environment variable called DATAFOLD_API_KEY.")
230+
yes_or_no = Confirm.ask("Would you like to generate a new API key?")
231+
if yes_or_no:
232+
webbrowser.open(f"{datafold_host}/login?next={datafold_host}/users/me")
233+
return
234+
else:
235+
raise ValueError('Cannot diff because the API key is not provided')
224236

225237
if diff_vars.datasource_id is None:
226238
raise ValueError(
227239
"Datasource ID not found, include it as a dbt variable in the dbt_project.yml. \nvars:\n data_diff:\n datasource_id: 1234"
228240
)
229-
if api_key is None:
230-
raise ValueError("API key not found, add it as an environment variable called DATAFOLD_API_KEY.")
231241

232-
url = "https://app.datafold.com/api/v1/datadiffs"
242+
url = f"{datafold_host}/api/v1/datadiffs"
233243

234244
payload = {
235245
"data_source1_id": diff_vars.datasource_id,
@@ -256,7 +266,7 @@ def _cloud_diff(diff_vars: DiffVars) -> None:
256266
data = response.json()
257267
diff_id = data["id"]
258268
# TODO in future we should support self hosted datafold
259-
diff_url = f"https://app.datafold.com/datadiffs/{diff_id}/overview"
269+
diff_url = f"{datafold_host}/datadiffs/{diff_id}/overview"
260270
rich.print(
261271
"[red]"
262272
+ ".".join(diff_vars.prod_path)

0 commit comments

Comments
 (0)