how to verify all parameters are set and different from space in a csv file ?

Hello,

I read a csv file with the lookup command with a loop on the items:

tasks:

  • set_fact:
    “{{ item.name }}”: “{{ lookup(‘csvfile’, ‘{{ item.csvvar }} file=vars/fvaltat.csv delimiter=; col=1’) }}”
    with_items:
  • { name: ‘KARAFHTTPTIMEOUT’, csvvar: ‘TOTO’ }
  • { name: ‘dbType’, csvvar: ‘DBTYPE’ }

How to check the variable does exist and is different from space
I tried without success a fail … when :
when: item.0 is not defined
when: item.name is not defined
when: item.name ==‘
I tried to use a register variable but I cannot find the way to test the register variable content.

Thanks for your help

The purpose is that the playbook fails if some parameters are not defined in the csv file

I understand the |default() can be used to run a loop only if the item is not an empty list,
But I can’t find a way to proceed to quit the playbook if one parameter is missing:

vars: booleen: False

  • set_facts:
    booleen: True
    with_items:
  • “{{ KARAFHTTPTIMEOUT|default() }}”
  • “{{ dbType|default() }}”

if all parameters are empty, booleen is False and I can use fail: … when booleen = False
But if only one parameter is missing, booleen is true.

Thanks for helping: my purpose is to verify that all parameters are set in a csv file and to fail of one is missing.

I found a “bypass” way to proceed, but any suggestion is welcome:

  • set_fact:
    compte: "{{ compte|int +1 }} "
    with_items:

  • “{{ KARAFHTTPTIMEOUT|default() }}”

  • “{{ dbType }}”

  • fail:
    msg: “{{ 2 - compte|int}} parameters are missing”
    when: compte != 2

correcting the when clause:
when: compte|int != 2

Finally this is still not OK as this bypass solution only works for ampty parameters.
if parameters are set but not intialized, or set to space, this is not ok

I had before counting for the parameters set:

  • name: Si les parametres existent mais non renseignes, on les declare empty
    set_fact:
    “{{ item }}” : ‘
    with_items:
  • KARAFHTTPTIMEOUT
  • dbType
    when: “{{ item }} is none or {{ item }}|trim == ‘’”