1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Fixes #1982: Swagger NAPALM documentation

This commit is contained in:
Saria Hajjar
2020-01-08 13:34:46 +00:00
parent 770f4c962c
commit ea05b5b606
3 changed files with 16 additions and 0 deletions

View File

@@ -370,6 +370,10 @@ class DeviceWithConfigContextSerializer(DeviceSerializer):
return obj.get_config_context()
class DeviceNAPALMSerializer(serializers.Serializer):
method = serializers.DictField()
class ConsoleServerPortSerializer(TaggitSerializer, ConnectedEndpointSerializer):
device = NestedDeviceSerializer()
cable = NestedCableSerializer(read_only=True)

View File

@@ -327,6 +327,13 @@ class DeviceViewSet(CustomFieldModelViewSet):
)
filterset_class = filters.DeviceFilter
_method = Parameter(
name='method',
in_='query',
required=True,
type=openapi.TYPE_STRING
)
def get_serializer_class(self):
"""
Select the specific serializer based on the request context.
@@ -358,11 +365,15 @@ class DeviceViewSet(CustomFieldModelViewSet):
return Response(serializer.data)
@swagger_auto_schema(manual_parameters=[_method], responses={'200': serializers.DeviceNAPALMSerializer})
@action(detail=True, url_path='napalm')
def napalm(self, request, pk):
"""
Execute a NAPALM method on a Device
"""
if not request.GET.get('method'):
raise ServiceUnavailable('No NAPALM methods were specified.')
device = get_object_or_404(Device, pk=pk)
if not device.primary_ip:
raise ServiceUnavailable("This device does not have a primary IP address configured.")