Merge ~blake-rouse/maas:fix-1793340-part3 into maas:master

Proposed by Blake Rouse
Status: Merged
Approved by: Blake Rouse
Approved revision: 42c5ba3ec9bff2c279912f958298d8f7891dbb4c
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~blake-rouse/maas:fix-1793340-part3
Merge into: maas:master
Diff against target: 38 lines (+11/-0)
1 file modified
src/maasserver/migrations/builtin/maasserver/0178_break_apart_linked_bmcs.py (+11/-0)
Reviewer Review Type Date Requested Status
Andres Rodriguez (community) Approve
Review via email: mp+355721@code.launchpad.net

Commit message

Fix issues in 0178_break_apart_linked_bmcs migration where it didn't generate a new unique name for the duplicated BMCs.

To post a comment you must log in.
Revision history for this message
Andres Rodriguez (andreserl) :
review: Approve
Revision history for this message
Andres Rodriguez (andreserl) wrote :

I approved this one, but have a quesiton. What would happen if petname creates the name as something that';s already used for a machine's hostname?

Revision history for this message
Andres Rodriguez (andreserl) wrote :

13:00 <@blake_r> roaksoax: thats fine because its a different table

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/migrations/builtin/maasserver/0178_break_apart_linked_bmcs.py b/src/maasserver/migrations/builtin/maasserver/0178_break_apart_linked_bmcs.py
2index 19bdca0..164f502 100644
3--- a/src/maasserver/migrations/builtin/maasserver/0178_break_apart_linked_bmcs.py
4+++ b/src/maasserver/migrations/builtin/maasserver/0178_break_apart_linked_bmcs.py
5@@ -5,6 +5,7 @@ from __future__ import unicode_literals
6 import re
7
8 from django.db import migrations
9+import petname
10 from provisioningserver.drivers.power.registry import PowerDriverRegistry
11
12
13@@ -17,8 +18,17 @@ def get_none_chassis_power_types():
14 ]
15
16
17+def generate_bmc_name(existing_names):
18+ while True:
19+ name = petname.Generate(2, "-")
20+ if name not in existing_names:
21+ existing_names.append(name)
22+ return name
23+
24+
25 def break_apart_linked_bmcs(apps, schema_editor):
26 BMC = apps.get_model("maasserver", "BMC")
27+ existing_names = list(BMC.objects.values_list('name', flat=True))
28 power_types = get_none_chassis_power_types()
29 for bmc in BMC.objects.filter(power_type__in=power_types).prefetch_related(
30 'node_set'):
31@@ -26,6 +36,7 @@ def break_apart_linked_bmcs(apps, schema_editor):
32 for node in nodes[1:]:
33 bmc.id = None
34 bmc._state.adding = True
35+ bmc.name = generate_bmc_name(existing_names)
36 bmc.save()
37 node.bmc = bmc
38 node.save()

Subscribers

People subscribed via source and target branches