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:
Tim Rupp 2018-01-16 20:10:36 -08:00 committed by GitHub
parent b0625caa5a
commit 944ae47701
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 3 deletions

View file

@ -211,12 +211,23 @@ class ModuleManager(object):
response = self.save()
responses.append(response)
self._detect_errors(responses)
changes = {
'stdout': responses,
'stdout_lines': self._to_lines(responses)
}
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):
if self.module.check_mode:
return True

View file

@ -100,12 +100,12 @@ class TestManager(unittest.TestCase):
# Override methods to force specific logic in the module to happen
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.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.save_on_device = Mock(return_value=True)
mm.save_on_device = Mock(return_value='save output')
results = mm.exec_module()