Skip to content

Commit 2a0f278

Browse files
authored
[aws][feat] Add delete method to AMI images (#2037)
* [aws][feat] Add delete method to AMI images
1 parent 43d0a4c commit 2a0f278

File tree

3 files changed

+33
-5
lines changed

3 files changed

+33
-5
lines changed

fixlib/fixlib/baseresources.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -763,7 +763,7 @@ def __attrs_post_init__(self) -> None:
763763

764764

765765
@define(eq=False, slots=False)
766-
class BaseCloud(BaseResource):
766+
class BaseCloud(PhantomBaseResource):
767767
kind: ClassVar[str] = "base_cloud"
768768
kind_display: ClassVar[str] = "Cloud"
769769
kind_description: ClassVar[str] = "A cloud."
@@ -785,7 +785,7 @@ def account(self, graph: Optional[Any] = None) -> BaseAccount:
785785

786786

787787
@define(eq=False, slots=False)
788-
class BaseRegion(BaseResource):
788+
class BaseRegion(PhantomBaseResource):
789789
kind: ClassVar[str] = "region"
790790
kind_display: ClassVar[str] = "Region"
791791
kind_description: ClassVar[str] = "A region."
@@ -805,7 +805,7 @@ def region(self, graph: Optional[Any] = None) -> BaseRegion:
805805

806806

807807
@define(eq=False, slots=False)
808-
class BaseZone(BaseResource):
808+
class BaseZone(PhantomBaseResource):
809809
kind: ClassVar[str] = "zone"
810810
kind_display: ClassVar[str] = "Zone"
811811
kind_description: ClassVar[str] = "A zone."

plugins/aws/fix_plugin_aws/resource/ec2.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -720,7 +720,7 @@ def connect_in_graph(self, builder: GraphBuilder, source: Json) -> None:
720720
def delete_resource(self, client: AwsClient, graph: Graph) -> bool:
721721
client.call(
722722
aws_service=self.api_spec.service,
723-
action="delete_volume",
723+
action="delete-volume",
724724
result_name=None,
725725
VolumeId=self.id,
726726
)
@@ -3439,6 +3439,23 @@ class AwsEc2Image(AwsResource):
34393439
imds_support: Optional[str] = field(default=None, metadata={"description": "If v2.0, it indicates that IMDSv2 is specified in the AMI."}) # fmt: skip
34403440
source_instance_id: Optional[str] = field(default=None, metadata={"description": "The ID of the instance that the AMI was created from if the AMI was created using CreateImage."}) # fmt: skip
34413441

3442+
def delete_resource(self, client: AwsClient, graph: Graph) -> bool:
3443+
client.call(
3444+
aws_service=self.api_spec.service,
3445+
action="deregister-image",
3446+
result_name=None,
3447+
ImageId=self.id,
3448+
)
3449+
return True
3450+
3451+
def connect_in_graph(self, builder: GraphBuilder, source: Json) -> None:
3452+
super().connect_in_graph(builder, source)
3453+
if self.block_device_mappings is None:
3454+
return
3455+
for bdm in self.block_device_mappings:
3456+
if bdm.ebs and bdm.ebs.snapshot_id:
3457+
builder.add_edge(self, EdgeType.default, reverse=False, clazz=AwsEc2Snapshot, id=bdm.ebs.snapshot_id)
3458+
34423459

34433460
@define(eq=False, slots=False)
34443461
class AwsEc2LaunchTemplateIamInstanceProfileSpecification:

plugins/aws/test/resources/ec2_test.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,24 @@ def test_delete_volumes() -> None:
5959
volume, _ = round_trip_for(AwsEc2Volume)
6060

6161
def validate_delete_args(**kwargs: Any) -> None:
62-
assert kwargs["action"] == "delete_volume"
62+
assert kwargs["action"] == "delete-volume"
6363
assert kwargs["VolumeId"] == volume.id
6464

6565
client = cast(AwsClient, SimpleNamespace(call=validate_delete_args))
6666
volume.delete_resource(client, Graph())
6767

6868

69+
def test_deregister_image() -> None:
70+
image, _ = round_trip_for(AwsEc2Image)
71+
72+
def validate_delete_args(**kwargs: Any) -> None:
73+
assert kwargs["action"] == "deregister-image"
74+
assert kwargs["ImageId"] == image.id
75+
76+
client = cast(AwsClient, SimpleNamespace(call=validate_delete_args))
77+
image.delete_resource(client, Graph())
78+
79+
6980
def test_snapshots() -> None:
7081
round_trip_for(AwsEc2Snapshot)
7182

0 commit comments

Comments
 (0)