mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Moved rack units and device LLDP neighbors views into model viewsets
This commit is contained in:
@ -55,12 +55,6 @@ urlpatterns = [
|
||||
url(r'', include(router.urls)),
|
||||
url(r'^devices/(?P<pk>\d+)/', include(device_router.urls)),
|
||||
|
||||
# Racks
|
||||
url(r'^racks/(?P<pk>\d+)/rack-units/$', views.RackUnitListView.as_view(), name='rack_units'),
|
||||
|
||||
# Devices
|
||||
url(r'^devices/(?P<pk>\d+)/lldp-neighbors/$', views.LLDPNeighborsView.as_view(), name='device_lldp-neighbors'),
|
||||
|
||||
# Miscellaneous
|
||||
url(r'^related-connections/$', views.RelatedConnectionsView.as_view(), name='related_connections'),
|
||||
url(r'^topology-maps/(?P<slug>[\w-]+)/$', TopologyMapView.as_view(), name='topology_map'),
|
||||
|
@ -70,14 +70,11 @@ class RackViewSet(WritableSerializerMixin, CustomFieldModelViewSet):
|
||||
serializer_class = serializers.RackSerializer
|
||||
filter_class = filters.RackFilter
|
||||
|
||||
|
||||
class RackUnitListView(APIView):
|
||||
@detail_route(url_path='rack-units')
|
||||
def rack_units(self, request, pk=None):
|
||||
"""
|
||||
List rack units (by rack)
|
||||
"""
|
||||
|
||||
def get(self, request, pk):
|
||||
|
||||
rack = get_object_or_404(Rack, pk=pk)
|
||||
face = request.GET.get('face', 0)
|
||||
exclude_pk = request.GET.get('exclude', None)
|
||||
@ -149,6 +146,28 @@ class DeviceViewSet(WritableSerializerMixin, CustomFieldModelViewSet):
|
||||
filter_class = filters.DeviceFilter
|
||||
renderer_classes = api_settings.DEFAULT_RENDERER_CLASSES + [BINDZoneRenderer, FlatJSONRenderer]
|
||||
|
||||
@detail_route(url_path='lldp-neighbors')
|
||||
def lldp_neighbors(self, request, pk):
|
||||
"""
|
||||
Retrieve live LLDP neighbors of a device
|
||||
"""
|
||||
device = get_object_or_404(Device, pk=pk)
|
||||
if not device.primary_ip:
|
||||
raise ServiceUnavailable("No IP configured for this device.")
|
||||
|
||||
RPC = device.get_rpc_client()
|
||||
if not RPC:
|
||||
raise ServiceUnavailable("No RPC client available for this platform ({}).".format(device.platform))
|
||||
|
||||
# Connect to device and retrieve inventory info
|
||||
try:
|
||||
with RPC(device, username=settings.NETBOX_USERNAME, password=settings.NETBOX_PASSWORD) as rpc_client:
|
||||
lldp_neighbors = rpc_client.get_lldp_neighbors()
|
||||
except:
|
||||
raise ServiceUnavailable("Error connecting to the remote device.")
|
||||
|
||||
return Response(lldp_neighbors)
|
||||
|
||||
|
||||
#
|
||||
# Console Ports
|
||||
|
Reference in New Issue
Block a user