fixes issue where netcli would cause exception with an invalid conditional
The Conditional instance will cause a stack trace if the provided conditional does not map properly to the response. This fixes that issue so that the Conditional instance will now raise a FailedConditionalError with the conditional that caused the failure. Modules *_command modules (and any other modules that create an instance of Conditional) should be updated to catch the FailedConditionalError exception.
This commit is contained in:
parent
ff52e01a11
commit
1a8ad2a20f
1 changed files with 11 additions and 1 deletions
|
@ -47,6 +47,11 @@ class FailedConditionsError(Exception):
|
||||||
super(FailedConditionsError, self).__init__(msg)
|
super(FailedConditionsError, self).__init__(msg)
|
||||||
self.failed_conditions = failed_conditions
|
self.failed_conditions = failed_conditions
|
||||||
|
|
||||||
|
class FailedConditionalError(Exception):
|
||||||
|
def __init__(self, msg, failed_conditional):
|
||||||
|
super(FailedConditionalError, self).__init__(msg)
|
||||||
|
self.failed_conditional = failed_conditional
|
||||||
|
|
||||||
class AddCommandError(Exception):
|
class AddCommandError(Exception):
|
||||||
def __init__(self, msg, command):
|
def __init__(self, msg, command):
|
||||||
super(AddCommandError, self).__init__(msg)
|
super(AddCommandError, self).__init__(msg)
|
||||||
|
@ -216,7 +221,12 @@ class Conditional(object):
|
||||||
|
|
||||||
def get_value(self, result):
|
def get_value(self, result):
|
||||||
if self.encoding in ['json', 'text']:
|
if self.encoding in ['json', 'text']:
|
||||||
return self.get_json(result)
|
try:
|
||||||
|
return self.get_json(result)
|
||||||
|
except (IndexError, TypeError):
|
||||||
|
msg = 'unable to apply conditional to result'
|
||||||
|
raise FailedConditionalError(msg, self.key)
|
||||||
|
|
||||||
elif self.encoding == 'xml':
|
elif self.encoding == 'xml':
|
||||||
return self.get_xml(result.get('result'))
|
return self.get_xml(result.get('result'))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue