From af41ba929c63cc33a920348988df0ea48469ba43 Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Wed, 26 Aug 2015 12:02:21 -0400 Subject: [PATCH] Add float and percent types for FieldAttributes Also sets the max_fail_percentage value to the percent type. --- lib/ansible/playbook/base.py | 8 ++++++++ lib/ansible/playbook/play.py | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/ansible/playbook/base.py b/lib/ansible/playbook/base.py index eba7d8fbc7d..3dca143a54b 100644 --- a/lib/ansible/playbook/base.py +++ b/lib/ansible/playbook/base.py @@ -289,8 +289,16 @@ class Base: value = unicode(value) elif attribute.isa == 'int': value = int(value) + elif attribute.isa == 'float': + value = float(value) elif attribute.isa == 'bool': value = boolean(value) + elif attribute.isa == 'percent': + # special value, which may be an integer or float + # with an optional '%' at the end + if isinstance(value, string_types) and '%' in value: + value = value.replace('%', '') + value = float(value) elif attribute.isa == 'list': if value is None: value = [] diff --git a/lib/ansible/playbook/play.py b/lib/ansible/playbook/play.py index 7b3a862911b..342fb5495ae 100644 --- a/lib/ansible/playbook/play.py +++ b/lib/ansible/playbook/play.py @@ -78,7 +78,7 @@ class Play(Base, Taggable, Become): # Flag/Setting Attributes _any_errors_fatal = FieldAttribute(isa='bool', default=False) _force_handlers = FieldAttribute(isa='bool') - _max_fail_percentage = FieldAttribute(isa='string', default='0') + _max_fail_percentage = FieldAttribute(isa='percent') _serial = FieldAttribute(isa='int', default=0) _strategy = FieldAttribute(isa='string', default='linear')