# \\e\[0m comapre this string in failed\_when condition

**URL:** <https://forum.ansible.com/t/e-0m-comapre-this-string-in-failed-when-condition/30057>\
**Category:** Ansible Project\
**Created:** [April 4, 2019, 7:00am UTC](https://forum.ansible.com/t/e-0m-comapre-this-string-in-failed-when-condition/30057 "2019-04-04T07:00:45Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kunalsing\_Thakur](https://avatars.discourse-cdn.com/v4/letter/k/3d9bf3/32.png) [@Kunalsing\_Thakur](https://forum.ansible.com/u/Kunalsing_Thakur)\
**Post date:** [April 4, 2019, 7:00am UTC](https://forum.ansible.com/t/e-0m-comapre-this-string-in-failed-when-condition/30057/1 "2019-04-04T07:00:45Z")

</div>

Hello Team,

When i was checking for string comparison in failed\_when condition.

the ansible task does not give any output if search is not found. but it will print stdout variable as stdout: “\e[0m”  
But when i try to compare my ansible playbook gives error.  
I tried two ways in codition:-

1. failed\_when: “‘{{\e[0m}}’ in pulp.results.[0].stdout”  
Error which i got:-  
TASK [mobi\_ansible\_role\_pulp : searching the rpm into pulp repo] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
task path: /etc/ansible/roles/mobi\_ansible\_role\_pulp/tasks/pulp.yaml:4  
Thursday 04 April 2019 06:55:59 +0000 (0:00:02.078) 0:00:06.052 \*\*\*\*\*\*\*\*  
fatal: [pulp]: FAILED! =\>  
msg: “The conditional check ‘’{{\e[0m}}’ in pulp.results.[0].stdout’ failed. The error was: template error while templating string: unexpected char u’\x1b’ at 3. String: ‘{{\e[0m}}’ in pulp.results.[0].stdout”

2)failed\_when: pulp.results.[0].stdout == “{{\e[0m}}”

fatal: [inplp01p2.infra.smf1.mobitv]: FAILED! =\>  
msg: |-  
The conditional check ‘pulp.results.[0].stdout == “{{\e[0m}}”’ failed. The error was: unexpected char u’\’ at 30  
line 1

task:-

---

<div class="post-metadata">

**Author:** ![Kunalsing\_Thakur](https://avatars.discourse-cdn.com/v4/letter/k/3d9bf3/32.png) [@Kunalsing\_Thakur](https://forum.ansible.com/u/Kunalsing_Thakur)\
**Post date:** [April 4, 2019, 7:24am UTC](https://forum.ansible.com/t/e-0m-comapre-this-string-in-failed-when-condition/30057/2 "2019-04-04T07:24:31Z")

</div>

or is there way we can compare empty string.

---

<div class="post-metadata">

**Author:** ![Kunalsing\_Thakur](https://avatars.discourse-cdn.com/v4/letter/k/3d9bf3/32.png) [@Kunalsing\_Thakur](https://forum.ansible.com/u/Kunalsing_Thakur)\
**Post date:** [April 5, 2019, 6:12pm UTC](https://forum.ansible.com/t/e-0m-comapre-this-string-in-failed-when-condition/30057/3 "2019-04-05T18:12:03Z")

</div>

Gentle reminder, is anyone can help on this

---

<div class="post-metadata">

**Author:** ![sivel](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/sivel/32/1198_2.png) [@sivel](https://forum.ansible.com/u/sivel)\
**Post date:** [April 5, 2019, 7:45pm UTC](https://forum.ansible.com/t/e-0m-comapre-this-string-in-failed-when-condition/30057/4 "2019-04-05T19:45:21Z")

</div>

You would need to convert that value from a shell escape sequence, to a python escape sequence, for consumption by PyYAML.

The easiest way to express this will likely be:

- name: searching the rpm into pulp repo  
shell: pulp-admin rpm repo content rpm --repo-id=mobi-snapshots --match ‘filename={{ item }}’  
with\_items: “{{ rpmname | default() }}”  
register: pulp  
when: rpmsearch is defined  
failed\_when: escape in pulp.results.[0].stdout  
vars:  
escape: “\u001b[0m”

---

<div class="post-metadata">

**Author:** ![Kunalsing\_Thakur](https://avatars.discourse-cdn.com/v4/letter/k/3d9bf3/32.png) [@Kunalsing\_Thakur](https://forum.ansible.com/u/Kunalsing_Thakur)\
**Post date:** [April 6, 2019, 9:58am UTC](https://forum.ansible.com/t/e-0m-comapre-this-string-in-failed-when-condition/30057/5 "2019-04-06T09:58:14Z")

</div>

Hello Matt,

i tried with task

- name: searching the rpm into {{ reponame }} repo  
shell: pulp-admin rpm repo content rpm --repo-id={{reponame}} --match ‘filename={{ item }}’  
with\_items: “{{ rpmname | default() }}”  
register: pulp  
when: search is defined  
failed\_when: escape in pulp.results.[0].stdout  
vars:  
escape: “\u001b[0m”

But get jinja templating error as below:-  
TASK [mobi\_ansible\_role\_pulp : searching the rpm into infra] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
task path: /etc/ansible/roles/mobi\_ansible\_role\_pulp/tasks/pulp.yaml:5  
Saturday 06 April 2019 09:55:41 +0000 (0:00:02.011) 0:00:02.434 \*\*\*\*\*\*\*\*  
fatal: [node]: FAILED! =\>  
msg: ‘The conditional check ‘‘escape in pulp.results.[0].stdout’’ failed. The error was: template error while templating string: expected name or number. String: {% if escape in pulp.results.[0].stdout %} True {% else %} False {% endif %}’

I tried use following syntax also:-

- name: searching the rpm into {{ reponame }} repo  
shell: pulp-admin rpm repo content rpm --repo-id={{reponame}} --match ‘filename={{ item }}’  
with\_items: “{{ rpmname | default() }}”  
register: pulp  
when: search is defined  
failed\_when: ‘escape in pulp.results.[0].stdout’  
vars:  
escape: “\u001b[0m”

TASK [mobi\_ansible\_role\_pulp : searching the rpm into infra] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
task path: /etc/ansible/roles/mobi\_ansible\_role\_pulp/tasks/pulp.yaml:5  
Saturday 06 April 2019 09:56:37 +0000 (0:00:02.166) 0:00:02.655 \*\*\*\*\*\*\*\*  
fatal: [node]: FAILED! =\>  
msg: ‘The conditional check ‘‘escape in pulp.results.[0].stdout’’ failed. The error was: template error while templating string: expected name or number. String: {% if escape in pulp.results.[0].stdout %} True {% else %} False {% endif %}’

Any Help will be much appreciated…

---

<div class="post-metadata">

**Author:** ![Kunalsing\_Thakur](https://avatars.discourse-cdn.com/v4/letter/k/3d9bf3/32.png) [@Kunalsing\_Thakur](https://forum.ansible.com/u/Kunalsing_Thakur)\
**Post date:** [April 6, 2019, 10:08am UTC](https://forum.ansible.com/t/e-0m-comapre-this-string-in-failed-when-condition/30057/6 "2019-04-06T10:08:23Z")

</div>

Hello Matt,

I was able to successfully do this task by following the instructions.  
Thanks for matt to give some logic.

- name: searching the rpm into {{ reponame }} repo  
shell: pulp-admin rpm repo content rpm --repo-id={{reponame}} --match ‘filename={{ item }}’  
loop: “{{ rpmname | default() }}”  
register: pulp  
when: search is defined  
failed\_when: pulp.stdout == “\u001b[0m”

Result:-  
TASK [mobi\_ansible\_role\_pulp : searching the rpm into infra] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
task path: /etc/ansible/roles/mobi\_ansible\_role\_pulp/tasks/pulp.yaml:5  
Saturday 06 April 2019 10:07:15 +0000 (0:00:02.298) 0:00:02.709 \*\*\*\*\*\*\*\*  
failed: [node] (item=GoIP-devel-1.6.11-201711302323.798cb6f.el7.centos.x86\_64.rpm) =\> changed=true  
cmd: pulp-admin rpm repo content rpm --repo-id=mobi-infra.smf1.mobitv --match ‘filename=GoIP-devel-1.6.11-201711302323.798cb6f.el7.centos.x86\_64.rpm’  
delta: ‘0:00:00.781775’  
end: ‘2019-04-06 10:07:17.178794’  
failed\_when\_result: true  
item: GoIP-devel-1.6.11-201711302323.798cb6f.el7.centos.x86\_64.rpm  
rc: 0  
start: ‘2019-04-06 10:07:16.397019’  
stderr: ‘’  
stderr\_lines:   
stdout: “\e[0m”  
stdout\_lines:

This issue is resolved now. 🙂
