Skip to content

Commit 433aeff

Browse files
authored
EC2: fix describe-availability-zones filtering (#12661)
1 parent 573019d commit 433aeff

File tree

4 files changed

+134
-5
lines changed

4 files changed

+134
-5
lines changed

localstack-core/localstack/services/ec2/provider.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,9 @@ def describe_availability_zones(
117117
zone_names = describe_availability_zones_request.get("ZoneNames")
118118
zone_ids = describe_availability_zones_request.get("ZoneIds")
119119
if zone_names or zone_ids:
120-
filters = {
121-
"zone-name": zone_names,
122-
"zone-id": zone_ids,
123-
}
124-
filtered_zones = backend.describe_availability_zones(filters)
120+
filtered_zones = backend.describe_availability_zones(
121+
zone_names=zone_names, zone_ids=zone_ids
122+
)
125123
availability_zones = [
126124
AvailabilityZone(
127125
State="available",

tests/aws/services/ec2/test_ec2.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -974,3 +974,50 @@ def test_raise_create_volume_without_size(snapshot, aws_client):
974974
with pytest.raises(ClientError) as e:
975975
aws_client.ec2.create_volume(AvailabilityZone="eu-central-1a")
976976
snapshot.match("request-missing-size", e.value.response)
977+
978+
979+
@markers.snapshot.skip_snapshot_verify(
980+
paths=[
981+
# not implemented in LS
982+
"$..AvailabilityZones..GroupLongName",
983+
"$..AvailabilityZones..GroupName",
984+
"$..AvailabilityZones..NetworkBorderGroup",
985+
"$..AvailabilityZones..OptInStatus",
986+
]
987+
)
988+
@markers.aws.validated
989+
def test_describe_availability_zones_filter_with_zone_names(snapshot, aws_client):
990+
availability_zones = aws_client.ec2.describe_availability_zones(ZoneNames=["us-east-1a"])
991+
snapshot.match("availability_zones", availability_zones)
992+
993+
994+
@markers.snapshot.skip_snapshot_verify(
995+
paths=[
996+
# not implemented in LS
997+
"$..AvailabilityZones..GroupLongName",
998+
"$..AvailabilityZones..GroupName",
999+
"$..AvailabilityZones..NetworkBorderGroup",
1000+
"$..AvailabilityZones..OptInStatus",
1001+
]
1002+
)
1003+
@markers.aws.validated
1004+
def test_describe_availability_zones_filter_with_zone_ids(snapshot, aws_client):
1005+
availability_zones = aws_client.ec2.describe_availability_zones(ZoneIds=["use1-az1"])
1006+
snapshot.match("availability_zones", availability_zones)
1007+
1008+
1009+
@markers.snapshot.skip_snapshot_verify(
1010+
paths=[
1011+
# not implemented in LS
1012+
"$..AvailabilityZones..GroupLongName",
1013+
"$..AvailabilityZones..GroupName",
1014+
"$..AvailabilityZones..NetworkBorderGroup",
1015+
"$..AvailabilityZones..OptInStatus",
1016+
]
1017+
)
1018+
@markers.aws.validated
1019+
def test_describe_availability_zones_filters(snapshot, aws_client):
1020+
availability_zones = aws_client.ec2.describe_availability_zones(
1021+
Filters=[{"Name": "zone-name", "Values": ["us-east-1a"]}]
1022+
)
1023+
snapshot.match("availability_zones", availability_zones)

tests/aws/services/ec2/test_ec2.snapshot.json

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,5 +419,80 @@
419419
}
420420
}
421421
}
422+
},
423+
"tests/aws/services/ec2/test_ec2.py::test_describe_availability_zones_filter_with_zone_names": {
424+
"recorded-date": "26-05-2025, 13:36:03",
425+
"recorded-content": {
426+
"availability_zones": {
427+
"AvailabilityZones": [
428+
{
429+
"GroupLongName": "US East (N. Virginia) 1",
430+
"GroupName": "<region>-zg-1",
431+
"Messages": [],
432+
"NetworkBorderGroup": "<region>",
433+
"OptInStatus": "opt-in-not-required",
434+
"RegionName": "<region>",
435+
"State": "available",
436+
"ZoneId": "use1-az6",
437+
"ZoneName": "<region>a",
438+
"ZoneType": "availability-zone"
439+
}
440+
],
441+
"ResponseMetadata": {
442+
"HTTPHeaders": {},
443+
"HTTPStatusCode": 200
444+
}
445+
}
446+
}
447+
},
448+
"tests/aws/services/ec2/test_ec2.py::test_describe_availability_zones_filter_with_zone_ids": {
449+
"recorded-date": "26-05-2025, 13:34:49",
450+
"recorded-content": {
451+
"availability_zones": {
452+
"AvailabilityZones": [
453+
{
454+
"GroupLongName": "US East (N. Virginia) 1",
455+
"GroupName": "<region>-zg-1",
456+
"Messages": [],
457+
"NetworkBorderGroup": "<region>",
458+
"OptInStatus": "opt-in-not-required",
459+
"RegionName": "<region>",
460+
"State": "available",
461+
"ZoneId": "use1-az1",
462+
"ZoneName": "<region>b",
463+
"ZoneType": "availability-zone"
464+
}
465+
],
466+
"ResponseMetadata": {
467+
"HTTPHeaders": {},
468+
"HTTPStatusCode": 200
469+
}
470+
}
471+
}
472+
},
473+
"tests/aws/services/ec2/test_ec2.py::test_describe_availability_zones_filters": {
474+
"recorded-date": "26-05-2025, 13:48:29",
475+
"recorded-content": {
476+
"availability_zones": {
477+
"AvailabilityZones": [
478+
{
479+
"GroupLongName": "US East (N. Virginia) 1",
480+
"GroupName": "<region>-zg-1",
481+
"Messages": [],
482+
"NetworkBorderGroup": "<region>",
483+
"OptInStatus": "opt-in-not-required",
484+
"RegionName": "<region>",
485+
"State": "available",
486+
"ZoneId": "use1-az6",
487+
"ZoneName": "<region>a",
488+
"ZoneType": "availability-zone"
489+
}
490+
],
491+
"ResponseMetadata": {
492+
"HTTPHeaders": {},
493+
"HTTPStatusCode": 200
494+
}
495+
}
496+
}
422497
}
423498
}

tests/aws/services/ec2/test_ec2.validation.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,15 @@
1717
"tests/aws/services/ec2/test_ec2.py::TestEc2Integrations::test_vcp_peering_difference_regions": {
1818
"last_validated_date": "2024-06-07T21:28:25+00:00"
1919
},
20+
"tests/aws/services/ec2/test_ec2.py::test_describe_availability_zones_filter_with_zone_ids": {
21+
"last_validated_date": "2025-05-26T13:34:49+00:00"
22+
},
23+
"tests/aws/services/ec2/test_ec2.py::test_describe_availability_zones_filter_with_zone_names": {
24+
"last_validated_date": "2025-05-26T13:36:03+00:00"
25+
},
26+
"tests/aws/services/ec2/test_ec2.py::test_describe_availability_zones_filters": {
27+
"last_validated_date": "2025-05-26T13:48:29+00:00"
28+
},
2029
"tests/aws/services/ec2/test_ec2.py::test_raise_create_volume_without_size": {
2130
"last_validated_date": "2025-02-04T12:53:29+00:00"
2231
}

0 commit comments

Comments
 (0)