This is overkill btw.

Just do type='dict' in the argument_spec, Ansible knows what to do and
will take a dict or key=value strings inside the option.

This is how the ec2 module does instance tags now

-- Michael

> On Dec 2, 2013, at 4:13 PM, "C. Morgan Hamill" <[email protected]> wrote:
>
> Third option, which I've done in a module for my own use: have an
> "extra_yum_flags" option which can take a dictionary as an argument:
>
>    - yum:
>        state: installed
>        name: mypkg
>        extra_yum_flags:
>          foo: bar
>          bam: baz
>          red_hat: is an operating system
>
> In my module I also happened to allow the extra argument to be taken as
> a string.  You'll have to do something like prepending '--' to all the
> keys in the dict and replacing '_' with '-' or somesuch, but this is
> doable.
>
> For my money, the "extra_yum_flag='--foo bar --bam baz" option seems the
> simplest.  It's not too much code, however, to notice if the argument is
> a dict and deal with it appropriately.  In my code, I did:
>
>    def parse_extra_args(args):
>        parsed_args = ''
>
>        if isinstance(args, dict):
>            for k, v in args.iteritems():
>                parsed_args += '--' + k.replace('_', '-') + ' ' + v
>        elif isinstance(args, basestring):
>            parsed_args = args
>
>        return parsed_args
>
> Also, you shouldn't need to parse the parameters if they're provided in
> a string, no?  Just pass then straight onto the yum command:
>
>    cmd = yum_basecmd + [extra_yum_args, 'install', pkg]
>
> Or what have you.
> --
> Morgan
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Ansible Project" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to