Merge lp:~lamont/maas/bug-1645912b into lp:~maas-committers/maas/trunk

Proposed by LaMont Jones
Status: Merged
Approved by: LaMont Jones
Approved revision: no longer in the source branch.
Merged at revision: 5710
Proposed branch: lp:~lamont/maas/bug-1645912b
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 108 lines (+36/-7)
4 files modified
src/maasserver/models/bmc.py (+4/-1)
src/maasserver/models/tests/test_bmc.py (+24/-0)
src/provisioningserver/templates/commissioning-user-data/snippets/maas_ipmi_autodetect.py (+2/-0)
src/provisioningserver/templates/commissioning-user-data/snippets/tests/test_maas_ipmi_autodetect.py (+6/-6)
To merge this branch: bzr merge lp:~lamont/maas/bug-1645912b
Reviewer Review Type Date Requested Status
Andres Rodriguez (community) Approve
Review via email: mp+316907@code.launchpad.net

Commit message

Have ipmi_autodetect wrap IPv6 literals in brackets. Parse those correctly.

Description of the change

Have ipmi_autodetect wrap IPv6 literals in brackets. Parse those correctly.

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

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/maasserver/models/bmc.py'
2--- src/maasserver/models/bmc.py 2017-01-31 22:19:57 +0000
3+++ src/maasserver/models/bmc.py 2017-02-09 21:59:03 +0000
4@@ -205,7 +205,10 @@
5 parameters has changed. """
6 new_ip = BMC.extract_ip_address(self.power_type, self.power_parameters)
7 current_ip = None if self.ip_address is None else self.ip_address.ip
8- # Set the ip_address field.
9+ # Set the ip_address field. If we have a bracketed address, assume
10+ # it's IPv6, and strip the brackets.
11+ if new_ip and new_ip.startswith('[') and new_ip.endswith(']'):
12+ new_ip = new_ip[1:-1]
13 if new_ip != current_ip:
14 if new_ip is None:
15 self.ip_address = None
16
17=== modified file 'src/maasserver/models/tests/test_bmc.py'
18--- src/maasserver/models/tests/test_bmc.py 2017-01-27 03:02:54 +0000
19+++ src/maasserver/models/tests/test_bmc.py 2017-02-09 21:59:03 +0000
20@@ -115,6 +115,30 @@
21 self.assertEqual(sticky_ip.ip, bmc.ip_address.ip)
22 self.assertEqual(subnet, bmc.ip_address.subnet)
23
24+ def test_bmc_save_accepts_naked_ipv6_address(self):
25+ subnet = factory.make_Subnet(cidr=factory.make_ipv6_network())
26+ sticky_ip = factory.make_StaticIPAddress(
27+ alloc_type=IPADDRESS_TYPE.STICKY, subnet=subnet)
28+ power_parameters = {
29+ 'power_address': '%s' % sticky_ip.ip,
30+ }
31+ bmc = factory.make_BMC(
32+ power_type="ipmi", power_parameters=power_parameters)
33+ self.assertEqual(sticky_ip.ip, bmc.ip_address.ip)
34+ self.assertEqual(subnet, bmc.ip_address.subnet)
35+
36+ def test_bmc_save_accepts_bracketed_ipv6_address(self):
37+ subnet = factory.make_Subnet(cidr=factory.make_ipv6_network())
38+ sticky_ip = factory.make_StaticIPAddress(
39+ alloc_type=IPADDRESS_TYPE.STICKY, subnet=subnet)
40+ power_parameters = {
41+ 'power_address': '[%s]' % sticky_ip.ip,
42+ }
43+ bmc = factory.make_BMC(
44+ power_type="ipmi", power_parameters=power_parameters)
45+ self.assertEqual(sticky_ip.ip, bmc.ip_address.ip)
46+ self.assertEqual(subnet, bmc.ip_address.subnet)
47+
48 def test_bmc_changing_power_parameters_changes_ip(self):
49 ip = factory.make_ipv4_address()
50 power_parameters = {
51
52=== modified file 'src/provisioningserver/templates/commissioning-user-data/snippets/maas_ipmi_autodetect.py'
53--- src/provisioningserver/templates/commissioning-user-data/snippets/maas_ipmi_autodetect.py 2017-02-03 14:51:31 +0000
54+++ src/provisioningserver/templates/commissioning-user-data/snippets/maas_ipmi_autodetect.py 2017-02-09 21:59:03 +0000
55@@ -167,6 +167,8 @@
56 if ip.lower().startswith('fe80::') or ip == '0.0.0.0':
57 time.sleep(2)
58 continue
59+ if address_type.startswith('Lan6_'):
60+ return '[%s]' % ip
61 return ip
62 # No valid IP address was found.
63 return None
64
65=== modified file 'src/provisioningserver/templates/commissioning-user-data/snippets/tests/test_maas_ipmi_autodetect.py'
66--- src/provisioningserver/templates/commissioning-user-data/snippets/tests/test_maas_ipmi_autodetect.py 2017-02-01 22:53:37 +0000
67+++ src/provisioningserver/templates/commissioning-user-data/snippets/tests/test_maas_ipmi_autodetect.py 2017-02-09 21:59:03 +0000
68@@ -513,34 +513,34 @@
69 output4=' IP_Address 0.0.0.0\n\n',
70 output_st=' IPv6_Static_Addresses 2001:db8::3\n\n',
71 output_dy='',
72- expected='2001:db8::3')),
73+ expected='[2001:db8::3]')),
74 ('static6 multiple', dict(
75 output4=' IP_Address 0.0.0.0\n\n',
76 output_st=' IPv6_Static_Addresses fe80::3:7 2001:db8::3\n\n',
77 output_dy='',
78- expected='2001:db8::3')),
79+ expected='[2001:db8::3]')),
80 ('mixed6', dict(
81 output4=' IP_Address 0.0.0.0\n\n',
82 output_st=' IPv6_Static_Addresses 2001:db8::9:5\n\n',
83 output_dy=' ## IPv6_Dynamic_Addresses 2001:db8::3\n\n',
84- expected='2001:db8::9:5')),
85+ expected='[2001:db8::9:5]')),
86 ('dynamic6', dict(
87 output4=' IP_Address 0.0.0.0\n\n',
88 output_st='',
89 output_dy=' ## IPv6_Dynamic_Addresses 2001:db8::3\n\n',
90- expected='2001:db8::3')),
91+ expected='[2001:db8::3]')),
92 ('dynamic6 with link-local', dict(
93 output4=' IP_Address 0.0.0.0\n\n',
94 output_st='',
95 output_dy=' ## IPv6_Dynamic_Addresses fe80::3:7 2001:db8::3\n\n',
96- expected='2001:db8::3')),
97+ expected='[2001:db8::3]')),
98 ('dynamic6 multiple', dict(
99 output4=' IP_Address 0.0.0.0\n\n',
100 output_st='',
101 output_dy=(
102 ' ## IPv6_Dynamic_Addresses fe80::7 2001:db8::3 2001::5\n\n'
103 ),
104- expected='2001:db8::3')),
105+ expected='[2001:db8::3]')),
106 ('link-local', dict(
107 output4='',
108 output_st='',