Table of Contents
lib/cfe_internal.cf
Table of Contents
common bodies
cfe_internal_common
Prototype: cfe_internal_common
Description: Select parts of the standard library that are dependant
Implementation:
bundle common cfe_internal_common
{
vars:
"inputs" slist => { "$(this.promise_dirname)/common.cf",
"$(this.promise_dirname)/commands.cf"};
}
agent bundles
cfe_internal_cleanup_agent_reports
Prototype: cfe_internal_cleanup_agent_reports
Description: Cleanup accumulated agent reports
Implementation:
bundle agent cfe_internal_cleanup_agent_reports
{
vars:
any::
# To avoid unnecessary work, we only findfiles if there is not already a
# variable defined.
"diff_files"
slist => findfiles("$(sys.workdir)/state/diff/*.diff"),
unless => isvariable( $(this.promiser) );
"promise_log_files"
slist => findfiles("$(sys.workdir)/state/promise_log/*.csv"),
unless => isvariable( $(this.promiser) );
"previous_state_files"
slist => findfiles("$(sys.workdir)/state/previous_state/*.cache"),
unless => isvariable( $(this.promiser) );
"untracked_files"
slist => findfiles("$(sys.workdir)/state/untracked/*.idx"),
unless => isvariable( $(this.promiser) );
"files"
slist => { @(diff_files),
@(promise_log_files),
@(previous_state_files),
@(untracked_files) };
"reports_size[$(files)]"
int => filesize("$(files)"),
unless => isvariable( $(this.promiser) );
"tmpmap"
slist => maparray("$(this.v)", reports_size);
# We need to make sure that we have files before summing or errors are
# produced in the log
have_files::
"total_report_size" real => sum(tmpmap);
classes:
"cfe_internal_purge_reports"
expression => isgreaterthan("$(total_report_size)","$(def.max_client_history_size)"),
comment => "Determine if the current sum of reports exceeds the max desired";
"have_files"
expression => isgreaterthan(length(tmpmap), 0);
files:
cfe_internal_purge_reports::
"$(files)"
delete => tidy,
handle => "cf_cleanup_agent_reports_$(files)";
reports:
DEBUG|DEBUG_cfe_internal_cleanup_agent_reports::
"DEBUG $(this.bundle): Size of '$(files)' = '$(reports_size[$(files)])'";
"DEBUG $(this.bundle): Size of all reports = '$(total_report_size)'";
"DEBUG $(this.bundle): Purge threshold = '$(def.max_client_history_size)'";
"DEBUG $(this.bundle): Client history purge triggered"
ifvarclass => "cfe_internal_purge_reports";
}
file bodies
control
Prototype: control
Description: Include necessary parts of stdlib
Implementation:
body file control
{
inputs => { @(cfe_internal_common.inputs) };
}