Skip to content

Commit 250290a

Browse files
authored
feat: added permission check for onboarding (#42)
* feat: added permission check * fix: as per comments
1 parent c06eeea commit 250290a

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

src/datapilot/clients/altimate/client.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def get(self, endpoint, params=None, timeout=None):
4444
return response.json()
4545

4646
except HTTPError as http_err:
47-
self.logger.error(f"{http_err.response.json()} - Status code: {response.status_code}")
47+
self.logger.debug(f"HTTP Error: {http_err.response.json()} - Status code: {response.status_code}")
4848
except ConnectionError as conn_err:
4949
self.logger.error(f"Connection error occurred: {conn_err}")
5050
except Timeout as timeout_err:
@@ -83,6 +83,10 @@ def get_signed_url(self, params=None):
8383
def validate_credentials(self):
8484
endpoint = "/dbt/v3/validate-credentials"
8585
return self.get(endpoint)
86+
87+
def validate_upload_to_integration(self):
88+
endpoint = "/dbt/v1/validate-permissions"
89+
return self.get(endpoint)
8690

8791
def start_dbt_ingestion(self, params=None):
8892
endpoint = "/dbt/v1/start_dbt_ingestion"

src/datapilot/clients/altimate/utils.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,14 @@ def validate_credentials(
4646
return api_client.validate_credentials()
4747

4848

49+
def validate_permissions(
50+
token,
51+
backend_url,
52+
tenant,
53+
) -> Response:
54+
api_client = APIClient(api_token=token, base_url=backend_url, tenant=tenant)
55+
return api_client.validate_upload_to_integration()
56+
4957
def onboard_file(api_token, tenant, dbt_core_integration_id, dbt_core_integration_environment, file_type, file_path, backend_url) -> Dict:
5058
api_client = APIClient(api_token, base_url=backend_url, tenant=tenant)
5159

src/datapilot/core/platforms/dbt/cli/cli.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from datapilot.clients.altimate.utils import onboard_file
77
from datapilot.clients.altimate.utils import start_dbt_ingestion
88
from datapilot.clients.altimate.utils import validate_credentials
9+
from datapilot.clients.altimate.utils import validate_permissions
910
from datapilot.config.config import load_config
1011
from datapilot.core.platforms.dbt.constants import MODEL
1112
from datapilot.core.platforms.dbt.constants import PROJECT
@@ -110,6 +111,10 @@ def onboard(
110111
if not validate_credentials(token, backend_url, instance_name):
111112
click.echo("Error: Invalid credentials.")
112113
return
114+
115+
if not validate_permissions(token, backend_url, instance_name):
116+
click.echo("Error: You don't have permission to perform this action.")
117+
return
113118

114119
# This will throw error if manifest file is incorrect
115120
try:

0 commit comments

Comments
 (0)