ResourceGroupsTaggingAPI: add sqs tags (#7093)

This commit is contained in:
archinksagar 2023-12-05 15:52:15 -05:00 committed by GitHub
parent 4cb9fdbb62
commit 16b9f319c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 48 additions and 0 deletions

View File

@ -18,6 +18,7 @@ from moto.moto_api._internal import mock_random
from moto.rds.models import RDSBackend, rds_backends
from moto.redshift.models import RedshiftBackend, redshift_backends
from moto.s3.models import S3Backend, s3_backends
from moto.sqs.models import SQSBackend, sqs_backends
from moto.utilities.tagging_service import TaggingService
# Left: EC2 ElastiCache RDS ELB CloudFront WorkSpaces Lambda EMR Glacier Kinesis Redshift Route53
@ -95,6 +96,10 @@ class ResourceGroupsTaggingAPIBackend(BaseBackend):
def acm_backend(self) -> AWSCertificateManagerBackend:
return acm_backends[self.account_id][self.region_name]
@property
def sqs_backend(self) -> SQSBackend:
return sqs_backends[self.account_id][self.region_name]
def _get_resources_generator(
self,
tag_filters: Optional[List[Dict[str, Any]]] = None,
@ -442,6 +447,17 @@ class ResourceGroupsTaggingAPIBackend(BaseBackend):
# RedShift Snapshot
# RedShift Subnet group
# SQS
if not resource_type_filters or "sqs" in resource_type_filters:
for queue in self.sqs_backend.queues.values():
tags = format_tags(queue.tags)
if not tags or not tag_filter(
tags
): # Skip if no tags, or invalid filter
continue
yield {"ResourceARN": f"{queue.queue_arn}", "Tags": tags}
# VPC
if (
not resource_type_filters

View File

@ -14,6 +14,7 @@ from moto import (
mock_lambda,
mock_resourcegroupstaggingapi,
mock_s3,
mock_sqs,
)
from tests import EXAMPLE_AMI_ID, EXAMPLE_AMI_ID2
@ -715,6 +716,37 @@ def test_get_resources_lambda():
assert_response(resp, [rectangle_arn])
@mock_sqs
@mock_resourcegroupstaggingapi
def test_get_resources_sqs():
sqs = boto3.resource("sqs", region_name="eu-central-1")
# Create two tagged SQS queues
for i in range(1, 3):
i_str = str(i)
sqs.create_queue(
QueueName="sqs-tag-value-" + i_str,
tags={
"Test": i_str,
},
)
rtapi = boto3.client("resourcegroupstaggingapi", region_name="eu-central-1")
# Basic test
resp = rtapi.get_resources(ResourceTypeFilters=["sqs"])
assert len(resp["ResourceTagMappingList"]) == 2
# Test tag filtering
resp = rtapi.get_resources(
ResourceTypeFilters=["sqs"],
TagFilters=[{"Key": "Test", "Values": ["1"]}],
)
assert len(resp["ResourceTagMappingList"]) == 1
assert {"Key": "Test", "Value": "1"} in resp["ResourceTagMappingList"][0]["Tags"]
@mock_resourcegroupstaggingapi
def test_tag_resources_for_unknown_service():
rtapi = boto3.client("resourcegroupstaggingapi", region_name="us-west-2")