Skip to content
This repository was archived by the owner on Dec 5, 2025. It is now read-only.

Commit da56f6c

Browse files
[client] Improve worker behavior to handle complex bundle (#629)
1 parent d34ed3d commit da56f6c

File tree

7 files changed

+313
-174
lines changed

7 files changed

+313
-174
lines changed

pycti/api/opencti_api_client.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -351,14 +351,16 @@ def query(self, query, variables=None):
351351
if "name" in main_error
352352
else main_error["message"]
353353
)
354-
if "data" in main_error and "reason" in main_error["data"]:
355-
raise ValueError(
356-
{"name": error_name, "message": main_error["data"]["reason"]}
357-
)
358-
else:
359-
raise ValueError(
360-
{"name": error_name, "message": main_error["message"]}
361-
)
354+
error_detail = {
355+
"name": error_name,
356+
"error_message": main_error["message"],
357+
}
358+
meta_data = main_error["data"] if "data" in main_error else {}
359+
# Prevent logging of input as bundle is logged differently
360+
if meta_data.get("input") is not None:
361+
del meta_data["input"]
362+
value_error = {**error_detail, **meta_data}
363+
raise ValueError(value_error)
362364
else:
363365
return result
364366
else:

pycti/connector/opencti_connector_helper.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1226,17 +1226,22 @@ def send_stix2_bundle(self, bundle: str, **kwargs) -> list:
12261226

12271227
if bypass_split:
12281228
bundles = [bundle]
1229+
expectations_number = len(json.loads(bundle)["objects"])
12291230
else:
12301231
stix2_splitter = OpenCTIStix2Splitter()
1231-
bundles = stix2_splitter.split_bundle(bundle, True, event_version)
1232+
expectations_number, bundles = (
1233+
stix2_splitter.split_bundle_with_expectations(
1234+
bundle, True, event_version
1235+
)
1236+
)
12321237

12331238
if len(bundles) == 0:
12341239
self.metric.inc("error_count")
12351240
raise ValueError("Nothing to import")
12361241

12371242
if bundle_send_to_queue:
12381243
if work_id:
1239-
self.api.work.add_expectations(work_id, len(bundles))
1244+
self.api.work.add_expectations(work_id, expectations_number)
12401245
if entities_types is None:
12411246
entities_types = []
12421247
pika_credentials = pika.PlainCredentials(

0 commit comments

Comments
 (0)