@@ -212,7 +212,7 @@ def replace_created_by_ref(self, entity_type, id, created_by_ref):
212212 id = id , identity_id = created_by_ref
213213 )
214214
215- def process_update (self , data ):
215+ def process_update_v1 (self , data ):
216216 try :
217217 if "add" in data ["x_data_update" ]:
218218 for key in data ["x_data_update" ]["add" ].keys ():
@@ -325,3 +325,110 @@ def process_update(self, data):
325325 except :
326326 self .opencti .log ("error" , "Cannot process this message" )
327327 pass
328+
329+ def process_update_v2 (self , data ):
330+ try :
331+ if "add" in data ["x_opencti_patch" ]:
332+ for key in data ["x_opencti_patch" ]["add" ].keys ():
333+ if key == "object_marking_refs" :
334+ self .add_object_marking_refs (
335+ data ["type" ],
336+ data ["id" ],
337+ data ["x_opencti_patch" ]["add" ]["object_marking_refs" ],
338+ )
339+ elif key == "object_refs" :
340+ self .add_object_refs (
341+ data ["type" ],
342+ data ["id" ],
343+ data ["x_opencti_patch" ]["add" ]["object_refs" ],
344+ )
345+ elif key == "labels" :
346+ self .add_labels (
347+ data ["type" ],
348+ data ["id" ],
349+ data ["x_opencti_patch" ]["add" ]["labels" ],
350+ )
351+ elif key == "external_references" :
352+ self .add_external_references (
353+ data ["type" ],
354+ data ["id" ],
355+ data ["x_opencti_patch" ]["add" ]["external_references" ],
356+ )
357+ elif key == "kill_chain_phases" :
358+ self .add_kill_chain_phases (
359+ data ["type" ],
360+ data ["id" ],
361+ data ["x_opencti_patch" ]["add" ]["kill_chain_phases" ],
362+ )
363+ elif key == "created_by_ref" :
364+ self .replace_created_by_ref (
365+ data ["type" ],
366+ data ["id" ],
367+ data ["x_opencti_patch" ]["add" ]["created_by_ref" ],
368+ )
369+ else :
370+ self .update_attribute (
371+ data ["type" ],
372+ data ["id" ],
373+ "add" ,
374+ key ,
375+ data ["x_opencti_patch" ]["add" ][key ],
376+ )
377+ if "remove" in data ["x_opencti_patch" ]:
378+ for key in data ["x_opencti_patch" ]["remove" ].keys ():
379+ if key == "object_marking_refs" :
380+ self .remove_object_marking_refs (
381+ data ["type" ],
382+ data ["id" ],
383+ data ["x_opencti_patch" ]["remove" ]["object_marking_refs" ],
384+ )
385+ elif key == "object_refs" :
386+ self .remove_object_refs (
387+ data ["type" ],
388+ data ["id" ],
389+ data ["x_opencti_patch" ]["remove" ]["object_refs" ],
390+ )
391+ elif key == "labels" :
392+ self .remove_labels (
393+ data ["type" ],
394+ data ["id" ],
395+ data ["x_opencti_patch" ]["remove" ]["labels" ],
396+ )
397+ elif key == "external_references" :
398+ self .remove_external_references (
399+ data ["type" ],
400+ data ["id" ],
401+ data ["x_opencti_patch" ]["remove" ]["external_references" ],
402+ )
403+ elif key == "kill_chain_phases" :
404+ self .remove_kill_chain_phases (
405+ data ["type" ],
406+ data ["id" ],
407+ data ["x_opencti_patch" ]["remove" ]["kill_chain_phases" ],
408+ )
409+ elif key == "created_by_ref" :
410+ self .replace_created_by_ref (
411+ data ["type" ],
412+ data ["id" ],
413+ None ,
414+ )
415+ else :
416+ self .update_attribute (
417+ data ["type" ],
418+ data ["id" ],
419+ "remove" ,
420+ key ,
421+ data ["x_opencti_patch" ]["remove" ][key ],
422+ )
423+ if "replace" in data ["x_opencti_patch" ]:
424+ for key in data ["x_opencti_patch" ]["replace" ].keys ():
425+ self .update_attribute (
426+ data ["type" ],
427+ data ["id" ],
428+ "replace" ,
429+ key ,
430+ data ["x_opencti_patch" ]["replace" ][key ]["current" ],
431+ )
432+ except :
433+ self .opencti .log ("error" , "Cannot process this message" )
434+ pass
0 commit comments