On Thu, Sep 19, 2013 at 3:33 PM, jcbollinger <[email protected]> wrote:
>
>
> On Thursday, September 19, 2013 9:13:59 AM UTC-5, Darin Perusich wrote:
>>
>> Hello All,
>>
>> I've run into an issue where an array that's being passed into a
>> defined type is being "flattened" when it's inclosed in double quotes
>> and I'm not sure how to get around this.
>
>
>
> You get around it by not referencing the variable inside double quotes.
> Putting the variable reference inside double quotes indicates that you want
> to interpolate its (one) string value into the (one) larger string.
Yes I'm aware.
>
>>
>> This is happening a the
>> pdxcat/amanda module and I've raised an github issues for this but
>> wanted to query the community as a whole. The issue and my branch of
>> the code are below.
>>
>> The amanda::server or amanda::configs class/defined type allow you to
>> populate amanda configuration directories from files,
>> /etc/amanda/$configs, by setting configs => [ "daily", "weekly" ] in
>> the manifest. In my defined type, amanda::disklist, the parameter
>> $configs needs to be used to set the correct target path to a file
>> which I'm using contact::fragment to modify. When $configs is a single
>> value, say "daily", everything works as expected. But then $configs is
>> an array, "daily" and "weekly", it's flattened to "dailyweekly" which
>> results in an "Invalid relationship:" error.
>
>
>
> What is the desired behavior in this case? Choose the first element? The
> last? A random one? Perhaps do something for each element?
The desired behavior is to add/remove entries in the disklist file for
each $configs specified. For example your "daily" backups might run
weekdays and only do incremental dumps, but the "weekly" backups run
on weekends and are archived and sent off site.
>
>>
>>
>> Can anyone provide some guidance on how to get around this? I've been
>> banging on this for a few days and my heads really starting to hurt.
>>
>> define amanda::disklist (
>> $configs,
>> $diskdevice = undef,
>> $dumptype,
>> $ensure = present,
>> $interface = undef,
>> $order = 20,
>> $spindle = undef
>> ) {
>> include amanda::params
>> include amanda::virtual
>>
>> concat::fragment { "amanda::disklist/$title":
>> target => "$amanda::params::configs_directory/$configs/disklist",
>> ensure => $ensure,
>> order => $order,
>> content => "$fqdn $name $diskdevice $dumptype $spindle
>> $interface\n",
>> tag => "amanda_dle",
>> }
>>
>> https://github.com/pdxcat/puppet-module-amanda/issues/12
>> https://github.com/deadpoint/puppet-amanda/tree/disklist
>>
>
>
> Your definition seems generally ill-conceived, or at least ill-named, in the
> face of a $configs variable containing multiple elements. The only sensible
> thing I can see in that case would be for multiple files to be managed,
> whereas your defined type represents only one.
I thought about creating multiple files but values in amanda.conf are
not managed by puppet, other than being copied to the server, so the
admin would need to know to add/set disklist value which is typically
not present. I see this as being a future enhancement to the module.
> What is the relationship between your defined type and amanda::dle? The
> latter appears to be doing about the same thing, but seems to get it right.
> The key difference there is that amanda::dle makes use of the $configs array
> directly as a resource title. When an array literal or an array-valued
> variable is used as a resource title, it serves as shorthand for multiple
> resource declarations, one for each array element, all with the same
> parameters. This behavior is often leveraged for splitting arrays into
> multiple elements, just as amanda::dle does.
With amanda::dle I was trying another approach, but it causes
duplicate definitions so I wouldn't say it got it right;-)
--
Later,
Darin
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/puppet-users.
For more options, visit https://groups.google.com/groups/opt_out.