Support SSM Parameter tags (#3739)
This commit is contained in:
parent
3c810ad152
commit
457402fbe2
@ -46,6 +46,7 @@ class Parameter(BaseModel):
|
||||
keyid,
|
||||
last_modified_date,
|
||||
version,
|
||||
tags=None,
|
||||
):
|
||||
self.name = name
|
||||
self.type = type
|
||||
@ -54,6 +55,7 @@ class Parameter(BaseModel):
|
||||
self.keyid = keyid
|
||||
self.last_modified_date = last_modified_date
|
||||
self.version = version
|
||||
self.tags = tags or []
|
||||
self.labels = []
|
||||
|
||||
if self.type == "SecureString":
|
||||
@ -1151,6 +1153,12 @@ class SimpleSystemManagerBackend(BaseBackend):
|
||||
values = ["/" + value.strip("/") for value in values]
|
||||
elif key == "Type":
|
||||
what = parameter.type
|
||||
elif key.startswith("tag:"):
|
||||
what = key[4:] or None
|
||||
for tag in parameter.tags:
|
||||
if tag["Key"] == what and tag["Value"] in values:
|
||||
return True
|
||||
return False
|
||||
|
||||
if what is None:
|
||||
return False
|
||||
@ -1274,7 +1282,7 @@ class SimpleSystemManagerBackend(BaseBackend):
|
||||
return [invalid_labels, version]
|
||||
|
||||
def put_parameter(
|
||||
self, name, description, value, type, allowed_pattern, keyid, overwrite
|
||||
self, name, description, value, type, allowed_pattern, keyid, overwrite, tags,
|
||||
):
|
||||
if name.lower().lstrip("/").startswith("aws") or name.lower().lstrip(
|
||||
"/"
|
||||
@ -1315,6 +1323,7 @@ class SimpleSystemManagerBackend(BaseBackend):
|
||||
keyid,
|
||||
last_modified_date,
|
||||
version,
|
||||
tags or [],
|
||||
)
|
||||
)
|
||||
return version
|
||||
|
@ -247,9 +247,10 @@ class SimpleSystemManagerResponse(BaseResponse):
|
||||
allowed_pattern = self._get_param("AllowedPattern")
|
||||
keyid = self._get_param("KeyId")
|
||||
overwrite = self._get_param("Overwrite", False)
|
||||
tags = self._get_param("Tags", [])
|
||||
|
||||
result = self.ssm_backend.put_parameter(
|
||||
name, description, value, type_, allowed_pattern, keyid, overwrite
|
||||
name, description, value, type_, allowed_pattern, keyid, overwrite, tags
|
||||
)
|
||||
|
||||
if result is None:
|
||||
|
@ -962,6 +962,28 @@ def test_describe_parameters_attributes():
|
||||
parameters[1]["Version"].should.equal(1)
|
||||
|
||||
|
||||
@mock_ssm
|
||||
def test_describe_parameters_tags():
|
||||
client = boto3.client("ssm", region_name="us-east-1")
|
||||
|
||||
client.put_parameter(Name="/foo/bar", Value="spam", Type="String")
|
||||
client.put_parameter(
|
||||
Name="/spam/eggs",
|
||||
Value="eggs",
|
||||
Type="String",
|
||||
Tags=[{"Key": "spam", "Value": "eggs"}],
|
||||
)
|
||||
|
||||
response = client.describe_parameters(
|
||||
ParameterFilters=[{"Key": "tag:spam", "Values": ["eggs"]}]
|
||||
)
|
||||
|
||||
parameters = response["Parameters"]
|
||||
parameters.should.have.length_of(1)
|
||||
|
||||
parameters[0]["Name"].should.equal("/spam/eggs")
|
||||
|
||||
|
||||
@mock_ssm
|
||||
def test_get_parameter_invalid():
|
||||
client = client = boto3.client("ssm", region_name="us-east-1")
|
||||
|
Loading…
Reference in New Issue
Block a user