in github-runner-ami/packer/files/runner-supervisor.py [0:0]
def merge_in_settings(repo: str, out_folder: str) -> None:
client = boto3.client('ssm')
param_path = os.path.join('/runners/', repo, 'configOverlay')
log.info("Loading config overlay from %s", param_path)
try:
resp = client.get_parameter(Name=param_path, WithDecryption=True)
except client.exceptions.ParameterNotFound:
log.debug("Failed to load config overlay", exc_info=True)
return
try:
overlay = json.loads(resp['Parameter']['Value'])
except ValueError:
log.debug("Failed to parse config overlay", exc_info=True)
return
with open(os.path.join(out_folder, ".runner"), "r+") as fh:
settings = json.load(fh)
for key, val in overlay.items():
settings[key] = val
fh.seek(0, os.SEEK_SET)
os.ftruncate(fh.fileno(), 0)
json.dump(settings, fh, indent=2)