Skip to content

Commit

Permalink
Added service_config bundle to aid in service config check/replace/se…
Browse files Browse the repository at this point in the history
…rvice restart

Ticket: ENT-11440
Changelog: title
  • Loading branch information
craigcomstock committed Oct 14, 2024
1 parent d94cee3 commit 1aebec1
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 0 deletions.
64 changes: 64 additions & 0 deletions lib/service_config.cf
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# todo, maybe chmod, user, group for config_final_path
# check pid file for service stop/start?
bundle agent service_config(service_name,config_template_path,config_final_path,validate_config_command,template_data)
{
vars:

"staged_config" string => "$(config_final_path).staged";


methods:

"staged config rendered" usebundle => file_make_mustache($(staged_config), $(config_template_path), @(template_data));
"final config and restart" usebundle => validate_config_and_restart_service($(staged_config), $(validate_config_command), $(config_final_path), $(service_name));


reports:

DEBUG::
"template_data is ${with}" with => storejson(template_data);
}

bundle agent validate_config_and_restart_service(staged_config,validate_config_command,config_final_path,service_name)
{
vars:
"validation_output" string => "$(staged_config)-validation.log";
classes:

"config_validated" expression => returnszero("$(validate_config_command) $(staged_config) 2>&1 >$(validation_output)", "useshell");
"config_final_exists" expression => fileexists("$(config_final_path)");
"staged_config_newer" expression => isnewerthan("$(staged_config)", "$(config_final_path)");


files:

"$(config_final_path)"
copy_from => local_dcp($(staged_config)),
if => and("config_validated", or(not("config_final_exists"), "staged_config_newer")),
classes => results("bundle", "$(service_name)_config");


services:

"$(service_name)"
service_policy => "stop",
if => "$(service_name)_config_repaierd",
classes => results("bundle", "$(service_name)_stopped_after_validated_config");

"$(service_name)"
service_policy => "start",
if => and("$(service_name)_config_repaired", "$(service_name)_stopped_after_validated_config_repaired");

"$(service_name)"
service_policy => "restart",
if => and("$(service_name)_config_repaired", not("$(service_name)_stopped_after_validated_config_repaired"));


reports:

DEBUG::
"$(staged_config) validates" if => "config_validated";
"$(config_final_path) exists" if => "config_final_exists";
"$(staged_config) is newer than $(config_final_path)" if => "staged_config_newer";
"validation output ${with}" with => readfile("${validation_output}");
}
1 change: 1 addition & 0 deletions lib/stdlib.cf
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ bundle common stdlib_common
"input[files]" string => "$(this.promise_dirname)/files.cf";
"input[edit_xml]" string => "$(this.promise_dirname)/edit_xml.cf";
"input[services]" string => "$(this.promise_dirname)/services.cf";
"input[service_config]" string => "$(this.promise_dirname)/service_config.cf";
"input[processes]" string => "$(this.promise_dirname)/processes.cf";
"input[storage]" string => "$(this.promise_dirname)/storage.cf";
"input[databases]" string => "$(this.promise_dirname)/databases.cf";
Expand Down

0 comments on commit 1aebec1

Please sign in to comment.