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
=== modified file 'src/maasserver/models/bmc.py'
--- src/maasserver/models/bmc.py 2017-01-31 22:19:57 +0000
+++ src/maasserver/models/bmc.py 2017-02-09 21:59:03 +0000
@@ -205,7 +205,10 @@
205 parameters has changed. """205 parameters has changed. """
206 new_ip = BMC.extract_ip_address(self.power_type, self.power_parameters)206 new_ip = BMC.extract_ip_address(self.power_type, self.power_parameters)
207 current_ip = None if self.ip_address is None else self.ip_address.ip207 current_ip = None if self.ip_address is None else self.ip_address.ip
208 # Set the ip_address field.208 # Set the ip_address field. If we have a bracketed address, assume
209 # it's IPv6, and strip the brackets.
210 if new_ip and new_ip.startswith('[') and new_ip.endswith(']'):
211 new_ip = new_ip[1:-1]
209 if new_ip != current_ip:212 if new_ip != current_ip:
210 if new_ip is None:213 if new_ip is None:
211 self.ip_address = None214 self.ip_address = None
212215
=== modified file 'src/maasserver/models/tests/test_bmc.py'
--- src/maasserver/models/tests/test_bmc.py 2017-01-27 03:02:54 +0000
+++ src/maasserver/models/tests/test_bmc.py 2017-02-09 21:59:03 +0000
@@ -115,6 +115,30 @@
115 self.assertEqual(sticky_ip.ip, bmc.ip_address.ip)115 self.assertEqual(sticky_ip.ip, bmc.ip_address.ip)
116 self.assertEqual(subnet, bmc.ip_address.subnet)116 self.assertEqual(subnet, bmc.ip_address.subnet)
117117
118 def test_bmc_save_accepts_naked_ipv6_address(self):
119 subnet = factory.make_Subnet(cidr=factory.make_ipv6_network())
120 sticky_ip = factory.make_StaticIPAddress(
121 alloc_type=IPADDRESS_TYPE.STICKY, subnet=subnet)
122 power_parameters = {
123 'power_address': '%s' % sticky_ip.ip,
124 }
125 bmc = factory.make_BMC(
126 power_type="ipmi", power_parameters=power_parameters)
127 self.assertEqual(sticky_ip.ip, bmc.ip_address.ip)
128 self.assertEqual(subnet, bmc.ip_address.subnet)
129
130 def test_bmc_save_accepts_bracketed_ipv6_address(self):
131 subnet = factory.make_Subnet(cidr=factory.make_ipv6_network())
132 sticky_ip = factory.make_StaticIPAddress(
133 alloc_type=IPADDRESS_TYPE.STICKY, subnet=subnet)
134 power_parameters = {
135 'power_address': '[%s]' % sticky_ip.ip,
136 }
137 bmc = factory.make_BMC(
138 power_type="ipmi", power_parameters=power_parameters)
139 self.assertEqual(sticky_ip.ip, bmc.ip_address.ip)
140 self.assertEqual(subnet, bmc.ip_address.subnet)
141
118 def test_bmc_changing_power_parameters_changes_ip(self):142 def test_bmc_changing_power_parameters_changes_ip(self):
119 ip = factory.make_ipv4_address()143 ip = factory.make_ipv4_address()
120 power_parameters = {144 power_parameters = {
121145
=== modified file 'src/provisioningserver/templates/commissioning-user-data/snippets/maas_ipmi_autodetect.py'
--- src/provisioningserver/templates/commissioning-user-data/snippets/maas_ipmi_autodetect.py 2017-02-03 14:51:31 +0000
+++ src/provisioningserver/templates/commissioning-user-data/snippets/maas_ipmi_autodetect.py 2017-02-09 21:59:03 +0000
@@ -167,6 +167,8 @@
167 if ip.lower().startswith('fe80::') or ip == '0.0.0.0':167 if ip.lower().startswith('fe80::') or ip == '0.0.0.0':
168 time.sleep(2)168 time.sleep(2)
169 continue169 continue
170 if address_type.startswith('Lan6_'):
171 return '[%s]' % ip
170 return ip172 return ip
171 # No valid IP address was found.173 # No valid IP address was found.
172 return None174 return None
173175
=== modified file 'src/provisioningserver/templates/commissioning-user-data/snippets/tests/test_maas_ipmi_autodetect.py'
--- src/provisioningserver/templates/commissioning-user-data/snippets/tests/test_maas_ipmi_autodetect.py 2017-02-01 22:53:37 +0000
+++ src/provisioningserver/templates/commissioning-user-data/snippets/tests/test_maas_ipmi_autodetect.py 2017-02-09 21:59:03 +0000
@@ -513,34 +513,34 @@
513 output4=' IP_Address 0.0.0.0\n\n',513 output4=' IP_Address 0.0.0.0\n\n',
514 output_st=' IPv6_Static_Addresses 2001:db8::3\n\n',514 output_st=' IPv6_Static_Addresses 2001:db8::3\n\n',
515 output_dy='',515 output_dy='',
516 expected='2001:db8::3')),516 expected='[2001:db8::3]')),
517 ('static6 multiple', dict(517 ('static6 multiple', dict(
518 output4=' IP_Address 0.0.0.0\n\n',518 output4=' IP_Address 0.0.0.0\n\n',
519 output_st=' IPv6_Static_Addresses fe80::3:7 2001:db8::3\n\n',519 output_st=' IPv6_Static_Addresses fe80::3:7 2001:db8::3\n\n',
520 output_dy='',520 output_dy='',
521 expected='2001:db8::3')),521 expected='[2001:db8::3]')),
522 ('mixed6', dict(522 ('mixed6', dict(
523 output4=' IP_Address 0.0.0.0\n\n',523 output4=' IP_Address 0.0.0.0\n\n',
524 output_st=' IPv6_Static_Addresses 2001:db8::9:5\n\n',524 output_st=' IPv6_Static_Addresses 2001:db8::9:5\n\n',
525 output_dy=' ## IPv6_Dynamic_Addresses 2001:db8::3\n\n',525 output_dy=' ## IPv6_Dynamic_Addresses 2001:db8::3\n\n',
526 expected='2001:db8::9:5')),526 expected='[2001:db8::9:5]')),
527 ('dynamic6', dict(527 ('dynamic6', dict(
528 output4=' IP_Address 0.0.0.0\n\n',528 output4=' IP_Address 0.0.0.0\n\n',
529 output_st='',529 output_st='',
530 output_dy=' ## IPv6_Dynamic_Addresses 2001:db8::3\n\n',530 output_dy=' ## IPv6_Dynamic_Addresses 2001:db8::3\n\n',
531 expected='2001:db8::3')),531 expected='[2001:db8::3]')),
532 ('dynamic6 with link-local', dict(532 ('dynamic6 with link-local', dict(
533 output4=' IP_Address 0.0.0.0\n\n',533 output4=' IP_Address 0.0.0.0\n\n',
534 output_st='',534 output_st='',
535 output_dy=' ## IPv6_Dynamic_Addresses fe80::3:7 2001:db8::3\n\n',535 output_dy=' ## IPv6_Dynamic_Addresses fe80::3:7 2001:db8::3\n\n',
536 expected='2001:db8::3')),536 expected='[2001:db8::3]')),
537 ('dynamic6 multiple', dict(537 ('dynamic6 multiple', dict(
538 output4=' IP_Address 0.0.0.0\n\n',538 output4=' IP_Address 0.0.0.0\n\n',
539 output_st='',539 output_st='',
540 output_dy=(540 output_dy=(
541 ' ## IPv6_Dynamic_Addresses fe80::7 2001:db8::3 2001::5\n\n'541 ' ## IPv6_Dynamic_Addresses fe80::7 2001:db8::3 2001::5\n\n'
542 ),542 ),
543 expected='2001:db8::3')),543 expected='[2001:db8::3]')),
544 ('link-local', dict(544 ('link-local', dict(
545 output4='',545 output4='',
546 output_st='',546 output_st='',