mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-25 08:46:10 -06:00
Add missing counter for module bays
This commit is contained in:
parent
c295a5e196
commit
84779312ea
@ -678,6 +678,7 @@ class DeviceSerializer(NetBoxModelSerializer):
|
|||||||
front_port_count = serializers.IntegerField(read_only=True)
|
front_port_count = serializers.IntegerField(read_only=True)
|
||||||
rear_port_count = serializers.IntegerField(read_only=True)
|
rear_port_count = serializers.IntegerField(read_only=True)
|
||||||
device_bay_count = serializers.IntegerField(read_only=True)
|
device_bay_count = serializers.IntegerField(read_only=True)
|
||||||
|
module_bay_count = serializers.IntegerField(read_only=True)
|
||||||
inventory_item_count = serializers.IntegerField(read_only=True)
|
inventory_item_count = serializers.IntegerField(read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -689,7 +690,7 @@ class DeviceSerializer(NetBoxModelSerializer):
|
|||||||
'vc_priority', 'description', 'comments', 'config_template', 'local_context_data', 'tags', 'custom_fields',
|
'vc_priority', 'description', 'comments', 'config_template', 'local_context_data', 'tags', 'custom_fields',
|
||||||
'created', 'last_updated', 'console_port_count', 'console_server_port_count', 'power_port_count',
|
'created', 'last_updated', 'console_port_count', 'console_server_port_count', 'power_port_count',
|
||||||
'power_outlet_count', 'interface_count', 'front_port_count', 'rear_port_count', 'device_bay_count',
|
'power_outlet_count', 'interface_count', 'front_port_count', 'rear_port_count', 'device_bay_count',
|
||||||
'inventory_item_count',
|
'module_bay_count', 'inventory_item_count',
|
||||||
]
|
]
|
||||||
|
|
||||||
@extend_schema_field(NestedDeviceSerializer)
|
@extend_schema_field(NestedDeviceSerializer)
|
||||||
@ -715,7 +716,7 @@ class DeviceWithConfigContextSerializer(DeviceSerializer):
|
|||||||
'comments', 'local_context_data', 'tags', 'custom_fields', 'config_context', 'config_template',
|
'comments', 'local_context_data', 'tags', 'custom_fields', 'config_context', 'config_template',
|
||||||
'created', 'last_updated', 'console_port_count', 'console_server_port_count', 'power_port_count',
|
'created', 'last_updated', 'console_port_count', 'console_server_port_count', 'power_port_count',
|
||||||
'power_outlet_count', 'interface_count', 'front_port_count', 'rear_port_count', 'device_bay_count',
|
'power_outlet_count', 'interface_count', 'front_port_count', 'rear_port_count', 'device_bay_count',
|
||||||
'inventory_item_count',
|
'module_bay_count', 'inventory_item_count',
|
||||||
]
|
]
|
||||||
|
|
||||||
@extend_schema_field(serializers.JSONField(allow_null=True))
|
@extend_schema_field(serializers.JSONField(allow_null=True))
|
||||||
|
@ -9,38 +9,32 @@ def recalculate_device_counts(apps, schema_editor):
|
|||||||
devices = list(Device.objects.all().annotate(
|
devices = list(Device.objects.all().annotate(
|
||||||
_console_port_count=Count('consoleports', distinct=True),
|
_console_port_count=Count('consoleports', distinct=True),
|
||||||
_console_server_port_count=Count('consoleserverports', distinct=True),
|
_console_server_port_count=Count('consoleserverports', distinct=True),
|
||||||
|
_power_port_count=Count('powerports', distinct=True),
|
||||||
|
_power_outlet_count=Count('poweroutlets', distinct=True),
|
||||||
_interface_count=Count('interfaces', distinct=True),
|
_interface_count=Count('interfaces', distinct=True),
|
||||||
_front_port_count=Count('frontports', distinct=True),
|
_front_port_count=Count('frontports', distinct=True),
|
||||||
_rear_port_count=Count('rearports', distinct=True),
|
_rear_port_count=Count('rearports', distinct=True),
|
||||||
_device_bay_count=Count('devicebays', distinct=True),
|
_device_bay_count=Count('devicebays', distinct=True),
|
||||||
|
_module_bay_count=Count('modulebays', distinct=True),
|
||||||
_inventory_item_count=Count('inventoryitems', distinct=True),
|
_inventory_item_count=Count('inventoryitems', distinct=True),
|
||||||
_power_port_count=Count('powerports', distinct=True),
|
|
||||||
_power_outlet_count=Count('poweroutlets', distinct=True),
|
|
||||||
))
|
))
|
||||||
|
|
||||||
for device in devices:
|
for device in devices:
|
||||||
device.console_port_count = device._console_port_count
|
device.console_port_count = device._console_port_count
|
||||||
device.console_server_port_count = device._console_server_port_count
|
device.console_server_port_count = device._console_server_port_count
|
||||||
|
device.power_port_count = device._power_port_count
|
||||||
|
device.power_outlet_count = device._power_outlet_count
|
||||||
device.interface_count = device._interface_count
|
device.interface_count = device._interface_count
|
||||||
device.front_port_count = device._front_port_count
|
device.front_port_count = device._front_port_count
|
||||||
device.rear_port_count = device._rear_port_count
|
device.rear_port_count = device._rear_port_count
|
||||||
device.device_bay_count = device._device_bay_count
|
device.device_bay_count = device._device_bay_count
|
||||||
|
device.module_bay_count = device._module_bay_count
|
||||||
device.inventory_item_count = device._inventory_item_count
|
device.inventory_item_count = device._inventory_item_count
|
||||||
device.power_port_count = device._power_port_count
|
|
||||||
device.power_outlet_count = device._power_outlet_count
|
|
||||||
|
|
||||||
Device.objects.bulk_update(
|
Device.objects.bulk_update(devices, [
|
||||||
devices,
|
'console_port_count', 'console_server_port_count', 'power_port_count', 'power_outlet_count', 'interface_count',
|
||||||
['console_port_count',
|
'front_port_count', 'rear_port_count', 'device_bay_count', 'module_bay_count', 'inventory_item_count',
|
||||||
'console_server_port_count',
|
])
|
||||||
'interface_count',
|
|
||||||
'front_port_count',
|
|
||||||
'rear_port_count',
|
|
||||||
'device_bay_count',
|
|
||||||
'inventory_item_count',
|
|
||||||
'power_port_count',
|
|
||||||
'power_outlet_count'],
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
@ -61,23 +55,8 @@ class Migration(migrations.Migration):
|
|||||||
),
|
),
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='device',
|
model_name='device',
|
||||||
name='device_bay_count',
|
name='power_port_count',
|
||||||
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.DeviceBay'),
|
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.PowerPort'),
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='device',
|
|
||||||
name='front_port_count',
|
|
||||||
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.FrontPort'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='device',
|
|
||||||
name='interface_count',
|
|
||||||
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.Interface'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='device',
|
|
||||||
name='inventory_item_count',
|
|
||||||
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.InventoryItem'),
|
|
||||||
),
|
),
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='device',
|
model_name='device',
|
||||||
@ -86,14 +65,34 @@ class Migration(migrations.Migration):
|
|||||||
),
|
),
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='device',
|
model_name='device',
|
||||||
name='power_port_count',
|
name='interface_count',
|
||||||
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.PowerPort'),
|
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.Interface'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='device',
|
||||||
|
name='front_port_count',
|
||||||
|
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.FrontPort'),
|
||||||
),
|
),
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='device',
|
model_name='device',
|
||||||
name='rear_port_count',
|
name='rear_port_count',
|
||||||
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.RearPort'),
|
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.RearPort'),
|
||||||
),
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='device',
|
||||||
|
name='device_bay_count',
|
||||||
|
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.DeviceBay'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='device',
|
||||||
|
name='module_bay_count',
|
||||||
|
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.ModuleBay'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='device',
|
||||||
|
name='inventory_item_count',
|
||||||
|
field=utilities.fields.CounterCacheField(default=0, to_field='device', to_model='dcim.InventoryItem'),
|
||||||
|
),
|
||||||
migrations.RunPython(
|
migrations.RunPython(
|
||||||
recalculate_device_counts,
|
recalculate_device_counts,
|
||||||
reverse_code=migrations.RunPython.noop
|
reverse_code=migrations.RunPython.noop
|
||||||
|
@ -672,6 +672,10 @@ class Device(PrimaryModel, ConfigContextModel):
|
|||||||
to_model='dcim.DeviceBay',
|
to_model='dcim.DeviceBay',
|
||||||
to_field='device'
|
to_field='device'
|
||||||
)
|
)
|
||||||
|
module_bay_count = CounterCacheField(
|
||||||
|
to_model='dcim.ModuleBay',
|
||||||
|
to_field='device'
|
||||||
|
)
|
||||||
inventory_item_count = CounterCacheField(
|
inventory_item_count = CounterCacheField(
|
||||||
to_model='dcim.InventoryItem',
|
to_model='dcim.InventoryItem',
|
||||||
to_field='device'
|
to_field='device'
|
||||||
|
@ -254,6 +254,9 @@ class DeviceTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable):
|
|||||||
device_bay_count = tables.Column(
|
device_bay_count = tables.Column(
|
||||||
verbose_name=_('Device bays')
|
verbose_name=_('Device bays')
|
||||||
)
|
)
|
||||||
|
module_bay_count = tables.Column(
|
||||||
|
verbose_name=_('Module bays')
|
||||||
|
)
|
||||||
inventory_item_count = tables.Column(
|
inventory_item_count = tables.Column(
|
||||||
verbose_name=_('Inventory items')
|
verbose_name=_('Inventory items')
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user