From 7bdc9ead8393ebbf7c6098ea2655052fdec9f766 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Sun, 21 Sep 2025 02:51:44 +0900 Subject: [PATCH] Validate log parameters Make sure log_handlers parameter contains only supported handler names. Empty handlers list is now rejected because we expect at least one logger may be enabled in real deployments. Also validate log_level and log_facility. Change-Id: I35e2f1f232bd6b5723f61442a3e4a4ba3315547f Signed-off-by: Takashi Kajinami --- manifests/init.pp | 10 +++++----- types/loghandlers.pp | 4 ++++ types/loglevel.pp | 10 ++++++++++ types/syslogfacility.pp | 10 ++++++++++ 4 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 types/loghandlers.pp create mode 100644 types/loglevel.pp create mode 100644 types/syslogfacility.pp diff --git a/manifests/init.pp b/manifests/init.pp index a4b485a9..fa913333 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -596,11 +596,11 @@ class horizon ( $api_result_limit = undef, $api_result_page_size = undef, $dropdown_max_items = undef, - Array[String[1]] $log_handlers = ['file'], - $log_level = 'INFO', - $django_log_level = undef, - $django_template_log_level = 'INFO', - $syslog_facility = 'local1', + Horizon::LogHandlers $log_handlers = ['file'], + Horizon::LogLevel $log_level = 'INFO', + Optional[Horizon::LogLevel] $django_log_level = undef, + Horizon::LogLevel $django_template_log_level = 'INFO', + Horizon::SyslogFacility $syslog_facility = 'local1', Optional[Stdlib::HTTPUrl] $help_url = undef, Optional[Stdlib::HTTPUrl] $bug_url = undef, $local_settings_template = 'horizon/local_settings.py.erb', diff --git a/types/loghandlers.pp b/types/loghandlers.pp new file mode 100644 index 00000000..ac596a5c --- /dev/null +++ b/types/loghandlers.pp @@ -0,0 +1,4 @@ +type Horizon::LogHandlers = Array[ + Enum['null', 'console', 'file', 'syslog'], + 1, +] diff --git a/types/loglevel.pp b/types/loglevel.pp new file mode 100644 index 00000000..23b59997 --- /dev/null +++ b/types/loglevel.pp @@ -0,0 +1,10 @@ +type Horizon::LogLevel = Enum[ + 'NOTSET', + 'DEBUG', + 'INFO', + 'WARNING', + 'ERROR', + 'CRITICAL', + 'WARN', + 'FATAL', +] diff --git a/types/syslogfacility.pp b/types/syslogfacility.pp new file mode 100644 index 00000000..35df148e --- /dev/null +++ b/types/syslogfacility.pp @@ -0,0 +1,10 @@ +type Horizon::SyslogFacility = Enum[ + 'local0', + 'local1', + 'local2', + 'local3', + 'local4', + 'local5', + 'local6', + 'local7', +]