mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-19 01:58:43 -06:00
Fixes #19440: Ensure data migrations use the correct database connection
This commit is contained in:
@@ -26,49 +26,50 @@ def set_null_values(apps, schema_editor):
|
||||
RackType = apps.get_model('dcim', 'RackType')
|
||||
RearPort = apps.get_model('dcim', 'RearPort')
|
||||
Site = apps.get_model('dcim', 'Site')
|
||||
db_alias = schema_editor.connection.alias
|
||||
|
||||
Cable.objects.filter(length_unit='').update(length_unit=None)
|
||||
Cable.objects.filter(type='').update(type=None)
|
||||
ConsolePort.objects.filter(cable_end='').update(cable_end=None)
|
||||
ConsolePort.objects.filter(type='').update(type=None)
|
||||
ConsolePortTemplate.objects.filter(type='').update(type=None)
|
||||
ConsoleServerPort.objects.filter(cable_end='').update(cable_end=None)
|
||||
ConsoleServerPort.objects.filter(type='').update(type=None)
|
||||
ConsoleServerPortTemplate.objects.filter(type='').update(type=None)
|
||||
Device.objects.filter(airflow='').update(airflow=None)
|
||||
Device.objects.filter(face='').update(face=None)
|
||||
DeviceType.objects.filter(airflow='').update(airflow=None)
|
||||
DeviceType.objects.filter(subdevice_role='').update(subdevice_role=None)
|
||||
DeviceType.objects.filter(weight_unit='').update(weight_unit=None)
|
||||
FrontPort.objects.filter(cable_end='').update(cable_end=None)
|
||||
Interface.objects.filter(cable_end='').update(cable_end=None)
|
||||
Interface.objects.filter(mode='').update(mode=None)
|
||||
Interface.objects.filter(poe_mode='').update(poe_mode=None)
|
||||
Interface.objects.filter(poe_type='').update(poe_type=None)
|
||||
Interface.objects.filter(rf_channel='').update(rf_channel=None)
|
||||
Interface.objects.filter(rf_role='').update(rf_role=None)
|
||||
InterfaceTemplate.objects.filter(poe_mode='').update(poe_mode=None)
|
||||
InterfaceTemplate.objects.filter(poe_type='').update(poe_type=None)
|
||||
InterfaceTemplate.objects.filter(rf_role='').update(rf_role=None)
|
||||
ModuleType.objects.filter(airflow='').update(airflow=None)
|
||||
ModuleType.objects.filter(weight_unit='').update(weight_unit=None)
|
||||
PowerFeed.objects.filter(cable_end='').update(cable_end=None)
|
||||
PowerOutlet.objects.filter(cable_end='').update(cable_end=None)
|
||||
PowerOutlet.objects.filter(feed_leg='').update(feed_leg=None)
|
||||
PowerOutlet.objects.filter(type='').update(type=None)
|
||||
PowerOutletTemplate.objects.filter(feed_leg='').update(feed_leg=None)
|
||||
PowerOutletTemplate.objects.filter(type='').update(type=None)
|
||||
PowerPort.objects.filter(cable_end='').update(cable_end=None)
|
||||
PowerPort.objects.filter(type='').update(type=None)
|
||||
PowerPortTemplate.objects.filter(type='').update(type=None)
|
||||
Rack.objects.filter(airflow='').update(airflow=None)
|
||||
Rack.objects.filter(form_factor='').update(form_factor=None)
|
||||
Rack.objects.filter(outer_unit='').update(outer_unit=None)
|
||||
Rack.objects.filter(weight_unit='').update(weight_unit=None)
|
||||
RackType.objects.filter(outer_unit='').update(outer_unit=None)
|
||||
RackType.objects.filter(weight_unit='').update(weight_unit=None)
|
||||
RearPort.objects.filter(cable_end='').update(cable_end=None)
|
||||
Site.objects.filter(time_zone='').update(time_zone=None)
|
||||
Cable.objects.using(db_alias).filter(length_unit='').update(length_unit=None)
|
||||
Cable.objects.using(db_alias).filter(type='').update(type=None)
|
||||
ConsolePort.objects.using(db_alias).filter(cable_end='').update(cable_end=None)
|
||||
ConsolePort.objects.using(db_alias).filter(type='').update(type=None)
|
||||
ConsolePortTemplate.objects.using(db_alias).filter(type='').update(type=None)
|
||||
ConsoleServerPort.objects.using(db_alias).filter(cable_end='').update(cable_end=None)
|
||||
ConsoleServerPort.objects.using(db_alias).filter(type='').update(type=None)
|
||||
ConsoleServerPortTemplate.objects.using(db_alias).filter(type='').update(type=None)
|
||||
Device.objects.using(db_alias).filter(airflow='').update(airflow=None)
|
||||
Device.objects.using(db_alias).filter(face='').update(face=None)
|
||||
DeviceType.objects.using(db_alias).filter(airflow='').update(airflow=None)
|
||||
DeviceType.objects.using(db_alias).filter(subdevice_role='').update(subdevice_role=None)
|
||||
DeviceType.objects.using(db_alias).filter(weight_unit='').update(weight_unit=None)
|
||||
FrontPort.objects.using(db_alias).filter(cable_end='').update(cable_end=None)
|
||||
Interface.objects.using(db_alias).filter(cable_end='').update(cable_end=None)
|
||||
Interface.objects.using(db_alias).filter(mode='').update(mode=None)
|
||||
Interface.objects.using(db_alias).filter(poe_mode='').update(poe_mode=None)
|
||||
Interface.objects.using(db_alias).filter(poe_type='').update(poe_type=None)
|
||||
Interface.objects.using(db_alias).filter(rf_channel='').update(rf_channel=None)
|
||||
Interface.objects.using(db_alias).filter(rf_role='').update(rf_role=None)
|
||||
InterfaceTemplate.objects.using(db_alias).filter(poe_mode='').update(poe_mode=None)
|
||||
InterfaceTemplate.objects.using(db_alias).filter(poe_type='').update(poe_type=None)
|
||||
InterfaceTemplate.objects.using(db_alias).filter(rf_role='').update(rf_role=None)
|
||||
ModuleType.objects.using(db_alias).filter(airflow='').update(airflow=None)
|
||||
ModuleType.objects.using(db_alias).filter(weight_unit='').update(weight_unit=None)
|
||||
PowerFeed.objects.using(db_alias).filter(cable_end='').update(cable_end=None)
|
||||
PowerOutlet.objects.using(db_alias).filter(cable_end='').update(cable_end=None)
|
||||
PowerOutlet.objects.using(db_alias).filter(feed_leg='').update(feed_leg=None)
|
||||
PowerOutlet.objects.using(db_alias).filter(type='').update(type=None)
|
||||
PowerOutletTemplate.objects.using(db_alias).filter(feed_leg='').update(feed_leg=None)
|
||||
PowerOutletTemplate.objects.using(db_alias).filter(type='').update(type=None)
|
||||
PowerPort.objects.using(db_alias).filter(cable_end='').update(cable_end=None)
|
||||
PowerPort.objects.using(db_alias).filter(type='').update(type=None)
|
||||
PowerPortTemplate.objects.using(db_alias).filter(type='').update(type=None)
|
||||
Rack.objects.using(db_alias).filter(airflow='').update(airflow=None)
|
||||
Rack.objects.using(db_alias).filter(form_factor='').update(form_factor=None)
|
||||
Rack.objects.using(db_alias).filter(outer_unit='').update(outer_unit=None)
|
||||
Rack.objects.using(db_alias).filter(weight_unit='').update(weight_unit=None)
|
||||
RackType.objects.using(db_alias).filter(outer_unit='').update(outer_unit=None)
|
||||
RackType.objects.using(db_alias).filter(weight_unit='').update(weight_unit=None)
|
||||
RearPort.objects.using(db_alias).filter(cable_end='').update(cable_end=None)
|
||||
Site.objects.using(db_alias).filter(time_zone='').update(time_zone=None)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
@@ -6,19 +6,26 @@ def populate_mac_addresses(apps, schema_editor):
|
||||
ContentType = apps.get_model('contenttypes', 'ContentType')
|
||||
Interface = apps.get_model('dcim', 'Interface')
|
||||
MACAddress = apps.get_model('dcim', 'MACAddress')
|
||||
db_alias = schema_editor.connection.alias
|
||||
interface_ct = ContentType.objects.get_for_model(Interface)
|
||||
|
||||
mac_addresses = [
|
||||
MACAddress(
|
||||
mac_address=interface.mac_address, assigned_object_type=interface_ct, assigned_object_id=interface.pk
|
||||
mac_address=interface.mac_address,
|
||||
assigned_object_type=interface_ct,
|
||||
assigned_object_id=interface.pk
|
||||
)
|
||||
for interface in Interface.objects.filter(mac_address__isnull=False)
|
||||
]
|
||||
MACAddress.objects.bulk_create(mac_addresses, batch_size=100)
|
||||
MACAddress.objects.using(db_alias).bulk_create(mac_addresses, batch_size=100)
|
||||
|
||||
# TODO: Optimize interface updates
|
||||
for mac_address in mac_addresses:
|
||||
Interface.objects.filter(pk=mac_address.assigned_object_id).update(primary_mac_address=mac_address)
|
||||
Interface.objects.using(db_alias).filter(
|
||||
pk=mac_address.assigned_object_id
|
||||
).update(
|
||||
primary_mac_address=mac_address
|
||||
)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
@@ -11,6 +11,8 @@ def load_initial_data(apps, schema_editor):
|
||||
Load initial ModuleTypeProfile objects from file.
|
||||
"""
|
||||
ModuleTypeProfile = apps.get_model('dcim', 'ModuleTypeProfile')
|
||||
db_alias = schema_editor.connection.alias
|
||||
|
||||
initial_profiles = (
|
||||
'cpu',
|
||||
'fan',
|
||||
@@ -25,7 +27,7 @@ def load_initial_data(apps, schema_editor):
|
||||
with file_path.open('r') as f:
|
||||
data = json.load(f)
|
||||
try:
|
||||
ModuleTypeProfile.objects.create(**data)
|
||||
ModuleTypeProfile.objects.using(db_alias).create(**data)
|
||||
except Exception as e:
|
||||
print(f"Error loading data from {file_path}")
|
||||
raise e
|
||||
|
||||
Reference in New Issue
Block a user