Merge lp:~blake-rouse/maas/fix-1446323 into lp:~maas-committers/maas/trunk

Proposed by Blake Rouse
Status: Merged
Approved by: Blake Rouse
Approved revision: no longer in the source branch.
Merged at revision: 3949
Proposed branch: lp:~blake-rouse/maas/fix-1446323
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 127 lines (+34/-2)
4 files modified
src/maasserver/fixtures/dev_fixture.yaml (+1/-1)
src/maasserver/static/partials/node-details.html (+4/-0)
src/maasserver/websockets/handlers/node.py (+11/-0)
src/maasserver/websockets/handlers/tests/test_node.py (+18/-1)
To merge this branch: bzr merge lp:~blake-rouse/maas/fix-1446323
Reviewer Review Type Date Requested Status
Andres Rodriguez (community) Approve
Review via email: mp+260367@code.launchpad.net

Commit message

Show third party driver that will be used for a node under the operating system in the summary section.

Description of the change

Screenshot of how it looks on the node details page. You can also view this with the sampledata on the node details page for "united-can.maas".

http://people.canonical.com/~blaker/third_party_drivers.png

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/fixtures/dev_fixture.yaml'
2--- src/maasserver/fixtures/dev_fixture.yaml 2015-05-18 17:31:49 +0000
3+++ src/maasserver/fixtures/dev_fixture.yaml 2015-05-27 19:06:48 +0000
4@@ -3093,7 +3093,7 @@
5 16:28:11.699310'}
6 model: metadataserver.noderesult
7 pk: 17
8-- fields: {created: !!timestamp '2015-03-23 16:28:11.747953', data: '', name: 00-maas-04-list-modaliases.out,
9+- fields: {created: !!timestamp '2015-03-23 16:28:11.747953', data: 'cGNpOnYwMDAwMTU5MGQwMDAwMDA0N3N2MDAwMDE1OTBzZDAwMDAwMDQ3YmMqc2MqaSoK', name: 00-maas-04-list-modaliases.out,
10 node: 8, result_type: 0, script_result: 0, updated: !!timestamp '2015-03-23 16:28:11.747953'}
11 model: metadataserver.noderesult
12 pk: 19
13
14=== modified file 'src/maasserver/static/partials/node-details.html'
15--- src/maasserver/static/partials/node-details.html 2015-05-27 16:05:35 +0000
16+++ src/maasserver/static/partials/node-details.html 2015-05-27 19:06:48 +0000
17@@ -196,6 +196,10 @@
18 </dd>
19 <dt class="two-col">Operating System</dt>
20 <dd class="four-col last-col">{$ getOSText() $}</dd>
21+ <dt class="two-col ng-hide" data-ng-show="node.third_party_driver">Third Party Driver</dt>
22+ <dd class="four-col last-col ng-hide" data-ng-show="node.third_party_driver">
23+ {$ node.third_party_driver.module $} "{$ node.third_party_driver.comment $}"
24+ </dd>
25 </dl>
26 </div>
27 <div class="controls two-col last-col" data-ng-hide="summary.editing">
28
29=== modified file 'src/maasserver/websockets/handlers/node.py'
30--- src/maasserver/websockets/handlers/node.py 2015-05-26 12:49:37 +0000
31+++ src/maasserver/websockets/handlers/node.py 2015-05-27 19:06:48 +0000
32@@ -24,12 +24,14 @@
33 from maasserver.enum import NODE_PERMISSION
34 from maasserver.exceptions import NodeActionError
35 from maasserver.forms import AdminNodeWithMACAddressesForm
36+from maasserver.models.config import Config
37 from maasserver.models.event import Event
38 from maasserver.models.node import Node
39 from maasserver.models.nodegroup import NodeGroup
40 from maasserver.models.nodeprobeddetails import get_single_probed_details
41 from maasserver.node_action import compile_node_actions
42 from maasserver.rpc import getClientFor
43+from maasserver.third_party_drivers import get_third_party_driver
44 from maasserver.utils.converters import XMLToYAML
45 from maasserver.utils.orm import transactional
46 from maasserver.websockets.base import (
47@@ -215,6 +217,15 @@
48 data["installation_results"] = self.dehydrate_node_results(
49 obj, RESULT_TYPE.INSTALLATION)
50
51+ # Third party drivers
52+ if Config.objects.get_config('enable_third_party_drivers'):
53+ driver = get_third_party_driver(obj)
54+ if "module" in driver and "comment" in driver:
55+ data["third_party_driver"] = {
56+ "module": driver["module"],
57+ "comment": driver["comment"],
58+ }
59+
60 return data
61
62 def dehydrate_physicalblockdevice(self, blockdevice):
63
64=== modified file 'src/maasserver/websockets/handlers/tests/test_node.py'
65--- src/maasserver/websockets/handlers/tests/test_node.py 2015-05-26 12:49:37 +0000
66+++ src/maasserver/websockets/handlers/tests/test_node.py 2015-05-27 19:06:48 +0000
67@@ -25,6 +25,7 @@
68 from maasserver.enum import NODE_STATUS
69 from maasserver.exceptions import NodeActionError
70 from maasserver.forms import AdminNodeWithMACAddressesForm
71+from maasserver.models.config import Config
72 from maasserver.models.event import Event
73 from maasserver.models.nodeprobeddetails import get_single_probed_details
74 from maasserver.node_action import compile_node_actions
75@@ -41,6 +42,7 @@
76 MAASServerTestCase,
77 MAASTransactionServerTestCase,
78 )
79+from maasserver.third_party_drivers import get_third_party_driver
80 from maasserver.utils.converters import XMLToYAML
81 from maasserver.utils.orm import transactional
82 from maasserver.websockets.base import (
83@@ -61,7 +63,10 @@
84 from maastesting.twisted import always_succeed_with
85 from metadataserver.enum import RESULT_TYPE
86 from metadataserver.models import NodeResult
87-from metadataserver.models.commissioningscript import LLDP_OUTPUT_NAME
88+from metadataserver.models.commissioningscript import (
89+ LIST_MODALIASES_OUTPUT_NAME,
90+ LLDP_OUTPUT_NAME,
91+)
92 from mock import Mock
93 from provisioningserver.power.poweraction import PowerActionFail
94 from provisioningserver.rpc.cluster import PowerQuery
95@@ -180,6 +185,7 @@
96 .exclude(type__level=logging.DEBUG)
97 .select_related("type")
98 .order_by('-id')[:50])
99+ driver = get_third_party_driver(node)
100 data = {
101 "actions": compile_node_actions(node, user).keys(),
102 "architecture": node.architecture,
103@@ -253,6 +259,10 @@
104 tag.name
105 for tag in node.tags.all()
106 ],
107+ "third_party_driver": {
108+ "module": driver["module"] if "module" in driver else "",
109+ "comment": driver["comment"] if "comment" in driver else "",
110+ },
111 "updated": dehydrate_datetime(node.updated),
112 "zone": {
113 "id": node.zone.id,
114@@ -307,6 +317,13 @@
115 node=node, name=LLDP_OUTPUT_NAME, script_result=0, data=lldp_data)
116 factory.make_PhysicalBlockDevice(node)
117
118+ Config.objects.set_config(
119+ name='enable_third_party_drivers', value=True)
120+ data = "pci:v00001590d00000047sv00001590sd00000047bc*sc*i*"
121+ factory.make_NodeResult_for_commissioning(
122+ node=node, name=LIST_MODALIASES_OUTPUT_NAME, script_result=0,
123+ data=data.encode("utf-8"))
124+
125 mac_address = node.macaddress_set.all()[0]
126 factory.make_StaticIPAddress(mac=mac_address)
127 factory.make_DHCPLease(