mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-21 11:37:21 -06:00
Log interface connection changes
This commit is contained in:
parent
b11c3635b0
commit
0af36eb99b
@ -18,6 +18,7 @@ from taggit.managers import TaggableManager
|
|||||||
from timezone_field import TimeZoneField
|
from timezone_field import TimeZoneField
|
||||||
|
|
||||||
from circuits.models import Circuit
|
from circuits.models import Circuit
|
||||||
|
from extras.constants import OBJECTCHANGE_ACTION_DELETE, OBJECTCHANGE_ACTION_UPDATE
|
||||||
from extras.models import CustomFieldModel, ObjectChange
|
from extras.models import CustomFieldModel, ObjectChange
|
||||||
from extras.rpc import RPC_CLIENTS
|
from extras.rpc import RPC_CLIENTS
|
||||||
from utilities.fields import ColorField, NullableCharField
|
from utilities.fields import ColorField, NullableCharField
|
||||||
@ -41,7 +42,7 @@ class ComponentModel(models.Model):
|
|||||||
|
|
||||||
def log_change(self, user, request_id, action):
|
def log_change(self, user, request_id, action):
|
||||||
"""
|
"""
|
||||||
Log an ObjectChange including the parent Device.
|
Log an ObjectChange including the parent Device/VM.
|
||||||
"""
|
"""
|
||||||
ObjectChange(
|
ObjectChange(
|
||||||
user=user,
|
user=user,
|
||||||
@ -1925,6 +1926,22 @@ class Interface(ComponentModel):
|
|||||||
|
|
||||||
return super(Interface, self).save(*args, **kwargs)
|
return super(Interface, self).save(*args, **kwargs)
|
||||||
|
|
||||||
|
def log_change(self, user, request_id, action):
|
||||||
|
"""
|
||||||
|
Include the connected Interface (if any).
|
||||||
|
"""
|
||||||
|
ObjectChange(
|
||||||
|
user=user,
|
||||||
|
request_id=request_id,
|
||||||
|
changed_object=self,
|
||||||
|
related_object=self.get_component_parent(),
|
||||||
|
action=action,
|
||||||
|
object_data=serialize_object(self, extra={
|
||||||
|
'connected_interface': self.connected_interface.pk,
|
||||||
|
'connection_status': self.connection.connection_status if self.connection else None,
|
||||||
|
})
|
||||||
|
).save()
|
||||||
|
|
||||||
# TODO: Replace `parent` with get_component_parent() (from ComponentModel)
|
# TODO: Replace `parent` with get_component_parent() (from ComponentModel)
|
||||||
@property
|
@property
|
||||||
def parent(self):
|
def parent(self):
|
||||||
@ -2030,6 +2047,33 @@ class InterfaceConnection(models.Model):
|
|||||||
self.get_connection_status_display(),
|
self.get_connection_status_display(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def log_change(self, user, request_id, action):
|
||||||
|
"""
|
||||||
|
Create a new ObjectChange for each of the two affected Interfaces.
|
||||||
|
"""
|
||||||
|
interfaces = (
|
||||||
|
(self.interface_a, self.interface_b),
|
||||||
|
(self.interface_b, self.interface_a),
|
||||||
|
)
|
||||||
|
for interface, peer_interface in interfaces:
|
||||||
|
if action == OBJECTCHANGE_ACTION_DELETE:
|
||||||
|
connection_data = {
|
||||||
|
'connected_interface': None,
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
connection_data = {
|
||||||
|
'connected_interface': peer_interface.pk,
|
||||||
|
'connection_status': self.connection_status
|
||||||
|
}
|
||||||
|
ObjectChange(
|
||||||
|
user=user,
|
||||||
|
request_id=request_id,
|
||||||
|
changed_object=interface,
|
||||||
|
related_object=interface.parent,
|
||||||
|
action=OBJECTCHANGE_ACTION_UPDATE,
|
||||||
|
object_data=serialize_object(interface, extra=connection_data)
|
||||||
|
).save()
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Device bays
|
# Device bays
|
||||||
|
Loading…
Reference in New Issue
Block a user