diff --git a/bundles/simple-icinga-dashboard/files/config.conf b/bundles/simple-icinga-dashboard/files/config.conf deleted file mode 100644 index bcf5b47..0000000 --- a/bundles/simple-icinga-dashboard/files/config.conf +++ /dev/null @@ -1,16 +0,0 @@ -[icinga2_api] -baseurl = ${api_url} -username = ${api_user} -password = ${api_password} - -[filters] -hosts = ${host_filter} -services = ${service_filter} - -[prettify] -% for search, replace in sorted(replacements.items()): -${search.lower()} = ${replace} -% endfor - -[output] -filename = /opt/simple-icinga-dashboard/out/index.html diff --git a/bundles/simple-icinga-dashboard/items.py b/bundles/simple-icinga-dashboard/items.py index 9dad2ce..9ee2ef1 100644 --- a/bundles/simple-icinga-dashboard/items.py +++ b/bundles/simple-icinga-dashboard/items.py @@ -1,3 +1,7 @@ +from tomlkit import dumps as toml_dumps + +from bundlewrap.utils.text import toml_clean + users = { 'icinga_dashboard': { 'home': '/opt/simple-icinga-dashboard', @@ -19,9 +23,8 @@ git_deploy = { } files = { - '/opt/simple-icinga-dashboard/src/config.conf': { - 'content_type': 'mako', - 'context': node.metadata['simple-icinga-dashboard'], + '/opt/simple-icinga-dashboard/src/config.toml': { + 'content': toml_clean(toml_dumps(repo.libs.toml.dict_to_toml(node.metadata['simple-icinga-dashboard']))), 'needs': { 'git_deploy:/opt/simple-icinga-dashboard/src', }, diff --git a/bundles/simple-icinga-dashboard/metadata.py b/bundles/simple-icinga-dashboard/metadata.py index 9b8d892..5d2780c 100644 --- a/bundles/simple-icinga-dashboard/metadata.py +++ b/bundles/simple-icinga-dashboard/metadata.py @@ -9,4 +9,9 @@ defaults = { }, }, }, + 'simple-icinga-dashboard': { + 'output': { + 'filename': '/opt/simple-icinga-dashboard/out/index.html', + }, + }, } diff --git a/libs/toml.py b/libs/toml.py new file mode 100644 index 0000000..11c7307 --- /dev/null +++ b/libs/toml.py @@ -0,0 +1,19 @@ +from tomlkit import document as toml_document + +from bundlewrap.utils import Fault + +# Copied from bw core, because bw core doesn't support faults +def dict_to_toml(dict_obj): + toml_doc = toml_document() + for key, value in sorted(dict_obj.items()): + if isinstance(value, tuple): + toml_doc[key] = list(value) + elif isinstance(value, set): + toml_doc[key] = sorted(value) + elif isinstance(value, dict): + toml_doc[key] = dict_to_toml(value) + elif isinstance(value, Fault): + toml_doc[key] = str(value) + else: + toml_doc[key] = value + return toml_doc diff --git a/nodes/ovh/icinga2.py b/nodes/ovh/icinga2.py index 23e1aa9..939e952 100644 --- a/nodes/ovh/icinga2.py +++ b/nodes/ovh/icinga2.py @@ -33,7 +33,6 @@ nodes['ovh.icinga2'] = { 'dashboard': { 'password': vault.password_for('ovh.icinga2 icinga2 api_user dashboard'), 'permissions': { - 'objects/query/Host', 'objects/query/Service' }, }, @@ -106,12 +105,15 @@ nodes['ovh.icinga2'] = { }, }, 'simple-icinga-dashboard': { - 'api_url': 'https://127.0.0.1:5665', - 'api_user': 'dashboard', - 'api_password': vault.password_for('ovh.icinga2 icinga2 api_user dashboard'), - 'host_filter': '"checks_with_sms" in host.groups', - 'service_filter': '"checks_with_sms" in service.groups', - 'replacements': { + 'icinga2_api': { + 'baseurl': 'https://127.0.0.1:5665', + 'username': 'dashboard', + 'password': vault.password_for('ovh.icinga2 icinga2 api_user dashboard'), + }, + 'filters': { + 'services': '"checks_with_sms" in service.groups', + }, + 'prettify': { 'CONTENT': '', 'NGINX': 'WEBSERVER', 'PROCESS': 'SERVICE',