Yes, adding conditions for each iteration. Exactly.

I can get in there and see if I can modify it.

Are you thinking something like this... :

- debug: msg={{ item.key }}
  with_recursive:
- { name: dict, args: firmware, conditional: Model } # where Model was set at some past point
   - { name: dict, args: "{{item.value}}", conditional: 'idrac' }

Or something else.

Thanks,
Hank


On 7/24/15 8:44 AM, Hagai Kariti wrote:

Do you mean add conditions for each iteration? No, you cant do that currently. Shouldnt be hard, butnI dont have a lot of time to do it myself.


On Fri, Jul 24, 2015, 15:03 Hank Beatty <[email protected] <mailto:[email protected]>> wrote:

    Hello Hagai,

    This got me going. Thank you.

    Is there a way to match a given model (given that I set the
    'Model' var earlier in the playbook)? I need the firmware and that
    works perfectly but, I need to limit the firmware that goes to a
    certain model of server.

    Thanks,
    Hank

    Something like:

    - debug: var=Model

    - debug: msg={{ item.key }}
      when: item.key == 'idrac'
      with_recursive:
       - { name: dict, args: firmware, "{{ Model }}" }
       - { name: dict, args: "{{item.value}}" }

    Here is the output of the above:

    TASK: [idrac-firmware | debug var=Model]
    **************************************
    ok: [<some server>] => {
        "var": {
            "Model": "PowerEdge_R730xd"
        }
    }

    TASK: [idrac-firmware | debug msg={{ item.key }}]
    *****************************
    skipping: [<some server>] => (item={'key': 'bios', 'value':
    {'url':
    'http://downloads.dell.com/FOLDER02797483M/1/BIOS_CNN4X_WN64_2.5.2.EXE',
    'search': 'none', 'target_version': '2.5.2', 'minimum_version':
    'none', 'filename': 'BIOS_CNN4X_WN64_2.5.2.EXE'}})
    skipping: [<some server>] => (item={'key': 'os_collector',
    'value': {'url':
    
'http://downloads.dell.com/FOLDER02775623M/1/Diagnostics_Application_5W2KP_WN64_OSC_1.1_X10-00.EXE',
    'search': 'none', 'target_version': 1.1000000000000001,
    'minimum_version': 'none', 'filename':
    'Diagnostics_Application_5W2KP_WN64_OSC_1.1_X10-00.EXE'}})
    skipping: [<some server>] => (item={'key': 'bios', 'value':
    {'url':
    'http://downloads.dell.com/FOLDER02868051M/1/BIOS_XR23Y_WN64_1.2.10.EXE',
    'search': 'none', 'target_version': '1.2.10', 'minimum_version':
    'none', 'filename': 'BIOS_XR23Y_WN64_1.2.10.EXE'}})
    ok: [<some server>] => (item={'key': 'idrac', 'value': {'url':
    
'http://downloads.dell.com/FOLDER02881013M/1/iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE',
    'search': 'none', 'target_version': '2.10.10.10',
    'minimum_version': 'none', 'filename':
    'iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE'}})
    => {
        "item": {
            "key": "idrac",
            "value": {
                "filename":
    "iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE",

                "minimum_version": "none",
                "search": "none",
                "target_version": "2.10.10.10",
                "url":
    
"http://downloads.dell.com/FOLDER02881013M/1/iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE";
    
<http://downloads.dell.com/FOLDER02881013M/1/iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE>
            }
        },
        "msg": "idrac"
    }
    skipping: [<some server>] => (item={'key': 'bios', 'value':
    {'url':
    'http://downloads.dell.com/FOLDER02868051M/1/BIOS_XR23Y_WN64_1.2.10.EXE',
    'search': 'none', 'target_version': '1.2.10', 'minimum_version':
    'none', 'filename': 'BIOS_XR23Y_WN64_1.2.10.EXE'}})
    ok: [<some server>] => (item={'key': 'idrac', 'value': {'url':
    
'http://downloads.dell.com/FOLDER02881013M/1/iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE',
    'search': 'none', 'target_version': '2.10.10.10',
    'minimum_version': 'none', 'filename':
    'iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE'}})
    => {
        "item": {
            "key": "idrac",
            "value": {
                "filename":
    "iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE",

                "minimum_version": "none",
                "search": "none",
                "target_version": "2.10.10.10",
                "url":
    
"http://downloads.dell.com/FOLDER02881013M/1/iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE";
    
<http://downloads.dell.com/FOLDER02881013M/1/iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE>
            }
        },
        "msg": "idrac"

    }



    On 6/27/15 7:56 AM, Hagai Kariti wrote:
    You can write a small filter plugin that gives you the items of
    dicts (something that simply returns an `item.values()` or
    something like that). Then you could do:

    vars:
        # Will create a list of inner dict values inside a list of
    parent dict's values
       - firmware_items: "{{ firmware.values() |
    map('get_dict_values') | list }}"
    tasks:
       - debug: var=item.url
     with_flattened: firmware_items


    Alternatively, I wrote a lookup plugin that allows you do chain
    lookups and make them iterate on each other. Then you can do this:

    tasks:
       - debug: item.values.url
     with_recursive:
           - { name: dict, args: firmware }
           - { name: dict, args: "{{item.values}}" }

    Lookup plugin is here:
    https://gist.github.com/hkariti/d07695b4b9c5a68d8c02


    On Wednesday, June 24, 2015 at 10:37:52 PM UTC+3, Hank Beatty wrote:

        Hello,

        Given the data below I would like to create a single task
        that will
        print the url or the filename without having to specify the
        hardware
        (PowerEdge_xxxxx) or the firmware (bios, idrac, etc.).

        Any ideas would be very much appreciated.

        Thanks,
        Hank

        Something like:

           - name: Print firmfware info
             debug: msg="item0 {{ item.0 }} item1 {{ item.1.url }}"
             with_indexed_items: "{{firmware}}"

        OR:

           - name: Print firmfware info
             debug: msg="item0 {{ item.0 }} item1 {{ item.1.url }}"
             with_dict: "{{firmware}}"



        ---
        firmware:
           PowerEdge_730xd:
             bios:
               type: bios
               url:
        http://downloads.dell.com/FOLDER02868051M/1/BIOS_XR23Y_WN64_1.2.10.EXE

               filename: BIOS_XR23Y_WN64_1.2.10.EXE
               target_version: 1.2.10
               search: none
               minimum_version: none
             idrac:
               type: idrac
               url:
        
http://downloads.dell.com/FOLDER02881013M/1/iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE

               filename:
        iDRAC-with-Lifecycle-Controller_Firmware_FM1PC_WN64_2.10.10.10_A00.EXE

               target_version: 2.10.10.10
               search: none
               minimum_version: none
             raid:
               type: raid
               url:
        
http://downloads.dell.com/FOLDER02864367M/2/SAS-RAID_Firmware_V43G1_WN64_25.2.2-0004_A03.EXE

               filename:
        SAS-RAID_Firmware_V43G1_WN64_25.2.2-0004_A03.EXE
               target_version: 25.2.2-0004
               search: none
               minimum_version: none
             nic_intel1:
               type: nic
               url:
        
http://downloads.dell.com/FOLDER02309982M/1/Network_Firmware_M26VT_WN64_15.5.0_A00.EXE

               filename: Network_Firmware_M26VT_WN64_15.5.0_A00.EXE
               target_version: 15.5.0
               search: X520
               minimum_version: none
             nic_intel2:
               type: nic
               url:
        
http://downloads.dell.com/FOLDER02861870M/2/Network_Firmware_6FD9P_WN64_16.5.20_A00.EXE

               filename: Network_Firmware_6FD9P_WN64_16.5.20_A00.EXE
               target_version: 16.5.20
               search: X520
               minimum_version: 15.5.0
           PowerEdge_720xd:
             bios:
               type: bios
               url:
        http://downloads.dell.com/FOLDER02797465M/1/BIOS_MKCTM_WN64_2.5.2.EXE

               filename: BIOS_MKCTM_WN64_2.5.2.EXE
               target_version: 2.5.2
               search: none
               minimum_version: none
             nic:
               type: nic
               url:
        
http://downloads.dell.com/FOLDER02861870M/2/Network_Firmware_6FD9P_WN64_16.5.20_A00.EXE

               filename: Network_Firmware_6FD9P_WN64_16.5.20_A00.EXE
               target_version: 16.5.20
               search: X520
               minimum_version: 15.5.0
           PowerEdge_620xd:
             bios:
               type: bios
               url:
        http://downloads.dell.com/FOLDER02797465M/1/BIOS_MKCTM_WN64_2.5.2.EXE

               filename: BIOS_MKCTM_WN64_2.5.2.EXE
               target_version: 2.5.2
               search: none
               minimum_version: none
             raid:
               type: raid
               url:
        
http://downloads.dell.com/FOLDER02864367M/2/SAS-RAID_Firmware_V43G1_WN64_25.2.2-0004_A03.EXE

               filename:
        SAS-RAID_Firmware_V43G1_WN64_25.2.2-0004_A03.EXE
               target_version: 25.2.2-0004
               search: none
               minimum_version: none

-- 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]
    <mailto:[email protected]>.

    To post to this group, send email to
    [email protected]
    <mailto:[email protected]>.
    To view this discussion on the web visit
    
https://groups.google.com/d/msgid/ansible-project/1fd734c7-7252-4b0f-b974-8cf6ad69f790%40googlegroups.com.

    For more options, visit https://groups.google.com/d/optout.
-- You received this message because you are subscribed to a topic in
    the Google Groups "Ansible Project" group.
    To unsubscribe from this topic, visit
    https://groups.google.com/d/topic/ansible-project/GDRoK1yWo9U/unsubscribe.
    To unsubscribe from this group and all its topics, send an email
    to [email protected]
    <mailto:[email protected]>.
    To post to this group, send email to
    [email protected]
    <mailto:[email protected]>.
    To view this discussion on the web visit
    
https://groups.google.com/d/msgid/ansible-project/55B22989.5030600%40gmail.com
    
<https://groups.google.com/d/msgid/ansible-project/55B22989.5030600%40gmail.com?utm_medium=email&utm_source=footer>.
    For more options, visit https://groups.google.com/d/optout.

--
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] <mailto:[email protected]>. To post to this group, send email to [email protected] <mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/CAO0%3DbmG9oQvLa9fjZ4yVLrkcaALHLrCAMK4vDR61Qn91Udzhrg%40mail.gmail.com <https://groups.google.com/d/msgid/ansible-project/CAO0%3DbmG9oQvLa9fjZ4yVLrkcaALHLrCAMK4vDR61Qn91Udzhrg%40mail.gmail.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

--
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/55B2483A.5010001%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to