Merge pull request #32056 from bstevenson/fix-list_absent

Fix list absent
This commit is contained in:
Nicole Thomas 2016-03-24 11:35:00 -06:00
commit c42014eb54
2 changed files with 25 additions and 16 deletions

View file

@ -172,27 +172,36 @@ def list_absent(name, value):
'changes': {},
'result': True,
'comment': ''}
comments = []
grain = __grains__.get(name)
if grain:
if isinstance(grain, list):
if value not in grain:
ret['comment'] = 'Value {1} is absent from grain {0}' \
.format(name, value)
return ret
if __opts__['test']:
ret['result'] = None
ret['comment'] = 'Value {1} in grain {0} is set to ' \
'be deleted'.format(name, value)
ret['changes'] = {'deleted': value}
return ret
__salt__['grains.remove'](name, value)
ret['comment'] = 'Value {1} was deleted from grain {0}'\
.format(name, value)
ret['changes'] = {'deleted': value}
if not isinstance(value, list):
value = [value]
for val in value:
if val not in grain:
comments.append('Value {1} is absent from '
'grain {0}'.format(name, val))
elif __opts__['test']:
ret['result'] = None
comments.append('Value {1} in grain {0} is set '
'to be deleted'.format(name, val))
if 'deleted' not in ret['changes'].keys():
ret['changes'] = {'deleted': []}
ret['changes']['deleted'].append(val)
elif val in grain:
__salt__['grains.remove'](name, val)
comments.append('Value {1} was deleted from '
'grain {0}'.format(name, val))
if 'deleted' not in ret['changes'].keys():
ret['changes'] = {'deleted': []}
ret['changes']['deleted'].append(val)
ret['comment'] = '\n'.join(comments)
return ret
else:
ret['result'] = False
ret['comment'] = 'Grain {0} is not a valid list'\
.format(name)
.format(name)
else:
ret['comment'] = 'Grain {0} does not exist'.format(name)
return ret

View file

@ -142,7 +142,7 @@ class GrainsTestCase(TestCase):
ret = {'changes': {}, 'name': self.name, 'result': True,
'comment': 'Value edam is absent from grain cheese'}
ret1 = {'changes': {'deleted': self.value}, 'name': self.name,
ret1 = {'changes': {'deleted': [self.value]}, 'name': self.name,
'result': None,
'comment': 'Value edam in grain cheese is set to be deleted'}