1 # Generated by Django 2.2 on 2020-02-18 15:36
3 from django.conf import settings
4 from django.db import migrations, models
5 import django.db.models.deletion
6 import resource_inventory.models
9 def clear_resource_bundles(apps, schema_editor):
10 ResourceBundle = apps.get_model('resource_inventory', 'ResourceBundle')
11 for rb in ResourceBundle.objects.all():
16 def create_default_template(apps, schema_editor):
17 ResourceTemplate = apps.get_model('resource_inventory', 'ResourceTemplate')
18 ResourceTemplate.objects.create(name="Default Template", hidden=True)
21 def populate_servers(apps, schema_editor):
22 """Convert old Host models to Server Resources."""
23 Host = apps.get_model('resource_inventory', 'Host')
24 Server = apps.get_model('resource_inventory', 'Server')
25 ResourceProfile = apps.get_model('resource_inventory', 'ResourceProfile')
26 for h in Host.objects.all():
27 rp = ResourceProfile.objects.get(id=h.profile.id)
28 server = Server.objects.create(
38 for iface in h.interfaces.all():
39 server.interfaces.add(iface)
42 def populate_resource_templates(apps, schema_editor):
44 Convert old GenericResourceBundles to ResourceTemplate.
46 This will be kept blank for now. If, during testing, we realize
47 we want to implement this, we will. For now, it seems
48 fine to let the old models just die and create
54 def populate_resource_profiles(apps, schema_editor):
56 Convert old HostProfile models to ResourceProfiles.
58 Also updates all the foreign keys pointed to the old
59 host profile. This change was basically only a name change.
61 HostProfile = apps.get_model('resource_inventory', 'HostProfile')
62 ResourceProfile = apps.get_model('resource_inventory', 'ResourceProfile')
63 for hp in HostProfile.objects.all():
64 rp = ResourceProfile.objects.create(id=hp.id, name=hp.name, description=hp.description)
65 rp.labs.add(*list(hp.labs.all()))
67 TODO: link these models together
68 rp.interfaceprofile = hp.interfaceprofile
69 rp.storageprofile = hp.storageprofile
70 rp.cpuprofile = hp.cpuprofile
71 rp.ramprofile = hp.ramprofile
73 hp.interfaceprofile.host = rp
74 rp.storageprofile.host = rp
75 rp.cpuprofile.host = rp
76 rp.ramprofile.host = rp
77 rp.interfaceprofile.save()
78 rp.storageprofile.save()
84 class Migration(migrations.Migration):
87 migrations.swappable_dependency(settings.AUTH_USER_MODEL),
88 ('booking', '0007_remove_booking_config_bundle'),
89 ('account', '0004_downtime'),
90 ('api', '0013_manual_20200218_1536'),
91 ('resource_inventory', '0012_manual_20200218_1536'),
95 migrations.CreateModel(
96 name='InterfaceConfiguration',
98 ('id', models.AutoField(primary_key=True, serialize=False)),
99 ('connections', models.ManyToManyField(to='resource_inventory.NetworkConnection')),
102 migrations.CreateModel(
103 name='ResourceConfiguration',
105 ('id', models.AutoField(primary_key=True, serialize=False)),
106 ('is_head_node', models.BooleanField(default=False)),
109 migrations.CreateModel(
110 name='ResourceOPNFVConfig',
112 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
115 migrations.CreateModel(
116 name='ResourceProfile',
118 ('id', models.AutoField(primary_key=True, serialize=False)),
119 ('name', models.CharField(max_length=200, unique=True)),
120 ('description', models.TextField()),
121 ('labs', models.ManyToManyField(related_name='resourceprofiles', to='account.Lab')),
124 migrations.RunPython(populate_resource_profiles),
125 migrations.CreateModel(
126 name='ResourceTemplate',
128 ('id', models.AutoField(primary_key=True, serialize=False)),
129 ('name', models.CharField(max_length=300, unique=True)),
130 ('xml', models.TextField()),
131 ('description', models.CharField(default='', max_length=1000)),
132 ('public', models.BooleanField(default=False)),
133 ('hidden', models.BooleanField(default=False)),
134 ('lab', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='resourcetemplates', to='account.Lab')),
135 ('owner', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)),
138 migrations.RunPython(populate_resource_templates),
139 migrations.CreateModel(
142 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
143 ('working', models.BooleanField(default=True)),
144 ('vendor', models.CharField(default='unknown', max_length=100)),
145 ('model', models.CharField(default='unknown', max_length=150)),
146 ('labid', models.CharField(default='default_id', max_length=200, unique=True)),
147 ('booked', models.BooleanField(default=False)),
148 ('name', models.CharField(max_length=200, unique=True)),
157 field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='resource_inventory.ResourceBundle'),
162 field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='resource_inventory.ResourceConfiguration'),
167 field=models.ManyToManyField(to='resource_inventory.Interface'),
172 field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='account.Lab'),
177 field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='resource_inventory.ResourceProfile'),
181 name='remote_management',
182 field=models.ForeignKey(default=resource_inventory.models.get_default_remote_info, on_delete=models.SET(resource_inventory.models.get_default_remote_info), to='resource_inventory.RemoteInfo'),
184 migrations.RunPython(populate_servers),
185 migrations.RemoveField(
186 model_name='generichost',
189 migrations.RemoveField(
190 model_name='generichost',
193 migrations.RemoveField(
194 model_name='genericinterface',
197 migrations.RemoveField(
198 model_name='genericinterface',
201 migrations.RemoveField(
202 model_name='genericinterface',
205 migrations.RemoveField(
206 model_name='genericresource',
209 migrations.RemoveField(
210 model_name='genericresourcebundle',
213 migrations.RemoveField(
214 model_name='genericresourcebundle',
217 migrations.RemoveField(
221 migrations.RemoveField(
225 migrations.RemoveField(
229 migrations.RemoveField(
233 migrations.RemoveField(
235 name='remote_management',
237 migrations.RemoveField(
241 migrations.RemoveField(
242 model_name='hostconfiguration',
245 migrations.RemoveField(
246 model_name='hostconfiguration',
249 migrations.RemoveField(
250 model_name='hostconfiguration',
253 migrations.RemoveField(
254 model_name='hostopnfvconfig',
257 migrations.RemoveField(
258 model_name='hostopnfvconfig',
261 migrations.RemoveField(
262 model_name='hostopnfvconfig',
265 migrations.RemoveField(
266 model_name='hostprofile',
269 migrations.RemoveField(
270 model_name='interface',
273 migrations.RemoveField(
274 model_name='interface',
277 migrations.RemoveField(
278 model_name='opnfvconfig',
282 model_name='interface',
284 field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='resource_inventory.InterfaceProfile'),
285 preserve_default=False,
288 model_name='interfaceprofile',
290 field=models.IntegerField(default=-1),
292 migrations.AlterField(
293 model_name='cpuprofile',
295 field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='cpuprofile', to='resource_inventory.ResourceProfile'),
297 migrations.AlterField(
298 model_name='diskprofile',
300 field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='storageprofile', to='resource_inventory.ResourceProfile'),
302 migrations.AlterField(
305 field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='resource_inventory.ResourceProfile'),
307 migrations.AlterField(
308 model_name='interfaceprofile',
310 field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='interfaceprofile', to='resource_inventory.ResourceProfile'),
312 migrations.AlterField(
313 model_name='network',
315 field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='networks', to='resource_inventory.ResourceTemplate'),
317 migrations.AlterField(
318 model_name='ramprofile',
320 field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ramprofile', to='resource_inventory.ResourceProfile'),
322 migrations.RunPython(clear_resource_bundles),
323 migrations.AlterField(
324 model_name='resourcebundle',
326 field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='resource_inventory.ResourceTemplate'),
328 migrations.DeleteModel(
331 migrations.DeleteModel(
334 migrations.DeleteModel(
335 name='GenericInterface',
337 migrations.DeleteModel(
338 name='GenericResource',
340 migrations.DeleteModel(
341 name='GenericResourceBundle',
343 migrations.DeleteModel(
344 name='HostConfiguration',
346 migrations.DeleteModel(
347 name='HostOPNFVConfig',
349 migrations.DeleteModel(
352 migrations.DeleteModel(
356 model_name='resourceopnfvconfig',
358 field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='resource_opnfv_config', to='resource_inventory.OPNFVConfig'),
361 model_name='resourceopnfvconfig',
362 name='resource_config',
363 field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='resource_opnfv_config', to='resource_inventory.ResourceConfiguration'),
366 model_name='resourceopnfvconfig',
368 field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='resource_opnfv_configs', to='resource_inventory.OPNFVRole'),
371 model_name='resourceconfiguration',
373 field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='resource_inventory.Image'),
376 model_name='resourceconfiguration',
378 field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='resource_inventory.ResourceProfile'),
381 model_name='resourceconfiguration',
383 field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='resourceConfigurations', to='resource_inventory.ResourceTemplate'),
386 model_name='interfaceconfiguration',
388 field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='resource_inventory.InterfaceProfile'),
391 model_name='interfaceconfiguration',
392 name='resource_config',
393 field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='interface_configs', to='resource_inventory.ResourceConfiguration'),
396 model_name='interface',
398 field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.SET_NULL, to='resource_inventory.InterfaceConfiguration'),
400 migrations.RunPython(create_default_template),
402 model_name='opnfvconfig',
404 field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='opnfv_config', to='resource_inventory.ResourceTemplate'),
405 preserve_default=False,