Skip to content
Snippets Groups Projects
Commit 4adef2a1 authored by David Schmitz's avatar David Schmitz
Browse files

feature/improved-warning-mails: add external error admin messages for NETCONF errors

parent 41bffbb8
No related branches found
No related tags found
No related merge requests found
...@@ -31,6 +31,7 @@ from .portrange import parse_portrange ...@@ -31,6 +31,7 @@ from .portrange import parse_portrange
import traceback import traceback
from ipaddress import ip_network from ipaddress import ip_network
from .flowspec_utils import map__ip_proto__for__ip_version__to_flowspec from .flowspec_utils import map__ip_proto__for__ip_version__to_flowspec
from flowspec.helpers import handle_admin_error_mail
#import xml.etree.ElementTree as ET #import xml.etree.ElementTree as ET
import flowspec.logging_utils import flowspec.logging_utils
...@@ -327,15 +328,18 @@ class Applier(object): ...@@ -327,15 +328,18 @@ class Applier(object):
except SoftTimeLimitExceeded: except SoftTimeLimitExceeded:
cause="Task timeout" cause="Task timeout"
logger.error(cause) logger.error(cause)
handle_admin_error_mail("NETCONF Error: SoftTimeLimitExceeded Error during edit_config operation", "exception="+str(e)+"\nfor NETCONF configuration="+str(configuration))
return False, cause return False, cause
except TimeLimitExceeded: except TimeLimitExceeded:
cause="Task timeout" cause="Task timeout"
logger.error(cause) logger.error(cause)
handle_admin_error_mail("NETCONF Error: TimeLimitExceeded Error during edit_config operation", "exception="+str(e)+"\nfor NETCONF configuration="+str(configuration))
return False, cause return False, cause
except RPCError as e: except RPCError as e:
cause="NETCONF RPC Error: "+str(e) cause="NETCONF RPC Error: "+str(e)
logger.error(cause) logger.error(cause)
m.discard_changes() m.discard_changes()
handle_admin_error_mail("NETCONF Error: RPC Error during edit_config operation", "exception"+str(e)+"\nfor configuration="+str(configuration))
return False, cause return False, cause
except Exception as e: except Exception as e:
traceback.print_exc() traceback.print_exc()
...@@ -343,7 +347,9 @@ class Applier(object): ...@@ -343,7 +347,9 @@ class Applier(object):
cause = cause.replace('\n', '') cause = cause.replace('\n', '')
logger.error(cause) logger.error(cause)
m.discard_changes() m.discard_changes()
handle_admin_error_mail("NETCONF Error: general exception during edit_config operation", "exception"+str(e)+"\nfor configuration="+str(configuration))
return False, cause return False, cause
if edit_is_successful: if edit_is_successful:
try: try:
if ":confirmed-commit" in m.server_capabilities: if ":confirmed-commit" in m.server_capabilities:
...@@ -366,20 +372,24 @@ class Applier(object): ...@@ -366,20 +372,24 @@ class Applier(object):
except SoftTimeLimitExceeded: except SoftTimeLimitExceeded:
cause="Task timeout" cause="Task timeout"
logger.error(cause) logger.error(cause)
handle_admin_error_mail("NETCONF Error: SoftTimeLimitExceeded Error during commit operation", "exception="+str(e)+"\nfor NETCONF configuration="+str(configuration))
return False, cause return False, cause
except TimeLimitExceeded: except TimeLimitExceeded:
cause="Task timeout" cause="Task timeout"
logger.error(cause) logger.error(cause)
handle_admin_error_mail("NETCONF Error: TimeLimitExceeded Error during commit operation", "exception="+str(e)+"\nfor NETCONF configuration="+str(configuration))
return False, cause return False, cause
except RPCError as e: except RPCError as e:
cause="NETCONF RPC Error: "+str(e) cause="NETCONF RPC Error: "+str(e)
logger.error(cause) logger.error(cause)
m.discard_changes() m.discard_changes()
handle_admin_error_mail("NETCONF Error: RPC Error during commit operation", "exception="+str(e)+"\nfor configuration="+str(configuration))
return False, cause return False, cause
except Exception as e: except Exception as e:
cause="Caught commit confirmed exception: type='%s' str='%s' => reason='%s'" %(type(e), str(e), reason) cause="Caught commit confirmed exception: type='%s' str='%s' => reason='%s'" %(type(e), str(e), reason)
cause=cause.replace('\n', '') cause=cause.replace('\n', '')
logger.error(cause) logger.error(cause)
handle_admin_error_mail("NETCONF Error: general exception during commit operation", "exception="+str(e)+"\nfor configuration="+str(configuration))
return False, cause return False, cause
if settings.COMMIT: if settings.COMMIT:
...@@ -401,27 +411,35 @@ class Applier(object): ...@@ -401,27 +411,35 @@ class Applier(object):
except SoftTimeLimitExceeded: except SoftTimeLimitExceeded:
cause="Task timeout" cause="Task timeout"
logger.error(cause) logger.error(cause)
handle_admin_error_mail("NETCONF Error: SoftTimeLimitExceeded Error during commit2 operation", "exception="+str(e)+"\nfor NETCONF configuration="+str(configuration))
return False, cause return False, cause
except TimeLimitExceeded: except TimeLimitExceeded:
cause="Task timeout" cause="Task timeout"
logger.error(cause) logger.error(cause)
handle_admin_error_mail("NETCONF Error: TimeLimitExceeded Error during commit2 operation", "exception="+str(e)+"\nfor NETCONF configuration="+str(configuration))
return False, cause return False, cause
except RPCError as e: except RPCError as e:
cause="NETCONF RPC Error: "+str(e) cause="NETCONF RPC Error: "+str(e)
logger.error(cause) logger.error(cause)
m.discard_changes() m.discard_changes()
handle_admin_error_mail("NETCONF Error: RPC Error during commit2 operation", "exception="+str(e)+"\nfor configuration="+str(configuration))
return False, cause return False, cause
except Exception as e: except Exception as e:
cause="Caught commit exception: type='%s' str='%s' => reason='%s'" %(type(e), str(e), reason) cause="Caught commit exception: type='%s' str='%s' => reason='%s'" %(type(e), str(e), reason)
cause=cause.replace('\n', '') cause=cause.replace('\n', '')
logger.error(cause) logger.error(cause)
handle_admin_error_mail("NETCONF Error: Exception during commit2 operation", "exception="+str(e)+"\nfor configuration="+str(configuration))
return False, cause return False, cause
else: else:
return False, "No configuration was supplied" return False, "No configuration was supplied"
except Exception as e: except Exception as e:
cause="NETCONF connection exception: %s %s" %(e,reason) cause="NETCONF connection exception: %s %s" %(e,reason)
cause=cause.replace('\n', '') cause=cause.replace('\n', '')
logger.error(cause) logger.error(cause)
handle_admin_error_mail("NETCONF Error: general connection exception", "exception="+str(e)+"\nfor configuration="+str(configuration))
cause_user="NETCONF connection failed" cause_user="NETCONF connection failed"
return False, cause_user return False, cause_user
finally: finally:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment