is-empty conditions should accept missing values

Returning False from is-empty condition on missing values seems extremely
confusing and rules out some potential use cases.

Closes-Bug: #1578184
Change-Id: I8f976516f89367512e2ffae2815085be1776b6f6
This commit is contained in:
Dmitry Tantsur 2016-04-25 19:37:03 +02:00
parent 77b4725261
commit 50b989474d
3 changed files with 5 additions and 0 deletions

View File

@ -69,6 +69,7 @@ class NeCondition(SimpleCondition):
class EmptyCondition(base.RuleConditionPlugin):
REQUIRED_PARAMS = set()
ALLOW_NONE = True
def check(self, node_info, field, params, **kwargs):
return field in ('', None, [], {})

View File

@ -320,6 +320,7 @@ class Test(Base):
{'field': 'inventory.interfaces[*].ipv4_address',
'op': 'contains', 'value': r'127\.0\.0\.1',
'invert': True, 'multiple': 'all'},
{'field': 'i.do.not.exist', 'op': 'is-empty'},
],
'actions': [
{'action': 'set-attribute', 'path': '/extra/foo',

View File

@ -0,0 +1,3 @@
---
fixes:
- Fixed the "is-empty" condition to return True on missing values.