diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index db3bc822c..ecccb7306 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -4,6 +4,7 @@ ### Bug Fixes +* [#7041](https://github.com/netbox-community/netbox/issues/7041) - Properly format JSON config object returned from a NAPALM device * [#7070](https://github.com/netbox-community/netbox/issues/7070) - Fix exception when filtering by prefix max length in UI * [#7071](https://github.com/netbox-community/netbox/issues/7071) - Fix exception when removing a primary IP from a device/VM * [#7072](https://github.com/netbox-community/netbox/issues/7072) - Fix table configuration under prefix child object views diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index 3ee225335..3d23cde5c 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -22,7 +22,7 @@ from netbox.api.authentication import IsAuthenticatedOrLoginNotRequired from netbox.api.exceptions import ServiceUnavailable from netbox.api.metadata import ContentTypeMetadata from utilities.api import get_serializer_for_model -from utilities.utils import count_related +from utilities.utils import count_related, decode_dict from virtualization.models import VirtualMachine from . import serializers from .exceptions import MissingFilterException @@ -498,7 +498,7 @@ class DeviceViewSet(ConfigContextQuerySetMixin, CustomFieldModelViewSet): response[method] = {'error': 'Only get_* NAPALM methods are supported'} continue try: - response[method] = getattr(d, method)() + response[method] = decode_dict(getattr(d, method)()) except NotImplementedError: response[method] = {'error': 'Method {} not implemented for NAPALM driver {}'.format(method, driver)} except Exception as e: diff --git a/netbox/project-static/dist/config.js b/netbox/project-static/dist/config.js index 18f4811a2..cf1022589 100644 --- a/netbox/project-static/dist/config.js +++ b/netbox/project-static/dist/config.js @@ -1,5 +1,5 @@ -(()=>{var ko=Object.create;var ue=Object.defineProperty,Ho=Object.defineProperties,Wo=Object.getOwnPropertyDescriptor,Bo=Object.getOwnPropertyDescriptors,Vo=Object.getOwnPropertyNames,En=Object.getOwnPropertySymbols,Fo=Object.getPrototypeOf,vn=Object.prototype.hasOwnProperty,zo=Object.prototype.propertyIsEnumerable;var yn=(i,t,e)=>t in i?ue(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,O=(i,t)=>{for(var e in t||(t={}))vn.call(t,e)&&yn(i,e,t[e]);if(En)for(var e of En(t))zo.call(t,e)&&yn(i,e,t[e]);return i},He=(i,t)=>Ho(i,Bo(t)),bn=i=>ue(i,"__esModule",{value:!0});var q=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),Uo=(i,t)=>{bn(i);for(var e in t)ue(i,e,{get:t[e],enumerable:!0})},Yo=(i,t,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Vo(t))!vn.call(i,n)&&n!=="default"&&ue(i,n,{get:()=>t[n],enumerable:!(e=Wo(t,n))||e.enumerable});return i},Ai=i=>Yo(bn(ue(i!=null?ko(Fo(i)):{},"default",i&&i.__esModule&&"default"in i?{get:()=>i.default,enumerable:!0}:{value:i,enumerable:!0})),i);var Si=(i,t,e)=>new Promise((n,r)=>{var o=f=>{try{a(e.next(f))}catch(h){r(h)}},s=f=>{try{a(e.throw(f))}catch(h){r(h)}},a=f=>f.done?n(f.value):Promise.resolve(f.value).then(o,s);a((e=e.apply(i,t)).next())});var sn=q((io,fi)=>{(function(i,t){typeof define=="function"&&define.amd?define(t):typeof fi=="object"&&fi.exports?fi.exports=t():i.EvEmitter=t()})(typeof window!="undefined"?window:io,function(){"use strict";function i(){}var t=i.prototype;return t.on=function(e,n){if(!(!e||!n)){var r=this._events=this._events||{},o=r[e]=r[e]||[];return o.indexOf(n)==-1&&o.push(n),this}},t.once=function(e,n){if(!(!e||!n)){this.on(e,n);var r=this._onceEvents=this._onceEvents||{},o=r[e]=r[e]||{};return o[n]=!0,this}},t.off=function(e,n){var r=this._events&&this._events[e];if(!(!r||!r.length)){var o=r.indexOf(n);return o!=-1&&r.splice(o,1),this}},t.emitEvent=function(e,n){var r=this._events&&this._events[e];if(!(!r||!r.length)){r=r.slice(0),n=n||[];for(var o=this._onceEvents&&this._onceEvents[e],s=0;s{(function(i,t){typeof define=="function"&&define.amd?define(t):typeof ui=="object"&&ui.exports?ui.exports=t():i.getSize=t()})(window,function(){"use strict";function t(d){var y=parseFloat(d),E=d.indexOf("%")==-1&&!isNaN(y);return E&&y}function e(){}var n=typeof console=="undefined"?e:function(d){console.error(d)},r=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],o=r.length;function s(){for(var d={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},y=0;y