Hello all,
Since the advent of V3 I have been fighting with the list expander and array.
So I have created a water down version of a script that I thought, base on my
understanding, would work and I found myself having to come up with a work
around to what I believe to be a bug. According to my understanding all six
test cases should work and I would of prefer the first one... but hey it does
not!!!!. So can someone here validate that all six cases should work but only
the last one actually does. Of course if my understanding is wrong please let
me know why the first five cases are not working.
So here is the water down version with six test cases (case_1.....) each test
case can be run using cf-agent -K -D case_1.... Assuming you have a server name
madrid and a server name london and that you run the script on server madrid
;-).
body common control
{
version => "1.0.0";
bundlesequence => { "do_main" };
}
bundle common main
{
vars:
"export" string => "/corp/export",
comment => "Directory for data producer to store their data
files that are to be exported";
"import" string => "/corp/import",
comment => "Directory for data warehouse to store imported data
files from data producer server";
case_1::
"tier1_clients[madrid]" slist => { "madrid", "london" };
"tier1_list" slist => getindices("tier1_clients");
case_2::
"tier1_clients_madrid" slist => { "madrid", "london" };
"tier1_list" slist => { "madrid" };
case_3::
"tier1_clients" slist => { "madrid", "london" };
"tier1_list" slist => { "madrid" };
classes:
case_1|case_2|case_3::
"tier1_warehouse" or => { @(tier1_list) };
"data_warehouse" or => { "tier1_warehouse" };
case_4|case_5|case_6::
"tier1_warehouse" or => { "madrid" };
"data_warehouse" or => { "tier1_warehouse" };
}
bundle agent do_main
{
methods:
data_warehouse::
"import" usebundle => do_data_import;
}
bundle agent do_data_import
{
vars:
case_4::
"tier1_clients[madrid]" slist => { "madrid", "london" };
"tier1_list" slist => getindices("tier1_clients");
case_5::
"tier1_clients_madrid" slist => { "madrid", "london" };
"tier1_list" slist => { "madrid" };
case_6::
"tier1_clients" slist => { "madrid", "london" };
"tier1_list" slist => { "madrid" };
files:
tier1_warehouse.case_1::
"$(main.import)"
comment => "Remote copy files from the export directory of
remote servers into the import directory of tier 1 warehouse",
depth_search => recurse("inf"),
file_select => include(".*"),
action => immediate,
copy_from => rcp("$(main.export)",
"$(main.tier1_clients[$(sys.uqhost)])");
tier1_warehouse.case_2::
"$(main.import)"
comment => "Remote copy files from the export directory of
remote servers into the import directory of tier 1 warehouse",
depth_search => recurse("inf"),
file_select => include(".*"),
action => immediate,
copy_from => rcp("$(main.export)",
"$(main.tier1_clients_$(sys.uqhost))");
tier1_warehouse.case_3::
"$(main.import)"
comment => "Remote copy files from the export directory of
remote servers into the import directory of tier 1 warehouse",
depth_search => recurse("inf"),
file_select => include(".*"),
action => immediate,
copy_from => rcp("$(main.export)", "$(main.tier1_clients)");
tier1_warehouse.case_4::
"$(main.import)"
comment => "Remote copy files from the export directory of
remote servers into the import directory of tier 1 warehouse",
depth_search => recurse("inf"),
file_select => include(".*"),
action => immediate,
copy_from => rcp("$(main.export)",
"$(tier1_clients[$(sys.uqhost)])");
tier1_warehouse.case_5::
"$(main.import)"
comment => "Remote copy files from the export directory of
remote servers into the import directory of tier 1 warehouse",
depth_search => recurse("inf"),
file_select => include(".*"),
action => immediate,
copy_from => rcp("$(main.export)",
"$(tier1_clients_$(sys.uqhost))");
tier1_warehouse.case_6::
"$(main.import)"
comment => "Remote copy files from the export directory of
remote servers into the import directory of tier 1 warehouse",
depth_search => recurse("inf"),
file_select => include(".*"),
action => immediate,
copy_from => rcp("$(main.export)", "$(tier1_clients)");
}
body depth_search recurse(d)
{
depth => "$(d)";
}
body file_select include(name)
{
leaf_name => { "$(name)"};
file_result => "leaf_name";
}
body action immediate
{
ifelapsed => "1";
}
body copy_from rcp(from,server)
{
servers => { "$(server)" };
source => "$(from)";
compare => "hash";
copy_backup => "false";
trustkey => "true";
}
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine