Merge ~andreserl/maas:amt_wsmancli_version_check into maas:master

Proposed by Andres Rodriguez
Status: Merged
Approved by: Andres Rodriguez
Approved revision: ae761c5bb544260dbf725e1099f2cef56acac126
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~andreserl/maas:amt_wsmancli_version_check
Merge into: maas:master
Diff against target: 65 lines (+19/-4)
2 files modified
src/provisioningserver/drivers/power/amt.py (+4/-2)
src/provisioningserver/drivers/power/tests/test_amt.py (+15/-2)
Reviewer Review Type Date Requested Status
Mike Pontillo (community) Approve
MAAS Lander Approve
Review via email: mp+354725@code.launchpad.net

Commit message

Use wsman to identify the AMT version instead of amttool.

amttool is sometimes not reliable enough to identify the version of AMT. wsman, however, is more reliable. Use this instead.

To post a comment you must log in.
ae761c5... by Andres Rodriguez

Fix lint

Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b amt_wsmancli_version_check lp:~andreserl/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: c6e8884f993effa2b3c425dd9d252b48b936c4c3

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

I tested this branch with my NUCs; it seems to be working!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/provisioningserver/drivers/power/amt.py b/src/provisioningserver/drivers/power/amt.py
2index 358d174..338b8cd 100644
3--- a/src/provisioningserver/drivers/power/amt.py
4+++ b/src/provisioningserver/drivers/power/amt.py
5@@ -352,7 +352,9 @@ class AMTPowerDriver(PowerDriver):
6 # If so, we need wsman, not amttool
7 env = self._get_amt_environment(power_pass)
8 process = Popen(
9- ('amttool', ip_address, 'info'), stdout=PIPE, stderr=PIPE, env=env)
10+ ('wsman', 'identify', '--port', '16992', '--hostname',
11+ ip_address, '--username', 'admin', '--password', power_pass),
12+ stdout=PIPE, stderr=PIPE, env=env)
13 stdout, stderr = process.communicate()
14 stdout = stdout.decode("utf-8")
15 stderr = stderr.decode("utf-8")
16@@ -364,7 +366,7 @@ class AMTPowerDriver(PowerDriver):
17 raise PowerConnError(
18 "Unable to retrieve AMT version: %s" % stderr)
19 else:
20- match = re.search("AMT version:\s*([0-9]+)", stdout)
21+ match = re.search("ProductVersion>AMT\s*([0-9]+)", stdout)
22 if match is None:
23 raise PowerActionError(
24 "Unable to extract AMT version from "
25diff --git a/src/provisioningserver/drivers/power/tests/test_amt.py b/src/provisioningserver/drivers/power/tests/test_amt.py
26index b1c0104..5e6da0f 100644
27--- a/src/provisioningserver/drivers/power/tests/test_amt.py
28+++ b/src/provisioningserver/drivers/power/tests/test_amt.py
29@@ -52,6 +52,19 @@ Remote Control Capabilities:
30 """).encode('utf-8')
31
32
33+WSMAN_IDENTIFY_OUTPUT = dedent("""\
34+ <a:Header/>
35+ <a:Body>
36+ <b:IdentifyResponse>
37+ <b:ProtocolVersion>http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd</b:ProtocolVersion>
38+ <b:ProductVendor>Intel(r)</b:ProductVendor>
39+ <b:ProductVersion>AMT %s</b:ProductVersion>
40+ <c:DASHVersion>1.0.0</c:DASHVersion>
41+ <b:SecurityProfiles>
42+ ...
43+""").encode('utf-8')
44+
45+
46 WSMAN_OUTPUT = dedent("""\
47 ...
48 <a:Body>
49@@ -599,7 +612,7 @@ class TestAMTPowerDriver(MAASTestCase):
50 amt_power_driver, '_get_amt_environment')
51 amt_environment_mock.return_value = None
52 popen_mock = self.patch_popen(return_value=(
53- AMTTOOL_OUTPUT % (b'8.1.57', b''), b'stderr'))
54+ WSMAN_IDENTIFY_OUTPUT % b'8.1.57', b'stderr'))
55
56 result = amt_power_driver._get_amt_command(ip_address, power_pass)
57
58@@ -616,7 +629,7 @@ class TestAMTPowerDriver(MAASTestCase):
59 amt_power_driver, '_get_amt_environment')
60 amt_environment_mock.return_value = None
61 popen_mock = self.patch_popen(return_value=(
62- AMTTOOL_OUTPUT % (b'10.0.47', b''), b'stderr'))
63+ WSMAN_IDENTIFY_OUTPUT % b'10.0.47', b'stderr'))
64
65 result = amt_power_driver._get_amt_command(ip_address, power_pass)
66

Subscribers

People subscribed via source and target branches