First I apologize if this was covered elsewhere, but nothing seemed to 
match my scenario... at least not in a way I could recreate.

I have a role that builds a list of dictionaries.  I've found it fairly 
easy to extend this list, add attributes to individual items, etc, but I'm 
having a real problem "reducing" the output or creating a simplified 
dictionary from the complex one.

The scenario:

Assume I have a list that looks something like this:

drives:
 - volume: 0
   size_kb: 102400
   name: drive1
   datastore: alpha
 - volume: 1
   size_gb: 50
   name: drive2
   datastore: alpha


In this case, I discover with minor manipulation, I can drop {{ drives }} 
right into my vmware_guest module as long as I filter down to just the 
relevant attributes.  If I drop it in as-is, however, it fails because it 
doesn't know what some of the attributes are.  So I want to make it look 
something like this:

drives:
 - size_kb: 102400
   datastore: alpha
 - size_gb: 50
   datastore: alpha

I've tried using selectattr() and rejectattr(), but those seem to 
accept/reject the entire dictionary based on an attribute.  I'm hoping to 
simply filter out irrelevant attributes instead.  I tried just making a new 
list but then had issues with dealing with the "size_*" attributes as one 
is kb and the other is gb.  Basically I would love to have some kind of 
filter where I set a new fact and simply inject every attribute that is 
relevant.

- set_fact:
    new_disks: "{{ new_disks | default([]) + [ drives | 
selectonly('datastore','size_*') ] }}"
  loop: "{{ drives }}"
  loop_control:
    loop_var: loop_drives

Sadly, I've been coming up empty when it comes to "trimming" an object 
down.  Any ideas?

-- 
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/de5b6492-f105-49ff-a088-c25327bc4dff%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to