File: responses.py

package info (click to toggle)
python-moto 5.1.18-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 116,520 kB
  • sloc: python: 636,725; javascript: 181; makefile: 39; sh: 3
file content (76 lines) | stat: -rw-r--r-- 2,770 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import json

from moto.core.responses import BaseResponse

from .models import ResourceGroupsTaggingAPIBackend, resourcegroupstaggingapi_backends


class ResourceGroupsTaggingAPIResponse(BaseResponse):
    def __init__(self) -> None:
        super().__init__(service_name="resourcegroupstaggingapi")

    @property
    def backend(self) -> ResourceGroupsTaggingAPIBackend:
        return resourcegroupstaggingapi_backends[self.current_account][self.region]

    def get_resources(self) -> str:
        pagination_token = self._get_param("PaginationToken")
        tag_filters = self._get_param("TagFilters", [])
        resources_per_page = self._get_int_param("ResourcesPerPage", 50)
        tags_per_page = self._get_int_param("TagsPerPage", 100)
        resource_type_filters = self._get_param("ResourceTypeFilters", [])

        pagination_token, resource_tag_mapping_list = self.backend.get_resources(
            pagination_token=pagination_token,
            tag_filters=tag_filters,
            resources_per_page=resources_per_page,
            tags_per_page=tags_per_page,
            resource_type_filters=resource_type_filters,
        )

        # Format tag response
        response = {
            "ResourceTagMappingList": resource_tag_mapping_list,
            "PaginationToken": pagination_token,
        }
        return json.dumps(response)

    def get_tag_keys(self) -> str:
        pagination_token = self._get_param("PaginationToken")
        pagination_token, tag_keys = self.backend.get_tag_keys(
            pagination_token=pagination_token
        )

        response = {"TagKeys": tag_keys, "PaginationToken": pagination_token}
        return json.dumps(response)

    def get_tag_values(self) -> str:
        pagination_token = self._get_param("PaginationToken")
        key = self._get_param("Key")

        pagination_token, tag_values = self.backend.get_tag_values(
            pagination_token=pagination_token, key=key
        )

        response = {"TagValues": tag_values, "PaginationToken": pagination_token}
        return json.dumps(response)

    def tag_resources(self) -> str:
        resource_arns = self._get_param("ResourceARNList")
        tags = self._get_param("Tags")
        failed_resources = self.backend.tag_resources(
            resource_arns=resource_arns, tags=tags
        )

        return json.dumps({"FailedResourcesMap": failed_resources})

    def untag_resources(self) -> str:
        resource_arn_list = self._get_param("ResourceARNList")
        tag_keys = self._get_param("TagKeys")

        failed_resources = self.backend.untag_resources(
            resource_arn_list=resource_arn_list,
            tag_keys=tag_keys,
        )

        return json.dumps({"FailedResourcesMap": failed_resources})