Hi Peter,
Thanks for that! I must have lost the = in translation from the old post, I appreciate you 2nd set of eyes. Now that I'm passed that and have data in the result, I've only graduated to having incorrect results. I had used the any2array function to ensure the array status of the template output and the blacklist param. The blacklist param will be delivered from and ENC (specifically Foreman), and while it should work, I've had issues in the past with arrays and hashes being taken as strings. That said, here's what I see now:
$whitelist = [ foo::a, foo::b, foo::c, foo::d, foo::e ]
$blacklist = [ foo::c, foo::e ]
< apply corrected code, sending notifies for $whitelist, $blacklist, and $include_list >
The notify outputs show that $include_list is identical to $whitelist. If I actually attempt the include $include_list statement (which is usually commented) I get duplicate resource definition errors since the blacklisted classes create resources like package { 'apache': ensure => absent } and the node's purpose might include being a webserver so we have another class which manages the package resource for apache.
I've experimented with the parameter from the ENC, and how I define whitelist in params.pp. I have tried several experiments with quoting the array elements, with singles, with doubles, not quoting the elements, and even defining them as strings, and allowing any2array to convert them before the template. The outputs are different each time, but the result is the same. The blacklist items still appear in the end result.
FWIW, I'm running puppet 3.6.2 on the agent and 3.8.2 on the master, I assume you refer to current as the version 4 tree.