Support SSM Parameter tags (#3739)
This commit is contained in:
parent
3c810ad152
commit
457402fbe2
@ -46,6 +46,7 @@ class Parameter(BaseModel):
|
|||||||
keyid,
|
keyid,
|
||||||
last_modified_date,
|
last_modified_date,
|
||||||
version,
|
version,
|
||||||
|
tags=None,
|
||||||
):
|
):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.type = type
|
self.type = type
|
||||||
@ -54,6 +55,7 @@ class Parameter(BaseModel):
|
|||||||
self.keyid = keyid
|
self.keyid = keyid
|
||||||
self.last_modified_date = last_modified_date
|
self.last_modified_date = last_modified_date
|
||||||
self.version = version
|
self.version = version
|
||||||
|
self.tags = tags or []
|
||||||
self.labels = []
|
self.labels = []
|
||||||
|
|
||||||
if self.type == "SecureString":
|
if self.type == "SecureString":
|
||||||
@ -1151,6 +1153,12 @@ class SimpleSystemManagerBackend(BaseBackend):
|
|||||||
values = ["/" + value.strip("/") for value in values]
|
values = ["/" + value.strip("/") for value in values]
|
||||||
elif key == "Type":
|
elif key == "Type":
|
||||||
what = parameter.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:
|
if what is None:
|
||||||
return False
|
return False
|
||||||
@ -1274,7 +1282,7 @@ class SimpleSystemManagerBackend(BaseBackend):
|
|||||||
return [invalid_labels, version]
|
return [invalid_labels, version]
|
||||||
|
|
||||||
def put_parameter(
|
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(
|
if name.lower().lstrip("/").startswith("aws") or name.lower().lstrip(
|
||||||
"/"
|
"/"
|
||||||
@ -1315,6 +1323,7 @@ class SimpleSystemManagerBackend(BaseBackend):
|
|||||||
keyid,
|
keyid,
|
||||||
last_modified_date,
|
last_modified_date,
|
||||||
version,
|
version,
|
||||||
|
tags or [],
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
return version
|
return version
|
||||||
|
@ -247,9 +247,10 @@ class SimpleSystemManagerResponse(BaseResponse):
|
|||||||
allowed_pattern = self._get_param("AllowedPattern")
|
allowed_pattern = self._get_param("AllowedPattern")
|
||||||
keyid = self._get_param("KeyId")
|
keyid = self._get_param("KeyId")
|
||||||
overwrite = self._get_param("Overwrite", False)
|
overwrite = self._get_param("Overwrite", False)
|
||||||
|
tags = self._get_param("Tags", [])
|
||||||
|
|
||||||
result = self.ssm_backend.put_parameter(
|
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:
|
if result is None:
|
||||||
|
@ -962,6 +962,28 @@ def test_describe_parameters_attributes():
|
|||||||
parameters[1]["Version"].should.equal(1)
|
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
|
@mock_ssm
|
||||||
def test_get_parameter_invalid():
|
def test_get_parameter_invalid():
|
||||||
client = client = boto3.client("ssm", region_name="us-east-1")
|
client = client = boto3.client("ssm", region_name="us-east-1")
|
||||||
|
Loading…
Reference in New Issue
Block a user