39 lines
1.2 KiB
Text
39 lines
1.2 KiB
Text
<%!
|
|
from bundlewrap.utils import Fault
|
|
|
|
def render_value(key, value):
|
|
if isinstance(value, Fault):
|
|
return render_value(key, value.value)
|
|
elif isinstance(value, type(None)):
|
|
return '""'
|
|
elif isinstance(value, bool):
|
|
return 'true' if value else 'false'
|
|
elif isinstance(value, int):
|
|
return str(value)
|
|
elif isinstance(value, str):
|
|
if key.endswith('_interval'):
|
|
return value
|
|
else:
|
|
escaped_value = value.replace('$', '$$').replace('"', '\\"')
|
|
return f'"{escaped_value}"'
|
|
elif isinstance(value, (list, set)):
|
|
return '[' + ', '.join(render_value(e) for e in sorted(value)) + ']'
|
|
else:
|
|
raise Exception(f"cant process type '{type(value)}' of value '{value}'")
|
|
%>
|
|
|
|
object Host "${host_name}" {
|
|
import "generic-host"
|
|
% for key, value in sorted(host_settings.items()):
|
|
${key} = ${render_value(key, value)}
|
|
% endfor
|
|
}
|
|
|
|
% for service_name, service_config in sorted(services.items()):
|
|
object Service "${service_name}" {
|
|
import "generic-service"
|
|
% for key, value in sorted(service_config.items()):
|
|
${key} = ${render_value(key, value)}
|
|
% endfor
|
|
}
|
|
% endfor
|