Skip to content

Commit 985f59f

Browse files
committed
keep dku_error and api_response columns in recipe output schema
1 parent c57ea5a commit 985f59f

3 files changed

Lines changed: 11 additions & 7 deletions

File tree

python-lib/dku_constants.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ class DKUConstants(object):
44
FORM_DATA_BODY_FORMAT = "FORM_DATA"
55
PLUGIN_VERSION = "1.2.0"
66
RAW_BODY_FORMAT = "RAW"
7+
REPONSE_ERROR_KEY = "dku_error"

python-lib/rest_api_client.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def __init__(self, credential, endpoint, custom_key_values={}, session=None):
8989
elif body_format in [DKUConstants.FORM_DATA_BODY_FORMAT]:
9090
key_value_body = endpoint.get("key_value_body", {})
9191
self.requests_kwargs.update({"json": get_dku_key_values(key_value_body)})
92-
self.metadata = {}
92+
self.metadata = {DKUConstants.REPONSE_ERROR_KEY: None}
9393
self.call_number = 0
9494
self.session = session or requests.Session()
9595

@@ -147,15 +147,15 @@ def request(self, method, url, can_raise_exeption=True, **kwargs):
147147
self.set_metadata("response_headers", "{}".format(response.headers))
148148

149149
if error_message:
150-
return {"error": error_message}
150+
return {DKUConstants.REPONSE_ERROR_KEY: error_message}
151151

152152
if response.status_code >= 400:
153153
error_message = "Error {}: {}".format(response.status_code, response.content)
154154
self.pagination.is_last_batch_empty = True
155155
if can_raise_exeption:
156156
raise RestAPIClientError(error_message)
157157
else:
158-
return {"error": error_message}
158+
return {DKUConstants.REPONSE_ERROR_KEY: error_message}
159159
if response.status_code in [204]:
160160
self.pagination.update_next_page({}, response.links)
161161
return self.empty_json_response()
@@ -168,7 +168,7 @@ def request(self, method, url, can_raise_exeption=True, **kwargs):
168168
logger.error("response.content={}".format(response.content))
169169
if can_raise_exeption:
170170
raise RestAPIClientError("The API did not return JSON as expected. {}".format(error_message))
171-
return {"error": error_message}
171+
return {DKUConstants.REPONSE_ERROR_KEY: error_message}
172172

173173
self.pagination.update_next_page(json_response, response.links)
174174
return json_response

python-lib/rest_api_recipe_session.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def retrieve_next_page(self, is_raw_output):
7070
page_rows = []
7171
logger.info("retrieve_next_page: Calling next page")
7272
json_response = self.client.paginated_api_call(can_raise_exeption=False)
73-
metadata = self.client.get_metadata() if self.display_metadata else {}
73+
metadata = self.client.get_metadata() if self.display_metadata else {DKUConstants.REPONSE_ERROR_KEY: None}
7474
is_api_returning_dict = True
7575
if self.extraction_key:
7676
data_rows = get_value_from_path(json_response, self.extraction_key.split("."), can_raise=False)
@@ -79,7 +79,7 @@ def retrieve_next_page(self, is_raw_output):
7979
if self.can_raise:
8080
raise DataikuException(error_message)
8181
else:
82-
return self.format_page_rows([{"error": error_message}], is_raw_output, metadata)
82+
return self.format_page_rows([{DKUConstants.REPONSE_ERROR_KEY: error_message}], is_raw_output, metadata)
8383
page_rows.extend(self.format_page_rows(data_rows, is_raw_output, metadata))
8484
else:
8585
# Todo: check api_response key is free and add something overwise
@@ -115,6 +115,9 @@ def format_page_rows(self, data_rows, is_raw_output, metadata=None):
115115
base_row.update(metadata)
116116
if is_raw_output:
117117
if is_error_message(data_row):
118+
base_row.update({
119+
DKUConstants.API_RESPONSE_KEY: None
120+
})
118121
base_row.update(parse_keys_for_json(data_row))
119122
else:
120123
base_row.update({
@@ -129,7 +132,7 @@ def format_page_rows(self, data_rows, is_raw_output, metadata=None):
129132
def is_error_message(jsons_response):
130133
if type(jsons_response) not in [dict, list]:
131134
return False
132-
if "error" in jsons_response and len(jsons_response) == 1:
135+
if DKUConstants.REPONSE_ERROR_KEY in jsons_response and len(jsons_response) == 1:
133136
return True
134137
else:
135138
return False

0 commit comments

Comments
 (0)