فهرست منبع

Fixes #2588: Catch all exceptions from failed NAPALM API Calls

Jeremy Stretch 7 سال پیش
والد
کامیت
408f632636
2فایلهای تغییر یافته به همراه5 افزوده شده و 2 حذف شده
  1. 1 0
      CHANGELOG.md
  2. 4 2
      netbox/dcim/api/views.py

+ 1 - 0
CHANGELOG.md

@@ -10,6 +10,7 @@ v2.4.8 (FUTURE)
 * [#2558](https://github.com/digitalocean/netbox/issues/2558) - Filter on all tags when multiple are passed
 * [#2565](https://github.com/digitalocean/netbox/issues/2565) - Improved rendering of Markdown tables
 * [#2575](https://github.com/digitalocean/netbox/issues/2575) - Correct model specified for rack roles table
+* [#2588](https://github.com/digitalocean/netbox/issues/2588) - Catch all exceptions from failed NAPALM API Calls
 
 ---
 

+ 4 - 2
netbox/dcim/api/views.py

@@ -263,9 +263,9 @@ class DeviceViewSet(CustomFieldModelViewSet):
         # Check that NAPALM is installed
         try:
             import napalm
+            from napalm.base.exceptions import ModuleImportError
         except ImportError:
             raise ServiceUnavailable("NAPALM is not installed. Please see the documentation for instructions.")
-        from napalm.base.exceptions import ModuleImportError
 
         # Validate the configured driver
         try:
@@ -309,7 +309,9 @@ class DeviceViewSet(CustomFieldModelViewSet):
             try:
                 response[method] = getattr(d, method)()
             except NotImplementedError:
-                response[method] = {'error': 'Method not implemented for NAPALM driver {}'.format(driver)}
+                response[method] = {'error': 'Method {} not implemented for NAPALM driver {}'.format(method, driver)}
+            except Exception as e:
+                response[method] = {'error': 'Method {} failed: {}'.format(method, e)}
         d.close()
 
         return Response(response)