ResourceGroup - Add Support for getGroupConfiguration (#3919)
* ResourceGroup - Add Support for getGroupConfiguration * Add tests * Add tests * Fix tests * linting * fix tests * fix tests * fix tests * fixed linting * fix tests
This commit is contained in:
parent
f9e0595e12
commit
eaac32b130
4 changed files with 114 additions and 4 deletions
|
|
@ -12,7 +12,9 @@ from .exceptions import BadRequestException
|
|||
|
||||
|
||||
class FakeResourceGroup(BaseModel):
|
||||
def __init__(self, name, resource_query, description=None, tags=None):
|
||||
def __init__(
|
||||
self, name, resource_query, description=None, tags=None, configuration=None
|
||||
):
|
||||
self.errors = []
|
||||
description = description or ""
|
||||
tags = tags or {}
|
||||
|
|
@ -28,6 +30,7 @@ class FakeResourceGroup(BaseModel):
|
|||
self.arn = "arn:aws:resource-groups:us-west-1:{AccountId}:{name}".format(
|
||||
name=name, AccountId=ACCOUNT_ID
|
||||
)
|
||||
self.configuration = configuration
|
||||
|
||||
@staticmethod
|
||||
def _format_error(key, value, constraint):
|
||||
|
|
@ -297,10 +300,16 @@ class ResourceGroupsBackend(BaseBackend):
|
|||
if tag.lower().startswith("aws:"):
|
||||
raise BadRequestException("Tag keys must not start with 'aws:'")
|
||||
|
||||
def create_group(self, name, resource_query, description=None, tags=None):
|
||||
def create_group(
|
||||
self, name, resource_query, description=None, tags=None, configuration=None
|
||||
):
|
||||
tags = tags or {}
|
||||
group = FakeResourceGroup(
|
||||
name=name, resource_query=resource_query, description=description, tags=tags
|
||||
name=name,
|
||||
resource_query=resource_query,
|
||||
description=description,
|
||||
tags=tags,
|
||||
configuration=configuration,
|
||||
)
|
||||
if name in self.groups:
|
||||
raise BadRequestException("Cannot create group: group already exists")
|
||||
|
|
@ -350,6 +359,15 @@ class ResourceGroupsBackend(BaseBackend):
|
|||
self.groups.by_name[group_name].resource_query = resource_query
|
||||
return self.groups.by_name[group_name]
|
||||
|
||||
def get_group_configuration(self, group_name):
|
||||
group = self.groups.by_name.get(group_name)
|
||||
configuration = group.configuration
|
||||
return configuration
|
||||
|
||||
def put_group_configuration(self, group_name, configuration):
|
||||
self.groups.by_name[group_name].configuration = configuration
|
||||
return self.groups.by_name[group_name]
|
||||
|
||||
|
||||
resourcegroups_backends = {}
|
||||
for region in Session().get_available_regions("resource-groups"):
|
||||
|
|
|
|||
|
|
@ -22,8 +22,13 @@ class ResourceGroupsResponse(BaseResponse):
|
|||
description = self._get_param("Description")
|
||||
resource_query = self._get_param("ResourceQuery")
|
||||
tags = self._get_param("Tags")
|
||||
configuration = self._get_param("Configuration")
|
||||
group = self.resourcegroups_backend.create_group(
|
||||
name=name, description=description, resource_query=resource_query, tags=tags
|
||||
name=name,
|
||||
description=description,
|
||||
resource_query=resource_query,
|
||||
tags=tags,
|
||||
configuration=configuration,
|
||||
)
|
||||
return json.dumps(
|
||||
{
|
||||
|
|
@ -34,6 +39,7 @@ class ResourceGroupsResponse(BaseResponse):
|
|||
},
|
||||
"ResourceQuery": group.resource_query,
|
||||
"Tags": group.tags,
|
||||
"GroupConfiguration": {"Configuration": group.configuration},
|
||||
}
|
||||
)
|
||||
|
||||
|
|
@ -165,3 +171,18 @@ class ResourceGroupsResponse(BaseResponse):
|
|||
return json.dumps(
|
||||
{"GroupQuery": {"GroupName": group.name, "ResourceQuery": resource_query}}
|
||||
)
|
||||
|
||||
def get_group_configuration(self):
|
||||
group_name = self._get_param("Group")
|
||||
configuration = self.resourcegroups_backend.get_group_configuration(
|
||||
group_name=group_name
|
||||
)
|
||||
return json.dumps({"GroupConfiguration": {"Configuration": configuration}})
|
||||
|
||||
def put_group_configuration(self):
|
||||
group_name = self._get_param("Group")
|
||||
configuration = self._get_param("Configuration")
|
||||
self.resourcegroups_backend.put_group_configuration(
|
||||
group_name=group_name, configuration=configuration
|
||||
)
|
||||
return json.dumps({"GroupConfiguration": {"Configuration": configuration}})
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@ url_bases = ["https?://resource-groups(-fips)?.(.+).amazonaws.com"]
|
|||
url_paths = {
|
||||
"{0}/delete-group$": ResourceGroupsResponse.dispatch,
|
||||
"{0}/get-group$": ResourceGroupsResponse.dispatch,
|
||||
"{0}/get-group-configuration$": ResourceGroupsResponse.dispatch,
|
||||
"{0}/put-group-configuration$": ResourceGroupsResponse.dispatch,
|
||||
"{0}/get-group-query$": ResourceGroupsResponse.dispatch,
|
||||
"{0}/groups$": ResourceGroupsResponse.dispatch,
|
||||
"{0}/groups/(?P<resource_group_name>[^/]+)$": ResourceGroupsResponse.dispatch,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue