in scripts/store-agent-creds.py [0:0]
def get_next_index(repo: str) -> int:
"""Find the next available index to store the runner credentials in AWS SSM ParameterStore"""
paginator = boto3.client("ssm").get_paginator("describe_parameters")
path = os.path.join('/runners/', repo, '')
pages = paginator.paginate(ParameterFilters=[{"Key": "Path", "Option": "Recursive", "Values": [path]}])
seen = set()
for page in pages:
for param in page['Parameters']:
name = param['Name']
# '/runners/1/config' -> '1'
index = os.path.basename(os.path.dirname(name))
seen.add(int(index))
if not seen:
return 1
# Fill in any gaps too.
for n in range(1, max(seen) + 2):
if n not in seen:
return n