Detects errors in bigip_config (#34965)
There are changes that the merge config can fail, but the module will still report success. This adds a blob of code to start collecting those failures and bubbling up a module failure accordingly.
This commit is contained in:
parent
b0625caa5a
commit
944ae47701
2 changed files with 14 additions and 3 deletions
|
@ -211,12 +211,23 @@ class ModuleManager(object):
|
||||||
response = self.save()
|
response = self.save()
|
||||||
responses.append(response)
|
responses.append(response)
|
||||||
|
|
||||||
|
self._detect_errors(responses)
|
||||||
changes = {
|
changes = {
|
||||||
'stdout': responses,
|
'stdout': responses,
|
||||||
'stdout_lines': self._to_lines(responses)
|
'stdout_lines': self._to_lines(responses)
|
||||||
}
|
}
|
||||||
self.changes = Parameters(params=changes)
|
self.changes = Parameters(params=changes)
|
||||||
|
|
||||||
|
def _detect_errors(self, stdout):
|
||||||
|
errors = [
|
||||||
|
'Unexpected Error:'
|
||||||
|
]
|
||||||
|
|
||||||
|
msg = [x for x in stdout for y in errors if y in x]
|
||||||
|
if msg:
|
||||||
|
# Error only contains the lines that include the error
|
||||||
|
raise F5ModuleError(' '.join(msg))
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
if self.module.check_mode:
|
if self.module.check_mode:
|
||||||
return True
|
return True
|
||||||
|
|
|
@ -100,12 +100,12 @@ class TestManager(unittest.TestCase):
|
||||||
|
|
||||||
# Override methods to force specific logic in the module to happen
|
# Override methods to force specific logic in the module to happen
|
||||||
mm.exit_json = Mock(return_value=True)
|
mm.exit_json = Mock(return_value=True)
|
||||||
mm.reset_device = Mock(return_value=True)
|
mm.reset_device = Mock(return_value='reset output')
|
||||||
mm.upload_to_device = Mock(return_value=True)
|
mm.upload_to_device = Mock(return_value=True)
|
||||||
mm.move_on_device = Mock(return_value=True)
|
mm.move_on_device = Mock(return_value=True)
|
||||||
mm.merge_on_device = Mock(return_value=True)
|
mm.merge_on_device = Mock(return_value='merge output')
|
||||||
mm.remove_temporary_file = Mock(return_value=True)
|
mm.remove_temporary_file = Mock(return_value=True)
|
||||||
mm.save_on_device = Mock(return_value=True)
|
mm.save_on_device = Mock(return_value='save output')
|
||||||
|
|
||||||
results = mm.exec_module()
|
results = mm.exec_module()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue