On Thu, 6 Feb 2020 20:37:37 +0530
Rakesh Parida <[email protected]> wrote:

> > I would like my o/p as below:
> > dp-steps-common-3.0.12 not equal to
> > dp-steps-common-3.0.15-1911280809_d103a.noarch
> > iam-service-default-3.1.37 is equal to
> > iam-service-default-3.1.37-1911141021_63e48.noarch
> > iam-python-common-1.0.1 not found in list2
> >
> >> > If the numbers of items in list is not equal is there way to compare:
> >> > suppose my lists are:
> >> >       list1
> >> >             "dp-steps-common-3.0.12",
> >> >             "iam-python-common-1.0.1",
> >> >             "iam-service-default-3.1.37"
> >> >       list2:
> >> >             "dp-steps-common-3.0.15-1911280809_d103a.noarch",
> >> >             "iam-service-default-3.1.37-1911141021_63e48.noarch"

Sure. Transform the data first. For example

    - set_fact:
        my_pkgs: "{{ my_pkgs|default({})|
                     combine({pkg_name: {'list1': item, 'list2': pkg2}}) }}"
      vars:
        pkg_name: "{{ item.split('-')[:-1]|join('-') }}"
        pkg2: "{{ list2|select('search', pkg_name)|list|first|default('') }}"
      loop: "{{ list1 }}"
    - debug:
        var: my_pkgs

give

    "my_pkgs": {
        "dp-steps-common": {
            "list1": "dp-steps-common-3.0.12", 
            "list2": "dp-steps-common-3.0.15-1911280809_d103a.noarch"
        }, 
        "iam-python-common": {
            "list1": "iam-python-common-1.0.1", 
            "list2": ""
        }, 
        "iam-service-default": {
            "list1": "iam-service-default-3.1.37", 
            "list2": "iam-service-default-3.1.37-1911141021_63e48.noarch"
        }
    }

Then the manipulation with the data is trivial. For example

    - debug:
        msg: |
          {% if item.value.list2 %}
          {% if item.value.list1 in item.value.list2 %}
          {{ item.value.list1 }} is equal to {{ item.value.list2 }}
          {% else %}
          {{ item.value.list1 }} not equal to {{ item.value.list2 }}
          {% endif %}
          {% else %}
          {{ item.value.list1 }} not found in list2
          {% endif %}
      loop: "{{ my_pkgs|dict2items }}"

gives you what you want

    "msg": "iam-python-common-1.0.1 not found in list2\n"
    "msg": "iam-service-default-3.1.37 is equal to
    iam-service-default-3.1.37-1911141021_63e48.noarch\n"
    "msg": "dp-steps-common-3.0.12 not equal to
    dp-steps-common-3.0.15-1911280809_d103a.noarch\n"

HTH,

        -vlado

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/20200206165704.67d900dd%40gmail.com.

Attachment: pgphWm9z8mApg.pgp
Description: OpenPGP digital signature

Reply via email to