mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-25 08:46:10 -06:00
6347 optimize migrations
This commit is contained in:
parent
f75405c707
commit
34ca646fba
@ -2,21 +2,46 @@
|
|||||||
|
|
||||||
from django.db import migrations
|
from django.db import migrations
|
||||||
import utilities.fields
|
import utilities.fields
|
||||||
|
from django.db.models import Count
|
||||||
|
|
||||||
|
|
||||||
def recalculate_device_counts(apps, schema_editor):
|
def recalculate_device_counts(apps, schema_editor):
|
||||||
Device = apps.get_model("dcim", "Device")
|
Device = apps.get_model("dcim", "Device")
|
||||||
for device in Device.objects.all():
|
devices = list(Device.objects.all().annotate(
|
||||||
device._console_port_count = device.consoleports.count()
|
console_port_count=Count('consoleports'),
|
||||||
device._console_server_port_count = device.consoleserverports.count()
|
console_server_port_count=Count('consoleserverports'),
|
||||||
device._interface_count = device.interfaces.count()
|
interface_count=Count('interfaces'),
|
||||||
device._front_port_count = device.frontports.count()
|
front_port_count=Count('frontports'),
|
||||||
device._rear_port_count = device.rearports.count()
|
rear_port_count=Count('rearports'),
|
||||||
device._device_bay_count = device.devicebays.count()
|
device_bay_count=Count('devicebays'),
|
||||||
device._inventory_item_count = device.inventoryitems.count()
|
inventory_item_count=Count('inventoryitems'),
|
||||||
device._power_port_count = device.powerports.count()
|
power_port_count=Count('powerports'),
|
||||||
device._power_outlet_count = device.poweroutlets.count()
|
power_outlet_count=Count('poweroutlets'),
|
||||||
device.save()
|
))
|
||||||
|
|
||||||
|
for device in devices:
|
||||||
|
device._console_port_count = console_port_count
|
||||||
|
device._console_server_port_count = console_server_port_count
|
||||||
|
device._interface_count = interface_count
|
||||||
|
device._front_port_count = front_port_count
|
||||||
|
device._rear_port_count = rear_port_count
|
||||||
|
device._device_bay_count = device_bay_count
|
||||||
|
device._inventory_item_count = inventory_item_count
|
||||||
|
device._power_port_count = power_port_count
|
||||||
|
device._power_outlet_count = power_outlet_count
|
||||||
|
|
||||||
|
Device.objects.bulk_update(
|
||||||
|
devices,
|
||||||
|
['_console_port_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):
|
||||||
|
@ -2,14 +2,18 @@
|
|||||||
|
|
||||||
from django.db import migrations
|
from django.db import migrations
|
||||||
import utilities.fields
|
import utilities.fields
|
||||||
|
from django.db.models import Count
|
||||||
|
|
||||||
|
|
||||||
def populate_virtualmachine_counts(apps, schema_editor):
|
def populate_virtualmachine_counts(apps, schema_editor):
|
||||||
VirtualMachine = apps.get_model('virtualization', 'VirtualMachine')
|
VirtualMachine = apps.get_model('virtualization', 'VirtualMachine')
|
||||||
|
|
||||||
for vm in VirtualMachine.objects.all():
|
vms = list(VirtualMachine.objects.annotate(interface_count=Count('interfaces')))
|
||||||
vm._interface_count = vm.interfaces.count()
|
|
||||||
vm.save()
|
for vm in vms:
|
||||||
|
vm._interface_count = vm.interface_count
|
||||||
|
|
||||||
|
VirtualMachine.objects.bulk_update(vms, ['_interface_count'])
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
Loading…
Reference in New Issue
Block a user