Merge lp:~newell-jensen/maas/fix-1616773 into lp:~maas-committers/maas/trunk

Proposed by Newell Jensen
Status: Merged
Approved by: Newell Jensen
Approved revision: no longer in the source branch.
Merged at revision: 5297
Proposed branch: lp:~newell-jensen/maas/fix-1616773
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 69 lines (+44/-4)
2 files modified
src/maasserver/websockets/handlers/node.py (+4/-4)
src/maasserver/websockets/handlers/tests/test_machine.py (+40/-0)
To merge this branch: bzr merge lp:~newell-jensen/maas/fix-1616773
Reviewer Review Type Date Requested Status
Mike Pontillo (community) Approve
Review via email: mp+304024@code.launchpad.net

Commit message

Have IP address show up in the interfaces section of the node detail page so the user will be able to know which IP address to SSH into for Rescue Mode.

To post a comment you must log in.
Revision history for this message
Newell Jensen (newell-jensen) wrote :

I tested this in NEC lab. IP address shows up once the node enters Rescue Mode state.

Revision history for this message
Mike Pontillo (mpontillo) wrote :

Looks good to me; thanks for the fix.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/maasserver/websockets/handlers/node.py'
2--- src/maasserver/websockets/handlers/node.py 2016-08-18 17:31:05 +0000
3+++ src/maasserver/websockets/handlers/node.py 2016-08-25 23:16:05 +0000
4@@ -361,10 +361,10 @@
5 "links": links,
6 }
7
8- # When the node is commissioning display the discovered IP address for
9- # this interface. This will only be shown on interfaces that are
10- # connected to a MAAS managed subnet.
11- if obj.status == NODE_STATUS.COMMISSIONING:
12+ # When the node is commissioning or in rescue mode display the
13+ # discovered IP address for this interface. This will only be shown on
14+ # interfaces that are connected to a MAAS managed subnet.
15+ if obj.status in (NODE_STATUS.COMMISSIONING, NODE_STATUS.RESCUE_MODE):
16 discovereds = interface.get_discovered()
17 if discovereds is not None:
18 for discovered in discovereds:
19
20=== modified file 'src/maasserver/websockets/handlers/tests/test_machine.py'
21--- src/maasserver/websockets/handlers/tests/test_machine.py 2016-08-18 17:31:05 +0000
22+++ src/maasserver/websockets/handlers/tests/test_machine.py 2016-08-25 23:16:05 +0000
23@@ -666,6 +666,46 @@
24 "discovered": expected_discovered,
25 }, handler.dehydrate_interface(interface, node))
26
27+ def test_dehydrate_interface_for_rescue_mode_node(self):
28+ owner = factory.make_User()
29+ node = factory.make_Node(owner=owner, status=NODE_STATUS.RESCUE_MODE)
30+ handler = MachineHandler(owner, {})
31+ interface = factory.make_Interface(INTERFACE_TYPE.PHYSICAL, node=node)
32+ factory.make_StaticIPAddress(
33+ alloc_type=IPADDRESS_TYPE.AUTO, ip="",
34+ subnet=factory.make_Subnet(), interface=interface)
35+ expected_links = interface.get_links()
36+ for link in expected_links:
37+ link["subnet_id"] = link.pop("subnet").id
38+ discovered_subnet = factory.make_Subnet()
39+ factory.make_StaticIPAddress(
40+ alloc_type=IPADDRESS_TYPE.DISCOVERED,
41+ ip=factory.pick_ip_in_network(discovered_subnet.get_ipnetwork()),
42+ subnet=discovered_subnet, interface=interface)
43+ expected_discovered = interface.get_discovered()
44+ for discovered in expected_discovered:
45+ discovered["subnet_id"] = discovered.pop("subnet").id
46+ self.assertEqual({
47+ "id": interface.id,
48+ "type": interface.type,
49+ "name": interface.get_name(),
50+ "tags": interface.tags,
51+ "enabled": interface.is_enabled(),
52+ "is_boot": interface == node.get_boot_interface(),
53+ "mac_address": "%s" % interface.mac_address,
54+ "vlan_id": interface.vlan_id,
55+ "parents": [
56+ nic.id
57+ for nic in interface.parents.all()
58+ ],
59+ "children": [
60+ nic.child.id
61+ for nic in interface.children_relationships.all()
62+ ],
63+ "links": expected_links,
64+ "discovered": expected_discovered,
65+ }, handler.dehydrate_interface(interface, node))
66+
67 def test_dehydrate_summary_output_returns_None(self):
68 owner = factory.make_User()
69 node = factory.make_Node(owner=owner)