Skip to content

Commit a7cd7d2

Browse files
committed
add option to use users secrets
1 parent cb3d522 commit a7cd7d2

5 files changed

Lines changed: 36 additions & 2 deletions

File tree

custom-recipes/api-connect/recipe.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,13 @@
297297
"type": "BOOLEAN",
298298
"defaultValue": false
299299
},
300+
{
301+
"name": "should_use_user_secrets",
302+
"label": "User's secrets",
303+
"description": "Use secrets from user's profile",
304+
"type": "BOOLEAN",
305+
"defaultValue": false
306+
},
300307
{
301308
"name": "timeout",
302309
"label": "Timeout (s)",

custom-recipes/api-connect/recipe.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from dataiku.customrecipe import get_input_names_for_role, get_recipe_config, get_output_names_for_role
44
import pandas as pd
55
from safe_logger import SafeLogger
6-
from dku_utils import get_dku_key_values, get_endpoint_parameters, get_secure_credentials
6+
from dku_utils import get_dku_key_values, get_endpoint_parameters, get_secure_credentials, get_user_secrets
77
from rest_api_recipe_session import RestApiRecipeSession
88
from dku_constants import DKUConstants
99

@@ -45,6 +45,8 @@ def get_partitioning_keys(id_list, dku_flow_variables):
4545
raise ValueError("There is no parameter column selected.")
4646
parameter_renamings = get_dku_key_values(config.get("parameter_renamings", {}))
4747
custom_key_values = get_dku_key_values(config.get("custom_key_values", {}))
48+
user_secrets = get_user_secrets(config)
49+
custom_key_values.update(user_secrets)
4850
display_metadata = config.get("display_metadata", False)
4951
maximum_number_rows = config.get("maximum_number_rows", -1)
5052
input_parameters_dataset = dataiku.Dataset(input_A_names[0])

python-connectors/api-connect_dataset/connector.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,13 @@
245245
"type": "BOOLEAN",
246246
"defaultValue": false
247247
},
248+
{
249+
"name": "should_use_user_secrets",
250+
"label": " ",
251+
"description": "Use secrets from user's profile",
252+
"type": "BOOLEAN",
253+
"defaultValue": false
254+
},
248255
{
249256
"name": "timeout",
250257
"label": "Timeout (s)",

python-connectors/api-connect_dataset/connector.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from dku_utils import (
66
get_dku_key_values, get_endpoint_parameters,
77
parse_keys_for_json, get_value_from_path, get_secure_credentials,
8-
decode_csv_data, decode_bytes
8+
decode_csv_data, decode_bytes, get_user_secrets
99
)
1010
from dku_constants import DKUConstants
1111
import json
@@ -24,6 +24,8 @@ def __init__(self, config, plugin_config):
2424
secure_credentials = get_secure_credentials(config)
2525
credential = config.get("credential", {})
2626
custom_key_values = get_dku_key_values(config.get("custom_key_values", {}))
27+
user_secrets = get_user_secrets(config)
28+
custom_key_values.update(user_secrets)
2729
self.client = RestAPIClient(credential, secure_credentials, endpoint_parameters, custom_key_values)
2830
extraction_key = endpoint_parameters.get("extraction_key", None)
2931
self.extraction_key = extraction_key or ''

python-lib/dku_utils.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,3 +167,19 @@ def decode_bytes(content):
167167
if isinstance(content, bytes):
168168
content = content.decode()
169169
return content
170+
171+
172+
def get_user_secrets(configuration):
173+
should_use_user_secrets = configuration.get("should_use_user_secrets", False)
174+
if should_use_user_secrets:
175+
import dataiku
176+
logger.info("Using user's secrets:")
177+
client = dataiku.api_client()
178+
auth_info = client.get_auth_info(with_secrets=True)
179+
secrets = auth_info.get("secrets", [])
180+
user_secrets = {}
181+
for secret in secrets:
182+
logger.info("\t-'{}'".format(secret.get("key")))
183+
user_secrets[secret.get("key")] = secret.get("value")
184+
return user_secrets
185+
return {}

0 commit comments

Comments
 (0)