wip: icingatools webcheck

This commit is contained in:
2026-04-20 23:12:34 +02:00
parent bb5aaa47ad
commit ed039833c5

View File

@@ -1,5 +1,15 @@
import icinga2api import icinga2api
import icinga2api.client import icinga2api.client
from urllib.parse import urlparse
def split_url(url):
parsed = urlparse(url)
http_vhost = parsed.hostname
http_uri = parsed.path or "/"
http_ssl = parsed.scheme == "https"
return http_vhost, http_uri, http_ssl
def _create_client(app): def _create_client(app):
@@ -39,7 +49,7 @@ def _build_service_name(user, async_service_name):
return "{}_async_{}".format(user, async_service_name) return "{}_async_{}".format(user, async_service_name)
def create_service(user, async_service_name, app): def create_service(user, async_service_name, app, webcheck=False):
if not app.config.get("ICINGA_API_URL"): if not app.config.get("ICINGA_API_URL"):
return return
@@ -48,20 +58,43 @@ def create_service(user, async_service_name, app):
name = _build_service_name(user, async_service_name) name = _build_service_name(user, async_service_name)
host_name = app.config["ASYNC_ICINGA_DUMMY_HOST"] host_name = app.config["ASYNC_ICINGA_DUMMY_HOST"]
service_config = { # TODO: query service from DB
"templates": ["generic-service"], accepted_return_codes = [200, 204]
"attrs": {
"display_name": name,
"check_command": "gateway", if webcheck:
"host_name" : host_name, http_vhost, http_uri, http_ssl = split_url(url)
"vars" : { service_config = {
"host" : "async-icinga.atlantishq.de", "templates": ["generic-service"],
"service_name" : async_service_name, "attrs": {
"protocol" : "https", "display_name": name,
"owner" : user "check_command": "http",
"host_name": host_name,
"vars": {
"http_vhost": http_vhost,
"http_uri": http_uri,
"http_expect": http_expect,
"http_accept_status": accepted_return_codes, # array
"http_ssl": True,
"http_sni": True
}
}
}
else:
service_config = {
"templates": ["generic-service"],
"attrs": {
"display_name": name,
"check_command": "gateway",
"host_name" : host_name,
"vars" : {
"host" : "async-icinga.atlantishq.de",
"service_name" : async_service_name,
"protocol" : "https",
"owner" : user
}
} }
} }
}
# Create the service (name is required in this format) # Create the service (name is required in this format)
service_api_helper_name = "{}!{}".format(host_name, name) service_api_helper_name = "{}!{}".format(host_name, name)