Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 17 additions & 2 deletions datadog_sync/model/security_monitoring_rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,24 @@ class SecurityMonitoringRules(BaseResource):
"isDeprecated",
"defaultTags",
"version",
"options.anomalyDetectionOptions",
"options.impossibleTravelOptions",
"cases.condition",
],
non_nullable_attr=[],
null_values={},
non_nullable_attr=[
"queries.additionalFilters",
"blocking",
"metadata",
"creator",
"updater"
],
null_values={
"additionalFilters": [""],
"blocking": [False],
"metadata": [{"entities": None, "sources": None}],
"creator": [{"handle": "", "name": ""}],
"updater": [{"handle": "", "name": ""}],
},
)
# maximum page_size for this endpoint is 100 according to public api doc
pagination_config = PaginationConfig(
Expand Down
22 changes: 13 additions & 9 deletions datadog_sync/utils/resource_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,16 +192,20 @@ def del_attr(k_list, resource):
del_attr(k_list[1:], resource[k_list[0]])


def del_null_attr(resource_config, k_list, resource):
def del_null_attr(resource_config, k_list, resources):
# the nulls get converted to "something", this converts them back
if resource_config.null_values and len(k_list) == 1 and k_list[0] in resource_config.null_values:
if k_list[0] in resource and resource[k_list[0]] in resource_config.null_values[k_list[0]]:
resource[k_list[0]] = None

if len(k_list) == 1 and k_list[0] in resource and resource[k_list[0]] is None:
resource.pop(k_list[0], None)
elif len(k_list) > 1 and resource[k_list[0]] is not None:
del_null_attr(resource_config, k_list[1:], resource[k_list[0]])
if not isinstance(resources, list):
resources = [resources]

for resource in resources:
if resource_config.null_values and len(k_list) == 1 and k_list[0] in resource_config.null_values:
if k_list[0] in resource and resource[k_list[0]] in resource_config.null_values[k_list[0]]:
resource[k_list[0]] = None

if len(k_list) == 1 and k_list[0] in resource and resource[k_list[0]] is None:
resource.pop(k_list[0], None)
elif len(k_list) > 1 and resource[k_list[0]] is not None:
del_null_attr(resource_config, k_list[1:], resource[k_list[0]])


def check_diff(resource_config, resource, state):
Expand Down
3 changes: 1 addition & 2 deletions datadog_sync/utils/resources_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,21 +136,20 @@ async def _apply_resource_cb(self, q_item: List) -> None:
await r_class._pre_resource_action_hook(_id, resource)
r_class.connect_resources(_id, resource)

prep_resource(r_class.resource_config, resource)
if _id in self.config.state.destination[resource_type]:
diff = check_diff(r_class.resource_config, resource, self.config.state.destination[resource_type][_id])
if not diff:
raise SkipResource(_id, resource_type, "No differences detected.")

self.config.logger.debug(f"Running update for {resource_type} with {_id}")
prep_resource(r_class.resource_config, resource)
await r_class._update_resource(_id, resource)
await r_class._send_action_metrics(
Command.SYNC.value, _id, Status.SUCCESS.value, tags=["action_sub_type:update"]
)
self.config.logger.debug(f"Finished update for {resource_type} with {_id}")
else:
self.config.logger.debug(f"Running create for {resource_type} with id: {_id}")
prep_resource(r_class.resource_config, resource)
await r_class._create_resource(_id, resource)
await r_class._send_action_metrics(
Command.SYNC.value, _id, Status.SUCCESS.value, tags=["action_sub_type:create"]
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2024-12-06T16:42:12.921945-05:00
2025-01-08T15:56:57.265412-05:00

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2024-12-06T16:42:15.695193-05:00
2025-01-08T15:57:00.825138-05:00

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2024-12-06T16:26:44.071811-05:00
2025-01-08T15:45:04.506632-05:00
298,715 changes: 160,576 additions & 138,139 deletions ...ttes/test_security_monitoring_rules/TestSecurityMonitoringRules.test_resource_import.yaml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
2024-12-06T16:31:04.780212-05:00
2025-01-08T15:48:36.173713-05:00
Loading