Skip to content

Commit 157723d

Browse files
committed
F!! Use match-case and switch to classmethods.
1 parent a30a592 commit 157723d

File tree

1 file changed

+35
-31
lines changed

1 file changed

+35
-31
lines changed

src/luminaut/tools/aws.py

+35-31
Original file line numberDiff line numberDiff line change
@@ -268,8 +268,9 @@ def populate_permissive_ingress_security_group_rules(
268268

269269

270270
class ExtractEventsFromConfigDiffs:
271-
@staticmethod
271+
@classmethod
272272
def generate_events_from_aws_config(
273+
cls,
273274
resource_type: models.ResourceType,
274275
resource_id: str,
275276
config_item: models.AwsConfigItem,
@@ -280,7 +281,7 @@ def generate_events_from_aws_config(
280281

281282
diff_as_dict = asdict(config_item.diff_to_prior)
282283
if resource_type == models.ResourceType.EC2_Instance:
283-
ExtractEventsFromConfigDiffs.process_ec2_instance(
284+
cls.process_ec2_instance(
284285
config_item.config_capture_time,
285286
diff_as_dict,
286287
events,
@@ -289,42 +290,45 @@ def generate_events_from_aws_config(
289290
)
290291
return events
291292

292-
@staticmethod
293+
@classmethod
293294
def process_ec2_instance(
294-
config_capture_time, diff_as_dict, events, resource_id, resource_type
295+
cls, config_capture_time, diff_as_dict, events, resource_id, resource_type
295296
):
296297
changes = diff_as_dict["changed"]
297298
for key, value in changes.items():
298299
event_type = None
299300
message = None
300301

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-
)
302+
match key:
303+
case "state":
304+
event_type = models.TimelineEventType.COMPUTE_INSTANCE_STATE_CHANGE
305+
message = cls._format_ec2_state_change_message("changed", value)
306+
case "security_groups":
307+
event_type = (
308+
models.TimelineEventType.SECURITY_GROUP_ASSOCIATION_CHANGE
309+
)
310+
message = cls._format_ec2_sg_change_message(value)
311+
case "launch_time":
312+
event_type = (
313+
models.TimelineEventType.COMPUTE_INSTANCE_LAUNCH_TIME_UPDATED
314+
)
315+
message = cls._format_ec2_string_field_change_message(
316+
"Launch time", value
317+
)
318+
case "public_dns_name":
319+
event_type = (
320+
models.TimelineEventType.COMPUTE_INSTANCE_NETWORKING_CHANGE
321+
)
322+
message = cls._format_ec2_string_field_change_message(
323+
"Public DNS name", value
324+
)
325+
case "public_ip_address":
326+
event_type = (
327+
models.TimelineEventType.COMPUTE_INSTANCE_NETWORKING_CHANGE
328+
)
329+
message = cls._format_ec2_string_field_change_message(
330+
"Public IP address", value
331+
)
328332

329333
if event_type and message:
330334
events.append(

0 commit comments

Comments
 (0)