Added filtering
This commit is contained in:
parent
c118d12e6f
commit
db20dfcd82
4 changed files with 190 additions and 5 deletions
|
|
@ -28,11 +28,14 @@ class Parameter(BaseModel):
|
|||
return value[len(prefix):]
|
||||
|
||||
def response_object(self, decrypt=False):
|
||||
return {
|
||||
r = {
|
||||
'Name': self.name,
|
||||
'Type': self.type,
|
||||
'Value': self.decrypt(self.value) if decrypt else self.value
|
||||
}
|
||||
if self.keyid:
|
||||
r['KeyId'] = self.keyid
|
||||
return r
|
||||
|
||||
|
||||
class SimpleSystemManagerBackend(BaseBackend):
|
||||
|
|
|
|||
|
|
@ -44,16 +44,61 @@ class SimpleSystemManagerResponse(BaseResponse):
|
|||
return json.dumps(response)
|
||||
|
||||
def describe_parameters(self):
|
||||
# filters = self._get_param('Filters')
|
||||
page_size = 10
|
||||
filters = self._get_param('Filters')
|
||||
token = self._get_param('NextToken')
|
||||
if hasattr(token, 'strip'):
|
||||
token = token.strip()
|
||||
if not token:
|
||||
token = '0'
|
||||
|
||||
token = int(token)
|
||||
|
||||
|
||||
result = self.ssm_backend.get_all_parameters()
|
||||
|
||||
response = {
|
||||
'Parameters': [],
|
||||
}
|
||||
|
||||
for parameter in result:
|
||||
end = token + page_size
|
||||
for parameter in result[token:]:
|
||||
param_data = parameter.response_object(False)
|
||||
response['Parameters'].append(param_data)
|
||||
add = False
|
||||
|
||||
if filters:
|
||||
for filter in filters:
|
||||
if filter['Key'] == 'Name':
|
||||
k = param_data['Name']
|
||||
for v in filter['Values']:
|
||||
if k.startswith(v):
|
||||
add = True
|
||||
break
|
||||
elif filter['Key'] == 'Type':
|
||||
k = param_data['Type']
|
||||
for v in filter['Values']:
|
||||
if k == v:
|
||||
add = True
|
||||
break
|
||||
elif filter['Key'] == 'KeyId':
|
||||
k = param_data.get('KeyId')
|
||||
if k:
|
||||
for v in filter['Values']:
|
||||
if k == v:
|
||||
add = True
|
||||
break
|
||||
else:
|
||||
add = True
|
||||
|
||||
if add:
|
||||
response['Parameters'].append(param_data)
|
||||
|
||||
token = token + 1
|
||||
if len(response['Parameters']) == page_size:
|
||||
response['NextToken'] = str(end)
|
||||
break
|
||||
|
||||
|
||||
|
||||
return json.dumps(response)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue