Puppet Plan: task_series
- Defined in:
- plans/init.pp
Overview
Intended to allow this to work:
$series_results = run_plan('task_series',
nodes => $targets,
tasks => [
[ 'util::linux_patching',
foo => ,
boo => baz,
],
[ 'util::reboot',
blort => zlot,
],
[ 'util::validate',
arg => val,
],
])
And return a Hash that looks like:
{
"result_sets" => [
ResultSet,
ResultSet,
ResultSet,
ResultSet,
],
"summary" => {
"errored at step 2: task::name": [
Target.name,
Target.name,
],
"succeeded": [
Target.name,
],
},
}
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'plans/init.pp', line 38
plan task_series (
TargetSpec $nodes,
Array[Tuple[String, Hash[String, Any], 2, 2]] $tasks,
) {
$targets = get_targets($nodes)
# Filter out targets not currently reachable
$connection_results = wait_until_available($targets,
wait_time => 0,
_catch_errors => true,
)
$task_results = $tasks.reduce([$connection_results]) |$results, $task| {
$task_array = Array($task)
notice($task_array)
$results << run_task($task_array[0], $results[-1].ok_set.targets,
$task_array[1] + { _catch_errors => true },
)
}[1,-1] # omit the connection results from $task_results
$indexed_labeled_results = [
[0, 'validate connection', $connection_results]
] + $task_results.map |$index, $result| {
[$index + 1, $tasks[$index][0], $result]
}
return({
'connection_results' => $connection_results,
'task_results' => $task_results,
'summary' => task_series::summarize($indexed_labeled_results),
})
}
|