|
@@ -23,7 +23,7 @@ from utilities.utils import serialize_object, to_meters
|
|
|
from .constants import *
|
|
from .constants import *
|
|
|
from .exceptions import LoopDetected
|
|
from .exceptions import LoopDetected
|
|
|
from .fields import ASNField, MACAddressField
|
|
from .fields import ASNField, MACAddressField
|
|
|
-from .managers import DeviceComponentManager, InterfaceManager
|
|
|
|
|
|
|
+from .managers import InterfaceManager
|
|
|
|
|
|
|
|
|
|
|
|
|
class ComponentTemplateModel(models.Model):
|
|
class ComponentTemplateModel(models.Model):
|
|
@@ -1004,7 +1004,7 @@ class ConsolePortTemplate(ComponentTemplateModel):
|
|
|
max_length=50
|
|
max_length=50
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- objects = DeviceComponentManager()
|
|
|
|
|
|
|
+ objects = NaturalOrderingManager()
|
|
|
|
|
|
|
|
class Meta:
|
|
class Meta:
|
|
|
ordering = ['device_type', 'name']
|
|
ordering = ['device_type', 'name']
|
|
@@ -1027,7 +1027,7 @@ class ConsoleServerPortTemplate(ComponentTemplateModel):
|
|
|
max_length=50
|
|
max_length=50
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- objects = DeviceComponentManager()
|
|
|
|
|
|
|
+ objects = NaturalOrderingManager()
|
|
|
|
|
|
|
|
class Meta:
|
|
class Meta:
|
|
|
ordering = ['device_type', 'name']
|
|
ordering = ['device_type', 'name']
|
|
@@ -1050,7 +1050,7 @@ class PowerPortTemplate(ComponentTemplateModel):
|
|
|
max_length=50
|
|
max_length=50
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- objects = DeviceComponentManager()
|
|
|
|
|
|
|
+ objects = NaturalOrderingManager()
|
|
|
|
|
|
|
|
class Meta:
|
|
class Meta:
|
|
|
ordering = ['device_type', 'name']
|
|
ordering = ['device_type', 'name']
|
|
@@ -1073,7 +1073,7 @@ class PowerOutletTemplate(ComponentTemplateModel):
|
|
|
max_length=50
|
|
max_length=50
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- objects = DeviceComponentManager()
|
|
|
|
|
|
|
+ objects = NaturalOrderingManager()
|
|
|
|
|
|
|
|
class Meta:
|
|
class Meta:
|
|
|
ordering = ['device_type', 'name']
|
|
ordering = ['device_type', 'name']
|
|
@@ -1139,7 +1139,7 @@ class FrontPortTemplate(ComponentTemplateModel):
|
|
|
validators=[MinValueValidator(1), MaxValueValidator(64)]
|
|
validators=[MinValueValidator(1), MaxValueValidator(64)]
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- objects = DeviceComponentManager()
|
|
|
|
|
|
|
+ objects = NaturalOrderingManager()
|
|
|
|
|
|
|
|
class Meta:
|
|
class Meta:
|
|
|
ordering = ['device_type', 'name']
|
|
ordering = ['device_type', 'name']
|
|
@@ -1188,7 +1188,7 @@ class RearPortTemplate(ComponentTemplateModel):
|
|
|
validators=[MinValueValidator(1), MaxValueValidator(64)]
|
|
validators=[MinValueValidator(1), MaxValueValidator(64)]
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- objects = DeviceComponentManager()
|
|
|
|
|
|
|
+ objects = NaturalOrderingManager()
|
|
|
|
|
|
|
|
class Meta:
|
|
class Meta:
|
|
|
ordering = ['device_type', 'name']
|
|
ordering = ['device_type', 'name']
|
|
@@ -1211,7 +1211,7 @@ class DeviceBayTemplate(ComponentTemplateModel):
|
|
|
max_length=50
|
|
max_length=50
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- objects = DeviceComponentManager()
|
|
|
|
|
|
|
+ objects = NaturalOrderingManager()
|
|
|
|
|
|
|
|
class Meta:
|
|
class Meta:
|
|
|
ordering = ['device_type', 'name']
|
|
ordering = ['device_type', 'name']
|
|
@@ -1704,6 +1704,21 @@ class Device(ChangeLoggedModel, ConfigContextModel, CustomFieldModel):
|
|
|
filter |= Q(device__virtual_chassis=self.virtual_chassis, mgmt_only=False)
|
|
filter |= Q(device__virtual_chassis=self.virtual_chassis, mgmt_only=False)
|
|
|
return Interface.objects.filter(filter)
|
|
return Interface.objects.filter(filter)
|
|
|
|
|
|
|
|
|
|
+ def get_cables(self, pk_list=False):
|
|
|
|
|
+ """
|
|
|
|
|
+ Return a QuerySet or PK list matching all Cables connected to a component of this Device.
|
|
|
|
|
+ """
|
|
|
|
|
+ cable_pks = []
|
|
|
|
|
+ for component_model in [
|
|
|
|
|
+ ConsolePort, ConsoleServerPort, PowerPort, PowerOutlet, Interface, FrontPort, RearPort
|
|
|
|
|
+ ]:
|
|
|
|
|
+ cable_pks += component_model.objects.filter(
|
|
|
|
|
+ device=self, cable__isnull=False
|
|
|
|
|
+ ).values_list('cable', flat=True)
|
|
|
|
|
+ if pk_list:
|
|
|
|
|
+ return cable_pks
|
|
|
|
|
+ return Cable.objects.filter(pk__in=cable_pks)
|
|
|
|
|
+
|
|
|
def get_children(self):
|
|
def get_children(self):
|
|
|
"""
|
|
"""
|
|
|
Return the set of child Devices installed in DeviceBays within this Device.
|
|
Return the set of child Devices installed in DeviceBays within this Device.
|
|
@@ -1742,7 +1757,7 @@ class ConsolePort(CableTermination, ComponentModel):
|
|
|
blank=True
|
|
blank=True
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- objects = DeviceComponentManager()
|
|
|
|
|
|
|
+ objects = NaturalOrderingManager()
|
|
|
tags = TaggableManager()
|
|
tags = TaggableManager()
|
|
|
|
|
|
|
|
csv_headers = ['device', 'name']
|
|
csv_headers = ['device', 'name']
|
|
@@ -1785,7 +1800,7 @@ class ConsoleServerPort(CableTermination, ComponentModel):
|
|
|
blank=True
|
|
blank=True
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- objects = DeviceComponentManager()
|
|
|
|
|
|
|
+ objects = NaturalOrderingManager()
|
|
|
tags = TaggableManager()
|
|
tags = TaggableManager()
|
|
|
|
|
|
|
|
csv_headers = ['device', 'name']
|
|
csv_headers = ['device', 'name']
|
|
@@ -1834,7 +1849,7 @@ class PowerPort(CableTermination, ComponentModel):
|
|
|
blank=True
|
|
blank=True
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- objects = DeviceComponentManager()
|
|
|
|
|
|
|
+ objects = NaturalOrderingManager()
|
|
|
tags = TaggableManager()
|
|
tags = TaggableManager()
|
|
|
|
|
|
|
|
csv_headers = ['device', 'name']
|
|
csv_headers = ['device', 'name']
|
|
@@ -1877,7 +1892,7 @@ class PowerOutlet(CableTermination, ComponentModel):
|
|
|
blank=True
|
|
blank=True
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- objects = DeviceComponentManager()
|
|
|
|
|
|
|
+ objects = NaturalOrderingManager()
|
|
|
tags = TaggableManager()
|
|
tags = TaggableManager()
|
|
|
|
|
|
|
|
csv_headers = ['device', 'name']
|
|
csv_headers = ['device', 'name']
|
|
@@ -2198,7 +2213,7 @@ class FrontPort(CableTermination, ComponentModel):
|
|
|
blank=True
|
|
blank=True
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- objects = DeviceComponentManager()
|
|
|
|
|
|
|
+ objects = NaturalOrderingManager()
|
|
|
tags = TaggableManager()
|
|
tags = TaggableManager()
|
|
|
|
|
|
|
|
csv_headers = ['device', 'name', 'type', 'rear_port', 'rear_port_position', 'description']
|
|
csv_headers = ['device', 'name', 'type', 'rear_port', 'rear_port_position', 'description']
|
|
@@ -2264,7 +2279,7 @@ class RearPort(CableTermination, ComponentModel):
|
|
|
blank=True
|
|
blank=True
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- objects = DeviceComponentManager()
|
|
|
|
|
|
|
+ objects = NaturalOrderingManager()
|
|
|
tags = TaggableManager()
|
|
tags = TaggableManager()
|
|
|
|
|
|
|
|
csv_headers = ['device', 'name', 'type', 'positions', 'description']
|
|
csv_headers = ['device', 'name', 'type', 'positions', 'description']
|
|
@@ -2311,7 +2326,7 @@ class DeviceBay(ComponentModel):
|
|
|
null=True
|
|
null=True
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- objects = DeviceComponentManager()
|
|
|
|
|
|
|
+ objects = NaturalOrderingManager()
|
|
|
tags = TaggableManager()
|
|
tags = TaggableManager()
|
|
|
|
|
|
|
|
csv_headers = ['device', 'name', 'installed_device']
|
|
csv_headers = ['device', 'name', 'installed_device']
|