mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-30 04:16:24 -06:00
Add API support for Device History Log
This commit is contained in:
parent
6a9ec035d6
commit
433f9119d2
@ -7,7 +7,7 @@ from dcim.models import (
|
||||
DeviceBay, DeviceBayTemplate, DeviceType, DeviceRole, IFACE_FF_CHOICES, IFACE_ORDERING_CHOICES, Interface,
|
||||
InterfaceConnection, InterfaceTemplate, Manufacturer, InventoryItem, Platform, PowerOutlet, PowerOutletTemplate, PowerPort,
|
||||
PowerPortTemplate, Rack, RackGroup, RackReservation, RackRole, RACK_FACE_CHOICES, RACK_TYPE_CHOICES,
|
||||
RACK_WIDTH_CHOICES, Region, Site, STATUS_CHOICES, SUBDEVICE_ROLE_CHOICES,
|
||||
RACK_WIDTH_CHOICES, Region, Site, STATUS_CHOICES, SUBDEVICE_ROLE_CHOICES, HistoryLog, HistoryRole,
|
||||
)
|
||||
from extras.api.customfields import CustomFieldModelSerializer
|
||||
from tenancy.api.serializers import NestedTenantSerializer
|
||||
@ -688,3 +688,47 @@ class WritableInterfaceConnectionSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = InterfaceConnection
|
||||
fields = ['id', 'interface_a', 'interface_b', 'connection_status']
|
||||
|
||||
|
||||
#
|
||||
# Device History Logs
|
||||
#
|
||||
|
||||
class HistoryRoleSerializer(serializers.ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = HistoryRole
|
||||
fields = ['id', 'name', 'slug', 'color']
|
||||
|
||||
|
||||
class NestedHistoryRoleSerializer(serializers.ModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:historyrole-detail')
|
||||
|
||||
class Meta:
|
||||
model = HistoryRole
|
||||
fields = ['id', 'url', 'name', 'slug']
|
||||
|
||||
|
||||
class HistoryLogSerializer(CustomFieldModelSerializer):
|
||||
role = NestedHistoryRoleSerializer()
|
||||
device = NestedDeviceSerializer()
|
||||
|
||||
class Meta:
|
||||
model = HistoryLog
|
||||
fields = ['id', 'time', 'device', 'user', 'role', 'message']
|
||||
|
||||
|
||||
class NestedHistoryLogSerializer(serializers.ModelSerializer):
|
||||
role = NestedHistoryRoleSerializer()
|
||||
device = NestedDeviceSerializer()
|
||||
|
||||
class Meta:
|
||||
model = HistoryLog
|
||||
fields = ['id', 'role', 'device', 'message']
|
||||
|
||||
|
||||
class WritableHistoryLogSerializer(serializers.ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = HistoryLog
|
||||
fields = ['id', 'time', 'device', 'user', 'role', 'message']
|
||||
|
@ -49,6 +49,8 @@ router.register(r'power-outlets', views.PowerOutletViewSet)
|
||||
router.register(r'interfaces', views.InterfaceViewSet)
|
||||
router.register(r'device-bays', views.DeviceBayViewSet)
|
||||
router.register(r'inventory-items', views.InventoryItemViewSet)
|
||||
router.register(r'history-log', views.HistoryLogViewSet)
|
||||
router.register(r'history-roles', views.HistoryRoleViewSet)
|
||||
|
||||
# Interface connections
|
||||
router.register(r'interface-connections', views.InterfaceConnectionViewSet)
|
||||
|
@ -10,7 +10,7 @@ from dcim.models import (
|
||||
ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
|
||||
DeviceBayTemplate, DeviceRole, DeviceType, Interface, InterfaceConnection, InterfaceTemplate, Manufacturer, InventoryItem,
|
||||
Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack, RackGroup, RackReservation,
|
||||
RackRole, Region, Site,
|
||||
RackRole, Region, Site, HistoryLog, HistoryRole,
|
||||
)
|
||||
from dcim import filters
|
||||
from extras.api.serializers import RenderedGraphSerializer
|
||||
@ -301,6 +301,18 @@ class InventoryItemViewSet(WritableSerializerMixin, ModelViewSet):
|
||||
filter_class = filters.InventoryItemFilter
|
||||
|
||||
|
||||
class HistoryLogViewSet(WritableSerializerMixin, ModelViewSet):
|
||||
queryset = HistoryLog.objects.select_related('device')
|
||||
serializer_class = serializers.HistoryLogSerializer
|
||||
write_serializer_class = serializers.WritableHistoryLogSerializer
|
||||
filter_class = filters.HistoryLogFilter
|
||||
|
||||
|
||||
class HistoryRoleViewSet(ModelViewSet):
|
||||
queryset = HistoryRole.objects.all()
|
||||
serializer_class = serializers.HistoryRoleSerializer
|
||||
|
||||
|
||||
#
|
||||
# Interface connections
|
||||
#
|
||||
|
@ -10,7 +10,7 @@ from .models import (
|
||||
ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
|
||||
DeviceBayTemplate, DeviceRole, DeviceType, IFACE_FF_LAG, Interface, InterfaceTemplate, Manufacturer, InventoryItem,
|
||||
Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack, RackGroup, RackReservation,
|
||||
RackRole, Region, Site, VIRTUAL_IFACE_TYPES,
|
||||
RackRole, Region, Site, VIRTUAL_IFACE_TYPES, HistoryLog
|
||||
)
|
||||
|
||||
|
||||
@ -487,8 +487,8 @@ class InventoryItemFilter(DeviceComponentFilterSet):
|
||||
class HistoryLogFilter(DeviceComponentFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = InventoryItem
|
||||
fields = ['name']
|
||||
model = HistoryLog
|
||||
fields = ['role']
|
||||
|
||||
class ConsoleConnectionFilter(django_filters.FilterSet):
|
||||
site = django_filters.CharFilter(
|
||||
|
Loading…
Reference in New Issue
Block a user