Hi Matt,

That is a great suggestion! I will give it a try.

I overcame this by using this task:

- name: check mount point
  shell: mount | sed -n -e '/\/var\/lib\/myMount.*/p'
  register: result

and after that using the result variable on the when statement:

when: result.stdout==""

It looks like your solution is more straightforward.

Thank you.
Regards,
Douglas

On Friday, April 4, 2014 9:16:19 AM UTC-3, Matt Martz wrote:
>
> Douglas,
>
> You won't be able to use pure python in a when statement, you will have to 
> handle it using jinja2.
>
> I see 2 options for you:
>
> 1) Use a combination of several jinja2 filters to get you what you want 
> such as:
>
> when: 
> ansible_mounts|map(attribute='mount')|intersect(['/var/lib/myMount'])|length 
> == 0
>
> 2) Create your own custom jinja2 filter to do this.
>
> -- 
> Matt Martz
> [email protected] <javascript:>
>
> On April 3, 2014 at 10:27:23 PM, [email protected] <javascript:> (
> [email protected] <javascript:>) wrote:
>
> Hi all,
>
> I was trying to update ansible from 1.2 to 1.5 and noticed that I can no 
> longer use "only_if" which has been replaced by "when".
>
> But when I try to run a shell task with this condition:
>
> when: "len(filter(lambda m: m['mount'] == '/var/lib/myMount', 
> '{{ansible_mounts}}')) == 0"
>
> I get the following error:
>
> error while evaluating conditional: len(filter(lambda m: m['mount'] == 
> '/var/lib/myMount', '[{u'size_total': 8455118848, u'mount': u'/', 
> u'size_available': 6891151360, u'fstype': u'ext4', u'device': 
> u'/dev/xvda1', u'options': u'rw'}, {u'size_total': 16122802176, u'mount': 
> u'/mnt', u'size_available': 15129432064, u'fstype': u'ext3', u'device': 
> u'/dev/xvdb', u'options': u'rw,_netdev'}, {u'size_total': 107321753600, 
> u'mount': u'/var/lib/myMount', u'size_available': 107250851840, u'fstype': 
> u'xfs', u'device': u'/dev/xvdf', u'options': u'rw,noatime'}]')) == 0
>
> The ansible_mounts variable is being correctly returned as you can see in 
> the error message.
>
> I've tryed different combinations of positioning the quote marks but no 
> luck.
>
> Any help?
>
> Regards,
> Douglas
> --
> 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] <javascript:>.
> To post to this group, send email to [email protected]<javascript:>
> .
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/ansible-project/112db0a1-c88e-4bc5-a896-a9f738909391%40googlegroups.com<https://groups.google.com/d/msgid/ansible-project/112db0a1-c88e-4bc5-a896-a9f738909391%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
On Friday, April 4, 2014 9:16:19 AM UTC-3, Matt Martz wrote:
>
> Douglas,
>
> You won't be able to use pure python in a when statement, you will have to 
> handle it using jinja2.
>
> I see 2 options for you:
>
> 1) Use a combination of several jinja2 filters to get you what you want 
> such as:
>
> when: 
> ansible_mounts|map(attribute='mount')|intersect(['/var/lib/myMount'])|length 
> == 0
>
> 2) Create your own custom jinja2 filter to do this.
>
> -- 
> Matt Martz
> [email protected] <javascript:>
>
> On April 3, 2014 at 10:27:23 PM, [email protected] <javascript:> (
> [email protected] <javascript:>) wrote:
>
> Hi all,
>
> I was trying to update ansible from 1.2 to 1.5 and noticed that I can no 
> longer use "only_if" which has been replaced by "when".
>
> But when I try to run a shell task with this condition:
>
> when: "len(filter(lambda m: m['mount'] == '/var/lib/myMount', 
> '{{ansible_mounts}}')) == 0"
>
> I get the following error:
>
> error while evaluating conditional: len(filter(lambda m: m['mount'] == 
> '/var/lib/myMount', '[{u'size_total': 8455118848, u'mount': u'/', 
> u'size_available': 6891151360, u'fstype': u'ext4', u'device': 
> u'/dev/xvda1', u'options': u'rw'}, {u'size_total': 16122802176, u'mount': 
> u'/mnt', u'size_available': 15129432064, u'fstype': u'ext3', u'device': 
> u'/dev/xvdb', u'options': u'rw,_netdev'}, {u'size_total': 107321753600, 
> u'mount': u'/var/lib/myMount', u'size_available': 107250851840, u'fstype': 
> u'xfs', u'device': u'/dev/xvdf', u'options': u'rw,noatime'}]')) == 0
>
> The ansible_mounts variable is being correctly returned as you can see in 
> the error message.
>
> I've tryed different combinations of positioning the quote marks but no 
> luck.
>
> Any help?
>
> Regards,
> Douglas
> --
> 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] <javascript:>.
> To post to this group, send email to [email protected]<javascript:>
> .
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/ansible-project/112db0a1-c88e-4bc5-a896-a9f738909391%40googlegroups.com<https://groups.google.com/d/msgid/ansible-project/112db0a1-c88e-4bc5-a896-a9f738909391%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
On Friday, April 4, 2014 9:16:19 AM UTC-3, Matt Martz wrote:
>
> Douglas,
>
> You won't be able to use pure python in a when statement, you will have to 
> handle it using jinja2.
>
> I see 2 options for you:
>
> 1) Use a combination of several jinja2 filters to get you what you want 
> such as:
>
> when: 
> ansible_mounts|map(attribute='mount')|intersect(['/var/lib/myMount'])|length 
> == 0
>
> 2) Create your own custom jinja2 filter to do this.
>
> -- 
> Matt Martz
> [email protected] <javascript:>
>
> On April 3, 2014 at 10:27:23 PM, [email protected] <javascript:> (
> [email protected] <javascript:>) wrote:
>
> Hi all,
>
> I was trying to update ansible from 1.2 to 1.5 and noticed that I can no 
> longer use "only_if" which has been replaced by "when".
>
> But when I try to run a shell task with this condition:
>
> when: "len(filter(lambda m: m['mount'] == '/var/lib/myMount', 
> '{{ansible_mounts}}')) == 0"
>
> I get the following error:
>
> error while evaluating conditional: len(filter(lambda m: m['mount'] == 
> '/var/lib/myMount', '[{u'size_total': 8455118848, u'mount': u'/', 
> u'size_available': 6891151360, u'fstype': u'ext4', u'device': 
> u'/dev/xvda1', u'options': u'rw'}, {u'size_total': 16122802176, u'mount': 
> u'/mnt', u'size_available': 15129432064, u'fstype': u'ext3', u'device': 
> u'/dev/xvdb', u'options': u'rw,_netdev'}, {u'size_total': 107321753600, 
> u'mount': u'/var/lib/myMount', u'size_available': 107250851840, u'fstype': 
> u'xfs', u'device': u'/dev/xvdf', u'options': u'rw,noatime'}]')) == 0
>
> The ansible_mounts variable is being correctly returned as you can see in 
> the error message.
>
> I've tryed different combinations of positioning the quote marks but no 
> luck.
>
> Any help?
>
> Regards,
> Douglas
> --
> 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] <javascript:>.
> To post to this group, send email to [email protected]<javascript:>
> .
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/ansible-project/112db0a1-c88e-4bc5-a896-a9f738909391%40googlegroups.com<https://groups.google.com/d/msgid/ansible-project/112db0a1-c88e-4bc5-a896-a9f738909391%40googlegroups.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/dac3566a-8812-4ede-b8cc-37f53ea7b439%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to