1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Closes #5303: A virtual machine may be assigned to a site and/or cluster

This commit is contained in:
jeremystretch
2022-05-26 14:59:49 -04:00
parent b331f047af
commit db42589cca
19 changed files with 223 additions and 86 deletions

View File

@@ -1,20 +0,0 @@
# Generated by Django 4.0.4 on 2022-05-25 19:30
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('dcim', '0153_created_datetimefield'),
('virtualization', '0030_cluster_status'),
]
operations = [
migrations.AddField(
model_name='virtualmachine',
name='device',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='virtual_machines', to='dcim.device'),
),
]

View File

@@ -0,0 +1,28 @@
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('dcim', '0153_created_datetimefield'),
('virtualization', '0030_cluster_status'),
]
operations = [
migrations.AddField(
model_name='virtualmachine',
name='site',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='virtual_machines', to='dcim.site'),
),
migrations.AddField(
model_name='virtualmachine',
name='device',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='virtual_machines', to='dcim.device'),
),
migrations.AlterField(
model_name='virtualmachine',
name='cluster',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='virtual_machines', to='virtualization.cluster'),
),
]

View File

@@ -0,0 +1,27 @@
from django.db import migrations
def update_virtualmachines_site(apps, schema_editor):
"""
Automatically set the site for all virtual machines.
"""
VirtualMachine = apps.get_model('virtualization', 'VirtualMachine')
virtual_machines = VirtualMachine.objects.filter(cluster__site__isnull=False)
for vm in virtual_machines:
vm.site = vm.cluster.site
VirtualMachine.objects.bulk_update(virtual_machines, ['site'])
class Migration(migrations.Migration):
dependencies = [
('virtualization', '0031_virtualmachine_site_device'),
]
operations = [
migrations.RunPython(
code=update_virtualmachines_site,
reverse_code=migrations.RunPython.noop
),
]