That worked perfectly -- thanks so much!

On Friday, December 2, 2016 at 11:40:38 AM UTC-8, Matt Martz wrote:
>
> There is no built in way to do this, however with a new custom filter, 
> maybe you can get it:
>
> def dict_path(my_dict, path=None):
>     if path is None:
>         path = []
>     for k, v in my_dict.iteritems():
>         newpath = path + [k]
>         if isinstance(v, dict):
>             for u in dict_path(v, newpath):
>                 yield u
>         else:
>             yield newpath, v
>
> class FilterModule(object):
>     def filters(self):
>         return {
>             'dict_path': dict_path
>         }
>
> And then a playbook that makes use of this:
>
> ---
> - hosts: all
>   vars:
>     somevar:
>       alpha:
>         beta:
>           gamma:
>             foo1: bar1
>             foo2: bar2
>       red:
>         green:
>           blue:
>             baz1: quz1
>             baz2: quz2
>   tasks:
>     - debug:
>         msg: "{{ item.0|join('/') }} => {{ item.1 }}"
>       with_items:
>         - "{{ somevar|dict_path|list }}"
>
> Results in the output of (restricted to 1 item from the loop for brevity):
>
> ok: [localhost] => (item=([u'alpha', u'beta', u'gamma', u'foo1'], 
> u'bar1')) => {
>     "item": [
>         [
>             "alpha",
>             "beta",
>             "gamma",
>             "foo1"
>         ],
>         "bar1"
>     ],
>     "msg": "alpha/beta/gamma/foo1 => bar1"
> }
>
> with that, you could derive a playbook that makes those paths, puts the 
> values into files, etc...
>
>
> On Fri, Dec 2, 2016 at 1:03 PM, Mike Titus <[email protected] 
> <javascript:>> wrote:
>
>> Given this YAML:
>>
>> somevar:
>>>   alpha:
>>>     beta:
>>>       gamma:
>>>         foo1: bar1
>>>         foo2: bar2
>>>   red:
>>>     green:
>>>       blue:
>>>         baz1: quz1
>>>         baz2: quz2
>>
>>
>> I want to construct strings of the full key paths:
>>
>> somevar/alpha/beta/gamma
>>> somevar/red/green/blue
>>
>>
>> Thanks.
>>
>> -- 
>> 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] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ansible-project/789e9f46-0246-4f33-abd0-f7ca961b6363%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/ansible-project/789e9f46-0246-4f33-abd0-f7ca961b6363%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> -- 
> Matt Martz
> @sivel
> sivel.net
>

-- 
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].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/df580647-0fc3-45fa-9ee0-3a3ee1a552e6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to