Merge lp:~newell-jensen/maas/fix-1621635 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: 5555
Proposed branch: lp:~newell-jensen/maas/fix-1621635
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 61 lines (+18/-0)
3 files modified
src/maasserver/static/partials/node-details.html (+7/-0)
src/maasserver/websockets/handlers/node.py (+9/-0)
src/maasserver/websockets/handlers/tests/test_machine.py (+2/-0)
To merge this branch: bzr merge lp:~newell-jensen/maas/fix-1621635
Reviewer Review Type Date Requested Status
Gavin Panella (community) Approve
Review via email: mp+310605@code.launchpad.net

Commit message

Add dhcp_on to the node websocket handler dehydrate method so that we can see when a node has a VLAN which is providing DHCP.

To post a comment you must log in.
Revision history for this message
Gavin Panella (allenap) wrote :

I've made a suggestion for an improvement. Needs tests though.

review: Needs Fixing
Revision history for this message
Newell Jensen (newell-jensen) wrote :

> I've made a suggestion for an improvement. Needs tests though.

Because of the unit tests and limiting the amount of queries that are induced when dehydrating the node, I actually ended up getting the information of whether or not MAAS is providing DHCP in a slightly different way. Thanks for looking at this.

Revision history for this message
Gavin Panella (allenap) :
review: Needs Fixing
Revision history for this message
Blake Rouse (blake-rouse) :
Revision history for this message
Gavin Panella (allenap) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/maasserver/static/partials/node-details.html'
2--- src/maasserver/static/partials/node-details.html 2016-11-08 14:05:47 +0000
3+++ src/maasserver/static/partials/node-details.html 2016-11-15 17:22:52 +0000
4@@ -46,6 +46,13 @@
5
6 <!-- XXX blake_r 2015-02-19 - Need to add e2e test. -->
7 <div class="page-header__dropdown" data-ng-class="{ 'is-open': actionOption }">
8+
9+ <div class="page-header__section twelve-col u-margin--bottom-none ng-hide" data-ng-show="!node.dhcp_on">
10+ <p class="page-header__message page-header__message--warning">
11+ MAAS is not providing DHCP.
12+ </p>
13+ </div>
14+
15 <!-- XXX blake_r 2015-02-19 - Need to add e2e test. -->
16 <div class="page-header__section twelve-col u-margin--bottom-none ng-hide" data-ng-hide="isActionError() || isDeployError() || isSSHKeyError() || hasActionPowerError(actionOption.name)">
17 <form class="form form--inline">
18
19=== modified file 'src/maasserver/websockets/handlers/node.py'
20--- src/maasserver/websockets/handlers/node.py 2016-10-13 05:57:25 +0000
21+++ src/maasserver/websockets/handlers/node.py 2016-11-15 17:22:52 +0000
22@@ -145,6 +145,7 @@
23 default=self.default_osystem)
24 data["distro_series"] = obj.get_distro_series(
25 default=self.default_distro_series)
26+ data["dhcp_on"] = self.get_providing_dhcp(obj)
27 if not for_list:
28 data["hwe_kernel"] = make_hwe_kernel_ui_text(obj.hwe_kernel)
29
30@@ -503,3 +504,11 @@
31 if "pxe_mac" in data:
32 macs.insert(0, data["pxe_mac"])
33 return macs
34+
35+ def get_providing_dhcp(self, obj):
36+ """Return if providing DHCP using the prefetched query."""
37+ for interface in obj.interface_set.all():
38+ if interface.vlan is not None:
39+ if interface.vlan.dhcp_on:
40+ return True
41+ return False
42
43=== modified file 'src/maasserver/websockets/handlers/tests/test_machine.py'
44--- src/maasserver/websockets/handlers/tests/test_machine.py 2016-10-21 01:19:51 +0000
45+++ src/maasserver/websockets/handlers/tests/test_machine.py 2016-11-15 17:22:52 +0000
46@@ -232,6 +232,7 @@
47 "updated": dehydrate_datetime(node.updated),
48 "zone": handler.dehydrate_zone(node.zone),
49 "default_user": node.default_user,
50+ "dhcp_on": node.interface_set.filter(vlan__dhcp_on=True).exists(),
51 }
52 if for_list:
53 allowed_fields = MachineHandler.Meta.list_fields + [
54@@ -252,6 +253,7 @@
55 "node_type_display",
56 "osystem",
57 "distro_series",
58+ "dhcp_on",
59 ]
60 for key in list(data):
61 if key not in allowed_fields: