Added changedAll and changedAny functions for yaql
This functions will help to simplify yaql condition in library tasks Change-Id: I67f428f1c51ecd9bef6f0b8fe9899bec4f6a3e06 Closes-Bug: 1566727
This commit is contained in:
parent
7e1d537e8e
commit
6ac98f58a1
|
@ -125,6 +125,11 @@ class TestYaqlExt(BaseUnitTest):
|
|||
self.evaluate('changed($.configs.nova.value2)', variables)
|
||||
)
|
||||
|
||||
def test_changed_many(self):
|
||||
expressions = '$.configs.nova.value, $.configs.nova.value2'
|
||||
self.assertTrue(self.evaluate('changedAny({0})'.format(expressions)))
|
||||
self.assertFalse(self.evaluate('changedAll({0})'.format(expressions)))
|
||||
|
||||
def test_undefined(self):
|
||||
variables = self.variables.copy()
|
||||
variables['$%old'] = {}
|
||||
|
|
|
@ -50,6 +50,18 @@ def changed(finalizer, expression, context):
|
|||
return new_data != old_data
|
||||
|
||||
|
||||
@specs.parameter('expressions', yaqltypes.Lambda())
|
||||
@specs.inject('finalizer', yaqltypes.Delegate('#finalize'))
|
||||
def changed_all(finalizer, context, *expressions):
|
||||
return all(changed(finalizer, exp, context) for exp in expressions)
|
||||
|
||||
|
||||
@specs.parameter('expressions', yaqltypes.Lambda())
|
||||
@specs.inject('finalizer', yaqltypes.Delegate('#finalize'))
|
||||
def changed_any(finalizer, context, *expressions):
|
||||
return any(changed(finalizer, exp, context) for exp in expressions)
|
||||
|
||||
|
||||
def get_limited_if_need(data, engine):
|
||||
if (yaqlutils.is_iterable(data) or yaqlutils.is_sequence(data) or
|
||||
isinstance(data, (yaqlutils.MappingType, yaqlutils.SetType))):
|
||||
|
@ -84,6 +96,8 @@ def register(context):
|
|||
context.register_function(get_new, name='new')
|
||||
context.register_function(get_old, name='old')
|
||||
context.register_function(changed)
|
||||
context.register_function(changed_all)
|
||||
context.register_function(changed_any)
|
||||
context.register_function(added)
|
||||
context.register_function(deleted)
|
||||
context.register_function(is_undef)
|
||||
|
|
Loading…
Reference in New Issue