Store all parameter versions, not just the latest version
This commit is contained in:
parent
e00af2f73c
commit
b4fb4b3b5d
@ -259,7 +259,10 @@ class Command(BaseModel):
|
|||||||
|
|
||||||
class SimpleSystemManagerBackend(BaseBackend):
|
class SimpleSystemManagerBackend(BaseBackend):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._parameters = {}
|
# each value is a list of all of the versions for a parameter
|
||||||
|
# to get the current value, grab the last item of the list
|
||||||
|
self._parameters = defaultdict(list)
|
||||||
|
|
||||||
self._resource_tags = defaultdict(lambda: defaultdict(dict))
|
self._resource_tags = defaultdict(lambda: defaultdict(dict))
|
||||||
self._commands = []
|
self._commands = []
|
||||||
self._errors = []
|
self._errors = []
|
||||||
@ -294,8 +297,8 @@ class SimpleSystemManagerBackend(BaseBackend):
|
|||||||
self._validate_parameter_filters(parameter_filters, by_path=False)
|
self._validate_parameter_filters(parameter_filters, by_path=False)
|
||||||
|
|
||||||
result = []
|
result = []
|
||||||
for param in self._parameters:
|
for param_name in self._parameters:
|
||||||
ssm_parameter = self._parameters[param]
|
ssm_parameter = self.get_parameter(param_name, False)
|
||||||
if not self._match_filters(ssm_parameter, parameter_filters):
|
if not self._match_filters(ssm_parameter, parameter_filters):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@ -504,7 +507,7 @@ class SimpleSystemManagerBackend(BaseBackend):
|
|||||||
result = []
|
result = []
|
||||||
for name in names:
|
for name in names:
|
||||||
if name in self._parameters:
|
if name in self._parameters:
|
||||||
result.append(self._parameters[name])
|
result.append(self.get_parameter(name, with_decryption))
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def get_parameters_by_path(self, path, with_decryption, recursive, filters=None):
|
def get_parameters_by_path(self, path, with_decryption, recursive, filters=None):
|
||||||
@ -513,14 +516,16 @@ class SimpleSystemManagerBackend(BaseBackend):
|
|||||||
# path could be with or without a trailing /. we handle this
|
# path could be with or without a trailing /. we handle this
|
||||||
# difference here.
|
# difference here.
|
||||||
path = path.rstrip("/") + "/"
|
path = path.rstrip("/") + "/"
|
||||||
for param in self._parameters:
|
for param_name in self._parameters:
|
||||||
if path != "/" and not param.startswith(path):
|
if path != "/" and not param_name.startswith(path):
|
||||||
continue
|
continue
|
||||||
if "/" in param[len(path) + 1 :] and not recursive:
|
if "/" in param_name[len(path) + 1 :] and not recursive:
|
||||||
continue
|
continue
|
||||||
if not self._match_filters(self._parameters[param], filters):
|
if not self._match_filters(self.get_parameter(param_name, with_decryption), filters):
|
||||||
continue
|
continue
|
||||||
result.append(self._parameters[param])
|
result.append(self.get_parameter(param_name, with_decryption))
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@ -579,23 +584,25 @@ class SimpleSystemManagerBackend(BaseBackend):
|
|||||||
|
|
||||||
def get_parameter(self, name, with_decryption):
|
def get_parameter(self, name, with_decryption):
|
||||||
if name in self._parameters:
|
if name in self._parameters:
|
||||||
return self._parameters[name]
|
return self._parameters[name][-1]
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def put_parameter(
|
def put_parameter(
|
||||||
self, name, description, value, type, allowed_pattern, keyid, overwrite
|
self, name, description, value, type, allowed_pattern, keyid, overwrite
|
||||||
):
|
):
|
||||||
previous_parameter = self._parameters.get(name)
|
previous_parameter_versions = self._parameters[name]
|
||||||
version = 1
|
if len(previous_parameter_versions) == 0:
|
||||||
|
previous_parameter = None
|
||||||
if previous_parameter:
|
version = 1
|
||||||
|
else:
|
||||||
|
previous_parameter = previous_parameter_versions[-1]
|
||||||
version = previous_parameter.version + 1
|
version = previous_parameter.version + 1
|
||||||
|
|
||||||
if not overwrite:
|
if not overwrite:
|
||||||
return
|
return
|
||||||
|
|
||||||
last_modified_date = time.time()
|
last_modified_date = time.time()
|
||||||
self._parameters[name] = Parameter(
|
self._parameters[name].append(Parameter(
|
||||||
name,
|
name,
|
||||||
value,
|
value,
|
||||||
type,
|
type,
|
||||||
@ -604,7 +611,7 @@ class SimpleSystemManagerBackend(BaseBackend):
|
|||||||
keyid,
|
keyid,
|
||||||
last_modified_date,
|
last_modified_date,
|
||||||
version,
|
version,
|
||||||
)
|
))
|
||||||
return version
|
return version
|
||||||
|
|
||||||
def add_tags_to_resource(self, resource_type, resource_id, tags):
|
def add_tags_to_resource(self, resource_type, resource_id, tags):
|
||||||
|
Loading…
Reference in New Issue
Block a user