Merge lp:~newell-jensen/maas/change-power-driver-parameters 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: 4502
Proposed branch: lp:~newell-jensen/maas/change-power-driver-parameters
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 2286 lines (+420/-441)
32 files modified
src/provisioningserver/drivers/power/__init__.py (+19/-19)
src/provisioningserver/drivers/power/amt.py (+10/-10)
src/provisioningserver/drivers/power/apc.py (+10/-10)
src/provisioningserver/drivers/power/dli.py (+6/-6)
src/provisioningserver/drivers/power/ether_wake.py (+7/-7)
src/provisioningserver/drivers/power/fence_cdu.py (+7/-7)
src/provisioningserver/drivers/power/hmc.py (+12/-12)
src/provisioningserver/drivers/power/ipmi.py (+8/-8)
src/provisioningserver/drivers/power/moonshot.py (+8/-8)
src/provisioningserver/drivers/power/mscm.py (+11/-11)
src/provisioningserver/drivers/power/msftocs.py (+12/-12)
src/provisioningserver/drivers/power/seamicro.py (+14/-14)
src/provisioningserver/drivers/power/tests/test_amt.py (+50/-84)
src/provisioningserver/drivers/power/tests/test_apc.py (+10/-10)
src/provisioningserver/drivers/power/tests/test_base.py (+36/-29)
src/provisioningserver/drivers/power/tests/test_dli.py (+12/-6)
src/provisioningserver/drivers/power/tests/test_ether_wake.py (+3/-3)
src/provisioningserver/drivers/power/tests/test_fence_cdu.py (+3/-3)
src/provisioningserver/drivers/power/tests/test_hmc.py (+10/-10)
src/provisioningserver/drivers/power/tests/test_ipmi.py (+30/-30)
src/provisioningserver/drivers/power/tests/test_moonshot.py (+20/-20)
src/provisioningserver/drivers/power/tests/test_mscm.py (+10/-10)
src/provisioningserver/drivers/power/tests/test_msftocs.py (+10/-10)
src/provisioningserver/drivers/power/tests/test_seamicro.py (+33/-33)
src/provisioningserver/drivers/power/tests/test_ucsm.py (+10/-10)
src/provisioningserver/drivers/power/tests/test_virsh.py (+10/-10)
src/provisioningserver/drivers/power/tests/test_vmware.py (+11/-11)
src/provisioningserver/drivers/power/ucsm.py (+11/-11)
src/provisioningserver/drivers/power/virsh.py (+10/-10)
src/provisioningserver/drivers/power/vmware.py (+14/-14)
src/provisioningserver/power/change.py (+2/-2)
src/provisioningserver/power/query.py (+1/-1)
To merge this branch: bzr merge lp:~newell-jensen/maas/change-power-driver-parameters
Reviewer Review Type Date Requested Status
Blake Rouse (community) Approve
Review via email: mp+277644@code.launchpad.net

Commit message

Change parameters of power driver base class's methods to use context instead of **context to fix possible variable collisions.

To post a comment you must log in.
Revision history for this message
Blake Rouse (blake-rouse) wrote :

Looks good. Mechanical change.

review: Approve
Revision history for this message
Blake Rouse (blake-rouse) wrote :

Don't forget this needs to be backported to 1.9.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/provisioningserver/drivers/power/__init__.py'
--- src/provisioningserver/drivers/power/__init__.py 2015-11-06 16:52:07 +0000
+++ src/provisioningserver/drivers/power/__init__.py 2015-11-17 02:16:14 +0000
@@ -143,32 +143,32 @@
143 """List of settings for the driver.143 """List of settings for the driver.
144144
145 Each setting in this list will be different per user. They are passed145 Each setting in this list will be different per user. They are passed
146 to the `on`, `off`, and `query` using the kwargs. It is up146 to the `on`, `off`, and `query` using the context. It is up
147 to the driver to read these options before performing the operation.147 to the driver to read these options before performing the operation.
148 """148 """
149149
150 @abstractmethod150 @abstractmethod
151 def on(self, system_id, **kwargs):151 def on(self, system_id, context):
152 """Perform the power on action for `system_id`.152 """Perform the power on action for `system_id`.
153153
154 :param system_id: `Node.system_id`154 :param system_id: `Node.system_id`
155 :param kwargs: Power settings for the node.155 :param context: Power settings for the node.
156 """156 """
157157
158 @abstractmethod158 @abstractmethod
159 def off(self, system_id, **kwargs):159 def off(self, system_id, context):
160 """Perform the power off action for `system_id`.160 """Perform the power off action for `system_id`.
161161
162 :param system_id: `Node.system_id`162 :param system_id: `Node.system_id`
163 :param kwargs: Power settings for the node.163 :param context: Power settings for the node.
164 """164 """
165165
166 @abstractmethod166 @abstractmethod
167 def query(self, system_id, **kwargs):167 def query(self, system_id, context):
168 """Perform the query action for `system_id`.168 """Perform the query action for `system_id`.
169169
170 :param system_id: `Node.system_id`170 :param system_id: `Node.system_id`
171 :param kwargs: Power settings for the node.171 :param context: Power settings for the node.
172 :return: status of power on BMC. `on` or `off`.172 :return: status of power on BMC. `on` or `off`.
173 :raises PowerError: states unable to get status from BMC. It is173 :raises PowerError: states unable to get status from BMC. It is
174 up to this method to report the actual issue to the Region. The174 up to this method to report the actual issue to the Region. The
@@ -213,32 +213,32 @@
213 """213 """
214214
215 @abstractmethod215 @abstractmethod
216 def power_on(self, system_id, **kwargs):216 def power_on(self, system_id, context):
217 """Implement this method for the actual implementation217 """Implement this method for the actual implementation
218 of the power on command.218 of the power on command.
219 """219 """
220220
221 @abstractmethod221 @abstractmethod
222 def power_off(self, system_id, **kwargs):222 def power_off(self, system_id, context):
223 """Implement this method for the actual implementation223 """Implement this method for the actual implementation
224 of the power off command.224 of the power off command.
225 """225 """
226226
227 @abstractmethod227 @abstractmethod
228 def power_query(self, system_id, **kwargs):228 def power_query(self, system_id, context):
229 """Implement this method for the actual implementation229 """Implement this method for the actual implementation
230 of the power query command."""230 of the power query command."""
231231
232 def on(self, system_id, **kwargs):232 def on(self, system_id, context):
233 """Performs the power on action for `system_id`.233 """Performs the power on action for `system_id`.
234234
235 Do not override `on` method unless you want to provide custom logic on235 Do not override `on` method unless you want to provide custom logic on
236 how retries and error detection is handled. Override `power_on` for236 how retries and error detection is handled. Override `power_on` for
237 just the power on action, and `on` will handle the retrying.237 just the power on action, and `on` will handle the retrying.
238 """238 """
239 return self.perform_power(self.power_on, "on", system_id, **kwargs)239 return self.perform_power(self.power_on, "on", system_id, context)
240240
241 def off(self, system_id, **kwargs):241 def off(self, system_id, context):
242 """Performs the power off action for `system_id`.242 """Performs the power off action for `system_id`.
243243
244 Do not override `off` method unless you want to provide custom logic on244 Do not override `off` method unless you want to provide custom logic on
@@ -246,16 +246,16 @@
246 just the power off action, and `off` will handle the retrying and error246 just the power off action, and `off` will handle the retrying and error
247 reporting.247 reporting.
248 """248 """
249 return self.perform_power(self.power_off, "off", system_id, **kwargs)249 return self.perform_power(self.power_off, "off", system_id, context)
250250
251 @inlineCallbacks251 @inlineCallbacks
252 def query(self, system_id, **kwargs):252 def query(self, system_id, context):
253 """Performs the power query action for `system_id`."""253 """Performs the power query action for `system_id`."""
254 exc_info = None, None, None254 exc_info = None, None, None
255 for waiting_time in self.wait_time:255 for waiting_time in self.wait_time:
256 try:256 try:
257 state = yield deferToThread(257 state = yield deferToThread(
258 self.power_query, system_id, **kwargs)258 self.power_query, system_id, context)
259 except PowerFatalError:259 except PowerFatalError:
260 raise # Don't retry.260 raise # Don't retry.
261 except PowerError:261 except PowerError:
@@ -268,7 +268,7 @@
268 raise exc_info[0], exc_info[1], exc_info[2]268 raise exc_info[0], exc_info[1], exc_info[2]
269269
270 @inlineCallbacks270 @inlineCallbacks
271 def perform_power(self, power_func, state_desired, system_id, **kwargs):271 def perform_power(self, power_func, state_desired, system_id, context):
272 """Provides the logic to perform the power actions.272 """Provides the logic to perform the power actions.
273273
274 :param power_func: Function used to change the power state of the274 :param power_func: Function used to change the power state of the
@@ -285,7 +285,7 @@
285 # Try to change state.285 # Try to change state.
286 try:286 try:
287 yield deferToThread(287 yield deferToThread(
288 power_func, system_id, **kwargs)288 power_func, system_id, context)
289 except PowerFatalError:289 except PowerFatalError:
290 raise # Don't retry.290 raise # Don't retry.
291 except PowerError:291 except PowerError:
@@ -298,7 +298,7 @@
298 # Try to get power state.298 # Try to get power state.
299 try:299 try:
300 state = yield deferToThread(300 state = yield deferToThread(
301 self.power_query, system_id, **kwargs)301 self.power_query, system_id, context)
302 except PowerFatalError:302 except PowerFatalError:
303 raise # Don't retry.303 raise # Don't retry.
304 except PowerError:304 except PowerError:
305305
=== modified file 'src/provisioningserver/drivers/power/amt.py'
--- src/provisioningserver/drivers/power/amt.py 2015-11-13 17:51:32 +0000
+++ src/provisioningserver/drivers/power/amt.py 2015-11-17 02:16:14 +0000
@@ -330,15 +330,15 @@
330 else:330 else:
331 raise PowerFatalError('No host provided')331 raise PowerFatalError('No host provided')
332332
333 def power_on(self, system_id, **kwargs):333 def power_on(self, system_id, context):
334 """Power on AMT node."""334 """Power on AMT node."""
335 ip_address = self._get_ip_address(335 ip_address = self._get_ip_address(
336 kwargs.get('power_address'), kwargs.get('ip_address'))336 context.get('power_address'), context.get('ip_address'))
337 power_pass = kwargs.get('power_pass')337 power_pass = context.get('power_pass')
338 amt_command = self._get_amt_command(ip_address, power_pass)338 amt_command = self._get_amt_command(ip_address, power_pass)
339 if amt_command == 'amttool':339 if amt_command == 'amttool':
340 amttool_boot_mode = self._get_amttool_boot_mode(340 amttool_boot_mode = self._get_amttool_boot_mode(
341 kwargs.get('boot_mode'))341 context.get('boot_mode'))
342 if self.amttool_query_state(ip_address, power_pass) == 'on':342 if self.amttool_query_state(ip_address, power_pass) == 'on':
343 self.amttool_restart(ip_address, power_pass, amttool_boot_mode)343 self.amttool_restart(ip_address, power_pass, amttool_boot_mode)
344 else:344 else:
@@ -350,11 +350,11 @@
350 else:350 else:
351 self.wsman_power_on(ip_address, power_pass)351 self.wsman_power_on(ip_address, power_pass)
352352
353 def power_off(self, system_id, **kwargs):353 def power_off(self, system_id, context):
354 """Power off AMT node."""354 """Power off AMT node."""
355 ip_address = self._get_ip_address(355 ip_address = self._get_ip_address(
356 kwargs.get('power_address'), kwargs.get('ip_address'))356 context.get('power_address'), context.get('ip_address'))
357 power_pass = kwargs.get('power_pass')357 power_pass = context.get('power_pass')
358 amt_command = self._get_amt_command(ip_address, power_pass)358 amt_command = self._get_amt_command(ip_address, power_pass)
359 if amt_command == 'amttool':359 if amt_command == 'amttool':
360 if self.amttool_query_state(ip_address, power_pass) != 'off':360 if self.amttool_query_state(ip_address, power_pass) != 'off':
@@ -363,11 +363,11 @@
363 if self.wsman_query_state(ip_address, power_pass) != 'off':363 if self.wsman_query_state(ip_address, power_pass) != 'off':
364 self.wsman_power_off(ip_address, power_pass)364 self.wsman_power_off(ip_address, power_pass)
365365
366 def power_query(self, system_id, **kwargs):366 def power_query(self, system_id, context):
367 """Power query AMT node."""367 """Power query AMT node."""
368 ip_address = self._get_ip_address(368 ip_address = self._get_ip_address(
369 kwargs.get('power_address'), kwargs.get('ip_address'))369 context.get('power_address'), context.get('ip_address'))
370 power_pass = kwargs.get('power_pass')370 power_pass = context.get('power_pass')
371 amt_command = self._get_amt_command(ip_address, power_pass)371 amt_command = self._get_amt_command(ip_address, power_pass)
372 if amt_command == 'amttool':372 if amt_command == 'amttool':
373 return self.amttool_query_state(ip_address, power_pass)373 return self.amttool_query_state(ip_address, power_pass)
374374
=== modified file 'src/provisioningserver/drivers/power/apc.py'
--- src/provisioningserver/drivers/power/apc.py 2015-10-01 22:48:50 +0000
+++ src/provisioningserver/drivers/power/apc.py 2015-11-17 02:16:14 +0000
@@ -23,10 +23,10 @@
23from provisioningserver.utils import shell23from provisioningserver.utils import shell
2424
2525
26def extract_apc_parameters(params):26def extract_apc_parameters(context):
27 ip = params.get('power_address')27 ip = context.get('power_address')
28 outlet = params.get('node_outlet')28 outlet = context.get('node_outlet')
29 power_on_delay = params.get('power_on_delay')29 power_on_delay = context.get('power_on_delay')
30 return ip, outlet, power_on_delay30 return ip, outlet, power_on_delay
3131
3232
@@ -42,21 +42,21 @@
42 return [package]42 return [package]
43 return []43 return []
4444
45 def power_on(self, system_id, **kwargs):45 def power_on(self, system_id, context):
46 """Power on Apc outlet."""46 """Power on Apc outlet."""
47 power_change = 'on'47 power_change = 'on'
48 ip, outlet, power_on_delay = extract_apc_parameters(kwargs)48 ip, outlet, power_on_delay = extract_apc_parameters(context)
49 power_control_apc(49 power_control_apc(
50 ip, outlet, power_change, power_on_delay)50 ip, outlet, power_change, power_on_delay)
5151
52 def power_off(self, system_id, **kwargs):52 def power_off(self, system_id, context):
53 """Power off APC outlet."""53 """Power off APC outlet."""
54 power_change = 'off'54 power_change = 'off'
55 ip, outlet, power_on_delay = extract_apc_parameters(kwargs)55 ip, outlet, power_on_delay = extract_apc_parameters(context)
56 power_control_apc(56 power_control_apc(
57 ip, outlet, power_change, power_on_delay)57 ip, outlet, power_change, power_on_delay)
5858
59 def power_query(self, system_id, **kwargs):59 def power_query(self, system_id, context):
60 """Power query APC outlet."""60 """Power query APC outlet."""
61 ip, outlet, _ = extract_apc_parameters(kwargs)61 ip, outlet, _ = extract_apc_parameters(context)
62 return power_state_apc(ip, outlet)62 return power_state_apc(ip, outlet)
6363
=== modified file 'src/provisioningserver/drivers/power/dli.py'
--- src/provisioningserver/drivers/power/dli.py 2015-11-04 15:53:35 +0000
+++ src/provisioningserver/drivers/power/dli.py 2015-11-17 02:16:14 +0000
@@ -91,14 +91,14 @@
91 "Failed to power query outlet %s: %s" % (91 "Failed to power query outlet %s: %s" % (
92 outlet_id, e.output_as_unicode))92 outlet_id, e.output_as_unicode))
9393
94 def power_on(self, system_id, **kwargs):94 def power_on(self, system_id, context):
95 """Power on DLI outlet."""95 """Power on DLI outlet."""
96 self._set_outlet_state('ON', **kwargs)96 self._set_outlet_state('ON', **context)
9797
98 def power_off(self, system_id, **kwargs):98 def power_off(self, system_id, context):
99 """Power off DLI outlet."""99 """Power off DLI outlet."""
100 self._set_outlet_state('OFF', **kwargs)100 self._set_outlet_state('OFF', **context)
101101
102 def power_query(self, system_id, **kwargs):102 def power_query(self, system_id, context):
103 """Power query DLI outlet."""103 """Power query DLI outlet."""
104 return self._query_outlet_state(**kwargs)104 return self._query_outlet_state(**context)
105105
=== modified file 'src/provisioningserver/drivers/power/ether_wake.py'
--- src/provisioningserver/drivers/power/ether_wake.py 2015-10-01 22:48:50 +0000
+++ src/provisioningserver/drivers/power/ether_wake.py 2015-11-17 02:16:14 +0000
@@ -24,11 +24,11 @@
24 # you need one or the other, not both24 # you need one or the other, not both
25 return ['wakeonlan or etherwake']25 return ['wakeonlan or etherwake']
2626
27 def power_on(self, system_id, **kwargs):27 def power_on(self, system_id, context):
28 raise NotImplementedError28 raise NotImplementedError
2929
30 def power_off(self, system_id, **kwargs):30 def power_off(self, system_id, context):
31 raise NotImplementedError31 raise NotImplementedError
3232
33 def power_query(self, system_id, **kwargs):33 def power_query(self, system_id, context):
34 raise NotImplementedError34 raise NotImplementedError
3535
=== modified file 'src/provisioningserver/drivers/power/fence_cdu.py'
--- src/provisioningserver/drivers/power/fence_cdu.py 2015-10-01 22:48:50 +0000
+++ src/provisioningserver/drivers/power/fence_cdu.py 2015-11-17 02:16:14 +0000
@@ -22,11 +22,11 @@
22 return ['fence-agents']22 return ['fence-agents']
23 return []23 return []
2424
25 def power_on(self, system_id, **kwargs):25 def power_on(self, system_id, context):
26 raise NotImplementedError26 raise NotImplementedError
2727
28 def power_off(self, system_id, **kwargs):28 def power_off(self, system_id, context):
29 raise NotImplementedError29 raise NotImplementedError
3030
31 def power_query(self, system_id, **kwargs):31 def power_query(self, system_id, context):
32 raise NotImplementedError32 raise NotImplementedError
3333
=== modified file 'src/provisioningserver/drivers/power/hmc.py'
--- src/provisioningserver/drivers/power/hmc.py 2015-10-01 22:48:50 +0000
+++ src/provisioningserver/drivers/power/hmc.py 2015-11-17 02:16:14 +0000
@@ -23,12 +23,12 @@
23from provisioningserver.utils import shell23from provisioningserver.utils import shell
2424
2525
26def extract_hmc_parameters(params):26def extract_hmc_parameters(context):
27 ip = params.get('power_address')27 ip = context.get('power_address')
28 username = params.get('power_user')28 username = context.get('power_user')
29 password = params.get('power_pass')29 password = context.get('power_pass')
30 server_name = params.get('server_name')30 server_name = context.get('server_name')
31 lpar = params.get('lpar')31 lpar = context.get('lpar')
32 return ip, username, password, server_name, lpar32 return ip, username, password, server_name, lpar
3333
3434
@@ -44,19 +44,19 @@
44 return [package]44 return [package]
45 return []45 return []
4646
47 def power_on(self, system_id, **kwargs):47 def power_on(self, system_id, context):
48 ip, username, password, server_name, lpar = (48 ip, username, password, server_name, lpar = (
49 extract_hmc_parameters(kwargs))49 extract_hmc_parameters(context))
50 power_control_hmc(50 power_control_hmc(
51 ip, username, password, server_name, lpar, power_change='on')51 ip, username, password, server_name, lpar, power_change='on')
5252
53 def power_off(self, system_id, **kwargs):53 def power_off(self, system_id, context):
54 ip, username, password, server_name, lpar = (54 ip, username, password, server_name, lpar = (
55 extract_hmc_parameters(kwargs))55 extract_hmc_parameters(context))
56 power_control_hmc(56 power_control_hmc(
57 ip, username, password, server_name, lpar, power_change='off')57 ip, username, password, server_name, lpar, power_change='off')
5858
59 def power_query(self, system_id, **kwargs):59 def power_query(self, system_id, context):
60 ip, username, password, server_name, lpar = (60 ip, username, password, server_name, lpar = (
61 extract_hmc_parameters(kwargs))61 extract_hmc_parameters(context))
62 return power_state_hmc(ip, username, password, server_name, lpar)62 return power_state_hmc(ip, username, password, server_name, lpar)
6363
=== modified file 'src/provisioningserver/drivers/power/ipmi.py'
--- src/provisioningserver/drivers/power/ipmi.py 2015-10-14 18:10:57 +0000
+++ src/provisioningserver/drivers/power/ipmi.py 2015-11-17 02:16:14 +0000
@@ -152,11 +152,11 @@
152 return self._issue_ipmi_power_command(152 return self._issue_ipmi_power_command(
153 ipmipower_command, power_change, power_address, env)153 ipmipower_command, power_change, power_address, env)
154154
155 def power_on(self, system_id, **kwargs):155 def power_on(self, system_id, context):
156 self._issue_ipmi_command('on', **kwargs)156 self._issue_ipmi_command('on', **context)
157157
158 def power_off(self, system_id, **kwargs):158 def power_off(self, system_id, context):
159 self._issue_ipmi_command('off', **kwargs)159 self._issue_ipmi_command('off', **context)
160160
161 def power_query(self, system_id, **kwargs):161 def power_query(self, system_id, context):
162 return self._issue_ipmi_command('query', **kwargs)162 return self._issue_ipmi_command('query', **context)
163163
=== modified file 'src/provisioningserver/drivers/power/moonshot.py'
--- src/provisioningserver/drivers/power/moonshot.py 2015-10-01 22:48:50 +0000
+++ src/provisioningserver/drivers/power/moonshot.py 2015-11-17 02:16:14 +0000
@@ -60,11 +60,11 @@
60 raise PowerActionError(60 raise PowerActionError(
61 "Got unknown power state from ipmipower: %s" % output)61 "Got unknown power state from ipmipower: %s" % output)
6262
63 def power_on(self, system_id, **kwargs):63 def power_on(self, system_id, context):
64 self._issue_ipmitool_command('on', **kwargs)64 self._issue_ipmitool_command('on', **context)
6565
66 def power_off(self, system_id, **kwargs):66 def power_off(self, system_id, context):
67 self._issue_ipmitool_command('off', **kwargs)67 self._issue_ipmitool_command('off', **context)
6868
69 def power_query(self, system_id, **kwargs):69 def power_query(self, system_id, context):
70 return self._issue_ipmitool_command('status', **kwargs)70 return self._issue_ipmitool_command('status', **context)
7171
=== modified file 'src/provisioningserver/drivers/power/mscm.py'
--- src/provisioningserver/drivers/power/mscm.py 2015-09-30 07:16:42 +0000
+++ src/provisioningserver/drivers/power/mscm.py 2015-11-17 02:16:14 +0000
@@ -21,11 +21,11 @@
21from provisioningserver.drivers.power import PowerDriver21from provisioningserver.drivers.power import PowerDriver
2222
2323
24def extract_mscm_parameters(params):24def extract_mscm_parameters(context):
25 host = params.get('power_address')25 host = context.get('power_address')
26 username = params.get('power_user')26 username = context.get('power_user')
27 password = params.get('power_pass')27 password = context.get('power_pass')
28 node_id = params.get('node_id')28 node_id = context.get('node_id')
29 return host, username, password, node_id29 return host, username, password, node_id
3030
3131
@@ -39,19 +39,19 @@
39 # uses pure-python paramiko ssh client - nothing to look for!39 # uses pure-python paramiko ssh client - nothing to look for!
40 return []40 return []
4141
42 def power_on(self, system_id, **kwargs):42 def power_on(self, system_id, context):
43 """Power on MSCM node."""43 """Power on MSCM node."""
44 host, username, password, node_id = extract_mscm_parameters(kwargs)44 host, username, password, node_id = extract_mscm_parameters(context)
45 power_control_mscm(45 power_control_mscm(
46 host, username, password, node_id, power_change='on')46 host, username, password, node_id, power_change='on')
4747
48 def power_off(self, system_id, **kwargs):48 def power_off(self, system_id, context):
49 """Power off MSCM node."""49 """Power off MSCM node."""
50 host, username, password, node_id = extract_mscm_parameters(kwargs)50 host, username, password, node_id = extract_mscm_parameters(context)
51 power_control_mscm(51 power_control_mscm(
52 host, username, password, node_id, power_change='off')52 host, username, password, node_id, power_change='off')
5353
54 def power_query(self, system_id, **kwargs):54 def power_query(self, system_id, context):
55 """Power query MSCM node."""55 """Power query MSCM node."""
56 host, username, password, node_id = extract_mscm_parameters(kwargs)56 host, username, password, node_id = extract_mscm_parameters(context)
57 return power_state_mscm(host, username, password, node_id)57 return power_state_mscm(host, username, password, node_id)
5858
=== modified file 'src/provisioningserver/drivers/power/msftocs.py'
--- src/provisioningserver/drivers/power/msftocs.py 2015-09-30 07:16:42 +0000
+++ src/provisioningserver/drivers/power/msftocs.py 2015-11-17 02:16:14 +0000
@@ -21,12 +21,12 @@
21from provisioningserver.drivers.power import PowerDriver21from provisioningserver.drivers.power import PowerDriver
2222
2323
24def extract_msftocs_parameters(params):24def extract_msftocs_parameters(context):
25 ip = params.get('power_address')25 ip = context.get('power_address')
26 port = params.get('power_port')26 port = context.get('power_port')
27 username = params.get('power_user')27 username = context.get('power_user')
28 password = params.get('power_pass')28 password = context.get('power_pass')
29 blade_id = params.get('blade_id')29 blade_id = context.get('blade_id')
30 return ip, port, username, password, blade_id30 return ip, port, username, password, blade_id
3131
3232
@@ -40,24 +40,24 @@
40 # uses urllib2 http client - nothing to look for!40 # uses urllib2 http client - nothing to look for!
41 return []41 return []
4242
43 def power_on(self, system_id, **kwargs):43 def power_on(self, system_id, context):
44 """Power on MicrosoftOCS node."""44 """Power on MicrosoftOCS node."""
45 power_change = 'on'45 power_change = 'on'
46 ip, port, username, password, blade_id = (46 ip, port, username, password, blade_id = (
47 extract_msftocs_parameters(kwargs))47 extract_msftocs_parameters(context))
48 power_control_msftocs(48 power_control_msftocs(
49 ip, port, username, password, power_change)49 ip, port, username, password, power_change)
5050
51 def power_off(self, system_id, **kwargs):51 def power_off(self, system_id, context):
52 """Power off MicrosoftOCS node."""52 """Power off MicrosoftOCS node."""
53 power_change = 'off'53 power_change = 'off'
54 ip, port, username, password, blade_id = (54 ip, port, username, password, blade_id = (
55 extract_msftocs_parameters(kwargs))55 extract_msftocs_parameters(context))
56 power_control_msftocs(56 power_control_msftocs(
57 ip, port, username, password, power_change)57 ip, port, username, password, power_change)
5858
59 def power_query(self, system_id, **kwargs):59 def power_query(self, system_id, context):
60 """Power query MicrosoftOCS node."""60 """Power query MicrosoftOCS node."""
61 ip, port, username, password, blade_id = (61 ip, port, username, password, blade_id = (
62 extract_msftocs_parameters(kwargs))62 extract_msftocs_parameters(context))
63 return power_state_msftocs(ip, port, username, password, blade_id)63 return power_state_msftocs(ip, port, username, password, blade_id)
6464
=== modified file 'src/provisioningserver/drivers/power/seamicro.py'
--- src/provisioningserver/drivers/power/seamicro.py 2015-10-01 22:48:50 +0000
+++ src/provisioningserver/drivers/power/seamicro.py 2015-11-17 02:16:14 +0000
@@ -30,12 +30,12 @@
30)30)
3131
3232
33def extract_seamicro_parameters(params):33def extract_seamicro_parameters(context):
34 ip = params.get('power_address')34 ip = context.get('power_address')
35 username = params.get('power_user')35 username = context.get('power_user')
36 password = params.get('power_pass')36 password = context.get('power_pass')
37 server_id = params.get('system_id')37 server_id = context.get('system_id')
38 power_control = params.get('power_control')38 power_control = context.get('power_control')
39 return ip, username, password, server_id, power_control39 return ip, username, password, server_id, power_control
4040
4141
@@ -65,10 +65,10 @@
65 "Failed to power %s %s at %s: %s" % (65 "Failed to power %s %s at %s: %s" % (
66 power_change, server_id, ip, e.output_as_unicode))66 power_change, server_id, ip, e.output_as_unicode))
6767
68 def _power(self, power_change, **kwargs):68 def _power(self, power_change, context):
69 """Power SeaMicro node."""69 """Power SeaMicro node."""
70 ip, username, password, server_id, power_control = (70 ip, username, password, server_id, power_control = (
71 extract_seamicro_parameters(kwargs))71 extract_seamicro_parameters(context))
72 if power_control == 'ipmi':72 if power_control == 'ipmi':
73 self._power_control_seamicro15k_ipmi(73 self._power_control_seamicro15k_ipmi(
74 ip, username, password, server_id, power_change=power_change)74 ip, username, password, server_id, power_change=power_change)
@@ -79,20 +79,20 @@
79 power_control_seamicro15k_v2(79 power_control_seamicro15k_v2(
80 ip, username, password, server_id, power_change=power_change)80 ip, username, password, server_id, power_change=power_change)
8181
82 def power_on(self, system_id, **kwargs):82 def power_on(self, system_id, context):
83 """Power on SeaMicro node."""83 """Power on SeaMicro node."""
84 self._power('on', **kwargs)84 self._power('on', context)
8585
86 def power_off(self, system_id, **kwargs):86 def power_off(self, system_id, context):
87 """Power off SeaMicro node."""87 """Power off SeaMicro node."""
88 self._power('off', **kwargs)88 self._power('off', context)
8989
90 def power_query(self, system_id, **kwargs):90 def power_query(self, system_id, context):
91 """Power query SeaMicro node."""91 """Power query SeaMicro node."""
92 # Query the state.92 # Query the state.
93 # Only supported by REST v2.93 # Only supported by REST v2.
94 ip, username, password, _, power_control = (94 ip, username, password, _, power_control = (
95 extract_seamicro_parameters(kwargs))95 extract_seamicro_parameters(context))
96 if power_control == 'restapi2':96 if power_control == 'restapi2':
97 return power_query_seamicro15k_v2(97 return power_query_seamicro15k_v2(
98 ip, username, password, system_id)98 ip, username, password, system_id)
9999
=== modified file 'src/provisioningserver/drivers/power/tests/test_amt.py'
--- src/provisioningserver/drivers/power/tests/test_amt.py 2015-11-13 17:51:32 +0000
+++ src/provisioningserver/drivers/power/tests/test_amt.py 2015-11-17 02:16:14 +0000
@@ -66,6 +66,16 @@
66""")66""")
6767
6868
69def make_parameters():
70 return {
71 'system_id': factory.make_name('system_id'),
72 'power_address': factory.make_name('power_address'),
73 'ip_address': factory.make_ipv4_address(),
74 'power_pass': factory.make_name('power_pass'),
75 'boot_mode': factory.make_name('boot_mode'),
76 }
77
78
69class TestAMTPowerDriver(MAASTestCase):79class TestAMTPowerDriver(MAASTestCase):
7080
71 def patch_popen(self, return_value=(None, None), returncode=0):81 def patch_popen(self, return_value=(None, None), returncode=0):
@@ -589,13 +599,7 @@
589599
590 def test_power_on_powers_on_with_amttool_when_already_on(self):600 def test_power_on_powers_on_with_amttool_when_already_on(self):
591 amt_power_driver = AMTPowerDriver()601 amt_power_driver = AMTPowerDriver()
592 kwargs = {602 context = make_parameters()
593 'system_id': factory.make_name('system_id'),
594 'power_address': factory.make_name('power_address'),
595 'ip_address': factory.make_ipv4_address(),
596 'power_pass': factory.make_name('power_pass'),
597 'boot_mode': factory.make_name('boot_mode'),
598 }
599 _get_amt_command_mock = self.patch(603 _get_amt_command_mock = self.patch(
600 amt_power_driver, '_get_amt_command')604 amt_power_driver, '_get_amt_command')
601 _get_amt_command_mock.return_value = 'amttool'605 _get_amt_command_mock.return_value = 'amttool'
@@ -605,28 +609,22 @@
605 amttool_restart_mock = self.patch(609 amttool_restart_mock = self.patch(
606 amt_power_driver, 'amttool_restart')610 amt_power_driver, 'amttool_restart')
607611
608 amt_power_driver.power_on(**kwargs)612 amt_power_driver.power_on(context['system_id'], context)
609613
610 self.expectThat(614 self.expectThat(
611 _get_amt_command_mock, MockCalledOnceWith(615 _get_amt_command_mock, MockCalledOnceWith(
612 kwargs['ip_address'], kwargs['power_pass']))616 context['ip_address'], context['power_pass']))
613 self.expectThat(617 self.expectThat(
614 amttool_query_state_mock, MockCalledOnceWith(618 amttool_query_state_mock, MockCalledOnceWith(
615 kwargs['ip_address'], kwargs['power_pass']))619 context['ip_address'], context['power_pass']))
616 self.expectThat(620 self.expectThat(
617 amttool_restart_mock, MockCalledOnceWith(621 amttool_restart_mock, MockCalledOnceWith(
618 kwargs['ip_address'], kwargs['power_pass'],622 context['ip_address'], context['power_pass'],
619 kwargs['boot_mode']))623 context['boot_mode']))
620624
621 def test_power_on_powers_on_with_amttool_when_already_off(self):625 def test_power_on_powers_on_with_amttool_when_already_off(self):
622 amt_power_driver = AMTPowerDriver()626 amt_power_driver = AMTPowerDriver()
623 kwargs = {627 context = make_parameters()
624 'system_id': factory.make_name('system_id'),
625 'power_address': factory.make_name('power_address'),
626 'ip_address': factory.make_ipv4_address(),
627 'power_pass': factory.make_name('power_pass'),
628 'boot_mode': factory.make_name('boot_mode'),
629 }
630 _get_amt_command_mock = self.patch(628 _get_amt_command_mock = self.patch(
631 amt_power_driver, '_get_amt_command')629 amt_power_driver, '_get_amt_command')
632 _get_amt_command_mock.return_value = 'amttool'630 _get_amt_command_mock.return_value = 'amttool'
@@ -636,27 +634,22 @@
636 amttool_power_on_mock = self.patch(634 amttool_power_on_mock = self.patch(
637 amt_power_driver, 'amttool_power_on')635 amt_power_driver, 'amttool_power_on')
638636
639 amt_power_driver.power_on(**kwargs)637 amt_power_driver.power_on(context['system_id'], context)
640638
641 self.expectThat(639 self.expectThat(
642 _get_amt_command_mock, MockCalledOnceWith(640 _get_amt_command_mock, MockCalledOnceWith(
643 kwargs['ip_address'], kwargs['power_pass']))641 context['ip_address'], context['power_pass']))
644 self.expectThat(642 self.expectThat(
645 amttool_query_state_mock, MockCalledOnceWith(643 amttool_query_state_mock, MockCalledOnceWith(
646 kwargs['ip_address'], kwargs['power_pass']))644 context['ip_address'], context['power_pass']))
647 self.expectThat(645 self.expectThat(
648 amttool_power_on_mock, MockCalledOnceWith(646 amttool_power_on_mock, MockCalledOnceWith(
649 kwargs['ip_address'], kwargs['power_pass'],647 context['ip_address'], context['power_pass'],
650 kwargs['boot_mode']))648 context['boot_mode']))
651649
652 def test_power_on_powers_on_with_wsman_when_already_on(self):650 def test_power_on_powers_on_with_wsman_when_already_on(self):
653 amt_power_driver = AMTPowerDriver()651 amt_power_driver = AMTPowerDriver()
654 kwargs = {652 context = make_parameters()
655 'system_id': factory.make_name('system_id'),
656 'power_address': factory.make_name('power_address'),
657 'ip_address': factory.make_ipv4_address(),
658 'power_pass': factory.make_name('power_pass'),
659 }
660 _get_amt_command_mock = self.patch(653 _get_amt_command_mock = self.patch(
661 amt_power_driver, '_get_amt_command')654 amt_power_driver, '_get_amt_command')
662 _get_amt_command_mock.return_value = 'wsman'655 _get_amt_command_mock.return_value = 'wsman'
@@ -666,26 +659,21 @@
666 wsman_restart_mock = self.patch(659 wsman_restart_mock = self.patch(
667 amt_power_driver, 'wsman_restart')660 amt_power_driver, 'wsman_restart')
668661
669 amt_power_driver.power_on(**kwargs)662 amt_power_driver.power_on(context['system_id'], context)
670663
671 self.expectThat(664 self.expectThat(
672 _get_amt_command_mock, MockCalledOnceWith(665 _get_amt_command_mock, MockCalledOnceWith(
673 kwargs['ip_address'], kwargs['power_pass']))666 context['ip_address'], context['power_pass']))
674 self.expectThat(667 self.expectThat(
675 wsman_query_state_mock, MockCalledOnceWith(668 wsman_query_state_mock, MockCalledOnceWith(
676 kwargs['ip_address'], kwargs['power_pass']))669 context['ip_address'], context['power_pass']))
677 self.expectThat(670 self.expectThat(
678 wsman_restart_mock, MockCalledOnceWith(671 wsman_restart_mock, MockCalledOnceWith(
679 kwargs['ip_address'], kwargs['power_pass']))672 context['ip_address'], context['power_pass']))
680673
681 def test_power_on_powers_on_with_wsman_when_already_off(self):674 def test_power_on_powers_on_with_wsman_when_already_off(self):
682 amt_power_driver = AMTPowerDriver()675 amt_power_driver = AMTPowerDriver()
683 kwargs = {676 context = make_parameters()
684 'system_id': factory.make_name('system_id'),
685 'power_address': factory.make_name('power_address'),
686 'ip_address': factory.make_ipv4_address(),
687 'power_pass': factory.make_name('power_pass'),
688 }
689 _get_amt_command_mock = self.patch(677 _get_amt_command_mock = self.patch(
690 amt_power_driver, '_get_amt_command')678 amt_power_driver, '_get_amt_command')
691 _get_amt_command_mock.return_value = 'wsman'679 _get_amt_command_mock.return_value = 'wsman'
@@ -695,26 +683,21 @@
695 wsman_power_on_mock = self.patch(683 wsman_power_on_mock = self.patch(
696 amt_power_driver, 'wsman_power_on')684 amt_power_driver, 'wsman_power_on')
697685
698 amt_power_driver.power_on(**kwargs)686 amt_power_driver.power_on(context['system_id'], context)
699687
700 self.expectThat(688 self.expectThat(
701 _get_amt_command_mock, MockCalledOnceWith(689 _get_amt_command_mock, MockCalledOnceWith(
702 kwargs['ip_address'], kwargs['power_pass']))690 context['ip_address'], context['power_pass']))
703 self.expectThat(691 self.expectThat(
704 wsman_query_state_mock, MockCalledOnceWith(692 wsman_query_state_mock, MockCalledOnceWith(
705 kwargs['ip_address'], kwargs['power_pass']))693 context['ip_address'], context['power_pass']))
706 self.expectThat(694 self.expectThat(
707 wsman_power_on_mock, MockCalledOnceWith(695 wsman_power_on_mock, MockCalledOnceWith(
708 kwargs['ip_address'], kwargs['power_pass']))696 context['ip_address'], context['power_pass']))
709697
710 def test_power_off_powers_off_with_amttool(self):698 def test_power_off_powers_off_with_amttool(self):
711 amt_power_driver = AMTPowerDriver()699 amt_power_driver = AMTPowerDriver()
712 kwargs = {700 context = make_parameters()
713 'system_id': factory.make_name('system_id'),
714 'power_address': factory.make_name('power_address'),
715 'ip_address': factory.make_ipv4_address(),
716 'power_pass': factory.make_name('power_pass'),
717 }
718 _get_amt_command_mock = self.patch(701 _get_amt_command_mock = self.patch(
719 amt_power_driver, '_get_amt_command')702 amt_power_driver, '_get_amt_command')
720 _get_amt_command_mock.return_value = 'amttool'703 _get_amt_command_mock.return_value = 'amttool'
@@ -724,26 +707,20 @@
724 amttool_power_off_mock = self.patch(707 amttool_power_off_mock = self.patch(
725 amt_power_driver, 'amttool_power_off')708 amt_power_driver, 'amttool_power_off')
726709
727 amt_power_driver.power_off(**kwargs)710 amt_power_driver.power_off(context['system_id'], context)
728
729 self.expectThat(711 self.expectThat(
730 _get_amt_command_mock, MockCalledOnceWith(712 _get_amt_command_mock, MockCalledOnceWith(
731 kwargs['ip_address'], kwargs['power_pass']))713 context['ip_address'], context['power_pass']))
732 self.expectThat(714 self.expectThat(
733 amttool_query_state_mock, MockCalledOnceWith(715 amttool_query_state_mock, MockCalledOnceWith(
734 kwargs['ip_address'], kwargs['power_pass']))716 context['ip_address'], context['power_pass']))
735 self.expectThat(717 self.expectThat(
736 amttool_power_off_mock, MockCalledOnceWith(718 amttool_power_off_mock, MockCalledOnceWith(
737 kwargs['ip_address'], kwargs['power_pass']))719 context['ip_address'], context['power_pass']))
738720
739 def test_power_off_powers_off_with_wsman(self):721 def test_power_off_powers_off_with_wsman(self):
740 amt_power_driver = AMTPowerDriver()722 amt_power_driver = AMTPowerDriver()
741 kwargs = {723 context = make_parameters()
742 'system_id': factory.make_name('system_id'),
743 'power_address': factory.make_name('power_address'),
744 'ip_address': factory.make_ipv4_address(),
745 'power_pass': factory.make_name('power_pass'),
746 }
747 _get_amt_command_mock = self.patch(724 _get_amt_command_mock = self.patch(
748 amt_power_driver, '_get_amt_command')725 amt_power_driver, '_get_amt_command')
749 _get_amt_command_mock.return_value = 'wsman'726 _get_amt_command_mock.return_value = 'wsman'
@@ -753,26 +730,20 @@
753 wsman_power_off_mock = self.patch(730 wsman_power_off_mock = self.patch(
754 amt_power_driver, 'wsman_power_off')731 amt_power_driver, 'wsman_power_off')
755732
756 amt_power_driver.power_off(**kwargs)733 amt_power_driver.power_off(context['system_id'], context)
757
758 self.expectThat(734 self.expectThat(
759 _get_amt_command_mock, MockCalledOnceWith(735 _get_amt_command_mock, MockCalledOnceWith(
760 kwargs['ip_address'], kwargs['power_pass']))736 context['ip_address'], context['power_pass']))
761 self.expectThat(737 self.expectThat(
762 wsman_query_state_mock, MockCalledOnceWith(738 wsman_query_state_mock, MockCalledOnceWith(
763 kwargs['ip_address'], kwargs['power_pass']))739 context['ip_address'], context['power_pass']))
764 self.expectThat(740 self.expectThat(
765 wsman_power_off_mock, MockCalledOnceWith(741 wsman_power_off_mock, MockCalledOnceWith(
766 kwargs['ip_address'], kwargs['power_pass']))742 context['ip_address'], context['power_pass']))
767743
768 def test_power_query_queries_with_amttool(self):744 def test_power_query_queries_with_amttool(self):
769 amt_power_driver = AMTPowerDriver()745 amt_power_driver = AMTPowerDriver()
770 kwargs = {746 context = make_parameters()
771 'system_id': factory.make_name('system_id'),
772 'power_address': factory.make_name('power_address'),
773 'ip_address': factory.make_ipv4_address(),
774 'power_pass': factory.make_name('power_pass'),
775 }
776 _get_amt_command_mock = self.patch(747 _get_amt_command_mock = self.patch(
777 amt_power_driver, '_get_amt_command')748 amt_power_driver, '_get_amt_command')
778 _get_amt_command_mock.return_value = 'amttool'749 _get_amt_command_mock.return_value = 'amttool'
@@ -780,24 +751,19 @@
780 amt_power_driver, 'amttool_query_state')751 amt_power_driver, 'amttool_query_state')
781 amttool_query_state_mock.return_value = 'off'752 amttool_query_state_mock.return_value = 'off'
782753
783 state = amt_power_driver.power_query(**kwargs)754 state = amt_power_driver.power_query(context['system_id'], context)
784755
785 self.expectThat(756 self.expectThat(
786 _get_amt_command_mock, MockCalledOnceWith(757 _get_amt_command_mock, MockCalledOnceWith(
787 kwargs['ip_address'], kwargs['power_pass']))758 context['ip_address'], context['power_pass']))
788 self.expectThat(759 self.expectThat(
789 amttool_query_state_mock, MockCalledOnceWith(760 amttool_query_state_mock, MockCalledOnceWith(
790 kwargs['ip_address'], kwargs['power_pass']))761 context['ip_address'], context['power_pass']))
791 self.expectThat(state, Equals('off'))762 self.expectThat(state, Equals('off'))
792763
793 def test_power_query_queries_with_wsman(self):764 def test_power_query_queries_with_wsman(self):
794 amt_power_driver = AMTPowerDriver()765 amt_power_driver = AMTPowerDriver()
795 kwargs = {766 context = make_parameters()
796 'system_id': factory.make_name('system_id'),
797 'power_address': factory.make_name('power_address'),
798 'ip_address': factory.make_ipv4_address(),
799 'power_pass': factory.make_name('power_pass'),
800 }
801 _get_amt_command_mock = self.patch(767 _get_amt_command_mock = self.patch(
802 amt_power_driver, '_get_amt_command')768 amt_power_driver, '_get_amt_command')
803 _get_amt_command_mock.return_value = 'wsman'769 _get_amt_command_mock.return_value = 'wsman'
@@ -805,12 +771,12 @@
805 amt_power_driver, 'wsman_query_state')771 amt_power_driver, 'wsman_query_state')
806 wsman_query_state_mock.return_value = 'on'772 wsman_query_state_mock.return_value = 'on'
807773
808 state = amt_power_driver.power_query(**kwargs)774 state = amt_power_driver.power_query(context['system_id'], context)
809775
810 self.expectThat(776 self.expectThat(
811 _get_amt_command_mock, MockCalledOnceWith(777 _get_amt_command_mock, MockCalledOnceWith(
812 kwargs['ip_address'], kwargs['power_pass']))778 context['ip_address'], context['power_pass']))
813 self.expectThat(779 self.expectThat(
814 wsman_query_state_mock, MockCalledOnceWith(780 wsman_query_state_mock, MockCalledOnceWith(
815 kwargs['ip_address'], kwargs['power_pass']))781 context['ip_address'], context['power_pass']))
816 self.expectThat(state, Equals('on'))782 self.expectThat(state, Equals('on'))
817783
=== modified file 'src/provisioningserver/drivers/power/tests/test_apc.py'
--- src/provisioningserver/drivers/power/tests/test_apc.py 2015-10-01 22:48:50 +0000
+++ src/provisioningserver/drivers/power/tests/test_apc.py 2015-11-17 02:16:14 +0000
@@ -49,28 +49,28 @@
49 ip = factory.make_ipv4_address()49 ip = factory.make_ipv4_address()
50 outlet = '%d' % randint(1, 16)50 outlet = '%d' % randint(1, 16)
51 power_on_delay = '%d' % randint(1, 5)51 power_on_delay = '%d' % randint(1, 5)
52 params = {52 context = {
53 'system_id': system_id,53 'system_id': system_id,
54 'power_address': ip,54 'power_address': ip,
55 'node_outlet': outlet,55 'node_outlet': outlet,
56 'power_on_delay': power_on_delay,56 'power_on_delay': power_on_delay,
57 }57 }
58 return system_id, ip, outlet, power_on_delay, params58 return system_id, ip, outlet, power_on_delay, context
5959
60 def test_extract_apc_parameters_extracts_parameters(self):60 def test_extract_apc_parameters_extracts_parameters(self):
61 system_id, ip, outlet, power_on_delay, params = self.make_parameters()61 system_id, ip, outlet, power_on_delay, context = self.make_parameters()
6262
63 self.assertItemsEqual(63 self.assertItemsEqual(
64 (ip, outlet, power_on_delay),64 (ip, outlet, power_on_delay),
65 extract_apc_parameters(params))65 extract_apc_parameters(context))
6666
67 def test_power_on_calls_power_control_apc(self):67 def test_power_on_calls_power_control_apc(self):
68 power_change = 'on'68 power_change = 'on'
69 system_id, ip, outlet, power_on_delay, params = self.make_parameters()69 system_id, ip, outlet, power_on_delay, context = self.make_parameters()
70 apc_power_driver = APCPowerDriver()70 apc_power_driver = APCPowerDriver()
71 power_control_apc = self.patch(71 power_control_apc = self.patch(
72 apc_module, 'power_control_apc')72 apc_module, 'power_control_apc')
73 apc_power_driver.power_on(**params)73 apc_power_driver.power_on(system_id, context)
7474
75 self.assertThat(75 self.assertThat(
76 power_control_apc, MockCalledOnceWith(76 power_control_apc, MockCalledOnceWith(
@@ -78,23 +78,23 @@
7878
79 def test_power_off_calls_power_control_apc(self):79 def test_power_off_calls_power_control_apc(self):
80 power_change = 'off'80 power_change = 'off'
81 system_id, ip, outlet, power_on_delay, params = self.make_parameters()81 system_id, ip, outlet, power_on_delay, context = self.make_parameters()
82 apc_power_driver = APCPowerDriver()82 apc_power_driver = APCPowerDriver()
83 power_control_apc = self.patch(83 power_control_apc = self.patch(
84 apc_module, 'power_control_apc')84 apc_module, 'power_control_apc')
85 apc_power_driver.power_off(**params)85 apc_power_driver.power_off(system_id, context)
8686
87 self.assertThat(87 self.assertThat(
88 power_control_apc, MockCalledOnceWith(88 power_control_apc, MockCalledOnceWith(
89 ip, outlet, power_change, power_on_delay))89 ip, outlet, power_change, power_on_delay))
9090
91 def test_power_query_calls_power_state_apc(self):91 def test_power_query_calls_power_state_apc(self):
92 system_id, ip, outlet, power_on_delay, params = self.make_parameters()92 system_id, ip, outlet, power_on_delay, context = self.make_parameters()
93 apc_power_driver = APCPowerDriver()93 apc_power_driver = APCPowerDriver()
94 power_state_apc = self.patch(94 power_state_apc = self.patch(
95 apc_module, 'power_state_apc')95 apc_module, 'power_state_apc')
96 power_state_apc.return_value = 'off'96 power_state_apc.return_value = 'off'
97 expected_result = apc_power_driver.power_query(**params)97 expected_result = apc_power_driver.power_query(system_id, context)
9898
99 self.expectThat(99 self.expectThat(
100 power_state_apc, MockCalledOnceWith(ip, outlet))100 power_state_apc, MockCalledOnceWith(ip, outlet))
101101
=== modified file 'src/provisioningserver/drivers/power/tests/test_base.py'
--- src/provisioningserver/drivers/power/tests/test_base.py 2015-09-30 00:05:45 +0000
+++ src/provisioningserver/drivers/power/tests/test_base.py 2015-11-17 02:16:14 +0000
@@ -65,13 +65,13 @@
65 self.settings = settings65 self.settings = settings
66 super(FakePowerDriverBase, self).__init__()66 super(FakePowerDriverBase, self).__init__()
6767
68 def on(self, system_id, **kwargs):68 def on(self, system_id, context):
69 raise NotImplementedError69 raise NotImplementedError
7070
71 def off(self, system_id, **kwargs):71 def off(self, system_id, context):
72 raise NotImplementedError72 raise NotImplementedError
7373
74 def query(self, system_id, **kwargs):74 def query(self, system_id, context):
75 raise NotImplementedError75 raise NotImplementedError
7676
7777
@@ -131,19 +131,19 @@
131 fake_driver = make_power_driver_base()131 fake_driver = make_power_driver_base()
132 self.assertRaises(132 self.assertRaises(
133 NotImplementedError,133 NotImplementedError,
134 fake_driver.on, sentinel.system_id)134 fake_driver.on, sentinel.system_id, sentinel.context)
135135
136 def test_off_raises_not_implemented(self):136 def test_off_raises_not_implemented(self):
137 fake_driver = make_power_driver_base()137 fake_driver = make_power_driver_base()
138 self.assertRaises(138 self.assertRaises(
139 NotImplementedError,139 NotImplementedError,
140 fake_driver.off, sentinel.system_id)140 fake_driver.off, sentinel.system_id, sentinel.context)
141141
142 def test_query_raises_not_implemented(self):142 def test_query_raises_not_implemented(self):
143 fake_driver = make_power_driver_base()143 fake_driver = make_power_driver_base()
144 self.assertRaises(144 self.assertRaises(
145 NotImplementedError,145 NotImplementedError,
146 fake_driver.query, sentinel.system_id)146 fake_driver.query, sentinel.system_id, sentinel.context)
147147
148148
149class TestPowerDriverBase(MAASTestCase):149class TestPowerDriverBase(MAASTestCase):
@@ -256,13 +256,13 @@
256 def detect_missing_packages(self):256 def detect_missing_packages(self):
257 raise NotImplementedError257 raise NotImplementedError
258258
259 def power_on(self, system_id, **kwargs):259 def power_on(self, system_id, context):
260 raise NotImplementedError260 raise NotImplementedError
261261
262 def power_off(self, system_id, **kwargs):262 def power_off(self, system_id, context):
263 raise NotImplementedError263 raise NotImplementedError
264264
265 def power_query(self, system_id, **kwargs):265 def power_query(self, system_id, context):
266 raise NotImplementedError266 raise NotImplementedError
267267
268268
@@ -297,16 +297,18 @@
297 @inlineCallbacks297 @inlineCallbacks
298 def test_success(self):298 def test_success(self):
299 system_id = factory.make_name('system_id')299 system_id = factory.make_name('system_id')
300 context = {'context': factory.make_name('context')}
300 driver = make_power_driver(wait_time=[0])301 driver = make_power_driver(wait_time=[0])
301 self.patch(driver, self.action_func)302 self.patch(driver, self.action_func)
302 self.patch(driver, 'power_query').return_value = self.action303 self.patch(driver, 'power_query').return_value = self.action
303 method = getattr(driver, self.action)304 method = getattr(driver, self.action)
304 result = yield method(system_id)305 result = yield method(system_id, context)
305 self.assertEqual(result, None)306 self.assertEqual(result, None)
306307
307 @inlineCallbacks308 @inlineCallbacks
308 def test_handles_fatal_error_on_first_call(self):309 def test_handles_fatal_error_on_first_call(self):
309 system_id = factory.make_name('system_id')310 system_id = factory.make_name('system_id')
311 context = {'context': factory.make_name('context')}
310 driver = make_power_driver(wait_time=[0, 0])312 driver = make_power_driver(wait_time=[0, 0])
311 mock_on = self.patch(driver, self.action_func)313 mock_on = self.patch(driver, self.action_func)
312 mock_on.side_effect = [PowerFatalError(), None]314 mock_on.side_effect = [PowerFatalError(), None]
@@ -314,7 +316,7 @@
314 mock_query.return_value = self.action316 mock_query.return_value = self.action
315 method = getattr(driver, self.action)317 method = getattr(driver, self.action)
316 with ExpectedException(PowerFatalError):318 with ExpectedException(PowerFatalError):
317 yield method(system_id)319 yield method(system_id, context)
318 self.expectThat(320 self.expectThat(
319 mock_query,321 mock_query,
320 Equals(MockNotCalled()))322 Equals(MockNotCalled()))
@@ -322,21 +324,23 @@
322 @inlineCallbacks324 @inlineCallbacks
323 def test_handles_non_fatal_error_on_first_call(self):325 def test_handles_non_fatal_error_on_first_call(self):
324 system_id = factory.make_name('system_id')326 system_id = factory.make_name('system_id')
327 context = {'context': factory.make_name('context')}
325 driver = make_power_driver(wait_time=[0, 0])328 driver = make_power_driver(wait_time=[0, 0])
326 mock_on = self.patch(driver, self.action_func)329 mock_on = self.patch(driver, self.action_func)
327 mock_on.side_effect = [PowerError(), None]330 mock_on.side_effect = [PowerError(), None]
328 mock_query = self.patch(driver, 'power_query')331 mock_query = self.patch(driver, 'power_query')
329 mock_query.return_value = self.action332 mock_query.return_value = self.action
330 method = getattr(driver, self.action)333 method = getattr(driver, self.action)
331 result = yield method(system_id)334 result = yield method(system_id, context)
332 self.expectThat(335 self.expectThat(
333 mock_query,336 mock_query,
334 Equals(MockCalledOnceWith(system_id)))337 Equals(MockCalledOnceWith(system_id, context)))
335 self.expectThat(result, Equals(None))338 self.expectThat(result, Equals(None))
336339
337 @inlineCallbacks340 @inlineCallbacks
338 def test_handles_non_fatal_error_and_holds_error(self):341 def test_handles_non_fatal_error_and_holds_error(self):
339 system_id = factory.make_name('system_id')342 system_id = factory.make_name('system_id')
343 context = {'context': factory.make_name('context')}
340 driver = make_power_driver(wait_time=[0])344 driver = make_power_driver(wait_time=[0])
341 error_msg = factory.make_name('error')345 error_msg = factory.make_name('error')
342 self.patch(driver, self.action_func)346 self.patch(driver, self.action_func)
@@ -344,31 +348,33 @@
344 mock_query.side_effect = PowerError(error_msg)348 mock_query.side_effect = PowerError(error_msg)
345 method = getattr(driver, self.action)349 method = getattr(driver, self.action)
346 with ExpectedException(PowerError):350 with ExpectedException(PowerError):
347 yield method(system_id)351 yield method(system_id, context)
348 self.expectThat(352 self.expectThat(
349 mock_query,353 mock_query,
350 Equals(MockCalledOnceWith(system_id)))354 Equals(MockCalledOnceWith(system_id, context)))
351355
352 @inlineCallbacks356 @inlineCallbacks
353 def test_handles_non_fatal_error(self):357 def test_handles_non_fatal_error(self):
354 system_id = factory.make_name('system_id')358 system_id = factory.make_name('system_id')
359 context = {'context': factory.make_name('context')}
355 driver = make_power_driver(wait_time=[0])360 driver = make_power_driver(wait_time=[0])
356 mock_on = self.patch(driver, self.action_func)361 mock_on = self.patch(driver, self.action_func)
357 mock_on.side_effect = PowerError()362 mock_on.side_effect = PowerError()
358 method = getattr(driver, self.action)363 method = getattr(driver, self.action)
359 with ExpectedException(PowerError):364 with ExpectedException(PowerError):
360 yield method(system_id)365 yield method(system_id, context)
361366
362 @inlineCallbacks367 @inlineCallbacks
363 def test_handles_fails_to_complete_power_action_in_time(self):368 def test_handles_fails_to_complete_power_action_in_time(self):
364 system_id = factory.make_name('system_id')369 system_id = factory.make_name('system_id')
370 context = {'context': factory.make_name('context')}
365 driver = make_power_driver(wait_time=[0])371 driver = make_power_driver(wait_time=[0])
366 self.patch(driver, self.action_func)372 self.patch(driver, self.action_func)
367 mock_query = self.patch(driver, 'power_query')373 mock_query = self.patch(driver, 'power_query')
368 mock_query.return_value = self.bad_state374 mock_query.return_value = self.bad_state
369 method = getattr(driver, self.action)375 method = getattr(driver, self.action)
370 with ExpectedException(PowerError):376 with ExpectedException(PowerError):
371 yield method(system_id)377 yield method(system_id, context)
372378
373379
374class TestPowerDriverQuery(MAASTestCase):380class TestPowerDriverQuery(MAASTestCase):
@@ -382,10 +388,11 @@
382 @inlineCallbacks388 @inlineCallbacks
383 def test_returns_state(self):389 def test_returns_state(self):
384 system_id = factory.make_name('system_id')390 system_id = factory.make_name('system_id')
391 context = {'context': factory.make_name('context')}
385 driver = make_power_driver()392 driver = make_power_driver()
386 state = factory.make_name('state')393 state = factory.make_name('state')
387 self.patch(driver, 'power_query').return_value = state394 self.patch(driver, 'power_query').return_value = state
388 output = yield driver.query(system_id)395 output = yield driver.query(system_id, context)
389 self.assertEqual(state, output)396 self.assertEqual(state, output)
390397
391 @inlineCallbacks398 @inlineCallbacks
@@ -393,7 +400,7 @@
393 driver = make_power_driver()400 driver = make_power_driver()
394 self.patch(driver, 'power_query').side_effect = [401 self.patch(driver, 'power_query').side_effect = [
395 PowerError("one"), PowerError("two"), sentinel.state]402 PowerError("one"), PowerError("two"), sentinel.state]
396 output = yield driver.query(sentinel.system_id)403 output = yield driver.query(sentinel.system_id, sentinel.context)
397 self.assertEqual(sentinel.state, output)404 self.assertEqual(sentinel.state, output)
398405
399 @inlineCallbacks406 @inlineCallbacks
@@ -405,7 +412,7 @@
405 for _ in wait_time)412 for _ in wait_time)
406 self.patch(driver, 'power_query').side_effect = exception_types413 self.patch(driver, 'power_query').side_effect = exception_types
407 with ExpectedException(exception_types[-1]):414 with ExpectedException(exception_types[-1]):
408 yield driver.query(sentinel.system_id)415 yield driver.query(sentinel.system_id, sentinel.context)
409416
410 @inlineCallbacks417 @inlineCallbacks
411 def test_pauses_between_retries(self):418 def test_pauses_between_retries(self):
@@ -413,6 +420,6 @@
413 driver = make_power_driver(wait_time=wait_time)420 driver = make_power_driver(wait_time=wait_time)
414 self.patch(driver, 'power_query').side_effect = PowerError421 self.patch(driver, 'power_query').side_effect = PowerError
415 with ExpectedException(PowerError):422 with ExpectedException(PowerError):
416 yield driver.query(sentinel.system_id)423 yield driver.query(sentinel.system_id, sentinel.context)
417 self.assertThat(power.pause, MockCallsMatch(424 self.assertThat(power.pause, MockCallsMatch(
418 *(call(wait, reactor) for wait in wait_time)))425 *(call(wait, reactor) for wait in wait_time)))
419426
=== modified file 'src/provisioningserver/drivers/power/tests/test_dli.py'
--- src/provisioningserver/drivers/power/tests/test_dli.py 2015-11-04 15:53:35 +0000
+++ src/provisioningserver/drivers/power/tests/test_dli.py 2015-11-17 02:16:14 +0000
@@ -142,20 +142,26 @@
142 def test_power_on(self):142 def test_power_on(self):
143 driver = dli_module.DLIPowerDriver()143 driver = dli_module.DLIPowerDriver()
144 system_id = factory.make_name('system_id')144 system_id = factory.make_name('system_id')
145 context = {'context': factory.make_name('context')}
145 _set_outlet_state_mock = self.patch(driver, '_set_outlet_state')146 _set_outlet_state_mock = self.patch(driver, '_set_outlet_state')
146 driver.power_on(system_id)147 driver.power_on(system_id, context)
147 self.assertThat(_set_outlet_state_mock, MockCalledOnceWith('ON'))148 self.assertThat(
149 _set_outlet_state_mock, MockCalledOnceWith('ON', **context))
148150
149 def test_power_off(self):151 def test_power_off(self):
150 driver = dli_module.DLIPowerDriver()152 driver = dli_module.DLIPowerDriver()
151 system_id = factory.make_name('system_id')153 system_id = factory.make_name('system_id')
154 context = {'context': factory.make_name('context')}
152 _set_outlet_state_mock = self.patch(driver, '_set_outlet_state')155 _set_outlet_state_mock = self.patch(driver, '_set_outlet_state')
153 driver.power_off(system_id)156 driver.power_off(system_id, context)
154 self.assertThat(_set_outlet_state_mock, MockCalledOnceWith('OFF'))157 self.assertThat(
158 _set_outlet_state_mock, MockCalledOnceWith('OFF', **context))
155159
156 def test_power_query(self):160 def test_power_query(self):
157 driver = dli_module.DLIPowerDriver()161 driver = dli_module.DLIPowerDriver()
158 system_id = factory.make_name('system_id')162 system_id = factory.make_name('system_id')
163 context = {'context': factory.make_name('context')}
159 _query_outlet_state_mock = self.patch(driver, '_query_outlet_state')164 _query_outlet_state_mock = self.patch(driver, '_query_outlet_state')
160 driver.power_query(system_id)165 driver.power_query(system_id, context)
161 self.assertThat(_query_outlet_state_mock, MockCalledOnceWith())166 self.assertThat(
167 _query_outlet_state_mock, MockCalledOnceWith(**context))
162168
=== modified file 'src/provisioningserver/drivers/power/tests/test_ether_wake.py'
--- src/provisioningserver/drivers/power/tests/test_ether_wake.py 2015-10-01 23:30:50 +0000
+++ src/provisioningserver/drivers/power/tests/test_ether_wake.py 2015-11-17 02:16:14 +0000
@@ -38,14 +38,14 @@
38 def test_power_on(self):38 def test_power_on(self):
39 driver = ether_wake_module.EtherWakePowerDriver()39 driver = ether_wake_module.EtherWakePowerDriver()
40 self.assertRaises(40 self.assertRaises(
41 NotImplementedError, driver.power_on, "fake_id")41 NotImplementedError, driver.power_on, "fake_id", {})
4242
43 def test_power_off(self):43 def test_power_off(self):
44 driver = ether_wake_module.EtherWakePowerDriver()44 driver = ether_wake_module.EtherWakePowerDriver()
45 self.assertRaises(45 self.assertRaises(
46 NotImplementedError, driver.power_off, "fake_id")46 NotImplementedError, driver.power_off, "fake_id", {})
4747
48 def test_power_query(self):48 def test_power_query(self):
49 driver = ether_wake_module.EtherWakePowerDriver()49 driver = ether_wake_module.EtherWakePowerDriver()
50 self.assertRaises(50 self.assertRaises(
51 NotImplementedError, driver.power_query, "fake_id")51 NotImplementedError, driver.power_query, "fake_id", {})
5252
=== modified file 'src/provisioningserver/drivers/power/tests/test_fence_cdu.py'
--- src/provisioningserver/drivers/power/tests/test_fence_cdu.py 2015-10-01 23:30:50 +0000
+++ src/provisioningserver/drivers/power/tests/test_fence_cdu.py 2015-11-17 02:16:14 +0000
@@ -38,14 +38,14 @@
38 def test_power_on(self):38 def test_power_on(self):
39 driver = fence_cdu_module.FenceCDUPowerDriver()39 driver = fence_cdu_module.FenceCDUPowerDriver()
40 self.assertRaises(40 self.assertRaises(
41 NotImplementedError, driver.power_on, "fake_id")41 NotImplementedError, driver.power_on, "fake_id", {})
4242
43 def test_power_off(self):43 def test_power_off(self):
44 driver = fence_cdu_module.FenceCDUPowerDriver()44 driver = fence_cdu_module.FenceCDUPowerDriver()
45 self.assertRaises(45 self.assertRaises(
46 NotImplementedError, driver.power_off, "fake_id")46 NotImplementedError, driver.power_off, "fake_id", {})
4747
48 def test_power_query(self):48 def test_power_query(self):
49 driver = fence_cdu_module.FenceCDUPowerDriver()49 driver = fence_cdu_module.FenceCDUPowerDriver()
50 self.assertRaises(50 self.assertRaises(
51 NotImplementedError, driver.power_query, "fake_id")51 NotImplementedError, driver.power_query, "fake_id", {})
5252
=== modified file 'src/provisioningserver/drivers/power/tests/test_hmc.py'
--- src/provisioningserver/drivers/power/tests/test_hmc.py 2015-10-01 22:48:50 +0000
+++ src/provisioningserver/drivers/power/tests/test_hmc.py 2015-11-17 02:16:14 +0000
@@ -49,7 +49,7 @@
49 password = factory.make_name('power_pass')49 password = factory.make_name('power_pass')
50 server_name = factory.make_name('server_name')50 server_name = factory.make_name('server_name')
51 lpar = factory.make_name('lpar')51 lpar = factory.make_name('lpar')
52 params = {52 context = {
53 'system_id': system_id,53 'system_id': system_id,
54 'power_address': ip,54 'power_address': ip,
55 'power_user': username,55 'power_user': username,
@@ -57,47 +57,47 @@
57 'server_name': server_name,57 'server_name': server_name,
58 'lpar': lpar,58 'lpar': lpar,
59 }59 }
60 return system_id, ip, username, password, server_name, lpar, params60 return system_id, ip, username, password, server_name, lpar, context
6161
62 def test_extract_hmc_parameters_extracts_parameters(self):62 def test_extract_hmc_parameters_extracts_parameters(self):
63 system_id, ip, username, password, server_name, lpar, params = (63 system_id, ip, username, password, server_name, lpar, context = (
64 self.make_parameters())64 self.make_parameters())
65 self.assertItemsEqual(65 self.assertItemsEqual(
66 (ip, username, password, server_name, lpar),66 (ip, username, password, server_name, lpar),
67 extract_hmc_parameters(params))67 extract_hmc_parameters(context))
6868
69 def test_power_on_calls_power_control_hmc(self):69 def test_power_on_calls_power_control_hmc(self):
70 system_id, ip, username, password, server_name, lpar, params = (70 system_id, ip, username, password, server_name, lpar, context = (
71 self.make_parameters())71 self.make_parameters())
72 hmc_power_driver = HMCPowerDriver()72 hmc_power_driver = HMCPowerDriver()
73 power_control_hmc = self.patch(73 power_control_hmc = self.patch(
74 hmc_module, 'power_control_hmc')74 hmc_module, 'power_control_hmc')
75 hmc_power_driver.power_on(**params)75 hmc_power_driver.power_on(system_id, context)
7676
77 self.assertThat(77 self.assertThat(
78 power_control_hmc, MockCalledOnceWith(78 power_control_hmc, MockCalledOnceWith(
79 ip, username, password, server_name, lpar, power_change='on'))79 ip, username, password, server_name, lpar, power_change='on'))
8080
81 def test_power_off_calls_power_control_hmc(self):81 def test_power_off_calls_power_control_hmc(self):
82 system_id, ip, username, password, server_name, lpar, params = (82 system_id, ip, username, password, server_name, lpar, context = (
83 self.make_parameters())83 self.make_parameters())
84 hmc_power_driver = HMCPowerDriver()84 hmc_power_driver = HMCPowerDriver()
85 power_control_hmc = self.patch(85 power_control_hmc = self.patch(
86 hmc_module, 'power_control_hmc')86 hmc_module, 'power_control_hmc')
87 hmc_power_driver.power_off(**params)87 hmc_power_driver.power_off(system_id, context)
8888
89 self.assertThat(89 self.assertThat(
90 power_control_hmc, MockCalledOnceWith(90 power_control_hmc, MockCalledOnceWith(
91 ip, username, password, server_name, lpar, power_change='off'))91 ip, username, password, server_name, lpar, power_change='off'))
9292
93 def test_power_query_calls_power_state_hmc(self):93 def test_power_query_calls_power_state_hmc(self):
94 system_id, ip, username, password, server_name, lpar, params = (94 system_id, ip, username, password, server_name, lpar, context = (
95 self.make_parameters())95 self.make_parameters())
96 hmc_power_driver = HMCPowerDriver()96 hmc_power_driver = HMCPowerDriver()
97 power_state_hmc = self.patch(97 power_state_hmc = self.patch(
98 hmc_module, 'power_state_hmc')98 hmc_module, 'power_state_hmc')
99 power_state_hmc.return_value = 'off'99 power_state_hmc.return_value = 'off'
100 expected_result = hmc_power_driver.power_query(**params)100 expected_result = hmc_power_driver.power_query(system_id, context)
101101
102 self.expectThat(102 self.expectThat(
103 power_state_hmc, MockCalledOnceWith(103 power_state_hmc, MockCalledOnceWith(
104104
=== modified file 'src/provisioningserver/drivers/power/tests/test_ipmi.py'
--- src/provisioningserver/drivers/power/tests/test_ipmi.py 2015-10-14 18:10:57 +0000
+++ src/provisioningserver/drivers/power/tests/test_ipmi.py 2015-11-17 02:16:14 +0000
@@ -55,7 +55,7 @@
55 power_off_mode = factory.make_name('power_off_mode')55 power_off_mode = factory.make_name('power_off_mode')
56 ipmipower = factory.make_name('ipmipower')56 ipmipower = factory.make_name('ipmipower')
57 ipmi_chassis_config = factory.make_name('ipmi_chassis_config')57 ipmi_chassis_config = factory.make_name('ipmi_chassis_config')
58 params = {58 context = {
59 'power_address': power_address,59 'power_address': power_address,
60 'power_user': power_user,60 'power_user': power_user,
61 'power_pass': power_pass,61 'power_pass': power_pass,
@@ -67,7 +67,7 @@
6767
68 return (68 return (
69 power_address, power_user, power_pass, power_driver,69 power_address, power_user, power_pass, power_driver,
70 power_off_mode, ipmipower, ipmi_chassis_config, params70 power_off_mode, ipmipower, ipmi_chassis_config, context
71 )71 )
7272
7373
@@ -109,7 +109,7 @@
109109
110 def test__finds_power_address_from_mac_address(self):110 def test__finds_power_address_from_mac_address(self):
111 (power_address, power_user, power_pass, power_driver, power_off_mode,111 (power_address, power_user, power_pass, power_driver, power_off_mode,
112 ipmipower, ipmi_chassis_config, params) = make_parameters()112 ipmipower, ipmi_chassis_config, context) = make_parameters()
113 driver = IPMIPowerDriver()113 driver = IPMIPowerDriver()
114 ip_address = factory.make_ipv4_address()114 ip_address = factory.make_ipv4_address()
115 find_ip_via_arp = self.patch(ipmi_module, 'find_ip_via_arp')115 find_ip_via_arp = self.patch(ipmi_module, 'find_ip_via_arp')
@@ -117,12 +117,12 @@
117 power_change = random.choice(("on", "off"))117 power_change = random.choice(("on", "off"))
118 env = get_c_environment()118 env = get_c_environment()
119119
120 params['mac_address'] = factory.make_mac_address()120 context['mac_address'] = factory.make_mac_address()
121 params['power_address'] = random.choice((None, "", " "))121 context['power_address'] = random.choice((None, "", " "))
122122
123 self.patch_autospec(driver, "_issue_ipmi_chassis_config_command")123 self.patch_autospec(driver, "_issue_ipmi_chassis_config_command")
124 self.patch_autospec(driver, "_issue_ipmi_power_command")124 self.patch_autospec(driver, "_issue_ipmi_power_command")
125 driver._issue_ipmi_command(power_change, **params)125 driver._issue_ipmi_command(power_change, **context)
126126
127 # The IP address is passed to _issue_ipmi_chassis_config_command.127 # The IP address is passed to _issue_ipmi_chassis_config_command.
128 self.assertThat(128 self.assertThat(
@@ -160,7 +160,7 @@
160160
161 def test__issue_ipmi_command_issues_power_on(self):161 def test__issue_ipmi_command_issues_power_on(self):
162 (power_address, power_user, power_pass, power_driver, power_off_mode,162 (power_address, power_user, power_pass, power_driver, power_off_mode,
163 ipmipower, ipmi_chassis_config, params) = make_parameters()163 ipmipower, ipmi_chassis_config, context) = make_parameters()
164 ipmi_chassis_config_command = make_ipmi_chassis_config_command(164 ipmi_chassis_config_command = make_ipmi_chassis_config_command(
165 ipmi_chassis_config, power_address, power_pass, power_driver,165 ipmi_chassis_config, power_address, power_pass, power_driver,
166 power_user, ANY)166 power_user, ANY)
@@ -176,7 +176,7 @@
176 call_and_check_mock = self.patch(ipmi_module, 'call_and_check')176 call_and_check_mock = self.patch(ipmi_module, 'call_and_check')
177 call_and_check_mock.return_value = 'on'177 call_and_check_mock.return_value = 'on'
178178
179 result = ipmi_power_driver._issue_ipmi_command('on', **params)179 result = ipmi_power_driver._issue_ipmi_command('on', **context)
180180
181 self.expectThat(181 self.expectThat(
182 popen_mock, MockCalledOnceWith(182 popen_mock, MockCalledOnceWith(
@@ -189,7 +189,7 @@
189189
190 def test__issue_ipmi_command_issues_power_off(self):190 def test__issue_ipmi_command_issues_power_off(self):
191 (power_address, power_user, power_pass, power_driver, power_off_mode,191 (power_address, power_user, power_pass, power_driver, power_off_mode,
192 ipmipower, ipmi_chassis_config, params) = make_parameters()192 ipmipower, ipmi_chassis_config, context) = make_parameters()
193 ipmi_chassis_config_command = make_ipmi_chassis_config_command(193 ipmi_chassis_config_command = make_ipmi_chassis_config_command(
194 ipmi_chassis_config, power_address, power_pass, power_driver,194 ipmi_chassis_config, power_address, power_pass, power_driver,
195 power_user, ANY)195 power_user, ANY)
@@ -205,7 +205,7 @@
205 call_and_check_mock = self.patch(ipmi_module, 'call_and_check')205 call_and_check_mock = self.patch(ipmi_module, 'call_and_check')
206 call_and_check_mock.return_value = 'off'206 call_and_check_mock.return_value = 'off'
207207
208 result = ipmi_power_driver._issue_ipmi_command('off', **params)208 result = ipmi_power_driver._issue_ipmi_command('off', **context)
209209
210 self.expectThat(210 self.expectThat(
211 popen_mock, MockCalledOnceWith(211 popen_mock, MockCalledOnceWith(
@@ -218,8 +218,8 @@
218218
219 def test__issue_ipmi_command_issues_power_off_soft_mode(self):219 def test__issue_ipmi_command_issues_power_off_soft_mode(self):
220 (power_address, power_user, power_pass, power_driver, power_off_mode,220 (power_address, power_user, power_pass, power_driver, power_off_mode,
221 ipmipower, ipmi_chassis_config, params) = make_parameters()221 ipmipower, ipmi_chassis_config, context) = make_parameters()
222 params['power_off_mode'] = 'soft'222 context['power_off_mode'] = 'soft'
223 ipmi_chassis_config_command = make_ipmi_chassis_config_command(223 ipmi_chassis_config_command = make_ipmi_chassis_config_command(
224 ipmi_chassis_config, power_address, power_pass, power_driver,224 ipmi_chassis_config, power_address, power_pass, power_driver,
225 power_user, ANY)225 power_user, ANY)
@@ -235,7 +235,7 @@
235 call_and_check_mock = self.patch(ipmi_module, 'call_and_check')235 call_and_check_mock = self.patch(ipmi_module, 'call_and_check')
236 call_and_check_mock.return_value = 'off'236 call_and_check_mock.return_value = 'off'
237237
238 result = ipmi_power_driver._issue_ipmi_command('off', **params)238 result = ipmi_power_driver._issue_ipmi_command('off', **context)
239239
240 self.expectThat(240 self.expectThat(
241 popen_mock, MockCalledOnceWith(241 popen_mock, MockCalledOnceWith(
@@ -248,7 +248,7 @@
248248
249 def test__issue_ipmi_command_issues_power_query(self):249 def test__issue_ipmi_command_issues_power_query(self):
250 (power_address, power_user, power_pass, power_driver, power_off_mode,250 (power_address, power_user, power_pass, power_driver, power_off_mode,
251 ipmipower, ipmi_chassis_config, params) = make_parameters()251 ipmipower, ipmi_chassis_config, context) = make_parameters()
252 ipmipower_command = make_ipmipower_command(252 ipmipower_command = make_ipmipower_command(
253 ipmipower, power_address, power_pass, power_driver, power_user)253 ipmipower, power_address, power_pass, power_driver, power_user)
254 ipmipower_command += ('--stat', )254 ipmipower_command += ('--stat', )
@@ -261,7 +261,7 @@
261 call_and_check_mock = self.patch(ipmi_module, 'call_and_check')261 call_and_check_mock = self.patch(ipmi_module, 'call_and_check')
262 call_and_check_mock.return_value = 'other'262 call_and_check_mock.return_value = 'other'
263263
264 result = ipmi_power_driver._issue_ipmi_command('query', **params)264 result = ipmi_power_driver._issue_ipmi_command('query', **context)
265265
266 self.expectThat(popen_mock, MockNotCalled())266 self.expectThat(popen_mock, MockNotCalled())
267 self.expectThat(267 self.expectThat(
@@ -270,7 +270,7 @@
270 self.expectThat(result, Equals('other'))270 self.expectThat(result, Equals('other'))
271271
272 def test__issue_ipmi_command_issues_raises_power_auth_error(self):272 def test__issue_ipmi_command_issues_raises_power_auth_error(self):
273 _, _, _, _, _, _, _, params = make_parameters()273 _, _, _, _, _, _, _, context = make_parameters()
274 ipmi_power_driver = IPMIPowerDriver()274 ipmi_power_driver = IPMIPowerDriver()
275 popen_mock = self.patch(ipmi_module, 'Popen')275 popen_mock = self.patch(ipmi_module, 'Popen')
276 process = popen_mock.return_value276 process = popen_mock.return_value
@@ -279,10 +279,10 @@
279279
280 self.assertRaises(280 self.assertRaises(
281 PowerAuthError, ipmi_power_driver._issue_ipmi_command,281 PowerAuthError, ipmi_power_driver._issue_ipmi_command,
282 'on', **params)282 'on', **context)
283283
284 def test__issue_ipmi_command_issues_raises_power_fatal_error(self):284 def test__issue_ipmi_command_issues_raises_power_fatal_error(self):
285 _, _, _, _, _, _, _, params = make_parameters()285 _, _, _, _, _, _, _, context = make_parameters()
286 ipmi_power_driver = IPMIPowerDriver()286 ipmi_power_driver = IPMIPowerDriver()
287 popen_mock = self.patch(ipmi_module, 'Popen')287 popen_mock = self.patch(ipmi_module, 'Popen')
288 process = popen_mock.return_value288 process = popen_mock.return_value
@@ -291,10 +291,10 @@
291291
292 self.assertRaises(292 self.assertRaises(
293 PowerFatalError, ipmi_power_driver._issue_ipmi_command,293 PowerFatalError, ipmi_power_driver._issue_ipmi_command,
294 'on', **params)294 'on', **context)
295295
296 def test__issue_ipmi_command_issues_catches_external_process_error(self):296 def test__issue_ipmi_command_issues_catches_external_process_error(self):
297 _, _, _, _, _, _, _, params = make_parameters()297 _, _, _, _, _, _, _, context = make_parameters()
298 ipmi_power_driver = IPMIPowerDriver()298 ipmi_power_driver = IPMIPowerDriver()
299 popen_mock = self.patch(ipmi_module, 'Popen')299 popen_mock = self.patch(ipmi_module, 'Popen')
300 process = popen_mock.return_value300 process = popen_mock.return_value
@@ -306,37 +306,37 @@
306306
307 self.assertRaises(307 self.assertRaises(
308 PowerFatalError, ipmi_power_driver._issue_ipmi_command,308 PowerFatalError, ipmi_power_driver._issue_ipmi_command,
309 'on', **params)309 'on', **context)
310310
311 def test_power_on_calls__issue_ipmi_command(self):311 def test_power_on_calls__issue_ipmi_command(self):
312 _, _, _, _, _, _, _, params = make_parameters()312 _, _, _, _, _, _, _, context = make_parameters()
313 ipmi_power_driver = IPMIPowerDriver()313 ipmi_power_driver = IPMIPowerDriver()
314 _issue_ipmi_command_mock = self.patch(314 _issue_ipmi_command_mock = self.patch(
315 ipmi_power_driver, '_issue_ipmi_command')315 ipmi_power_driver, '_issue_ipmi_command')
316 system_id = factory.make_name('system_id')316 system_id = factory.make_name('system_id')
317 ipmi_power_driver.power_on(system_id, **params)317 ipmi_power_driver.power_on(system_id, context)
318318
319 self.assertThat(319 self.assertThat(
320 _issue_ipmi_command_mock, MockCalledOnceWith('on', **params))320 _issue_ipmi_command_mock, MockCalledOnceWith('on', **context))
321321
322 def test_power_off_calls__issue_ipmi_command(self):322 def test_power_off_calls__issue_ipmi_command(self):
323 _, _, _, _, _, _, _, params = make_parameters()323 _, _, _, _, _, _, _, context = make_parameters()
324 ipmi_power_driver = IPMIPowerDriver()324 ipmi_power_driver = IPMIPowerDriver()
325 _issue_ipmi_command_mock = self.patch(325 _issue_ipmi_command_mock = self.patch(
326 ipmi_power_driver, '_issue_ipmi_command')326 ipmi_power_driver, '_issue_ipmi_command')
327 system_id = factory.make_name('system_id')327 system_id = factory.make_name('system_id')
328 ipmi_power_driver.power_off(system_id, **params)328 ipmi_power_driver.power_off(system_id, context)
329329
330 self.assertThat(330 self.assertThat(
331 _issue_ipmi_command_mock, MockCalledOnceWith('off', **params))331 _issue_ipmi_command_mock, MockCalledOnceWith('off', **context))
332332
333 def test_power_query_calls__issue_ipmi_command(self):333 def test_power_query_calls__issue_ipmi_command(self):
334 _, _, _, _, _, _, _, params = make_parameters()334 _, _, _, _, _, _, _, context = make_parameters()
335 ipmi_power_driver = IPMIPowerDriver()335 ipmi_power_driver = IPMIPowerDriver()
336 _issue_ipmi_command_mock = self.patch(336 _issue_ipmi_command_mock = self.patch(
337 ipmi_power_driver, '_issue_ipmi_command')337 ipmi_power_driver, '_issue_ipmi_command')
338 system_id = factory.make_name('system_id')338 system_id = factory.make_name('system_id')
339 ipmi_power_driver.power_query(system_id, **params)339 ipmi_power_driver.power_query(system_id, context)
340340
341 self.assertThat(341 self.assertThat(
342 _issue_ipmi_command_mock, MockCalledOnceWith('query', **params))342 _issue_ipmi_command_mock, MockCalledOnceWith('query', **context))
343343
=== modified file 'src/provisioningserver/drivers/power/tests/test_moonshot.py'
--- src/provisioningserver/drivers/power/tests/test_moonshot.py 2015-10-01 22:48:50 +0000
+++ src/provisioningserver/drivers/power/tests/test_moonshot.py 2015-11-17 02:16:14 +0000
@@ -66,51 +66,51 @@
66 self.assertItemsEqual([], missing)66 self.assertItemsEqual([], missing)
6767
68 def test__issue_ipmitool_command_issues_power_on(self):68 def test__issue_ipmitool_command_issues_power_on(self):
69 params = make_parameters()69 context = make_parameters()
70 power_change = 'on'70 power_change = 'on'
71 ipmitool_command = make_ipmitool_command(power_change, **params)71 ipmitool_command = make_ipmitool_command(power_change, **context)
72 moonshot_driver = MoonshotIPMIPowerDriver()72 moonshot_driver = MoonshotIPMIPowerDriver()
73 call_and_check_mock = self.patch(moonshot_module, 'call_and_check')73 call_and_check_mock = self.patch(moonshot_module, 'call_and_check')
74 call_and_check_mock.return_value = power_change74 call_and_check_mock.return_value = power_change
7575
76 result = moonshot_driver._issue_ipmitool_command(76 result = moonshot_driver._issue_ipmitool_command(
77 power_change, **params)77 power_change, **context)
7878
79 self.expectThat(79 self.expectThat(
80 call_and_check_mock, MockCalledOnceWith(ipmitool_command))80 call_and_check_mock, MockCalledOnceWith(ipmitool_command))
81 self.expectThat(result, Equals(power_change))81 self.expectThat(result, Equals(power_change))
8282
83 def test__issue_ipmitool_command_issues_power_off(self):83 def test__issue_ipmitool_command_issues_power_off(self):
84 params = make_parameters()84 context = make_parameters()
85 power_change = 'off'85 power_change = 'off'
86 ipmitool_command = make_ipmitool_command(power_change, **params)86 ipmitool_command = make_ipmitool_command(power_change, **context)
87 moonshot_driver = MoonshotIPMIPowerDriver()87 moonshot_driver = MoonshotIPMIPowerDriver()
88 call_and_check_mock = self.patch(moonshot_module, 'call_and_check')88 call_and_check_mock = self.patch(moonshot_module, 'call_and_check')
89 call_and_check_mock.return_value = power_change89 call_and_check_mock.return_value = power_change
9090
91 result = moonshot_driver._issue_ipmitool_command(91 result = moonshot_driver._issue_ipmitool_command(
92 power_change, **params)92 power_change, **context)
9393
94 self.expectThat(94 self.expectThat(
95 call_and_check_mock, MockCalledOnceWith(ipmitool_command))95 call_and_check_mock, MockCalledOnceWith(ipmitool_command))
96 self.expectThat(result, Equals(power_change))96 self.expectThat(result, Equals(power_change))
9797
98 def test__issue_ipmitool_command_raises_power_action_error(self):98 def test__issue_ipmitool_command_raises_power_action_error(self):
99 params = make_parameters()99 context = make_parameters()
100 power_change = 'other'100 power_change = 'other'
101 ipmitool_command = make_ipmitool_command(power_change, **params)101 ipmitool_command = make_ipmitool_command(power_change, **context)
102 moonshot_driver = MoonshotIPMIPowerDriver()102 moonshot_driver = MoonshotIPMIPowerDriver()
103 call_and_check_mock = self.patch(moonshot_module, 'call_and_check')103 call_and_check_mock = self.patch(moonshot_module, 'call_and_check')
104 call_and_check_mock.return_value = power_change104 call_and_check_mock.return_value = power_change
105105
106 self.assertRaises(106 self.assertRaises(
107 PowerActionError, moonshot_driver._issue_ipmitool_command,107 PowerActionError, moonshot_driver._issue_ipmitool_command,
108 power_change, **params)108 power_change, **context)
109 self.expectThat(109 self.expectThat(
110 call_and_check_mock, MockCalledOnceWith(ipmitool_command))110 call_and_check_mock, MockCalledOnceWith(ipmitool_command))
111111
112 def test__issue_ipmitool_raises_power_fatal_error(self):112 def test__issue_ipmitool_raises_power_fatal_error(self):
113 params = make_parameters()113 context = make_parameters()
114 moonshot_driver = MoonshotIPMIPowerDriver()114 moonshot_driver = MoonshotIPMIPowerDriver()
115 call_and_check_mock = self.patch(moonshot_module, 'call_and_check')115 call_and_check_mock = self.patch(moonshot_module, 'call_and_check')
116 call_and_check_mock.side_effect = (116 call_and_check_mock.side_effect = (
@@ -118,38 +118,38 @@
118118
119 self.assertRaises(119 self.assertRaises(
120 PowerFatalError, moonshot_driver._issue_ipmitool_command,120 PowerFatalError, moonshot_driver._issue_ipmitool_command,
121 'status', **params)121 'status', **context)
122122
123 def test_power_on_calls__issue_ipmitool_command(self):123 def test_power_on_calls__issue_ipmitool_command(self):
124 params = make_parameters()124 context = make_parameters()
125 moonshot_driver = MoonshotIPMIPowerDriver()125 moonshot_driver = MoonshotIPMIPowerDriver()
126 _issue_ipmitool_command_mock = self.patch(126 _issue_ipmitool_command_mock = self.patch(
127 moonshot_driver, '_issue_ipmitool_command')127 moonshot_driver, '_issue_ipmitool_command')
128 system_id = factory.make_name('system_id')128 system_id = factory.make_name('system_id')
129 moonshot_driver.power_on(system_id, **params)129 moonshot_driver.power_on(system_id, context)
130130
131 self.assertThat(131 self.assertThat(
132 _issue_ipmitool_command_mock, MockCalledOnceWith('on', **params))132 _issue_ipmitool_command_mock, MockCalledOnceWith('on', **context))
133133
134 def test_power_off_calls__issue_ipmitool_command(self):134 def test_power_off_calls__issue_ipmitool_command(self):
135 params = make_parameters()135 context = make_parameters()
136 moonshot_driver = MoonshotIPMIPowerDriver()136 moonshot_driver = MoonshotIPMIPowerDriver()
137 _issue_ipmitool_command_mock = self.patch(137 _issue_ipmitool_command_mock = self.patch(
138 moonshot_driver, '_issue_ipmitool_command')138 moonshot_driver, '_issue_ipmitool_command')
139 system_id = factory.make_name('system_id')139 system_id = factory.make_name('system_id')
140 moonshot_driver.power_off(system_id, **params)140 moonshot_driver.power_off(system_id, context)
141141
142 self.assertThat(142 self.assertThat(
143 _issue_ipmitool_command_mock, MockCalledOnceWith('off', **params))143 _issue_ipmitool_command_mock, MockCalledOnceWith('off', **context))
144144
145 def test_power_query_calls__issue_ipmitool_command(self):145 def test_power_query_calls__issue_ipmitool_command(self):
146 params = make_parameters()146 context = make_parameters()
147 moonshot_driver = MoonshotIPMIPowerDriver()147 moonshot_driver = MoonshotIPMIPowerDriver()
148 _issue_ipmitool_command_mock = self.patch(148 _issue_ipmitool_command_mock = self.patch(
149 moonshot_driver, '_issue_ipmitool_command')149 moonshot_driver, '_issue_ipmitool_command')
150 system_id = factory.make_name('system_id')150 system_id = factory.make_name('system_id')
151 moonshot_driver.power_query(system_id, **params)151 moonshot_driver.power_query(system_id, context)
152152
153 self.assertThat(153 self.assertThat(
154 _issue_ipmitool_command_mock, MockCalledOnceWith(154 _issue_ipmitool_command_mock, MockCalledOnceWith(
155 'status', **params))155 'status', **context))
156156
=== modified file 'src/provisioningserver/drivers/power/tests/test_mscm.py'
--- src/provisioningserver/drivers/power/tests/test_mscm.py 2015-10-01 22:48:50 +0000
+++ src/provisioningserver/drivers/power/tests/test_mscm.py 2015-11-17 02:16:14 +0000
@@ -40,55 +40,55 @@
40 username = factory.make_name('power_user')40 username = factory.make_name('power_user')
41 password = factory.make_name('power_pass')41 password = factory.make_name('power_pass')
42 node_id = make_node_id()42 node_id = make_node_id()
43 params = {43 context = {
44 'system_id': system_id,44 'system_id': system_id,
45 'power_address': host,45 'power_address': host,
46 'power_user': username,46 'power_user': username,
47 'power_pass': password,47 'power_pass': password,
48 'node_id': node_id,48 'node_id': node_id,
49 }49 }
50 return system_id, host, username, password, node_id, params50 return system_id, host, username, password, node_id, context
5151
52 def test_extract_mscm_parameters_extracts_parameters(self):52 def test_extract_mscm_parameters_extracts_parameters(self):
53 system_id, host, username, password, node_id, params = (53 system_id, host, username, password, node_id, context = (
54 self.make_parameters())54 self.make_parameters())
5555
56 self.assertItemsEqual(56 self.assertItemsEqual(
57 (host, username, password, node_id),57 (host, username, password, node_id),
58 extract_mscm_parameters(params))58 extract_mscm_parameters(context))
5959
60 def test_power_on_calls_power_control_mscm(self):60 def test_power_on_calls_power_control_mscm(self):
61 system_id, host, username, password, node_id, params = (61 system_id, host, username, password, node_id, context = (
62 self.make_parameters())62 self.make_parameters())
63 mscm_power_driver = MSCMPowerDriver()63 mscm_power_driver = MSCMPowerDriver()
64 power_control_mscm = self.patch(64 power_control_mscm = self.patch(
65 mscm_module, 'power_control_mscm')65 mscm_module, 'power_control_mscm')
66 mscm_power_driver.power_on(**params)66 mscm_power_driver.power_on(system_id, context)
6767
68 self.assertThat(68 self.assertThat(
69 power_control_mscm, MockCalledOnceWith(69 power_control_mscm, MockCalledOnceWith(
70 host, username, password, node_id, power_change='on'))70 host, username, password, node_id, power_change='on'))
7171
72 def test_power_off_calls_power_control_mscm(self):72 def test_power_off_calls_power_control_mscm(self):
73 system_id, host, username, password, node_id, params = (73 system_id, host, username, password, node_id, context = (
74 self.make_parameters())74 self.make_parameters())
75 mscm_power_driver = MSCMPowerDriver()75 mscm_power_driver = MSCMPowerDriver()
76 power_control_mscm = self.patch(76 power_control_mscm = self.patch(
77 mscm_module, 'power_control_mscm')77 mscm_module, 'power_control_mscm')
78 mscm_power_driver.power_off(**params)78 mscm_power_driver.power_off(system_id, context)
7979
80 self.assertThat(80 self.assertThat(
81 power_control_mscm, MockCalledOnceWith(81 power_control_mscm, MockCalledOnceWith(
82 host, username, password, node_id, power_change='off'))82 host, username, password, node_id, power_change='off'))
8383
84 def test_power_query_calls_power_state_mscm(self):84 def test_power_query_calls_power_state_mscm(self):
85 system_id, host, username, password, node_id, params = (85 system_id, host, username, password, node_id, context = (
86 self.make_parameters())86 self.make_parameters())
87 mscm_power_driver = MSCMPowerDriver()87 mscm_power_driver = MSCMPowerDriver()
88 power_state_mscm = self.patch(88 power_state_mscm = self.patch(
89 mscm_module, 'power_state_mscm')89 mscm_module, 'power_state_mscm')
90 power_state_mscm.return_value = 'off'90 power_state_mscm.return_value = 'off'
91 expected_result = mscm_power_driver.power_query(**params)91 expected_result = mscm_power_driver.power_query(system_id, context)
9292
93 self.expectThat(93 self.expectThat(
94 power_state_mscm, MockCalledOnceWith(94 power_state_mscm, MockCalledOnceWith(
9595
=== modified file 'src/provisioningserver/drivers/power/tests/test_msftocs.py'
--- src/provisioningserver/drivers/power/tests/test_msftocs.py 2015-10-01 22:48:50 +0000
+++ src/provisioningserver/drivers/power/tests/test_msftocs.py 2015-11-17 02:16:14 +0000
@@ -40,7 +40,7 @@
40 username = factory.make_name('power_user')40 username = factory.make_name('power_user')
41 password = factory.make_name('power_pass')41 password = factory.make_name('power_pass')
42 blade_id = factory.make_name('blade_id')42 blade_id = factory.make_name('blade_id')
43 params = {43 context = {
44 'system_id': system_id,44 'system_id': system_id,
45 'power_address': ip,45 'power_address': ip,
46 'power_port': port,46 'power_port': port,
@@ -48,24 +48,24 @@
48 'power_pass': password,48 'power_pass': password,
49 'blade_id': blade_id,49 'blade_id': blade_id,
50 }50 }
51 return system_id, ip, port, username, password, blade_id, params51 return system_id, ip, port, username, password, blade_id, context
5252
53 def test_extract_msftocs_parameters_extracts_parameters(self):53 def test_extract_msftocs_parameters_extracts_parameters(self):
54 system_id, ip, port, username, password, blade_id, params = (54 system_id, ip, port, username, password, blade_id, context = (
55 self.make_parameters())55 self.make_parameters())
5656
57 self.assertItemsEqual(57 self.assertItemsEqual(
58 (ip, port, username, password, blade_id),58 (ip, port, username, password, blade_id),
59 extract_msftocs_parameters(params))59 extract_msftocs_parameters(context))
6060
61 def test_power_on_calls_power_control_msftocs(self):61 def test_power_on_calls_power_control_msftocs(self):
62 power_change = 'on'62 power_change = 'on'
63 system_id, ip, port, username, password, blade_id, params = (63 system_id, ip, port, username, password, blade_id, context = (
64 self.make_parameters())64 self.make_parameters())
65 msftocs_power_driver = MicrosoftOCSPowerDriver()65 msftocs_power_driver = MicrosoftOCSPowerDriver()
66 power_control_msftocs = self.patch(66 power_control_msftocs = self.patch(
67 msftocs_module, 'power_control_msftocs')67 msftocs_module, 'power_control_msftocs')
68 msftocs_power_driver.power_on(**params)68 msftocs_power_driver.power_on(system_id, context)
6969
70 self.assertThat(70 self.assertThat(
71 power_control_msftocs, MockCalledOnceWith(71 power_control_msftocs, MockCalledOnceWith(
@@ -73,25 +73,25 @@
7373
74 def test_power_off_calls_power_control_msftocs(self):74 def test_power_off_calls_power_control_msftocs(self):
75 power_change = 'off'75 power_change = 'off'
76 system_id, ip, port, username, password, blade_id, params = (76 system_id, ip, port, username, password, blade_id, context = (
77 self.make_parameters())77 self.make_parameters())
78 msftocs_power_driver = MicrosoftOCSPowerDriver()78 msftocs_power_driver = MicrosoftOCSPowerDriver()
79 power_control_msftocs = self.patch(79 power_control_msftocs = self.patch(
80 msftocs_module, 'power_control_msftocs')80 msftocs_module, 'power_control_msftocs')
81 msftocs_power_driver.power_off(**params)81 msftocs_power_driver.power_off(system_id, context)
8282
83 self.assertThat(83 self.assertThat(
84 power_control_msftocs, MockCalledOnceWith(84 power_control_msftocs, MockCalledOnceWith(
85 ip, port, username, password, power_change))85 ip, port, username, password, power_change))
8686
87 def test_power_query_calls_power_state_msftocs(self):87 def test_power_query_calls_power_state_msftocs(self):
88 system_id, ip, port, username, password, blade_id, params = (88 system_id, ip, port, username, password, blade_id, context = (
89 self.make_parameters())89 self.make_parameters())
90 msftocs_power_driver = MicrosoftOCSPowerDriver()90 msftocs_power_driver = MicrosoftOCSPowerDriver()
91 power_state_msftocs = self.patch(91 power_state_msftocs = self.patch(
92 msftocs_module, 'power_state_msftocs')92 msftocs_module, 'power_state_msftocs')
93 power_state_msftocs.return_value = 'off'93 power_state_msftocs.return_value = 'off'
94 expected_result = msftocs_power_driver.power_query(**params)94 expected_result = msftocs_power_driver.power_query(system_id, context)
9595
96 self.expectThat(96 self.expectThat(
97 power_state_msftocs, MockCalledOnceWith(97 power_state_msftocs, MockCalledOnceWith(
9898
=== modified file 'src/provisioningserver/drivers/power/tests/test_seamicro.py'
--- src/provisioningserver/drivers/power/tests/test_seamicro.py 2015-10-01 22:48:50 +0000
+++ src/provisioningserver/drivers/power/tests/test_seamicro.py 2015-11-17 02:16:14 +0000
@@ -50,30 +50,30 @@
50 missing = driver.detect_missing_packages()50 missing = driver.detect_missing_packages()
51 self.assertItemsEqual([], missing)51 self.assertItemsEqual([], missing)
5252
53 def make_parameters(self):53 def make_context(self):
54 ip = factory.make_name('power_address')54 ip = factory.make_name('power_address')
55 username = factory.make_name('power_user')55 username = factory.make_name('power_user')
56 password = factory.make_name('power_pass')56 password = factory.make_name('power_pass')
57 server_id = factory.make_name('system_id')57 server_id = factory.make_name('system_id')
58 params = {58 context = {
59 'power_address': ip,59 'power_address': ip,
60 'power_user': username,60 'power_user': username,
61 'power_pass': password,61 'power_pass': password,
62 'system_id': server_id,62 'system_id': server_id,
63 }63 }
64 return ip, username, password, server_id, params64 return ip, username, password, server_id, context
6565
66 def test_extract_seamicro_parameters_extracts_parameters(self):66 def test_extract_seamicro_parameters_extracts_parameters(self):
67 ip, username, password, server_id, params = self.make_parameters()67 ip, username, password, server_id, context = self.make_context()
68 power_control = choice(['ipmi', 'restapi', 'restapi2'])68 power_control = choice(['ipmi', 'restapi', 'restapi2'])
69 params['power_control'] = power_control69 context['power_control'] = power_control
7070
71 self.assertItemsEqual(71 self.assertItemsEqual(
72 (ip, username, password, server_id, power_control),72 (ip, username, password, server_id, power_control),
73 extract_seamicro_parameters(params))73 extract_seamicro_parameters(context))
7474
75 def test__power_control_seamicro15k_ipmi_calls_call_and_check(self):75 def test__power_control_seamicro15k_ipmi_calls_call_and_check(self):
76 ip, username, password, server_id, _ = self.make_parameters()76 ip, username, password, server_id, _ = self.make_context()
77 power_change = choice(['on', 'off'])77 power_change = choice(['on', 'off'])
78 seamicro_power_driver = SeaMicroPowerDriver()78 seamicro_power_driver = SeaMicroPowerDriver()
79 call_and_check_mock = self.patch(seamicro_module, 'call_and_check')79 call_and_check_mock = self.patch(seamicro_module, 'call_and_check')
@@ -89,7 +89,7 @@
89 ]))89 ]))
9090
91 def test__power_control_seamicro15k_ipmi_raises_PowerFatalError(self):91 def test__power_control_seamicro15k_ipmi_raises_PowerFatalError(self):
92 ip, username, password, server_id, _ = self.make_parameters()92 ip, username, password, server_id, _ = self.make_context()
93 power_change = choice(['on', 'off'])93 power_change = choice(['on', 'off'])
94 seamicro_power_driver = SeaMicroPowerDriver()94 seamicro_power_driver = SeaMicroPowerDriver()
95 call_and_check_mock = self.patch(seamicro_module, 'call_and_check')95 call_and_check_mock = self.patch(seamicro_module, 'call_and_check')
@@ -102,74 +102,73 @@
102 ip, username, password, server_id, power_change)102 ip, username, password, server_id, power_change)
103103
104 def test__power_calls__power_control_seamicro15k_ipmi(self):104 def test__power_calls__power_control_seamicro15k_ipmi(self):
105 ip, username, password, server_id, params = self.make_parameters()105 ip, username, password, server_id, context = self.make_context()
106 params['power_control'] = 'ipmi'106 context['power_control'] = 'ipmi'
107 power_change = choice(['on', 'off'])107 power_change = choice(['on', 'off'])
108 seamicro_power_driver = SeaMicroPowerDriver()108 seamicro_power_driver = SeaMicroPowerDriver()
109 _power_control_seamicro15k_ipmi_mock = self.patch(109 _power_control_seamicro15k_ipmi_mock = self.patch(
110 seamicro_power_driver, '_power_control_seamicro15k_ipmi')110 seamicro_power_driver, '_power_control_seamicro15k_ipmi')
111 seamicro_power_driver._power(power_change, **params)111 seamicro_power_driver._power(power_change, context)
112112
113 self.assertThat(113 self.assertThat(
114 _power_control_seamicro15k_ipmi_mock, MockCalledOnceWith(114 _power_control_seamicro15k_ipmi_mock, MockCalledOnceWith(
115 ip, username, password, server_id, power_change=power_change))115 ip, username, password, server_id, power_change=power_change))
116116
117 def test__power_calls_power_control_seamicro15k_v09(self):117 def test__power_calls_power_control_seamicro15k_v09(self):
118 ip, username, password, server_id, params = self.make_parameters()118 ip, username, password, server_id, context = self.make_context()
119 params['power_control'] = 'restapi'119 context['power_control'] = 'restapi'
120 power_change = choice(['on', 'off'])120 power_change = choice(['on', 'off'])
121 seamicro_power_driver = SeaMicroPowerDriver()121 seamicro_power_driver = SeaMicroPowerDriver()
122 power_control_seamicro15k_v09_mock = self.patch(122 power_control_seamicro15k_v09_mock = self.patch(
123 seamicro_module, 'power_control_seamicro15k_v09')123 seamicro_module, 'power_control_seamicro15k_v09')
124 seamicro_power_driver._power(power_change, **params)124 seamicro_power_driver._power(power_change, context)
125125
126 self.assertThat(126 self.assertThat(
127 power_control_seamicro15k_v09_mock, MockCalledOnceWith(127 power_control_seamicro15k_v09_mock, MockCalledOnceWith(
128 ip, username, password, server_id, power_change=power_change))128 ip, username, password, server_id, power_change=power_change))
129129
130 def test__power_calls_power_control_seamicro15k_v2(self):130 def test__power_calls_power_control_seamicro15k_v2(self):
131 ip, username, password, server_id, params = self.make_parameters()131 ip, username, password, server_id, context = self.make_context()
132 params['power_control'] = 'restapi2'132 context['power_control'] = 'restapi2'
133 power_change = choice(['on', 'off'])133 power_change = choice(['on', 'off'])
134 seamicro_power_driver = SeaMicroPowerDriver()134 seamicro_power_driver = SeaMicroPowerDriver()
135 power_control_seamicro15k_v2_mock = self.patch(135 power_control_seamicro15k_v2_mock = self.patch(
136 seamicro_module, 'power_control_seamicro15k_v2')136 seamicro_module, 'power_control_seamicro15k_v2')
137 seamicro_power_driver._power(power_change, **params)137 seamicro_power_driver._power(power_change, context)
138138
139 self.assertThat(139 self.assertThat(
140 power_control_seamicro15k_v2_mock, MockCalledOnceWith(140 power_control_seamicro15k_v2_mock, MockCalledOnceWith(
141 ip, username, password, server_id, power_change=power_change))141 ip, username, password, server_id, power_change=power_change))
142142
143 def test_power_on_calls_power(self):143 def test_power_on_calls_power(self):
144 _, _, _, _, params = self.make_parameters()144 _, _, _, _, context = self.make_context()
145 params['power_control'] = factory.make_name('power_control')145 context['power_control'] = factory.make_name('power_control')
146 seamicro_power_driver = SeaMicroPowerDriver()146 seamicro_power_driver = SeaMicroPowerDriver()
147 power_mock = self.patch(seamicro_power_driver, '_power')147 power_mock = self.patch(seamicro_power_driver, '_power')
148 seamicro_power_driver.power_on(**params)148 seamicro_power_driver.power_on(context['system_id'], context)
149 del params['system_id']
150149
151 self.assertThat(150 self.assertThat(
152 power_mock, MockCalledOnceWith('on', **params))151 power_mock, MockCalledOnceWith('on', context))
153152
154 def test_power_off_calls_power(self):153 def test_power_off_calls_power(self):
155 _, _, _, _, params = self.make_parameters()154 _, _, _, _, context = self.make_context()
156 params['power_control'] = factory.make_name('power_control')155 context['power_control'] = factory.make_name('power_control')
157 seamicro_power_driver = SeaMicroPowerDriver()156 seamicro_power_driver = SeaMicroPowerDriver()
158 power_mock = self.patch(seamicro_power_driver, '_power')157 power_mock = self.patch(seamicro_power_driver, '_power')
159 seamicro_power_driver.power_off(**params)158 seamicro_power_driver.power_off(context['system_id'], context)
160 del params['system_id']
161159
162 self.assertThat(160 self.assertThat(
163 power_mock, MockCalledOnceWith('off', **params))161 power_mock, MockCalledOnceWith('off', context))
164162
165 def test_power_query_calls_power_query_seamicro15k_v2(self):163 def test_power_query_calls_power_query_seamicro15k_v2(self):
166 ip, username, password, server_id, params = self.make_parameters()164 ip, username, password, server_id, context = self.make_context()
167 params['power_control'] = 'restapi2'165 context['power_control'] = 'restapi2'
168 seamicro_power_driver = SeaMicroPowerDriver()166 seamicro_power_driver = SeaMicroPowerDriver()
169 power_query_seamicro15k_v2_mock = self.patch(167 power_query_seamicro15k_v2_mock = self.patch(
170 seamicro_module, 'power_query_seamicro15k_v2')168 seamicro_module, 'power_query_seamicro15k_v2')
171 power_query_seamicro15k_v2_mock.return_value = 'on'169 power_query_seamicro15k_v2_mock.return_value = 'on'
172 power_state = seamicro_power_driver.power_query(**params)170 power_state = seamicro_power_driver.power_query(
171 context['system_id'], context)
173172
174 self.expectThat(173 self.expectThat(
175 power_query_seamicro15k_v2_mock, MockCalledOnceWith(174 power_query_seamicro15k_v2_mock, MockCalledOnceWith(
@@ -177,9 +176,10 @@
177 self.expectThat(power_state, Equals('on'))176 self.expectThat(power_state, Equals('on'))
178177
179 def test_power_query_returns_unknown_if_not_restapi2(self):178 def test_power_query_returns_unknown_if_not_restapi2(self):
180 ip, username, password, server_id, params = self.make_parameters()179 ip, username, password, server_id, context = self.make_context()
181 params['power_control'] = factory.make_name('power_control')180 context['power_control'] = factory.make_name('power_control')
182 seamicro_power_driver = SeaMicroPowerDriver()181 seamicro_power_driver = SeaMicroPowerDriver()
183 power_state = seamicro_power_driver.power_query(**params)182 power_state = seamicro_power_driver.power_query(
183 context['system_id'], context)
184184
185 self.assertThat(power_state, Equals('unknown'))185 self.assertThat(power_state, Equals('unknown'))
186186
=== modified file 'src/provisioningserver/drivers/power/tests/test_ucsm.py'
--- src/provisioningserver/drivers/power/tests/test_ucsm.py 2015-10-01 22:48:50 +0000
+++ src/provisioningserver/drivers/power/tests/test_ucsm.py 2015-11-17 02:16:14 +0000
@@ -39,55 +39,55 @@
39 username = factory.make_name('power_user')39 username = factory.make_name('power_user')
40 password = factory.make_name('power_pass')40 password = factory.make_name('power_pass')
41 uuid = factory.make_UUID()41 uuid = factory.make_UUID()
42 params = {42 context = {
43 'system_id': system_id,43 'system_id': system_id,
44 'power_address': url,44 'power_address': url,
45 'power_user': username,45 'power_user': username,
46 'power_pass': password,46 'power_pass': password,
47 'uuid': uuid,47 'uuid': uuid,
48 }48 }
49 return system_id, url, username, password, uuid, params49 return system_id, url, username, password, uuid, context
5050
51 def test_extract_ucsm_parameters_extracts_parameters(self):51 def test_extract_ucsm_parameters_extracts_parameters(self):
52 system_id, url, username, password, uuid, params = (52 system_id, url, username, password, uuid, context = (
53 self.make_parameters())53 self.make_parameters())
5454
55 self.assertItemsEqual(55 self.assertItemsEqual(
56 (url, username, password, uuid),56 (url, username, password, uuid),
57 extract_ucsm_parameters(params))57 extract_ucsm_parameters(context))
5858
59 def test_power_on_calls_power_control_ucsm(self):59 def test_power_on_calls_power_control_ucsm(self):
60 system_id, url, username, password, uuid, params = (60 system_id, url, username, password, uuid, context = (
61 self.make_parameters())61 self.make_parameters())
62 ucsm_power_driver = UCSMPowerDriver()62 ucsm_power_driver = UCSMPowerDriver()
63 power_control_ucsm = self.patch(63 power_control_ucsm = self.patch(
64 ucsm_module, 'power_control_ucsm')64 ucsm_module, 'power_control_ucsm')
65 ucsm_power_driver.power_on(**params)65 ucsm_power_driver.power_on(system_id, context)
6666
67 self.assertThat(67 self.assertThat(
68 power_control_ucsm, MockCalledOnceWith(68 power_control_ucsm, MockCalledOnceWith(
69 url, username, password, uuid, maas_power_mode='on'))69 url, username, password, uuid, maas_power_mode='on'))
7070
71 def test_power_off_calls_power_control_ucsm(self):71 def test_power_off_calls_power_control_ucsm(self):
72 system_id, url, username, password, uuid, params = (72 system_id, url, username, password, uuid, context = (
73 self.make_parameters())73 self.make_parameters())
74 ucsm_power_driver = UCSMPowerDriver()74 ucsm_power_driver = UCSMPowerDriver()
75 power_control_ucsm = self.patch(75 power_control_ucsm = self.patch(
76 ucsm_module, 'power_control_ucsm')76 ucsm_module, 'power_control_ucsm')
77 ucsm_power_driver.power_off(**params)77 ucsm_power_driver.power_off(system_id, context)
7878
79 self.assertThat(79 self.assertThat(
80 power_control_ucsm, MockCalledOnceWith(80 power_control_ucsm, MockCalledOnceWith(
81 url, username, password, uuid, maas_power_mode='off'))81 url, username, password, uuid, maas_power_mode='off'))
8282
83 def test_power_query_calls_power_state_ucsm(self):83 def test_power_query_calls_power_state_ucsm(self):
84 system_id, url, username, password, uuid, params = (84 system_id, url, username, password, uuid, context = (
85 self.make_parameters())85 self.make_parameters())
86 ucsm_power_driver = UCSMPowerDriver()86 ucsm_power_driver = UCSMPowerDriver()
87 power_state_ucsm = self.patch(87 power_state_ucsm = self.patch(
88 ucsm_module, 'power_state_ucsm')88 ucsm_module, 'power_state_ucsm')
89 power_state_ucsm.return_value = 'off'89 power_state_ucsm.return_value = 'off'
90 expected_result = ucsm_power_driver.power_query(**params)90 expected_result = ucsm_power_driver.power_query(system_id, context)
9191
92 self.expectThat(92 self.expectThat(
93 power_state_ucsm, MockCalledOnceWith(93 power_state_ucsm, MockCalledOnceWith(
9494
=== modified file 'src/provisioningserver/drivers/power/tests/test_virsh.py'
--- src/provisioningserver/drivers/power/tests/test_virsh.py 2015-10-01 22:48:50 +0000
+++ src/provisioningserver/drivers/power/tests/test_virsh.py 2015-11-17 02:16:14 +0000
@@ -47,30 +47,30 @@
47 poweraddr = factory.make_name('power_address')47 poweraddr = factory.make_name('power_address')
48 machine = factory.make_name('power_id')48 machine = factory.make_name('power_id')
49 password = factory.make_name('power_pass')49 password = factory.make_name('power_pass')
50 params = {50 context = {
51 'system_id': system_id,51 'system_id': system_id,
52 'power_address': poweraddr,52 'power_address': poweraddr,
53 'power_id': machine,53 'power_id': machine,
54 'power_pass': password,54 'power_pass': password,
55 }55 }
56 return system_id, poweraddr, machine, password, params56 return system_id, poweraddr, machine, password, context
5757
58 def test_extract_virsh_parameters_extracts_parameters(self):58 def test_extract_virsh_parameters_extracts_parameters(self):
59 system_id, poweraddr, machine, password, params = (59 system_id, poweraddr, machine, password, context = (
60 self.make_parameters())60 self.make_parameters())
6161
62 self.assertItemsEqual(62 self.assertItemsEqual(
63 (poweraddr, machine, password),63 (poweraddr, machine, password),
64 extract_virsh_parameters(params))64 extract_virsh_parameters(context))
6565
66 def test_power_on_calls_power_control_virsh(self):66 def test_power_on_calls_power_control_virsh(self):
67 power_change = 'on'67 power_change = 'on'
68 system_id, poweraddr, machine, password, params = (68 system_id, poweraddr, machine, password, context = (
69 self.make_parameters())69 self.make_parameters())
70 virsh_power_driver = VirshPowerDriver()70 virsh_power_driver = VirshPowerDriver()
71 power_control_virsh = self.patch(71 power_control_virsh = self.patch(
72 virsh_module, 'power_control_virsh')72 virsh_module, 'power_control_virsh')
73 virsh_power_driver.power_on(**params)73 virsh_power_driver.power_on(system_id, context)
7474
75 self.assertThat(75 self.assertThat(
76 power_control_virsh, MockCalledOnceWith(76 power_control_virsh, MockCalledOnceWith(
@@ -78,25 +78,25 @@
7878
79 def test_power_off_calls_power_control_virsh(self):79 def test_power_off_calls_power_control_virsh(self):
80 power_change = 'off'80 power_change = 'off'
81 system_id, poweraddr, machine, password, params = (81 system_id, poweraddr, machine, password, context = (
82 self.make_parameters())82 self.make_parameters())
83 virsh_power_driver = VirshPowerDriver()83 virsh_power_driver = VirshPowerDriver()
84 power_control_virsh = self.patch(84 power_control_virsh = self.patch(
85 virsh_module, 'power_control_virsh')85 virsh_module, 'power_control_virsh')
86 virsh_power_driver.power_off(**params)86 virsh_power_driver.power_off(system_id, context)
8787
88 self.assertThat(88 self.assertThat(
89 power_control_virsh, MockCalledOnceWith(89 power_control_virsh, MockCalledOnceWith(
90 poweraddr, machine, power_change, password))90 poweraddr, machine, power_change, password))
9191
92 def test_power_query_calls_power_state_virsh(self):92 def test_power_query_calls_power_state_virsh(self):
93 system_id, poweraddr, machine, password, params = (93 system_id, poweraddr, machine, password, context = (
94 self.make_parameters())94 self.make_parameters())
95 virsh_power_driver = VirshPowerDriver()95 virsh_power_driver = VirshPowerDriver()
96 power_state_virsh = self.patch(96 power_state_virsh = self.patch(
97 virsh_module, 'power_state_virsh')97 virsh_module, 'power_state_virsh')
98 power_state_virsh.return_value = 'off'98 power_state_virsh.return_value = 'off'
99 expected_result = virsh_power_driver.power_query(**params)99 expected_result = virsh_power_driver.power_query(system_id, context)
100100
101 self.expectThat(101 self.expectThat(
102 power_state_virsh, MockCalledOnceWith(102 power_state_virsh, MockCalledOnceWith(
103103
=== modified file 'src/provisioningserver/drivers/power/tests/test_vmware.py'
--- src/provisioningserver/drivers/power/tests/test_vmware.py 2015-10-01 22:48:50 +0000
+++ src/provisioningserver/drivers/power/tests/test_vmware.py 2015-11-17 02:16:14 +0000
@@ -1,5 +1,5 @@
1# Copyright 2015 Canonical Ltd. This software is licensed under the1# Copyright 2015 Canonical Ltd. This software is licensed under the
2# GNU Affero General Public License version 3 (see the file LICENSE).2# Gnu Affero General Public License version 3 (see the file LICENSE).
33
4"""Tests for `provisioningserver.drivers.power.vmware`."""4"""Tests for `provisioningserver.drivers.power.vmware`."""
55
@@ -50,7 +50,7 @@
50 vm_name = factory.make_name('power_vm_name')50 vm_name = factory.make_name('power_vm_name')
51 uuid = factory.make_name('power_uuid')51 uuid = factory.make_name('power_uuid')
52 port = protocol = None52 port = protocol = None
53 params = {53 context = {
54 'system_id': system_id,54 'system_id': system_id,
55 'power_address': host,55 'power_address': host,
56 'power_user': username,56 'power_user': username,
@@ -61,24 +61,24 @@
61 'power_protocol': protocol,61 'power_protocol': protocol,
62 }62 }
63 return (system_id, host, username, password,63 return (system_id, host, username, password,
64 vm_name, uuid, port, protocol, params)64 vm_name, uuid, port, protocol, context)
6565
66 def test_extract_vmware_parameters_extracts_parameters(self):66 def test_extract_vmware_parameters_extracts_parameters(self):
67 (system_id, host, username, password,67 (system_id, host, username, password,
68 vm_name, uuid, port, protocol, params) = self.make_parameters()68 vm_name, uuid, port, protocol, context) = self.make_parameters()
6969
70 self.assertItemsEqual(70 self.assertItemsEqual(
71 (host, username, password, vm_name, uuid, port, protocol),71 (host, username, password, vm_name, uuid, port, protocol),
72 extract_vmware_parameters(params))72 extract_vmware_parameters(context))
7373
74 def test_power_on_calls_power_control_vmware(self):74 def test_power_on_calls_power_control_vmware(self):
75 power_change = 'on'75 power_change = 'on'
76 (system_id, host, username, password,76 (system_id, host, username, password,
77 vm_name, uuid, port, protocol, params) = self.make_parameters()77 vm_name, uuid, port, protocol, context) = self.make_parameters()
78 vmware_power_driver = VMwarePowerDriver()78 vmware_power_driver = VMwarePowerDriver()
79 power_control_vmware = self.patch(79 power_control_vmware = self.patch(
80 vmware_module, 'power_control_vmware')80 vmware_module, 'power_control_vmware')
81 vmware_power_driver.power_on(**params)81 vmware_power_driver.power_on(system_id, context)
8282
83 self.assertThat(83 self.assertThat(
84 power_control_vmware, MockCalledOnceWith(84 power_control_vmware, MockCalledOnceWith(
@@ -88,11 +88,11 @@
88 def test_power_off_calls_power_control_vmware(self):88 def test_power_off_calls_power_control_vmware(self):
89 power_change = 'off'89 power_change = 'off'
90 (system_id, host, username, password,90 (system_id, host, username, password,
91 vm_name, uuid, port, protocol, params) = self.make_parameters()91 vm_name, uuid, port, protocol, context) = self.make_parameters()
92 vmware_power_driver = VMwarePowerDriver()92 vmware_power_driver = VMwarePowerDriver()
93 power_control_vmware = self.patch(93 power_control_vmware = self.patch(
94 vmware_module, 'power_control_vmware')94 vmware_module, 'power_control_vmware')
95 vmware_power_driver.power_off(**params)95 vmware_power_driver.power_off(system_id, context)
9696
97 self.assertThat(97 self.assertThat(
98 power_control_vmware, MockCalledOnceWith(98 power_control_vmware, MockCalledOnceWith(
@@ -101,12 +101,12 @@
101101
102 def test_power_query_calls_power_query_vmware(self):102 def test_power_query_calls_power_query_vmware(self):
103 (system_id, host, username, password,103 (system_id, host, username, password,
104 vm_name, uuid, port, protocol, params) = self.make_parameters()104 vm_name, uuid, port, protocol, context) = self.make_parameters()
105 vmware_power_driver = VMwarePowerDriver()105 vmware_power_driver = VMwarePowerDriver()
106 power_query_vmware = self.patch(106 power_query_vmware = self.patch(
107 vmware_module, 'power_query_vmware')107 vmware_module, 'power_query_vmware')
108 power_query_vmware.return_value = 'off'108 power_query_vmware.return_value = 'off'
109 expected_result = vmware_power_driver.power_query(**params)109 expected_result = vmware_power_driver.power_query(system_id, context)
110110
111 self.expectThat(111 self.expectThat(
112 power_query_vmware, MockCalledOnceWith(112 power_query_vmware, MockCalledOnceWith(
113113
=== modified file 'src/provisioningserver/drivers/power/ucsm.py'
--- src/provisioningserver/drivers/power/ucsm.py 2015-09-30 07:16:42 +0000
+++ src/provisioningserver/drivers/power/ucsm.py 2015-11-17 02:16:14 +0000
@@ -21,11 +21,11 @@
21from provisioningserver.drivers.power import PowerDriver21from provisioningserver.drivers.power import PowerDriver
2222
2323
24def extract_ucsm_parameters(params):24def extract_ucsm_parameters(context):
25 url = params.get('power_address')25 url = context.get('power_address')
26 username = params.get('power_user')26 username = context.get('power_user')
27 password = params.get('power_pass')27 password = context.get('power_pass')
28 uuid = params.get('uuid')28 uuid = context.get('uuid')
29 return url, username, password, uuid29 return url, username, password, uuid
3030
3131
@@ -39,19 +39,19 @@
39 # uses urllib2 http client - nothing to look for!39 # uses urllib2 http client - nothing to look for!
40 return []40 return []
4141
42 def power_on(self, system_id, **kwargs):42 def power_on(self, system_id, context):
43 """Power on UCSM node."""43 """Power on UCSM node."""
44 url, username, password, uuid = extract_ucsm_parameters(kwargs)44 url, username, password, uuid = extract_ucsm_parameters(context)
45 power_control_ucsm(45 power_control_ucsm(
46 url, username, password, uuid, maas_power_mode='on')46 url, username, password, uuid, maas_power_mode='on')
4747
48 def power_off(self, system_id, **kwargs):48 def power_off(self, system_id, context):
49 """Power off UCSM node."""49 """Power off UCSM node."""
50 url, username, password, uuid = extract_ucsm_parameters(kwargs)50 url, username, password, uuid = extract_ucsm_parameters(context)
51 power_control_ucsm(51 power_control_ucsm(
52 url, username, password, uuid, maas_power_mode='off')52 url, username, password, uuid, maas_power_mode='off')
5353
54 def power_query(self, system_id, **kwargs):54 def power_query(self, system_id, context):
55 """Power query UCSM node."""55 """Power query UCSM node."""
56 url, username, password, uuid = extract_ucsm_parameters(kwargs)56 url, username, password, uuid = extract_ucsm_parameters(context)
57 return power_state_ucsm(url, username, password, uuid)57 return power_state_ucsm(url, username, password, uuid)
5858
=== modified file 'src/provisioningserver/drivers/power/virsh.py'
--- src/provisioningserver/drivers/power/virsh.py 2015-10-01 22:48:50 +0000
+++ src/provisioningserver/drivers/power/virsh.py 2015-11-17 02:16:14 +0000
@@ -26,10 +26,10 @@
26 ["virt-login-shell", "libvirt-bin"]]26 ["virt-login-shell", "libvirt-bin"]]
2727
2828
29def extract_virsh_parameters(params):29def extract_virsh_parameters(context):
30 poweraddr = params.get('power_address')30 poweraddr = context.get('power_address')
31 machine = params.get('power_id')31 machine = context.get('power_id')
32 password = params.get('power_pass')32 password = context.get('power_pass')
33 return poweraddr, machine, password33 return poweraddr, machine, password
3434
3535
@@ -46,21 +46,21 @@
46 missing_packages.add(package)46 missing_packages.add(package)
47 return list(missing_packages)47 return list(missing_packages)
4848
49 def power_on(self, system_id, **kwargs):49 def power_on(self, system_id, context):
50 """Power on Virsh node."""50 """Power on Virsh node."""
51 power_change = 'on'51 power_change = 'on'
52 poweraddr, machine, password = extract_virsh_parameters(kwargs)52 poweraddr, machine, password = extract_virsh_parameters(context)
53 power_control_virsh(53 power_control_virsh(
54 poweraddr, machine, power_change, password)54 poweraddr, machine, power_change, password)
5555
56 def power_off(self, system_id, **kwargs):56 def power_off(self, system_id, context):
57 """Power off Virsh node."""57 """Power off Virsh node."""
58 power_change = 'off'58 power_change = 'off'
59 poweraddr, machine, password = extract_virsh_parameters(kwargs)59 poweraddr, machine, password = extract_virsh_parameters(context)
60 power_control_virsh(60 power_control_virsh(
61 poweraddr, machine, power_change, password)61 poweraddr, machine, power_change, password)
6262
63 def power_query(self, system_id, **kwargs):63 def power_query(self, system_id, context):
64 """Power query Virsh node."""64 """Power query Virsh node."""
65 poweraddr, machine, password = extract_virsh_parameters(kwargs)65 poweraddr, machine, password = extract_virsh_parameters(context)
66 return power_state_virsh(poweraddr, machine, password)66 return power_state_virsh(poweraddr, machine, password)
6767
=== modified file 'src/provisioningserver/drivers/power/vmware.py'
--- src/provisioningserver/drivers/power/vmware.py 2015-10-01 22:48:50 +0000
+++ src/provisioningserver/drivers/power/vmware.py 2015-11-17 02:16:14 +0000
@@ -22,14 +22,14 @@
22from provisioningserver.drivers.power import PowerDriver22from provisioningserver.drivers.power import PowerDriver
2323
2424
25def extract_vmware_parameters(params):25def extract_vmware_parameters(context):
26 host = params.get('power_address')26 host = context.get('power_address')
27 username = params.get('power_user')27 username = context.get('power_user')
28 password = params.get('power_pass')28 password = context.get('power_pass')
29 vm_name = params.get('power_vm_name')29 vm_name = context.get('power_vm_name')
30 uuid = params.get('power_uuid')30 uuid = context.get('power_uuid')
31 port = params.get('power_port')31 port = context.get('power_port')
32 protocol = params.get('power_protocol')32 protocol = context.get('power_protocol')
33 return host, username, password, vm_name, uuid, port, protocol33 return host, username, password, vm_name, uuid, port, protocol
3434
3535
@@ -44,27 +44,27 @@
44 return ["python-pyvmomi"]44 return ["python-pyvmomi"]
45 return []45 return []
4646
47 def power_on(self, system_id, **kwargs):47 def power_on(self, system_id, context):
48 """Power on VMware node."""48 """Power on VMware node."""
49 power_change = 'on'49 power_change = 'on'
50 host, username, password, vm_name, uuid, port, protocol = (50 host, username, password, vm_name, uuid, port, protocol = (
51 extract_vmware_parameters(kwargs))51 extract_vmware_parameters(context))
52 power_control_vmware(52 power_control_vmware(
53 host, username, password, vm_name,53 host, username, password, vm_name,
54 uuid, power_change, port, protocol)54 uuid, power_change, port, protocol)
5555
56 def power_off(self, system_id, **kwargs):56 def power_off(self, system_id, context):
57 """Power off VMware node."""57 """Power off VMware node."""
58 power_change = 'off'58 power_change = 'off'
59 host, username, password, vm_name, uuid, port, protocol = (59 host, username, password, vm_name, uuid, port, protocol = (
60 extract_vmware_parameters(kwargs))60 extract_vmware_parameters(context))
61 power_control_vmware(61 power_control_vmware(
62 host, username, password, vm_name,62 host, username, password, vm_name,
63 uuid, power_change, port, protocol)63 uuid, power_change, port, protocol)
6464
65 def power_query(self, system_id, **kwargs):65 def power_query(self, system_id, context):
66 """Power query VMware node."""66 """Power query VMware node."""
67 host, username, password, vm_name, uuid, port, protocol = (67 host, username, password, vm_name, uuid, port, protocol = (
68 extract_vmware_parameters(kwargs))68 extract_vmware_parameters(context))
69 return power_query_vmware(69 return power_query_vmware(
70 host, username, password, vm_name, uuid, port, protocol)70 host, username, password, vm_name, uuid, port, protocol)
7171
=== modified file 'src/provisioningserver/power/change.py'
--- src/provisioningserver/power/change.py 2015-10-20 17:59:57 +0000
+++ src/provisioningserver/power/change.py 2015-11-17 02:16:14 +0000
@@ -116,9 +116,9 @@
116 power_driver = PowerDriverRegistry.get_item(power_type)116 power_driver = PowerDriverRegistry.get_item(power_type)
117117
118 if power_change == 'on':118 if power_change == 'on':
119 d = power_driver.on(**context)119 d = power_driver.on(system_id, context)
120 elif power_change == 'off':120 elif power_change == 'off':
121 d = power_driver.off(**context)121 d = power_driver.off(system_id, context)
122122
123 def power_change_failed(failure):123 def power_change_failed(failure):
124 message = "Node could not be powered %s: %s" % (124 message = "Node could not be powered %s: %s" % (
125125
=== modified file 'src/provisioningserver/power/query.py'
--- src/provisioningserver/power/query.py 2015-10-20 17:59:57 +0000
+++ src/provisioningserver/power/query.py 2015-11-17 02:16:14 +0000
@@ -82,7 +82,7 @@
82 """82 """
83 # Get power driver for given power type83 # Get power driver for given power type
84 power_driver = PowerDriverRegistry[power_type]84 power_driver = PowerDriverRegistry[power_type]
85 return power_driver.query(**context)85 return power_driver.query(system_id, context)
8686
8787
88@asynchronous88@asynchronous