Skip to content

Commit 7ffa82f

Browse files
feat(datasets): BI-6047 dataset import without a connection
1 parent 324f75e commit 7ffa82f

2 files changed

Lines changed: 23 additions & 3 deletions

File tree

lib/dl_api_lib/dl_api_lib/app/control_api/resources/dataset.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -350,8 +350,18 @@ def generate_dataset_location(cls, body: dict) -> EntryLocation:
350350

351351
@classmethod
352352
def replace_conn_ids(cls, data: dict, conn_id_mapping: dict) -> None:
353-
for sources in data["dataset"]["sources"]:
354-
sources["connection_id"] = conn_id_mapping[sources["connection_id"]]
353+
for source in data["dataset"]["sources"]:
354+
assert isinstance(source, dict)
355+
fake_conn_id = source["connection_id"]
356+
if fake_conn_id not in conn_id_mapping:
357+
LOGGER.info(
358+
'Can not find "%s" in conn id mapping for source with id %s, going to replace it with a fake connection',
359+
fake_conn_id,
360+
source.get("id"),
361+
)
362+
source["connection_id"] = "0000000000000" # TODO which ID should we use here?
363+
else:
364+
source["connection_id"] = conn_id_mapping[fake_conn_id]
355365

356366
@put_to_request_context(endpoint_code="DatasetImport")
357367
@schematic_request(

lib/dl_api_lib_testing/dl_api_lib_testing/connector/dataset_suite.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,16 @@ def test_export_import_dataset(
126126
"data": {"workbook_id": None, "dataset": export_resp.json["dataset"]},
127127
}
128128
import_resp = control_api.import_dataset(data=import_data, bi_headers=bi_headers)
129-
assert import_resp.status_code == 200, import_resp.json["dataset"] != export_resp.json["dataset"]
129+
assert import_resp.status_code == 200, f"{import_resp.json} != {export_resp.json}"
130+
131+
control_api.delete_dataset(dataset_id=import_resp.json["id"])
132+
133+
# test import without a connection
134+
import_data: dict = {
135+
"id_mapping": {}, # empty
136+
"data": {"workbook_id": None, "dataset": export_resp.json["dataset"]},
137+
}
138+
import_resp = control_api.import_dataset(data=import_data, bi_headers=bi_headers)
139+
assert import_resp.status_code == 200, f"{import_resp.json} != {export_resp.json}"
130140

131141
control_api.delete_dataset(dataset_id=import_resp.json["id"])

0 commit comments

Comments
 (0)