Skip to content

Commit 2d889da

Browse files
authored
Merge pull request #2187 from rackerlabs/vlan_group_names
feat: Handle multiple network leaf pairs in vlan_group naming convention
2 parents c4b60eb + f96c362 commit 2d889da

2 files changed

Lines changed: 32 additions & 1 deletion

File tree

‎python/ironic-understack/ironic_understack/tests/test_vlan_group_name_convention.py‎

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def test_vlan_group_name_single_cab():
4444
}
4545

4646

47-
def test_vlan_group_name_pair_cab():
47+
def test_vlan_group_name_pair_cab_dash_one():
4848
assert vlan_group_names(
4949
[
5050
port("a1-1-1.abc1"),
@@ -61,6 +61,23 @@ def test_vlan_group_name_pair_cab():
6161
}
6262

6363

64+
def test_vlan_group_name_pair_cab_dash_two():
65+
assert vlan_group_names(
66+
[
67+
port("a1-1-2.abc1"),
68+
port("a1-2-2.abc1"),
69+
port("a1-1-1f.abc1"),
70+
port("a1-2-1f.abc1"),
71+
],
72+
mapping,
73+
) == {
74+
"a1-1-2.abc1": "a1-1-2/a1-2-2-network",
75+
"a1-2-2.abc1": "a1-1-2/a1-2-2-network",
76+
"a1-1-1f.abc1": "a1-1/a1-2-storage",
77+
"a1-2-1f.abc1": "a1-1/a1-2-storage",
78+
}
79+
80+
6481
def test_vlan_group_name_with_domain():
6582
assert vlan_group_names(
6683
[

‎python/ironic-understack/ironic_understack/utils/vlan_group_name_convention.py‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ def vlan_group_names(
3030
racks separated by a slash:
3131
3232
["a11-12-1", "a11-13-1"] => "a11-12/a11-13-network"
33+
34+
In a pair of racks using -2 switches, we add a -2 to the cabinet name:
35+
36+
["a11-12-2", "a11-13-2"] => "a11-12-2/a11-13-2-network"
3337
"""
3438
assert_consistent_data_center(ports)
3539
assert_single_or_paired_racks(ports)
@@ -42,9 +46,19 @@ def vlan_group_names(
4246
vlan_group_names = {}
4347
for switch_category, ports_in_group in vlan_groups.items():
4448
rack_names = {p.rack_name for p in ports_in_group}
49+
switch_suffixes = {p.switch_suffix for p in ports_in_group}
50+
51+
# Special case naming for pairs of racks that have multiple leaf pairs.
52+
# (We don't handle multiple pairs in a single rack.)
53+
if switch_suffixes in [{"2"}, {"3"}, {"4"}, {"5"}, {"6"}, {"7"}, {"8"}, {"9"}]:
54+
suffix = next(iter(switch_suffixes))
55+
rack_names = {f"{rack_name}-{suffix}" for rack_name in rack_names}
56+
4557
vlan_group_name = "/".join(sorted(rack_names)) + "-" + switch_category
58+
4659
for p in ports_in_group:
4760
vlan_group_names[p.switch_system_name] = vlan_group_name
61+
4862
return vlan_group_names
4963

5064

0 commit comments

Comments
 (0)