mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-31 04:46:26 -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,
|
DeviceBay, DeviceBayTemplate, DeviceType, DeviceRole, IFACE_FF_CHOICES, IFACE_ORDERING_CHOICES, Interface,
|
||||||
InterfaceConnection, InterfaceTemplate, Manufacturer, InventoryItem, Platform, PowerOutlet, PowerOutletTemplate, PowerPort,
|
InterfaceConnection, InterfaceTemplate, Manufacturer, InventoryItem, Platform, PowerOutlet, PowerOutletTemplate, PowerPort,
|
||||||
PowerPortTemplate, Rack, RackGroup, RackReservation, RackRole, RACK_FACE_CHOICES, RACK_TYPE_CHOICES,
|
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 extras.api.customfields import CustomFieldModelSerializer
|
||||||
from tenancy.api.serializers import NestedTenantSerializer
|
from tenancy.api.serializers import NestedTenantSerializer
|
||||||
@ -688,3 +688,47 @@ class WritableInterfaceConnectionSerializer(serializers.ModelSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = InterfaceConnection
|
model = InterfaceConnection
|
||||||
fields = ['id', 'interface_a', 'interface_b', 'connection_status']
|
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'interfaces', views.InterfaceViewSet)
|
||||||
router.register(r'device-bays', views.DeviceBayViewSet)
|
router.register(r'device-bays', views.DeviceBayViewSet)
|
||||||
router.register(r'inventory-items', views.InventoryItemViewSet)
|
router.register(r'inventory-items', views.InventoryItemViewSet)
|
||||||
|
router.register(r'history-log', views.HistoryLogViewSet)
|
||||||
|
router.register(r'history-roles', views.HistoryRoleViewSet)
|
||||||
|
|
||||||
# Interface connections
|
# Interface connections
|
||||||
router.register(r'interface-connections', views.InterfaceConnectionViewSet)
|
router.register(r'interface-connections', views.InterfaceConnectionViewSet)
|
||||||
|
@ -10,7 +10,7 @@ from dcim.models import (
|
|||||||
ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
|
ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
|
||||||
DeviceBayTemplate, DeviceRole, DeviceType, Interface, InterfaceConnection, InterfaceTemplate, Manufacturer, InventoryItem,
|
DeviceBayTemplate, DeviceRole, DeviceType, Interface, InterfaceConnection, InterfaceTemplate, Manufacturer, InventoryItem,
|
||||||
Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack, RackGroup, RackReservation,
|
Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack, RackGroup, RackReservation,
|
||||||
RackRole, Region, Site,
|
RackRole, Region, Site, HistoryLog, HistoryRole,
|
||||||
)
|
)
|
||||||
from dcim import filters
|
from dcim import filters
|
||||||
from extras.api.serializers import RenderedGraphSerializer
|
from extras.api.serializers import RenderedGraphSerializer
|
||||||
@ -301,6 +301,18 @@ class InventoryItemViewSet(WritableSerializerMixin, ModelViewSet):
|
|||||||
filter_class = filters.InventoryItemFilter
|
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
|
# Interface connections
|
||||||
#
|
#
|
||||||
|
@ -10,7 +10,7 @@ from .models import (
|
|||||||
ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
|
ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
|
||||||
DeviceBayTemplate, DeviceRole, DeviceType, IFACE_FF_LAG, Interface, InterfaceTemplate, Manufacturer, InventoryItem,
|
DeviceBayTemplate, DeviceRole, DeviceType, IFACE_FF_LAG, Interface, InterfaceTemplate, Manufacturer, InventoryItem,
|
||||||
Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack, RackGroup, RackReservation,
|
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 HistoryLogFilter(DeviceComponentFilterSet):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = InventoryItem
|
model = HistoryLog
|
||||||
fields = ['name']
|
fields = ['role']
|
||||||
|
|
||||||
class ConsoleConnectionFilter(django_filters.FilterSet):
|
class ConsoleConnectionFilter(django_filters.FilterSet):
|
||||||
site = django_filters.CharFilter(
|
site = django_filters.CharFilter(
|
||||||
|
Loading…
Reference in New Issue
Block a user