add nick
[laas.git] / src / resource_inventory / migrations / 0013_auto_20200218_1536.py
1 # Generated by Django 2.2 on 2020-02-18 15:36
2
3 from django.conf import settings
4 from django.db import migrations, models
5 import django.db.models.deletion
6 import resource_inventory.models
7
8
9 def clear_resource_bundles(apps, schema_editor):
10     ResourceBundle = apps.get_model('resource_inventory', 'ResourceBundle')
11     for rb in ResourceBundle.objects.all():
12         rb.template = None
13         rb.save()
14
15
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)
19
20
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(
29             working=h.working,
30             vendor=h.vendor,
31             labid=h.labid,
32             booked=h.booked,
33             name=h.labid,
34             lab=h.lab,
35             profile=rp
36         )
37
38         for iface in h.interfaces.all():
39             server.interfaces.add(iface)
40
41
42 def populate_resource_templates(apps, schema_editor):
43     """
44     Convert old GenericResourceBundles to ResourceTemplate.
45
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
49     new ones as needed.
50     """
51     pass
52
53
54 def populate_resource_profiles(apps, schema_editor):
55     """
56     Convert old HostProfile models to ResourceProfiles.
57
58     Also updates all the foreign keys pointed to the old
59     host profile. This change was basically only a name change.
60     """
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()))
66         """
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
72         rp.save()
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()
79         rp.cpuprofile.save()
80         rp.ramprofile.save()
81         """
82
83
84 class Migration(migrations.Migration):
85
86     dependencies = [
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'),
92     ]
93
94     operations = [
95         migrations.CreateModel(
96             name='InterfaceConfiguration',
97             fields=[
98                 ('id', models.AutoField(primary_key=True, serialize=False)),
99                 ('connections', models.ManyToManyField(to='resource_inventory.NetworkConnection')),
100             ],
101         ),
102         migrations.CreateModel(
103             name='ResourceConfiguration',
104             fields=[
105                 ('id', models.AutoField(primary_key=True, serialize=False)),
106                 ('is_head_node', models.BooleanField(default=False)),
107             ],
108         ),
109         migrations.CreateModel(
110             name='ResourceOPNFVConfig',
111             fields=[
112                 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
113             ],
114         ),
115         migrations.CreateModel(
116             name='ResourceProfile',
117             fields=[
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')),
122             ],
123         ),
124         migrations.RunPython(populate_resource_profiles),
125         migrations.CreateModel(
126             name='ResourceTemplate',
127             fields=[
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)),
136             ],
137         ),
138         migrations.RunPython(populate_resource_templates),
139         migrations.CreateModel(
140             name='Server',
141             fields=[
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)),
149             ],
150             options={
151                 'abstract': False,
152             },
153         ),
154         migrations.AddField(
155             model_name='server',
156             name='bundle',
157             field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='resource_inventory.ResourceBundle'),
158         ),
159         migrations.AddField(
160             model_name='server',
161             name='config',
162             field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='resource_inventory.ResourceConfiguration'),
163         ),
164         migrations.AddField(
165             model_name='server',
166             name='interfaces',
167             field=models.ManyToManyField(to='resource_inventory.Interface'),
168         ),
169         migrations.AddField(
170             model_name='server',
171             name='lab',
172             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='account.Lab'),
173         ),
174         migrations.AddField(
175             model_name='server',
176             name='profile',
177             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='resource_inventory.ResourceProfile'),
178         ),
179         migrations.AddField(
180             model_name='server',
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'),
183         ),
184         migrations.RunPython(populate_servers),
185         migrations.RemoveField(
186             model_name='generichost',
187             name='profile',
188         ),
189         migrations.RemoveField(
190             model_name='generichost',
191             name='resource',
192         ),
193         migrations.RemoveField(
194             model_name='genericinterface',
195             name='connections',
196         ),
197         migrations.RemoveField(
198             model_name='genericinterface',
199             name='host',
200         ),
201         migrations.RemoveField(
202             model_name='genericinterface',
203             name='profile',
204         ),
205         migrations.RemoveField(
206             model_name='genericresource',
207             name='bundle',
208         ),
209         migrations.RemoveField(
210             model_name='genericresourcebundle',
211             name='lab',
212         ),
213         migrations.RemoveField(
214             model_name='genericresourcebundle',
215             name='owner',
216         ),
217         migrations.RemoveField(
218             model_name='host',
219             name='bundle',
220         ),
221         migrations.RemoveField(
222             model_name='host',
223             name='config',
224         ),
225         migrations.RemoveField(
226             model_name='host',
227             name='lab',
228         ),
229         migrations.RemoveField(
230             model_name='host',
231             name='profile',
232         ),
233         migrations.RemoveField(
234             model_name='host',
235             name='remote_management',
236         ),
237         migrations.RemoveField(
238             model_name='host',
239             name='template',
240         ),
241         migrations.RemoveField(
242             model_name='hostconfiguration',
243             name='bundle',
244         ),
245         migrations.RemoveField(
246             model_name='hostconfiguration',
247             name='host',
248         ),
249         migrations.RemoveField(
250             model_name='hostconfiguration',
251             name='image',
252         ),
253         migrations.RemoveField(
254             model_name='hostopnfvconfig',
255             name='host_config',
256         ),
257         migrations.RemoveField(
258             model_name='hostopnfvconfig',
259             name='opnfv_config',
260         ),
261         migrations.RemoveField(
262             model_name='hostopnfvconfig',
263             name='role',
264         ),
265         migrations.RemoveField(
266             model_name='hostprofile',
267             name='labs',
268         ),
269         migrations.RemoveField(
270             model_name='interface',
271             name='host',
272         ),
273         migrations.RemoveField(
274             model_name='interface',
275             name='name',
276         ),
277         migrations.RemoveField(
278             model_name='opnfvconfig',
279             name='bundle',
280         ),
281         migrations.AddField(
282             model_name='interface',
283             name='profile',
284             field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='resource_inventory.InterfaceProfile'),
285             preserve_default=False,
286         ),
287         migrations.AddField(
288             model_name='interfaceprofile',
289             name='order',
290             field=models.IntegerField(default=-1),
291         ),
292         migrations.AlterField(
293             model_name='cpuprofile',
294             name='host',
295             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='cpuprofile', to='resource_inventory.ResourceProfile'),
296         ),
297         migrations.AlterField(
298             model_name='diskprofile',
299             name='host',
300             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='storageprofile', to='resource_inventory.ResourceProfile'),
301         ),
302         migrations.AlterField(
303             model_name='image',
304             name='host_type',
305             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='resource_inventory.ResourceProfile'),
306         ),
307         migrations.AlterField(
308             model_name='interfaceprofile',
309             name='host',
310             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='interfaceprofile', to='resource_inventory.ResourceProfile'),
311         ),
312         migrations.AlterField(
313             model_name='network',
314             name='bundle',
315             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='networks', to='resource_inventory.ResourceTemplate'),
316         ),
317         migrations.AlterField(
318             model_name='ramprofile',
319             name='host',
320             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ramprofile', to='resource_inventory.ResourceProfile'),
321         ),
322         migrations.RunPython(clear_resource_bundles),
323         migrations.AlterField(
324             model_name='resourcebundle',
325             name='template',
326             field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='resource_inventory.ResourceTemplate'),
327         ),
328         migrations.DeleteModel(
329             name='ConfigBundle',
330         ),
331         migrations.DeleteModel(
332             name='GenericHost',
333         ),
334         migrations.DeleteModel(
335             name='GenericInterface',
336         ),
337         migrations.DeleteModel(
338             name='GenericResource',
339         ),
340         migrations.DeleteModel(
341             name='GenericResourceBundle',
342         ),
343         migrations.DeleteModel(
344             name='HostConfiguration',
345         ),
346         migrations.DeleteModel(
347             name='HostOPNFVConfig',
348         ),
349         migrations.DeleteModel(
350             name='HostProfile',
351         ),
352         migrations.DeleteModel(
353             name='Host',
354         ),
355         migrations.AddField(
356             model_name='resourceopnfvconfig',
357             name='opnfv_config',
358             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='resource_opnfv_config', to='resource_inventory.OPNFVConfig'),
359         ),
360         migrations.AddField(
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'),
364         ),
365         migrations.AddField(
366             model_name='resourceopnfvconfig',
367             name='role',
368             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='resource_opnfv_configs', to='resource_inventory.OPNFVRole'),
369         ),
370         migrations.AddField(
371             model_name='resourceconfiguration',
372             name='image',
373             field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='resource_inventory.Image'),
374         ),
375         migrations.AddField(
376             model_name='resourceconfiguration',
377             name='profile',
378             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='resource_inventory.ResourceProfile'),
379         ),
380         migrations.AddField(
381             model_name='resourceconfiguration',
382             name='template',
383             field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='resourceConfigurations', to='resource_inventory.ResourceTemplate'),
384         ),
385         migrations.AddField(
386             model_name='interfaceconfiguration',
387             name='profile',
388             field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='resource_inventory.InterfaceProfile'),
389         ),
390         migrations.AddField(
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'),
394         ),
395         migrations.AddField(
396             model_name='interface',
397             name='acts_as',
398             field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.SET_NULL, to='resource_inventory.InterfaceConfiguration'),
399         ),
400         migrations.RunPython(create_default_template),
401         migrations.AddField(
402             model_name='opnfvconfig',
403             name='template',
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,
406         ),
407     ]