Skip to content

Commit a30a592

Browse files
committed
F!! Only handle changed items, as the schema for the supported EC2 fields will always have the fields present, even if empty, so all modifications will appear in the changed part of the diff.
1 parent ab2e7e3 commit a30a592

File tree

1 file changed

+42
-52
lines changed

1 file changed

+42
-52
lines changed

src/luminaut/tools/aws.py

+42-52
Original file line numberDiff line numberDiff line change
@@ -293,60 +293,50 @@ def generate_events_from_aws_config(
293293
def process_ec2_instance(
294294
config_capture_time, diff_as_dict, events, resource_id, resource_type
295295
):
296-
for action, changes in diff_as_dict.items():
297-
for key, value in changes.items():
298-
event_type = None
299-
message = None
300-
301-
if key == "state":
302-
event_type = models.TimelineEventType.COMPUTE_INSTANCE_STATE_CHANGE
303-
message = (
304-
ExtractEventsFromConfigDiffs._format_ec2_state_change_message(
305-
action, value
306-
)
307-
)
308-
elif key == "security_groups" and action == "changed":
309-
event_type = (
310-
models.TimelineEventType.SECURITY_GROUP_ASSOCIATION_CHANGE
311-
)
312-
message = (
313-
ExtractEventsFromConfigDiffs._format_ec2_sg_change_message(
314-
value
315-
)
316-
)
317-
elif key == "launch_time" and action == "changed":
318-
event_type = (
319-
models.TimelineEventType.COMPUTE_INSTANCE_LAUNCH_TIME_UPDATED
320-
)
321-
message = ExtractEventsFromConfigDiffs._format_ec2_string_field_change_message(
322-
"Launch time", value
323-
)
324-
elif key == "public_dns_name" and action == "changed":
325-
event_type = (
326-
models.TimelineEventType.COMPUTE_INSTANCE_NETWORKING_CHANGE
327-
)
328-
message = ExtractEventsFromConfigDiffs._format_ec2_string_field_change_message(
329-
"Public DNS name", value
330-
)
331-
elif key == "public_ip_address" and action == "changed":
332-
event_type = (
333-
models.TimelineEventType.COMPUTE_INSTANCE_NETWORKING_CHANGE
334-
)
335-
message = ExtractEventsFromConfigDiffs._format_ec2_string_field_change_message(
336-
"Public IP address", value
337-
)
296+
changes = diff_as_dict["changed"]
297+
for key, value in changes.items():
298+
event_type = None
299+
message = None
300+
301+
if key == "state":
302+
event_type = models.TimelineEventType.COMPUTE_INSTANCE_STATE_CHANGE
303+
message = ExtractEventsFromConfigDiffs._format_ec2_state_change_message(
304+
"changed", value
305+
)
306+
elif key == "security_groups":
307+
event_type = models.TimelineEventType.SECURITY_GROUP_ASSOCIATION_CHANGE
308+
message = ExtractEventsFromConfigDiffs._format_ec2_sg_change_message(
309+
value
310+
)
311+
elif key == "launch_time":
312+
event_type = (
313+
models.TimelineEventType.COMPUTE_INSTANCE_LAUNCH_TIME_UPDATED
314+
)
315+
message = ExtractEventsFromConfigDiffs._format_ec2_string_field_change_message(
316+
"Launch time", value
317+
)
318+
elif key == "public_dns_name":
319+
event_type = models.TimelineEventType.COMPUTE_INSTANCE_NETWORKING_CHANGE
320+
message = ExtractEventsFromConfigDiffs._format_ec2_string_field_change_message(
321+
"Public DNS name", value
322+
)
323+
elif key == "public_ip_address":
324+
event_type = models.TimelineEventType.COMPUTE_INSTANCE_NETWORKING_CHANGE
325+
message = ExtractEventsFromConfigDiffs._format_ec2_string_field_change_message(
326+
"Public IP address", value
327+
)
338328

339-
if event_type and message:
340-
events.append(
341-
models.TimelineEvent(
342-
timestamp=config_capture_time,
343-
event_type=event_type,
344-
resource_type=resource_type,
345-
resource_id=resource_id,
346-
message=message,
347-
details=diff_as_dict,
348-
)
329+
if event_type and message:
330+
events.append(
331+
models.TimelineEvent(
332+
timestamp=config_capture_time,
333+
event_type=event_type,
334+
resource_type=resource_type,
335+
resource_id=resource_id,
336+
message=message,
337+
details=diff_as_dict,
349338
)
339+
)
350340

351341
@staticmethod
352342
def _format_ec2_state_change_message(action: str, value: Any) -> str:

0 commit comments

Comments
 (0)