Merge lp:~newell-jensen/maas/change-power-driver-parameters into lp:~maas-committers/maas/trunk
- change-power-driver-parameters
- Merge into 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 | ||||
Related bugs: |
|
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.
Description of the change
To post a comment you must log in.
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
1 | === modified file 'src/provisioningserver/drivers/power/__init__.py' |
2 | --- src/provisioningserver/drivers/power/__init__.py 2015-11-06 16:52:07 +0000 |
3 | +++ src/provisioningserver/drivers/power/__init__.py 2015-11-17 02:16:14 +0000 |
4 | @@ -143,32 +143,32 @@ |
5 | """List of settings for the driver. |
6 | |
7 | Each setting in this list will be different per user. They are passed |
8 | - to the `on`, `off`, and `query` using the kwargs. It is up |
9 | + to the `on`, `off`, and `query` using the context. It is up |
10 | to the driver to read these options before performing the operation. |
11 | """ |
12 | |
13 | @abstractmethod |
14 | - def on(self, system_id, **kwargs): |
15 | + def on(self, system_id, context): |
16 | """Perform the power on action for `system_id`. |
17 | |
18 | :param system_id: `Node.system_id` |
19 | - :param kwargs: Power settings for the node. |
20 | + :param context: Power settings for the node. |
21 | """ |
22 | |
23 | @abstractmethod |
24 | - def off(self, system_id, **kwargs): |
25 | + def off(self, system_id, context): |
26 | """Perform the power off action for `system_id`. |
27 | |
28 | :param system_id: `Node.system_id` |
29 | - :param kwargs: Power settings for the node. |
30 | + :param context: Power settings for the node. |
31 | """ |
32 | |
33 | @abstractmethod |
34 | - def query(self, system_id, **kwargs): |
35 | + def query(self, system_id, context): |
36 | """Perform the query action for `system_id`. |
37 | |
38 | :param system_id: `Node.system_id` |
39 | - :param kwargs: Power settings for the node. |
40 | + :param context: Power settings for the node. |
41 | :return: status of power on BMC. `on` or `off`. |
42 | :raises PowerError: states unable to get status from BMC. It is |
43 | up to this method to report the actual issue to the Region. The |
44 | @@ -213,32 +213,32 @@ |
45 | """ |
46 | |
47 | @abstractmethod |
48 | - def power_on(self, system_id, **kwargs): |
49 | + def power_on(self, system_id, context): |
50 | """Implement this method for the actual implementation |
51 | of the power on command. |
52 | """ |
53 | |
54 | @abstractmethod |
55 | - def power_off(self, system_id, **kwargs): |
56 | + def power_off(self, system_id, context): |
57 | """Implement this method for the actual implementation |
58 | of the power off command. |
59 | """ |
60 | |
61 | @abstractmethod |
62 | - def power_query(self, system_id, **kwargs): |
63 | + def power_query(self, system_id, context): |
64 | """Implement this method for the actual implementation |
65 | of the power query command.""" |
66 | |
67 | - def on(self, system_id, **kwargs): |
68 | + def on(self, system_id, context): |
69 | """Performs the power on action for `system_id`. |
70 | |
71 | Do not override `on` method unless you want to provide custom logic on |
72 | how retries and error detection is handled. Override `power_on` for |
73 | just the power on action, and `on` will handle the retrying. |
74 | """ |
75 | - return self.perform_power(self.power_on, "on", system_id, **kwargs) |
76 | + return self.perform_power(self.power_on, "on", system_id, context) |
77 | |
78 | - def off(self, system_id, **kwargs): |
79 | + def off(self, system_id, context): |
80 | """Performs the power off action for `system_id`. |
81 | |
82 | Do not override `off` method unless you want to provide custom logic on |
83 | @@ -246,16 +246,16 @@ |
84 | just the power off action, and `off` will handle the retrying and error |
85 | reporting. |
86 | """ |
87 | - return self.perform_power(self.power_off, "off", system_id, **kwargs) |
88 | + return self.perform_power(self.power_off, "off", system_id, context) |
89 | |
90 | @inlineCallbacks |
91 | - def query(self, system_id, **kwargs): |
92 | + def query(self, system_id, context): |
93 | """Performs the power query action for `system_id`.""" |
94 | exc_info = None, None, None |
95 | for waiting_time in self.wait_time: |
96 | try: |
97 | state = yield deferToThread( |
98 | - self.power_query, system_id, **kwargs) |
99 | + self.power_query, system_id, context) |
100 | except PowerFatalError: |
101 | raise # Don't retry. |
102 | except PowerError: |
103 | @@ -268,7 +268,7 @@ |
104 | raise exc_info[0], exc_info[1], exc_info[2] |
105 | |
106 | @inlineCallbacks |
107 | - def perform_power(self, power_func, state_desired, system_id, **kwargs): |
108 | + def perform_power(self, power_func, state_desired, system_id, context): |
109 | """Provides the logic to perform the power actions. |
110 | |
111 | :param power_func: Function used to change the power state of the |
112 | @@ -285,7 +285,7 @@ |
113 | # Try to change state. |
114 | try: |
115 | yield deferToThread( |
116 | - power_func, system_id, **kwargs) |
117 | + power_func, system_id, context) |
118 | except PowerFatalError: |
119 | raise # Don't retry. |
120 | except PowerError: |
121 | @@ -298,7 +298,7 @@ |
122 | # Try to get power state. |
123 | try: |
124 | state = yield deferToThread( |
125 | - self.power_query, system_id, **kwargs) |
126 | + self.power_query, system_id, context) |
127 | except PowerFatalError: |
128 | raise # Don't retry. |
129 | except PowerError: |
130 | |
131 | === modified file 'src/provisioningserver/drivers/power/amt.py' |
132 | --- src/provisioningserver/drivers/power/amt.py 2015-11-13 17:51:32 +0000 |
133 | +++ src/provisioningserver/drivers/power/amt.py 2015-11-17 02:16:14 +0000 |
134 | @@ -330,15 +330,15 @@ |
135 | else: |
136 | raise PowerFatalError('No host provided') |
137 | |
138 | - def power_on(self, system_id, **kwargs): |
139 | + def power_on(self, system_id, context): |
140 | """Power on AMT node.""" |
141 | ip_address = self._get_ip_address( |
142 | - kwargs.get('power_address'), kwargs.get('ip_address')) |
143 | - power_pass = kwargs.get('power_pass') |
144 | + context.get('power_address'), context.get('ip_address')) |
145 | + power_pass = context.get('power_pass') |
146 | amt_command = self._get_amt_command(ip_address, power_pass) |
147 | if amt_command == 'amttool': |
148 | amttool_boot_mode = self._get_amttool_boot_mode( |
149 | - kwargs.get('boot_mode')) |
150 | + context.get('boot_mode')) |
151 | if self.amttool_query_state(ip_address, power_pass) == 'on': |
152 | self.amttool_restart(ip_address, power_pass, amttool_boot_mode) |
153 | else: |
154 | @@ -350,11 +350,11 @@ |
155 | else: |
156 | self.wsman_power_on(ip_address, power_pass) |
157 | |
158 | - def power_off(self, system_id, **kwargs): |
159 | + def power_off(self, system_id, context): |
160 | """Power off AMT node.""" |
161 | ip_address = self._get_ip_address( |
162 | - kwargs.get('power_address'), kwargs.get('ip_address')) |
163 | - power_pass = kwargs.get('power_pass') |
164 | + context.get('power_address'), context.get('ip_address')) |
165 | + power_pass = context.get('power_pass') |
166 | amt_command = self._get_amt_command(ip_address, power_pass) |
167 | if amt_command == 'amttool': |
168 | if self.amttool_query_state(ip_address, power_pass) != 'off': |
169 | @@ -363,11 +363,11 @@ |
170 | if self.wsman_query_state(ip_address, power_pass) != 'off': |
171 | self.wsman_power_off(ip_address, power_pass) |
172 | |
173 | - def power_query(self, system_id, **kwargs): |
174 | + def power_query(self, system_id, context): |
175 | """Power query AMT node.""" |
176 | ip_address = self._get_ip_address( |
177 | - kwargs.get('power_address'), kwargs.get('ip_address')) |
178 | - power_pass = kwargs.get('power_pass') |
179 | + context.get('power_address'), context.get('ip_address')) |
180 | + power_pass = context.get('power_pass') |
181 | amt_command = self._get_amt_command(ip_address, power_pass) |
182 | if amt_command == 'amttool': |
183 | return self.amttool_query_state(ip_address, power_pass) |
184 | |
185 | === modified file 'src/provisioningserver/drivers/power/apc.py' |
186 | --- src/provisioningserver/drivers/power/apc.py 2015-10-01 22:48:50 +0000 |
187 | +++ src/provisioningserver/drivers/power/apc.py 2015-11-17 02:16:14 +0000 |
188 | @@ -23,10 +23,10 @@ |
189 | from provisioningserver.utils import shell |
190 | |
191 | |
192 | -def extract_apc_parameters(params): |
193 | - ip = params.get('power_address') |
194 | - outlet = params.get('node_outlet') |
195 | - power_on_delay = params.get('power_on_delay') |
196 | +def extract_apc_parameters(context): |
197 | + ip = context.get('power_address') |
198 | + outlet = context.get('node_outlet') |
199 | + power_on_delay = context.get('power_on_delay') |
200 | return ip, outlet, power_on_delay |
201 | |
202 | |
203 | @@ -42,21 +42,21 @@ |
204 | return [package] |
205 | return [] |
206 | |
207 | - def power_on(self, system_id, **kwargs): |
208 | + def power_on(self, system_id, context): |
209 | """Power on Apc outlet.""" |
210 | power_change = 'on' |
211 | - ip, outlet, power_on_delay = extract_apc_parameters(kwargs) |
212 | + ip, outlet, power_on_delay = extract_apc_parameters(context) |
213 | power_control_apc( |
214 | ip, outlet, power_change, power_on_delay) |
215 | |
216 | - def power_off(self, system_id, **kwargs): |
217 | + def power_off(self, system_id, context): |
218 | """Power off APC outlet.""" |
219 | power_change = 'off' |
220 | - ip, outlet, power_on_delay = extract_apc_parameters(kwargs) |
221 | + ip, outlet, power_on_delay = extract_apc_parameters(context) |
222 | power_control_apc( |
223 | ip, outlet, power_change, power_on_delay) |
224 | |
225 | - def power_query(self, system_id, **kwargs): |
226 | + def power_query(self, system_id, context): |
227 | """Power query APC outlet.""" |
228 | - ip, outlet, _ = extract_apc_parameters(kwargs) |
229 | + ip, outlet, _ = extract_apc_parameters(context) |
230 | return power_state_apc(ip, outlet) |
231 | |
232 | === modified file 'src/provisioningserver/drivers/power/dli.py' |
233 | --- src/provisioningserver/drivers/power/dli.py 2015-11-04 15:53:35 +0000 |
234 | +++ src/provisioningserver/drivers/power/dli.py 2015-11-17 02:16:14 +0000 |
235 | @@ -91,14 +91,14 @@ |
236 | "Failed to power query outlet %s: %s" % ( |
237 | outlet_id, e.output_as_unicode)) |
238 | |
239 | - def power_on(self, system_id, **kwargs): |
240 | + def power_on(self, system_id, context): |
241 | """Power on DLI outlet.""" |
242 | - self._set_outlet_state('ON', **kwargs) |
243 | + self._set_outlet_state('ON', **context) |
244 | |
245 | - def power_off(self, system_id, **kwargs): |
246 | + def power_off(self, system_id, context): |
247 | """Power off DLI outlet.""" |
248 | - self._set_outlet_state('OFF', **kwargs) |
249 | + self._set_outlet_state('OFF', **context) |
250 | |
251 | - def power_query(self, system_id, **kwargs): |
252 | + def power_query(self, system_id, context): |
253 | """Power query DLI outlet.""" |
254 | - return self._query_outlet_state(**kwargs) |
255 | + return self._query_outlet_state(**context) |
256 | |
257 | === modified file 'src/provisioningserver/drivers/power/ether_wake.py' |
258 | --- src/provisioningserver/drivers/power/ether_wake.py 2015-10-01 22:48:50 +0000 |
259 | +++ src/provisioningserver/drivers/power/ether_wake.py 2015-11-17 02:16:14 +0000 |
260 | @@ -24,11 +24,11 @@ |
261 | # you need one or the other, not both |
262 | return ['wakeonlan or etherwake'] |
263 | |
264 | - def power_on(self, system_id, **kwargs): |
265 | - raise NotImplementedError |
266 | - |
267 | - def power_off(self, system_id, **kwargs): |
268 | - raise NotImplementedError |
269 | - |
270 | - def power_query(self, system_id, **kwargs): |
271 | + def power_on(self, system_id, context): |
272 | + raise NotImplementedError |
273 | + |
274 | + def power_off(self, system_id, context): |
275 | + raise NotImplementedError |
276 | + |
277 | + def power_query(self, system_id, context): |
278 | raise NotImplementedError |
279 | |
280 | === modified file 'src/provisioningserver/drivers/power/fence_cdu.py' |
281 | --- src/provisioningserver/drivers/power/fence_cdu.py 2015-10-01 22:48:50 +0000 |
282 | +++ src/provisioningserver/drivers/power/fence_cdu.py 2015-11-17 02:16:14 +0000 |
283 | @@ -22,11 +22,11 @@ |
284 | return ['fence-agents'] |
285 | return [] |
286 | |
287 | - def power_on(self, system_id, **kwargs): |
288 | - raise NotImplementedError |
289 | - |
290 | - def power_off(self, system_id, **kwargs): |
291 | - raise NotImplementedError |
292 | - |
293 | - def power_query(self, system_id, **kwargs): |
294 | + def power_on(self, system_id, context): |
295 | + raise NotImplementedError |
296 | + |
297 | + def power_off(self, system_id, context): |
298 | + raise NotImplementedError |
299 | + |
300 | + def power_query(self, system_id, context): |
301 | raise NotImplementedError |
302 | |
303 | === modified file 'src/provisioningserver/drivers/power/hmc.py' |
304 | --- src/provisioningserver/drivers/power/hmc.py 2015-10-01 22:48:50 +0000 |
305 | +++ src/provisioningserver/drivers/power/hmc.py 2015-11-17 02:16:14 +0000 |
306 | @@ -23,12 +23,12 @@ |
307 | from provisioningserver.utils import shell |
308 | |
309 | |
310 | -def extract_hmc_parameters(params): |
311 | - ip = params.get('power_address') |
312 | - username = params.get('power_user') |
313 | - password = params.get('power_pass') |
314 | - server_name = params.get('server_name') |
315 | - lpar = params.get('lpar') |
316 | +def extract_hmc_parameters(context): |
317 | + ip = context.get('power_address') |
318 | + username = context.get('power_user') |
319 | + password = context.get('power_pass') |
320 | + server_name = context.get('server_name') |
321 | + lpar = context.get('lpar') |
322 | return ip, username, password, server_name, lpar |
323 | |
324 | |
325 | @@ -44,19 +44,19 @@ |
326 | return [package] |
327 | return [] |
328 | |
329 | - def power_on(self, system_id, **kwargs): |
330 | + def power_on(self, system_id, context): |
331 | ip, username, password, server_name, lpar = ( |
332 | - extract_hmc_parameters(kwargs)) |
333 | + extract_hmc_parameters(context)) |
334 | power_control_hmc( |
335 | ip, username, password, server_name, lpar, power_change='on') |
336 | |
337 | - def power_off(self, system_id, **kwargs): |
338 | + def power_off(self, system_id, context): |
339 | ip, username, password, server_name, lpar = ( |
340 | - extract_hmc_parameters(kwargs)) |
341 | + extract_hmc_parameters(context)) |
342 | power_control_hmc( |
343 | ip, username, password, server_name, lpar, power_change='off') |
344 | |
345 | - def power_query(self, system_id, **kwargs): |
346 | + def power_query(self, system_id, context): |
347 | ip, username, password, server_name, lpar = ( |
348 | - extract_hmc_parameters(kwargs)) |
349 | + extract_hmc_parameters(context)) |
350 | return power_state_hmc(ip, username, password, server_name, lpar) |
351 | |
352 | === modified file 'src/provisioningserver/drivers/power/ipmi.py' |
353 | --- src/provisioningserver/drivers/power/ipmi.py 2015-10-14 18:10:57 +0000 |
354 | +++ src/provisioningserver/drivers/power/ipmi.py 2015-11-17 02:16:14 +0000 |
355 | @@ -152,11 +152,11 @@ |
356 | return self._issue_ipmi_power_command( |
357 | ipmipower_command, power_change, power_address, env) |
358 | |
359 | - def power_on(self, system_id, **kwargs): |
360 | - self._issue_ipmi_command('on', **kwargs) |
361 | - |
362 | - def power_off(self, system_id, **kwargs): |
363 | - self._issue_ipmi_command('off', **kwargs) |
364 | - |
365 | - def power_query(self, system_id, **kwargs): |
366 | - return self._issue_ipmi_command('query', **kwargs) |
367 | + def power_on(self, system_id, context): |
368 | + self._issue_ipmi_command('on', **context) |
369 | + |
370 | + def power_off(self, system_id, context): |
371 | + self._issue_ipmi_command('off', **context) |
372 | + |
373 | + def power_query(self, system_id, context): |
374 | + return self._issue_ipmi_command('query', **context) |
375 | |
376 | === modified file 'src/provisioningserver/drivers/power/moonshot.py' |
377 | --- src/provisioningserver/drivers/power/moonshot.py 2015-10-01 22:48:50 +0000 |
378 | +++ src/provisioningserver/drivers/power/moonshot.py 2015-11-17 02:16:14 +0000 |
379 | @@ -60,11 +60,11 @@ |
380 | raise PowerActionError( |
381 | "Got unknown power state from ipmipower: %s" % output) |
382 | |
383 | - def power_on(self, system_id, **kwargs): |
384 | - self._issue_ipmitool_command('on', **kwargs) |
385 | - |
386 | - def power_off(self, system_id, **kwargs): |
387 | - self._issue_ipmitool_command('off', **kwargs) |
388 | - |
389 | - def power_query(self, system_id, **kwargs): |
390 | - return self._issue_ipmitool_command('status', **kwargs) |
391 | + def power_on(self, system_id, context): |
392 | + self._issue_ipmitool_command('on', **context) |
393 | + |
394 | + def power_off(self, system_id, context): |
395 | + self._issue_ipmitool_command('off', **context) |
396 | + |
397 | + def power_query(self, system_id, context): |
398 | + return self._issue_ipmitool_command('status', **context) |
399 | |
400 | === modified file 'src/provisioningserver/drivers/power/mscm.py' |
401 | --- src/provisioningserver/drivers/power/mscm.py 2015-09-30 07:16:42 +0000 |
402 | +++ src/provisioningserver/drivers/power/mscm.py 2015-11-17 02:16:14 +0000 |
403 | @@ -21,11 +21,11 @@ |
404 | from provisioningserver.drivers.power import PowerDriver |
405 | |
406 | |
407 | -def extract_mscm_parameters(params): |
408 | - host = params.get('power_address') |
409 | - username = params.get('power_user') |
410 | - password = params.get('power_pass') |
411 | - node_id = params.get('node_id') |
412 | +def extract_mscm_parameters(context): |
413 | + host = context.get('power_address') |
414 | + username = context.get('power_user') |
415 | + password = context.get('power_pass') |
416 | + node_id = context.get('node_id') |
417 | return host, username, password, node_id |
418 | |
419 | |
420 | @@ -39,19 +39,19 @@ |
421 | # uses pure-python paramiko ssh client - nothing to look for! |
422 | return [] |
423 | |
424 | - def power_on(self, system_id, **kwargs): |
425 | + def power_on(self, system_id, context): |
426 | """Power on MSCM node.""" |
427 | - host, username, password, node_id = extract_mscm_parameters(kwargs) |
428 | + host, username, password, node_id = extract_mscm_parameters(context) |
429 | power_control_mscm( |
430 | host, username, password, node_id, power_change='on') |
431 | |
432 | - def power_off(self, system_id, **kwargs): |
433 | + def power_off(self, system_id, context): |
434 | """Power off MSCM node.""" |
435 | - host, username, password, node_id = extract_mscm_parameters(kwargs) |
436 | + host, username, password, node_id = extract_mscm_parameters(context) |
437 | power_control_mscm( |
438 | host, username, password, node_id, power_change='off') |
439 | |
440 | - def power_query(self, system_id, **kwargs): |
441 | + def power_query(self, system_id, context): |
442 | """Power query MSCM node.""" |
443 | - host, username, password, node_id = extract_mscm_parameters(kwargs) |
444 | + host, username, password, node_id = extract_mscm_parameters(context) |
445 | return power_state_mscm(host, username, password, node_id) |
446 | |
447 | === modified file 'src/provisioningserver/drivers/power/msftocs.py' |
448 | --- src/provisioningserver/drivers/power/msftocs.py 2015-09-30 07:16:42 +0000 |
449 | +++ src/provisioningserver/drivers/power/msftocs.py 2015-11-17 02:16:14 +0000 |
450 | @@ -21,12 +21,12 @@ |
451 | from provisioningserver.drivers.power import PowerDriver |
452 | |
453 | |
454 | -def extract_msftocs_parameters(params): |
455 | - ip = params.get('power_address') |
456 | - port = params.get('power_port') |
457 | - username = params.get('power_user') |
458 | - password = params.get('power_pass') |
459 | - blade_id = params.get('blade_id') |
460 | +def extract_msftocs_parameters(context): |
461 | + ip = context.get('power_address') |
462 | + port = context.get('power_port') |
463 | + username = context.get('power_user') |
464 | + password = context.get('power_pass') |
465 | + blade_id = context.get('blade_id') |
466 | return ip, port, username, password, blade_id |
467 | |
468 | |
469 | @@ -40,24 +40,24 @@ |
470 | # uses urllib2 http client - nothing to look for! |
471 | return [] |
472 | |
473 | - def power_on(self, system_id, **kwargs): |
474 | + def power_on(self, system_id, context): |
475 | """Power on MicrosoftOCS node.""" |
476 | power_change = 'on' |
477 | ip, port, username, password, blade_id = ( |
478 | - extract_msftocs_parameters(kwargs)) |
479 | + extract_msftocs_parameters(context)) |
480 | power_control_msftocs( |
481 | ip, port, username, password, power_change) |
482 | |
483 | - def power_off(self, system_id, **kwargs): |
484 | + def power_off(self, system_id, context): |
485 | """Power off MicrosoftOCS node.""" |
486 | power_change = 'off' |
487 | ip, port, username, password, blade_id = ( |
488 | - extract_msftocs_parameters(kwargs)) |
489 | + extract_msftocs_parameters(context)) |
490 | power_control_msftocs( |
491 | ip, port, username, password, power_change) |
492 | |
493 | - def power_query(self, system_id, **kwargs): |
494 | + def power_query(self, system_id, context): |
495 | """Power query MicrosoftOCS node.""" |
496 | ip, port, username, password, blade_id = ( |
497 | - extract_msftocs_parameters(kwargs)) |
498 | + extract_msftocs_parameters(context)) |
499 | return power_state_msftocs(ip, port, username, password, blade_id) |
500 | |
501 | === modified file 'src/provisioningserver/drivers/power/seamicro.py' |
502 | --- src/provisioningserver/drivers/power/seamicro.py 2015-10-01 22:48:50 +0000 |
503 | +++ src/provisioningserver/drivers/power/seamicro.py 2015-11-17 02:16:14 +0000 |
504 | @@ -30,12 +30,12 @@ |
505 | ) |
506 | |
507 | |
508 | -def extract_seamicro_parameters(params): |
509 | - ip = params.get('power_address') |
510 | - username = params.get('power_user') |
511 | - password = params.get('power_pass') |
512 | - server_id = params.get('system_id') |
513 | - power_control = params.get('power_control') |
514 | +def extract_seamicro_parameters(context): |
515 | + ip = context.get('power_address') |
516 | + username = context.get('power_user') |
517 | + password = context.get('power_pass') |
518 | + server_id = context.get('system_id') |
519 | + power_control = context.get('power_control') |
520 | return ip, username, password, server_id, power_control |
521 | |
522 | |
523 | @@ -65,10 +65,10 @@ |
524 | "Failed to power %s %s at %s: %s" % ( |
525 | power_change, server_id, ip, e.output_as_unicode)) |
526 | |
527 | - def _power(self, power_change, **kwargs): |
528 | + def _power(self, power_change, context): |
529 | """Power SeaMicro node.""" |
530 | ip, username, password, server_id, power_control = ( |
531 | - extract_seamicro_parameters(kwargs)) |
532 | + extract_seamicro_parameters(context)) |
533 | if power_control == 'ipmi': |
534 | self._power_control_seamicro15k_ipmi( |
535 | ip, username, password, server_id, power_change=power_change) |
536 | @@ -79,20 +79,20 @@ |
537 | power_control_seamicro15k_v2( |
538 | ip, username, password, server_id, power_change=power_change) |
539 | |
540 | - def power_on(self, system_id, **kwargs): |
541 | + def power_on(self, system_id, context): |
542 | """Power on SeaMicro node.""" |
543 | - self._power('on', **kwargs) |
544 | + self._power('on', context) |
545 | |
546 | - def power_off(self, system_id, **kwargs): |
547 | + def power_off(self, system_id, context): |
548 | """Power off SeaMicro node.""" |
549 | - self._power('off', **kwargs) |
550 | + self._power('off', context) |
551 | |
552 | - def power_query(self, system_id, **kwargs): |
553 | + def power_query(self, system_id, context): |
554 | """Power query SeaMicro node.""" |
555 | # Query the state. |
556 | # Only supported by REST v2. |
557 | ip, username, password, _, power_control = ( |
558 | - extract_seamicro_parameters(kwargs)) |
559 | + extract_seamicro_parameters(context)) |
560 | if power_control == 'restapi2': |
561 | return power_query_seamicro15k_v2( |
562 | ip, username, password, system_id) |
563 | |
564 | === modified file 'src/provisioningserver/drivers/power/tests/test_amt.py' |
565 | --- src/provisioningserver/drivers/power/tests/test_amt.py 2015-11-13 17:51:32 +0000 |
566 | +++ src/provisioningserver/drivers/power/tests/test_amt.py 2015-11-17 02:16:14 +0000 |
567 | @@ -66,6 +66,16 @@ |
568 | """) |
569 | |
570 | |
571 | +def make_parameters(): |
572 | + return { |
573 | + 'system_id': factory.make_name('system_id'), |
574 | + 'power_address': factory.make_name('power_address'), |
575 | + 'ip_address': factory.make_ipv4_address(), |
576 | + 'power_pass': factory.make_name('power_pass'), |
577 | + 'boot_mode': factory.make_name('boot_mode'), |
578 | + } |
579 | + |
580 | + |
581 | class TestAMTPowerDriver(MAASTestCase): |
582 | |
583 | def patch_popen(self, return_value=(None, None), returncode=0): |
584 | @@ -589,13 +599,7 @@ |
585 | |
586 | def test_power_on_powers_on_with_amttool_when_already_on(self): |
587 | amt_power_driver = AMTPowerDriver() |
588 | - kwargs = { |
589 | - 'system_id': factory.make_name('system_id'), |
590 | - 'power_address': factory.make_name('power_address'), |
591 | - 'ip_address': factory.make_ipv4_address(), |
592 | - 'power_pass': factory.make_name('power_pass'), |
593 | - 'boot_mode': factory.make_name('boot_mode'), |
594 | - } |
595 | + context = make_parameters() |
596 | _get_amt_command_mock = self.patch( |
597 | amt_power_driver, '_get_amt_command') |
598 | _get_amt_command_mock.return_value = 'amttool' |
599 | @@ -605,28 +609,22 @@ |
600 | amttool_restart_mock = self.patch( |
601 | amt_power_driver, 'amttool_restart') |
602 | |
603 | - amt_power_driver.power_on(**kwargs) |
604 | + amt_power_driver.power_on(context['system_id'], context) |
605 | |
606 | self.expectThat( |
607 | _get_amt_command_mock, MockCalledOnceWith( |
608 | - kwargs['ip_address'], kwargs['power_pass'])) |
609 | + context['ip_address'], context['power_pass'])) |
610 | self.expectThat( |
611 | amttool_query_state_mock, MockCalledOnceWith( |
612 | - kwargs['ip_address'], kwargs['power_pass'])) |
613 | + context['ip_address'], context['power_pass'])) |
614 | self.expectThat( |
615 | amttool_restart_mock, MockCalledOnceWith( |
616 | - kwargs['ip_address'], kwargs['power_pass'], |
617 | - kwargs['boot_mode'])) |
618 | + context['ip_address'], context['power_pass'], |
619 | + context['boot_mode'])) |
620 | |
621 | def test_power_on_powers_on_with_amttool_when_already_off(self): |
622 | amt_power_driver = AMTPowerDriver() |
623 | - kwargs = { |
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 | + context = make_parameters() |
631 | _get_amt_command_mock = self.patch( |
632 | amt_power_driver, '_get_amt_command') |
633 | _get_amt_command_mock.return_value = 'amttool' |
634 | @@ -636,27 +634,22 @@ |
635 | amttool_power_on_mock = self.patch( |
636 | amt_power_driver, 'amttool_power_on') |
637 | |
638 | - amt_power_driver.power_on(**kwargs) |
639 | + amt_power_driver.power_on(context['system_id'], context) |
640 | |
641 | self.expectThat( |
642 | _get_amt_command_mock, MockCalledOnceWith( |
643 | - kwargs['ip_address'], kwargs['power_pass'])) |
644 | + context['ip_address'], context['power_pass'])) |
645 | self.expectThat( |
646 | amttool_query_state_mock, MockCalledOnceWith( |
647 | - kwargs['ip_address'], kwargs['power_pass'])) |
648 | + context['ip_address'], context['power_pass'])) |
649 | self.expectThat( |
650 | amttool_power_on_mock, MockCalledOnceWith( |
651 | - kwargs['ip_address'], kwargs['power_pass'], |
652 | - kwargs['boot_mode'])) |
653 | + context['ip_address'], context['power_pass'], |
654 | + context['boot_mode'])) |
655 | |
656 | def test_power_on_powers_on_with_wsman_when_already_on(self): |
657 | amt_power_driver = AMTPowerDriver() |
658 | - kwargs = { |
659 | - 'system_id': factory.make_name('system_id'), |
660 | - 'power_address': factory.make_name('power_address'), |
661 | - 'ip_address': factory.make_ipv4_address(), |
662 | - 'power_pass': factory.make_name('power_pass'), |
663 | - } |
664 | + context = make_parameters() |
665 | _get_amt_command_mock = self.patch( |
666 | amt_power_driver, '_get_amt_command') |
667 | _get_amt_command_mock.return_value = 'wsman' |
668 | @@ -666,26 +659,21 @@ |
669 | wsman_restart_mock = self.patch( |
670 | amt_power_driver, 'wsman_restart') |
671 | |
672 | - amt_power_driver.power_on(**kwargs) |
673 | + amt_power_driver.power_on(context['system_id'], context) |
674 | |
675 | self.expectThat( |
676 | _get_amt_command_mock, MockCalledOnceWith( |
677 | - kwargs['ip_address'], kwargs['power_pass'])) |
678 | + context['ip_address'], context['power_pass'])) |
679 | self.expectThat( |
680 | wsman_query_state_mock, MockCalledOnceWith( |
681 | - kwargs['ip_address'], kwargs['power_pass'])) |
682 | + context['ip_address'], context['power_pass'])) |
683 | self.expectThat( |
684 | wsman_restart_mock, MockCalledOnceWith( |
685 | - kwargs['ip_address'], kwargs['power_pass'])) |
686 | + context['ip_address'], context['power_pass'])) |
687 | |
688 | def test_power_on_powers_on_with_wsman_when_already_off(self): |
689 | amt_power_driver = AMTPowerDriver() |
690 | - kwargs = { |
691 | - 'system_id': factory.make_name('system_id'), |
692 | - 'power_address': factory.make_name('power_address'), |
693 | - 'ip_address': factory.make_ipv4_address(), |
694 | - 'power_pass': factory.make_name('power_pass'), |
695 | - } |
696 | + context = make_parameters() |
697 | _get_amt_command_mock = self.patch( |
698 | amt_power_driver, '_get_amt_command') |
699 | _get_amt_command_mock.return_value = 'wsman' |
700 | @@ -695,26 +683,21 @@ |
701 | wsman_power_on_mock = self.patch( |
702 | amt_power_driver, 'wsman_power_on') |
703 | |
704 | - amt_power_driver.power_on(**kwargs) |
705 | + amt_power_driver.power_on(context['system_id'], context) |
706 | |
707 | self.expectThat( |
708 | _get_amt_command_mock, MockCalledOnceWith( |
709 | - kwargs['ip_address'], kwargs['power_pass'])) |
710 | + context['ip_address'], context['power_pass'])) |
711 | self.expectThat( |
712 | wsman_query_state_mock, MockCalledOnceWith( |
713 | - kwargs['ip_address'], kwargs['power_pass'])) |
714 | + context['ip_address'], context['power_pass'])) |
715 | self.expectThat( |
716 | wsman_power_on_mock, MockCalledOnceWith( |
717 | - kwargs['ip_address'], kwargs['power_pass'])) |
718 | + context['ip_address'], context['power_pass'])) |
719 | |
720 | def test_power_off_powers_off_with_amttool(self): |
721 | amt_power_driver = AMTPowerDriver() |
722 | - kwargs = { |
723 | - 'system_id': factory.make_name('system_id'), |
724 | - 'power_address': factory.make_name('power_address'), |
725 | - 'ip_address': factory.make_ipv4_address(), |
726 | - 'power_pass': factory.make_name('power_pass'), |
727 | - } |
728 | + context = make_parameters() |
729 | _get_amt_command_mock = self.patch( |
730 | amt_power_driver, '_get_amt_command') |
731 | _get_amt_command_mock.return_value = 'amttool' |
732 | @@ -724,26 +707,20 @@ |
733 | amttool_power_off_mock = self.patch( |
734 | amt_power_driver, 'amttool_power_off') |
735 | |
736 | - amt_power_driver.power_off(**kwargs) |
737 | - |
738 | + amt_power_driver.power_off(context['system_id'], context) |
739 | self.expectThat( |
740 | _get_amt_command_mock, MockCalledOnceWith( |
741 | - kwargs['ip_address'], kwargs['power_pass'])) |
742 | + context['ip_address'], context['power_pass'])) |
743 | self.expectThat( |
744 | amttool_query_state_mock, MockCalledOnceWith( |
745 | - kwargs['ip_address'], kwargs['power_pass'])) |
746 | + context['ip_address'], context['power_pass'])) |
747 | self.expectThat( |
748 | amttool_power_off_mock, MockCalledOnceWith( |
749 | - kwargs['ip_address'], kwargs['power_pass'])) |
750 | + context['ip_address'], context['power_pass'])) |
751 | |
752 | def test_power_off_powers_off_with_wsman(self): |
753 | amt_power_driver = AMTPowerDriver() |
754 | - kwargs = { |
755 | - 'system_id': factory.make_name('system_id'), |
756 | - 'power_address': factory.make_name('power_address'), |
757 | - 'ip_address': factory.make_ipv4_address(), |
758 | - 'power_pass': factory.make_name('power_pass'), |
759 | - } |
760 | + context = make_parameters() |
761 | _get_amt_command_mock = self.patch( |
762 | amt_power_driver, '_get_amt_command') |
763 | _get_amt_command_mock.return_value = 'wsman' |
764 | @@ -753,26 +730,20 @@ |
765 | wsman_power_off_mock = self.patch( |
766 | amt_power_driver, 'wsman_power_off') |
767 | |
768 | - amt_power_driver.power_off(**kwargs) |
769 | - |
770 | + amt_power_driver.power_off(context['system_id'], context) |
771 | self.expectThat( |
772 | _get_amt_command_mock, MockCalledOnceWith( |
773 | - kwargs['ip_address'], kwargs['power_pass'])) |
774 | + context['ip_address'], context['power_pass'])) |
775 | self.expectThat( |
776 | wsman_query_state_mock, MockCalledOnceWith( |
777 | - kwargs['ip_address'], kwargs['power_pass'])) |
778 | + context['ip_address'], context['power_pass'])) |
779 | self.expectThat( |
780 | wsman_power_off_mock, MockCalledOnceWith( |
781 | - kwargs['ip_address'], kwargs['power_pass'])) |
782 | + context['ip_address'], context['power_pass'])) |
783 | |
784 | def test_power_query_queries_with_amttool(self): |
785 | amt_power_driver = AMTPowerDriver() |
786 | - kwargs = { |
787 | - 'system_id': factory.make_name('system_id'), |
788 | - 'power_address': factory.make_name('power_address'), |
789 | - 'ip_address': factory.make_ipv4_address(), |
790 | - 'power_pass': factory.make_name('power_pass'), |
791 | - } |
792 | + context = make_parameters() |
793 | _get_amt_command_mock = self.patch( |
794 | amt_power_driver, '_get_amt_command') |
795 | _get_amt_command_mock.return_value = 'amttool' |
796 | @@ -780,24 +751,19 @@ |
797 | amt_power_driver, 'amttool_query_state') |
798 | amttool_query_state_mock.return_value = 'off' |
799 | |
800 | - state = amt_power_driver.power_query(**kwargs) |
801 | + state = amt_power_driver.power_query(context['system_id'], context) |
802 | |
803 | self.expectThat( |
804 | _get_amt_command_mock, MockCalledOnceWith( |
805 | - kwargs['ip_address'], kwargs['power_pass'])) |
806 | + context['ip_address'], context['power_pass'])) |
807 | self.expectThat( |
808 | amttool_query_state_mock, MockCalledOnceWith( |
809 | - kwargs['ip_address'], kwargs['power_pass'])) |
810 | + context['ip_address'], context['power_pass'])) |
811 | self.expectThat(state, Equals('off')) |
812 | |
813 | def test_power_query_queries_with_wsman(self): |
814 | amt_power_driver = AMTPowerDriver() |
815 | - kwargs = { |
816 | - 'system_id': factory.make_name('system_id'), |
817 | - 'power_address': factory.make_name('power_address'), |
818 | - 'ip_address': factory.make_ipv4_address(), |
819 | - 'power_pass': factory.make_name('power_pass'), |
820 | - } |
821 | + context = make_parameters() |
822 | _get_amt_command_mock = self.patch( |
823 | amt_power_driver, '_get_amt_command') |
824 | _get_amt_command_mock.return_value = 'wsman' |
825 | @@ -805,12 +771,12 @@ |
826 | amt_power_driver, 'wsman_query_state') |
827 | wsman_query_state_mock.return_value = 'on' |
828 | |
829 | - state = amt_power_driver.power_query(**kwargs) |
830 | + state = amt_power_driver.power_query(context['system_id'], context) |
831 | |
832 | self.expectThat( |
833 | _get_amt_command_mock, MockCalledOnceWith( |
834 | - kwargs['ip_address'], kwargs['power_pass'])) |
835 | + context['ip_address'], context['power_pass'])) |
836 | self.expectThat( |
837 | wsman_query_state_mock, MockCalledOnceWith( |
838 | - kwargs['ip_address'], kwargs['power_pass'])) |
839 | + context['ip_address'], context['power_pass'])) |
840 | self.expectThat(state, Equals('on')) |
841 | |
842 | === modified file 'src/provisioningserver/drivers/power/tests/test_apc.py' |
843 | --- src/provisioningserver/drivers/power/tests/test_apc.py 2015-10-01 22:48:50 +0000 |
844 | +++ src/provisioningserver/drivers/power/tests/test_apc.py 2015-11-17 02:16:14 +0000 |
845 | @@ -49,28 +49,28 @@ |
846 | ip = factory.make_ipv4_address() |
847 | outlet = '%d' % randint(1, 16) |
848 | power_on_delay = '%d' % randint(1, 5) |
849 | - params = { |
850 | + context = { |
851 | 'system_id': system_id, |
852 | 'power_address': ip, |
853 | 'node_outlet': outlet, |
854 | 'power_on_delay': power_on_delay, |
855 | } |
856 | - return system_id, ip, outlet, power_on_delay, params |
857 | + return system_id, ip, outlet, power_on_delay, context |
858 | |
859 | def test_extract_apc_parameters_extracts_parameters(self): |
860 | - system_id, ip, outlet, power_on_delay, params = self.make_parameters() |
861 | + system_id, ip, outlet, power_on_delay, context = self.make_parameters() |
862 | |
863 | self.assertItemsEqual( |
864 | (ip, outlet, power_on_delay), |
865 | - extract_apc_parameters(params)) |
866 | + extract_apc_parameters(context)) |
867 | |
868 | def test_power_on_calls_power_control_apc(self): |
869 | power_change = 'on' |
870 | - system_id, ip, outlet, power_on_delay, params = self.make_parameters() |
871 | + system_id, ip, outlet, power_on_delay, context = self.make_parameters() |
872 | apc_power_driver = APCPowerDriver() |
873 | power_control_apc = self.patch( |
874 | apc_module, 'power_control_apc') |
875 | - apc_power_driver.power_on(**params) |
876 | + apc_power_driver.power_on(system_id, context) |
877 | |
878 | self.assertThat( |
879 | power_control_apc, MockCalledOnceWith( |
880 | @@ -78,23 +78,23 @@ |
881 | |
882 | def test_power_off_calls_power_control_apc(self): |
883 | power_change = 'off' |
884 | - system_id, ip, outlet, power_on_delay, params = self.make_parameters() |
885 | + system_id, ip, outlet, power_on_delay, context = self.make_parameters() |
886 | apc_power_driver = APCPowerDriver() |
887 | power_control_apc = self.patch( |
888 | apc_module, 'power_control_apc') |
889 | - apc_power_driver.power_off(**params) |
890 | + apc_power_driver.power_off(system_id, context) |
891 | |
892 | self.assertThat( |
893 | power_control_apc, MockCalledOnceWith( |
894 | ip, outlet, power_change, power_on_delay)) |
895 | |
896 | def test_power_query_calls_power_state_apc(self): |
897 | - system_id, ip, outlet, power_on_delay, params = self.make_parameters() |
898 | + system_id, ip, outlet, power_on_delay, context = self.make_parameters() |
899 | apc_power_driver = APCPowerDriver() |
900 | power_state_apc = self.patch( |
901 | apc_module, 'power_state_apc') |
902 | power_state_apc.return_value = 'off' |
903 | - expected_result = apc_power_driver.power_query(**params) |
904 | + expected_result = apc_power_driver.power_query(system_id, context) |
905 | |
906 | self.expectThat( |
907 | power_state_apc, MockCalledOnceWith(ip, outlet)) |
908 | |
909 | === modified file 'src/provisioningserver/drivers/power/tests/test_base.py' |
910 | --- src/provisioningserver/drivers/power/tests/test_base.py 2015-09-30 00:05:45 +0000 |
911 | +++ src/provisioningserver/drivers/power/tests/test_base.py 2015-11-17 02:16:14 +0000 |
912 | @@ -65,13 +65,13 @@ |
913 | self.settings = settings |
914 | super(FakePowerDriverBase, self).__init__() |
915 | |
916 | - def on(self, system_id, **kwargs): |
917 | - raise NotImplementedError |
918 | - |
919 | - def off(self, system_id, **kwargs): |
920 | - raise NotImplementedError |
921 | - |
922 | - def query(self, system_id, **kwargs): |
923 | + def on(self, system_id, context): |
924 | + raise NotImplementedError |
925 | + |
926 | + def off(self, system_id, context): |
927 | + raise NotImplementedError |
928 | + |
929 | + def query(self, system_id, context): |
930 | raise NotImplementedError |
931 | |
932 | |
933 | @@ -131,19 +131,19 @@ |
934 | fake_driver = make_power_driver_base() |
935 | self.assertRaises( |
936 | NotImplementedError, |
937 | - fake_driver.on, sentinel.system_id) |
938 | + fake_driver.on, sentinel.system_id, sentinel.context) |
939 | |
940 | def test_off_raises_not_implemented(self): |
941 | fake_driver = make_power_driver_base() |
942 | self.assertRaises( |
943 | NotImplementedError, |
944 | - fake_driver.off, sentinel.system_id) |
945 | + fake_driver.off, sentinel.system_id, sentinel.context) |
946 | |
947 | def test_query_raises_not_implemented(self): |
948 | fake_driver = make_power_driver_base() |
949 | self.assertRaises( |
950 | NotImplementedError, |
951 | - fake_driver.query, sentinel.system_id) |
952 | + fake_driver.query, sentinel.system_id, sentinel.context) |
953 | |
954 | |
955 | class TestPowerDriverBase(MAASTestCase): |
956 | @@ -256,13 +256,13 @@ |
957 | def detect_missing_packages(self): |
958 | raise NotImplementedError |
959 | |
960 | - def power_on(self, system_id, **kwargs): |
961 | - raise NotImplementedError |
962 | - |
963 | - def power_off(self, system_id, **kwargs): |
964 | - raise NotImplementedError |
965 | - |
966 | - def power_query(self, system_id, **kwargs): |
967 | + def power_on(self, system_id, context): |
968 | + raise NotImplementedError |
969 | + |
970 | + def power_off(self, system_id, context): |
971 | + raise NotImplementedError |
972 | + |
973 | + def power_query(self, system_id, context): |
974 | raise NotImplementedError |
975 | |
976 | |
977 | @@ -297,16 +297,18 @@ |
978 | @inlineCallbacks |
979 | def test_success(self): |
980 | system_id = factory.make_name('system_id') |
981 | + context = {'context': factory.make_name('context')} |
982 | driver = make_power_driver(wait_time=[0]) |
983 | self.patch(driver, self.action_func) |
984 | self.patch(driver, 'power_query').return_value = self.action |
985 | method = getattr(driver, self.action) |
986 | - result = yield method(system_id) |
987 | + result = yield method(system_id, context) |
988 | self.assertEqual(result, None) |
989 | |
990 | @inlineCallbacks |
991 | def test_handles_fatal_error_on_first_call(self): |
992 | system_id = factory.make_name('system_id') |
993 | + context = {'context': factory.make_name('context')} |
994 | driver = make_power_driver(wait_time=[0, 0]) |
995 | mock_on = self.patch(driver, self.action_func) |
996 | mock_on.side_effect = [PowerFatalError(), None] |
997 | @@ -314,7 +316,7 @@ |
998 | mock_query.return_value = self.action |
999 | method = getattr(driver, self.action) |
1000 | with ExpectedException(PowerFatalError): |
1001 | - yield method(system_id) |
1002 | + yield method(system_id, context) |
1003 | self.expectThat( |
1004 | mock_query, |
1005 | Equals(MockNotCalled())) |
1006 | @@ -322,21 +324,23 @@ |
1007 | @inlineCallbacks |
1008 | def test_handles_non_fatal_error_on_first_call(self): |
1009 | system_id = factory.make_name('system_id') |
1010 | + context = {'context': factory.make_name('context')} |
1011 | driver = make_power_driver(wait_time=[0, 0]) |
1012 | mock_on = self.patch(driver, self.action_func) |
1013 | mock_on.side_effect = [PowerError(), None] |
1014 | mock_query = self.patch(driver, 'power_query') |
1015 | mock_query.return_value = self.action |
1016 | method = getattr(driver, self.action) |
1017 | - result = yield method(system_id) |
1018 | + result = yield method(system_id, context) |
1019 | self.expectThat( |
1020 | mock_query, |
1021 | - Equals(MockCalledOnceWith(system_id))) |
1022 | + Equals(MockCalledOnceWith(system_id, context))) |
1023 | self.expectThat(result, Equals(None)) |
1024 | |
1025 | @inlineCallbacks |
1026 | def test_handles_non_fatal_error_and_holds_error(self): |
1027 | system_id = factory.make_name('system_id') |
1028 | + context = {'context': factory.make_name('context')} |
1029 | driver = make_power_driver(wait_time=[0]) |
1030 | error_msg = factory.make_name('error') |
1031 | self.patch(driver, self.action_func) |
1032 | @@ -344,31 +348,33 @@ |
1033 | mock_query.side_effect = PowerError(error_msg) |
1034 | method = getattr(driver, self.action) |
1035 | with ExpectedException(PowerError): |
1036 | - yield method(system_id) |
1037 | + yield method(system_id, context) |
1038 | self.expectThat( |
1039 | mock_query, |
1040 | - Equals(MockCalledOnceWith(system_id))) |
1041 | + Equals(MockCalledOnceWith(system_id, context))) |
1042 | |
1043 | @inlineCallbacks |
1044 | def test_handles_non_fatal_error(self): |
1045 | system_id = factory.make_name('system_id') |
1046 | + context = {'context': factory.make_name('context')} |
1047 | driver = make_power_driver(wait_time=[0]) |
1048 | mock_on = self.patch(driver, self.action_func) |
1049 | mock_on.side_effect = PowerError() |
1050 | method = getattr(driver, self.action) |
1051 | with ExpectedException(PowerError): |
1052 | - yield method(system_id) |
1053 | + yield method(system_id, context) |
1054 | |
1055 | @inlineCallbacks |
1056 | def test_handles_fails_to_complete_power_action_in_time(self): |
1057 | system_id = factory.make_name('system_id') |
1058 | + context = {'context': factory.make_name('context')} |
1059 | driver = make_power_driver(wait_time=[0]) |
1060 | self.patch(driver, self.action_func) |
1061 | mock_query = self.patch(driver, 'power_query') |
1062 | mock_query.return_value = self.bad_state |
1063 | method = getattr(driver, self.action) |
1064 | with ExpectedException(PowerError): |
1065 | - yield method(system_id) |
1066 | + yield method(system_id, context) |
1067 | |
1068 | |
1069 | class TestPowerDriverQuery(MAASTestCase): |
1070 | @@ -382,10 +388,11 @@ |
1071 | @inlineCallbacks |
1072 | def test_returns_state(self): |
1073 | system_id = factory.make_name('system_id') |
1074 | + context = {'context': factory.make_name('context')} |
1075 | driver = make_power_driver() |
1076 | state = factory.make_name('state') |
1077 | self.patch(driver, 'power_query').return_value = state |
1078 | - output = yield driver.query(system_id) |
1079 | + output = yield driver.query(system_id, context) |
1080 | self.assertEqual(state, output) |
1081 | |
1082 | @inlineCallbacks |
1083 | @@ -393,7 +400,7 @@ |
1084 | driver = make_power_driver() |
1085 | self.patch(driver, 'power_query').side_effect = [ |
1086 | PowerError("one"), PowerError("two"), sentinel.state] |
1087 | - output = yield driver.query(sentinel.system_id) |
1088 | + output = yield driver.query(sentinel.system_id, sentinel.context) |
1089 | self.assertEqual(sentinel.state, output) |
1090 | |
1091 | @inlineCallbacks |
1092 | @@ -405,7 +412,7 @@ |
1093 | for _ in wait_time) |
1094 | self.patch(driver, 'power_query').side_effect = exception_types |
1095 | with ExpectedException(exception_types[-1]): |
1096 | - yield driver.query(sentinel.system_id) |
1097 | + yield driver.query(sentinel.system_id, sentinel.context) |
1098 | |
1099 | @inlineCallbacks |
1100 | def test_pauses_between_retries(self): |
1101 | @@ -413,6 +420,6 @@ |
1102 | driver = make_power_driver(wait_time=wait_time) |
1103 | self.patch(driver, 'power_query').side_effect = PowerError |
1104 | with ExpectedException(PowerError): |
1105 | - yield driver.query(sentinel.system_id) |
1106 | + yield driver.query(sentinel.system_id, sentinel.context) |
1107 | self.assertThat(power.pause, MockCallsMatch( |
1108 | *(call(wait, reactor) for wait in wait_time))) |
1109 | |
1110 | === modified file 'src/provisioningserver/drivers/power/tests/test_dli.py' |
1111 | --- src/provisioningserver/drivers/power/tests/test_dli.py 2015-11-04 15:53:35 +0000 |
1112 | +++ src/provisioningserver/drivers/power/tests/test_dli.py 2015-11-17 02:16:14 +0000 |
1113 | @@ -142,20 +142,26 @@ |
1114 | def test_power_on(self): |
1115 | driver = dli_module.DLIPowerDriver() |
1116 | system_id = factory.make_name('system_id') |
1117 | + context = {'context': factory.make_name('context')} |
1118 | _set_outlet_state_mock = self.patch(driver, '_set_outlet_state') |
1119 | - driver.power_on(system_id) |
1120 | - self.assertThat(_set_outlet_state_mock, MockCalledOnceWith('ON')) |
1121 | + driver.power_on(system_id, context) |
1122 | + self.assertThat( |
1123 | + _set_outlet_state_mock, MockCalledOnceWith('ON', **context)) |
1124 | |
1125 | def test_power_off(self): |
1126 | driver = dli_module.DLIPowerDriver() |
1127 | system_id = factory.make_name('system_id') |
1128 | + context = {'context': factory.make_name('context')} |
1129 | _set_outlet_state_mock = self.patch(driver, '_set_outlet_state') |
1130 | - driver.power_off(system_id) |
1131 | - self.assertThat(_set_outlet_state_mock, MockCalledOnceWith('OFF')) |
1132 | + driver.power_off(system_id, context) |
1133 | + self.assertThat( |
1134 | + _set_outlet_state_mock, MockCalledOnceWith('OFF', **context)) |
1135 | |
1136 | def test_power_query(self): |
1137 | driver = dli_module.DLIPowerDriver() |
1138 | system_id = factory.make_name('system_id') |
1139 | + context = {'context': factory.make_name('context')} |
1140 | _query_outlet_state_mock = self.patch(driver, '_query_outlet_state') |
1141 | - driver.power_query(system_id) |
1142 | - self.assertThat(_query_outlet_state_mock, MockCalledOnceWith()) |
1143 | + driver.power_query(system_id, context) |
1144 | + self.assertThat( |
1145 | + _query_outlet_state_mock, MockCalledOnceWith(**context)) |
1146 | |
1147 | === modified file 'src/provisioningserver/drivers/power/tests/test_ether_wake.py' |
1148 | --- src/provisioningserver/drivers/power/tests/test_ether_wake.py 2015-10-01 23:30:50 +0000 |
1149 | +++ src/provisioningserver/drivers/power/tests/test_ether_wake.py 2015-11-17 02:16:14 +0000 |
1150 | @@ -38,14 +38,14 @@ |
1151 | def test_power_on(self): |
1152 | driver = ether_wake_module.EtherWakePowerDriver() |
1153 | self.assertRaises( |
1154 | - NotImplementedError, driver.power_on, "fake_id") |
1155 | + NotImplementedError, driver.power_on, "fake_id", {}) |
1156 | |
1157 | def test_power_off(self): |
1158 | driver = ether_wake_module.EtherWakePowerDriver() |
1159 | self.assertRaises( |
1160 | - NotImplementedError, driver.power_off, "fake_id") |
1161 | + NotImplementedError, driver.power_off, "fake_id", {}) |
1162 | |
1163 | def test_power_query(self): |
1164 | driver = ether_wake_module.EtherWakePowerDriver() |
1165 | self.assertRaises( |
1166 | - NotImplementedError, driver.power_query, "fake_id") |
1167 | + NotImplementedError, driver.power_query, "fake_id", {}) |
1168 | |
1169 | === modified file 'src/provisioningserver/drivers/power/tests/test_fence_cdu.py' |
1170 | --- src/provisioningserver/drivers/power/tests/test_fence_cdu.py 2015-10-01 23:30:50 +0000 |
1171 | +++ src/provisioningserver/drivers/power/tests/test_fence_cdu.py 2015-11-17 02:16:14 +0000 |
1172 | @@ -38,14 +38,14 @@ |
1173 | def test_power_on(self): |
1174 | driver = fence_cdu_module.FenceCDUPowerDriver() |
1175 | self.assertRaises( |
1176 | - NotImplementedError, driver.power_on, "fake_id") |
1177 | + NotImplementedError, driver.power_on, "fake_id", {}) |
1178 | |
1179 | def test_power_off(self): |
1180 | driver = fence_cdu_module.FenceCDUPowerDriver() |
1181 | self.assertRaises( |
1182 | - NotImplementedError, driver.power_off, "fake_id") |
1183 | + NotImplementedError, driver.power_off, "fake_id", {}) |
1184 | |
1185 | def test_power_query(self): |
1186 | driver = fence_cdu_module.FenceCDUPowerDriver() |
1187 | self.assertRaises( |
1188 | - NotImplementedError, driver.power_query, "fake_id") |
1189 | + NotImplementedError, driver.power_query, "fake_id", {}) |
1190 | |
1191 | === modified file 'src/provisioningserver/drivers/power/tests/test_hmc.py' |
1192 | --- src/provisioningserver/drivers/power/tests/test_hmc.py 2015-10-01 22:48:50 +0000 |
1193 | +++ src/provisioningserver/drivers/power/tests/test_hmc.py 2015-11-17 02:16:14 +0000 |
1194 | @@ -49,7 +49,7 @@ |
1195 | password = factory.make_name('power_pass') |
1196 | server_name = factory.make_name('server_name') |
1197 | lpar = factory.make_name('lpar') |
1198 | - params = { |
1199 | + context = { |
1200 | 'system_id': system_id, |
1201 | 'power_address': ip, |
1202 | 'power_user': username, |
1203 | @@ -57,47 +57,47 @@ |
1204 | 'server_name': server_name, |
1205 | 'lpar': lpar, |
1206 | } |
1207 | - return system_id, ip, username, password, server_name, lpar, params |
1208 | + return system_id, ip, username, password, server_name, lpar, context |
1209 | |
1210 | def test_extract_hmc_parameters_extracts_parameters(self): |
1211 | - system_id, ip, username, password, server_name, lpar, params = ( |
1212 | + system_id, ip, username, password, server_name, lpar, context = ( |
1213 | self.make_parameters()) |
1214 | self.assertItemsEqual( |
1215 | (ip, username, password, server_name, lpar), |
1216 | - extract_hmc_parameters(params)) |
1217 | + extract_hmc_parameters(context)) |
1218 | |
1219 | def test_power_on_calls_power_control_hmc(self): |
1220 | - system_id, ip, username, password, server_name, lpar, params = ( |
1221 | + system_id, ip, username, password, server_name, lpar, context = ( |
1222 | self.make_parameters()) |
1223 | hmc_power_driver = HMCPowerDriver() |
1224 | power_control_hmc = self.patch( |
1225 | hmc_module, 'power_control_hmc') |
1226 | - hmc_power_driver.power_on(**params) |
1227 | + hmc_power_driver.power_on(system_id, context) |
1228 | |
1229 | self.assertThat( |
1230 | power_control_hmc, MockCalledOnceWith( |
1231 | ip, username, password, server_name, lpar, power_change='on')) |
1232 | |
1233 | def test_power_off_calls_power_control_hmc(self): |
1234 | - system_id, ip, username, password, server_name, lpar, params = ( |
1235 | + system_id, ip, username, password, server_name, lpar, context = ( |
1236 | self.make_parameters()) |
1237 | hmc_power_driver = HMCPowerDriver() |
1238 | power_control_hmc = self.patch( |
1239 | hmc_module, 'power_control_hmc') |
1240 | - hmc_power_driver.power_off(**params) |
1241 | + hmc_power_driver.power_off(system_id, context) |
1242 | |
1243 | self.assertThat( |
1244 | power_control_hmc, MockCalledOnceWith( |
1245 | ip, username, password, server_name, lpar, power_change='off')) |
1246 | |
1247 | def test_power_query_calls_power_state_hmc(self): |
1248 | - system_id, ip, username, password, server_name, lpar, params = ( |
1249 | + system_id, ip, username, password, server_name, lpar, context = ( |
1250 | self.make_parameters()) |
1251 | hmc_power_driver = HMCPowerDriver() |
1252 | power_state_hmc = self.patch( |
1253 | hmc_module, 'power_state_hmc') |
1254 | power_state_hmc.return_value = 'off' |
1255 | - expected_result = hmc_power_driver.power_query(**params) |
1256 | + expected_result = hmc_power_driver.power_query(system_id, context) |
1257 | |
1258 | self.expectThat( |
1259 | power_state_hmc, MockCalledOnceWith( |
1260 | |
1261 | === modified file 'src/provisioningserver/drivers/power/tests/test_ipmi.py' |
1262 | --- src/provisioningserver/drivers/power/tests/test_ipmi.py 2015-10-14 18:10:57 +0000 |
1263 | +++ src/provisioningserver/drivers/power/tests/test_ipmi.py 2015-11-17 02:16:14 +0000 |
1264 | @@ -55,7 +55,7 @@ |
1265 | power_off_mode = factory.make_name('power_off_mode') |
1266 | ipmipower = factory.make_name('ipmipower') |
1267 | ipmi_chassis_config = factory.make_name('ipmi_chassis_config') |
1268 | - params = { |
1269 | + context = { |
1270 | 'power_address': power_address, |
1271 | 'power_user': power_user, |
1272 | 'power_pass': power_pass, |
1273 | @@ -67,7 +67,7 @@ |
1274 | |
1275 | return ( |
1276 | power_address, power_user, power_pass, power_driver, |
1277 | - power_off_mode, ipmipower, ipmi_chassis_config, params |
1278 | + power_off_mode, ipmipower, ipmi_chassis_config, context |
1279 | ) |
1280 | |
1281 | |
1282 | @@ -109,7 +109,7 @@ |
1283 | |
1284 | def test__finds_power_address_from_mac_address(self): |
1285 | (power_address, power_user, power_pass, power_driver, power_off_mode, |
1286 | - ipmipower, ipmi_chassis_config, params) = make_parameters() |
1287 | + ipmipower, ipmi_chassis_config, context) = make_parameters() |
1288 | driver = IPMIPowerDriver() |
1289 | ip_address = factory.make_ipv4_address() |
1290 | find_ip_via_arp = self.patch(ipmi_module, 'find_ip_via_arp') |
1291 | @@ -117,12 +117,12 @@ |
1292 | power_change = random.choice(("on", "off")) |
1293 | env = get_c_environment() |
1294 | |
1295 | - params['mac_address'] = factory.make_mac_address() |
1296 | - params['power_address'] = random.choice((None, "", " ")) |
1297 | + context['mac_address'] = factory.make_mac_address() |
1298 | + context['power_address'] = random.choice((None, "", " ")) |
1299 | |
1300 | self.patch_autospec(driver, "_issue_ipmi_chassis_config_command") |
1301 | self.patch_autospec(driver, "_issue_ipmi_power_command") |
1302 | - driver._issue_ipmi_command(power_change, **params) |
1303 | + driver._issue_ipmi_command(power_change, **context) |
1304 | |
1305 | # The IP address is passed to _issue_ipmi_chassis_config_command. |
1306 | self.assertThat( |
1307 | @@ -160,7 +160,7 @@ |
1308 | |
1309 | def test__issue_ipmi_command_issues_power_on(self): |
1310 | (power_address, power_user, power_pass, power_driver, power_off_mode, |
1311 | - ipmipower, ipmi_chassis_config, params) = make_parameters() |
1312 | + ipmipower, ipmi_chassis_config, context) = make_parameters() |
1313 | ipmi_chassis_config_command = make_ipmi_chassis_config_command( |
1314 | ipmi_chassis_config, power_address, power_pass, power_driver, |
1315 | power_user, ANY) |
1316 | @@ -176,7 +176,7 @@ |
1317 | call_and_check_mock = self.patch(ipmi_module, 'call_and_check') |
1318 | call_and_check_mock.return_value = 'on' |
1319 | |
1320 | - result = ipmi_power_driver._issue_ipmi_command('on', **params) |
1321 | + result = ipmi_power_driver._issue_ipmi_command('on', **context) |
1322 | |
1323 | self.expectThat( |
1324 | popen_mock, MockCalledOnceWith( |
1325 | @@ -189,7 +189,7 @@ |
1326 | |
1327 | def test__issue_ipmi_command_issues_power_off(self): |
1328 | (power_address, power_user, power_pass, power_driver, power_off_mode, |
1329 | - ipmipower, ipmi_chassis_config, params) = make_parameters() |
1330 | + ipmipower, ipmi_chassis_config, context) = make_parameters() |
1331 | ipmi_chassis_config_command = make_ipmi_chassis_config_command( |
1332 | ipmi_chassis_config, power_address, power_pass, power_driver, |
1333 | power_user, ANY) |
1334 | @@ -205,7 +205,7 @@ |
1335 | call_and_check_mock = self.patch(ipmi_module, 'call_and_check') |
1336 | call_and_check_mock.return_value = 'off' |
1337 | |
1338 | - result = ipmi_power_driver._issue_ipmi_command('off', **params) |
1339 | + result = ipmi_power_driver._issue_ipmi_command('off', **context) |
1340 | |
1341 | self.expectThat( |
1342 | popen_mock, MockCalledOnceWith( |
1343 | @@ -218,8 +218,8 @@ |
1344 | |
1345 | def test__issue_ipmi_command_issues_power_off_soft_mode(self): |
1346 | (power_address, power_user, power_pass, power_driver, power_off_mode, |
1347 | - ipmipower, ipmi_chassis_config, params) = make_parameters() |
1348 | - params['power_off_mode'] = 'soft' |
1349 | + ipmipower, ipmi_chassis_config, context) = make_parameters() |
1350 | + context['power_off_mode'] = 'soft' |
1351 | ipmi_chassis_config_command = make_ipmi_chassis_config_command( |
1352 | ipmi_chassis_config, power_address, power_pass, power_driver, |
1353 | power_user, ANY) |
1354 | @@ -235,7 +235,7 @@ |
1355 | call_and_check_mock = self.patch(ipmi_module, 'call_and_check') |
1356 | call_and_check_mock.return_value = 'off' |
1357 | |
1358 | - result = ipmi_power_driver._issue_ipmi_command('off', **params) |
1359 | + result = ipmi_power_driver._issue_ipmi_command('off', **context) |
1360 | |
1361 | self.expectThat( |
1362 | popen_mock, MockCalledOnceWith( |
1363 | @@ -248,7 +248,7 @@ |
1364 | |
1365 | def test__issue_ipmi_command_issues_power_query(self): |
1366 | (power_address, power_user, power_pass, power_driver, power_off_mode, |
1367 | - ipmipower, ipmi_chassis_config, params) = make_parameters() |
1368 | + ipmipower, ipmi_chassis_config, context) = make_parameters() |
1369 | ipmipower_command = make_ipmipower_command( |
1370 | ipmipower, power_address, power_pass, power_driver, power_user) |
1371 | ipmipower_command += ('--stat', ) |
1372 | @@ -261,7 +261,7 @@ |
1373 | call_and_check_mock = self.patch(ipmi_module, 'call_and_check') |
1374 | call_and_check_mock.return_value = 'other' |
1375 | |
1376 | - result = ipmi_power_driver._issue_ipmi_command('query', **params) |
1377 | + result = ipmi_power_driver._issue_ipmi_command('query', **context) |
1378 | |
1379 | self.expectThat(popen_mock, MockNotCalled()) |
1380 | self.expectThat( |
1381 | @@ -270,7 +270,7 @@ |
1382 | self.expectThat(result, Equals('other')) |
1383 | |
1384 | def test__issue_ipmi_command_issues_raises_power_auth_error(self): |
1385 | - _, _, _, _, _, _, _, params = make_parameters() |
1386 | + _, _, _, _, _, _, _, context = make_parameters() |
1387 | ipmi_power_driver = IPMIPowerDriver() |
1388 | popen_mock = self.patch(ipmi_module, 'Popen') |
1389 | process = popen_mock.return_value |
1390 | @@ -279,10 +279,10 @@ |
1391 | |
1392 | self.assertRaises( |
1393 | PowerAuthError, ipmi_power_driver._issue_ipmi_command, |
1394 | - 'on', **params) |
1395 | + 'on', **context) |
1396 | |
1397 | def test__issue_ipmi_command_issues_raises_power_fatal_error(self): |
1398 | - _, _, _, _, _, _, _, params = make_parameters() |
1399 | + _, _, _, _, _, _, _, context = make_parameters() |
1400 | ipmi_power_driver = IPMIPowerDriver() |
1401 | popen_mock = self.patch(ipmi_module, 'Popen') |
1402 | process = popen_mock.return_value |
1403 | @@ -291,10 +291,10 @@ |
1404 | |
1405 | self.assertRaises( |
1406 | PowerFatalError, ipmi_power_driver._issue_ipmi_command, |
1407 | - 'on', **params) |
1408 | + 'on', **context) |
1409 | |
1410 | def test__issue_ipmi_command_issues_catches_external_process_error(self): |
1411 | - _, _, _, _, _, _, _, params = make_parameters() |
1412 | + _, _, _, _, _, _, _, context = make_parameters() |
1413 | ipmi_power_driver = IPMIPowerDriver() |
1414 | popen_mock = self.patch(ipmi_module, 'Popen') |
1415 | process = popen_mock.return_value |
1416 | @@ -306,37 +306,37 @@ |
1417 | |
1418 | self.assertRaises( |
1419 | PowerFatalError, ipmi_power_driver._issue_ipmi_command, |
1420 | - 'on', **params) |
1421 | + 'on', **context) |
1422 | |
1423 | def test_power_on_calls__issue_ipmi_command(self): |
1424 | - _, _, _, _, _, _, _, params = make_parameters() |
1425 | + _, _, _, _, _, _, _, context = make_parameters() |
1426 | ipmi_power_driver = IPMIPowerDriver() |
1427 | _issue_ipmi_command_mock = self.patch( |
1428 | ipmi_power_driver, '_issue_ipmi_command') |
1429 | system_id = factory.make_name('system_id') |
1430 | - ipmi_power_driver.power_on(system_id, **params) |
1431 | + ipmi_power_driver.power_on(system_id, context) |
1432 | |
1433 | self.assertThat( |
1434 | - _issue_ipmi_command_mock, MockCalledOnceWith('on', **params)) |
1435 | + _issue_ipmi_command_mock, MockCalledOnceWith('on', **context)) |
1436 | |
1437 | def test_power_off_calls__issue_ipmi_command(self): |
1438 | - _, _, _, _, _, _, _, params = make_parameters() |
1439 | + _, _, _, _, _, _, _, context = make_parameters() |
1440 | ipmi_power_driver = IPMIPowerDriver() |
1441 | _issue_ipmi_command_mock = self.patch( |
1442 | ipmi_power_driver, '_issue_ipmi_command') |
1443 | system_id = factory.make_name('system_id') |
1444 | - ipmi_power_driver.power_off(system_id, **params) |
1445 | + ipmi_power_driver.power_off(system_id, context) |
1446 | |
1447 | self.assertThat( |
1448 | - _issue_ipmi_command_mock, MockCalledOnceWith('off', **params)) |
1449 | + _issue_ipmi_command_mock, MockCalledOnceWith('off', **context)) |
1450 | |
1451 | def test_power_query_calls__issue_ipmi_command(self): |
1452 | - _, _, _, _, _, _, _, params = make_parameters() |
1453 | + _, _, _, _, _, _, _, context = make_parameters() |
1454 | ipmi_power_driver = IPMIPowerDriver() |
1455 | _issue_ipmi_command_mock = self.patch( |
1456 | ipmi_power_driver, '_issue_ipmi_command') |
1457 | system_id = factory.make_name('system_id') |
1458 | - ipmi_power_driver.power_query(system_id, **params) |
1459 | + ipmi_power_driver.power_query(system_id, context) |
1460 | |
1461 | self.assertThat( |
1462 | - _issue_ipmi_command_mock, MockCalledOnceWith('query', **params)) |
1463 | + _issue_ipmi_command_mock, MockCalledOnceWith('query', **context)) |
1464 | |
1465 | === modified file 'src/provisioningserver/drivers/power/tests/test_moonshot.py' |
1466 | --- src/provisioningserver/drivers/power/tests/test_moonshot.py 2015-10-01 22:48:50 +0000 |
1467 | +++ src/provisioningserver/drivers/power/tests/test_moonshot.py 2015-11-17 02:16:14 +0000 |
1468 | @@ -66,51 +66,51 @@ |
1469 | self.assertItemsEqual([], missing) |
1470 | |
1471 | def test__issue_ipmitool_command_issues_power_on(self): |
1472 | - params = make_parameters() |
1473 | + context = make_parameters() |
1474 | power_change = 'on' |
1475 | - ipmitool_command = make_ipmitool_command(power_change, **params) |
1476 | + ipmitool_command = make_ipmitool_command(power_change, **context) |
1477 | moonshot_driver = MoonshotIPMIPowerDriver() |
1478 | call_and_check_mock = self.patch(moonshot_module, 'call_and_check') |
1479 | call_and_check_mock.return_value = power_change |
1480 | |
1481 | result = moonshot_driver._issue_ipmitool_command( |
1482 | - power_change, **params) |
1483 | + power_change, **context) |
1484 | |
1485 | self.expectThat( |
1486 | call_and_check_mock, MockCalledOnceWith(ipmitool_command)) |
1487 | self.expectThat(result, Equals(power_change)) |
1488 | |
1489 | def test__issue_ipmitool_command_issues_power_off(self): |
1490 | - params = make_parameters() |
1491 | + context = make_parameters() |
1492 | power_change = 'off' |
1493 | - ipmitool_command = make_ipmitool_command(power_change, **params) |
1494 | + ipmitool_command = make_ipmitool_command(power_change, **context) |
1495 | moonshot_driver = MoonshotIPMIPowerDriver() |
1496 | call_and_check_mock = self.patch(moonshot_module, 'call_and_check') |
1497 | call_and_check_mock.return_value = power_change |
1498 | |
1499 | result = moonshot_driver._issue_ipmitool_command( |
1500 | - power_change, **params) |
1501 | + power_change, **context) |
1502 | |
1503 | self.expectThat( |
1504 | call_and_check_mock, MockCalledOnceWith(ipmitool_command)) |
1505 | self.expectThat(result, Equals(power_change)) |
1506 | |
1507 | def test__issue_ipmitool_command_raises_power_action_error(self): |
1508 | - params = make_parameters() |
1509 | + context = make_parameters() |
1510 | power_change = 'other' |
1511 | - ipmitool_command = make_ipmitool_command(power_change, **params) |
1512 | + ipmitool_command = make_ipmitool_command(power_change, **context) |
1513 | moonshot_driver = MoonshotIPMIPowerDriver() |
1514 | call_and_check_mock = self.patch(moonshot_module, 'call_and_check') |
1515 | call_and_check_mock.return_value = power_change |
1516 | |
1517 | self.assertRaises( |
1518 | PowerActionError, moonshot_driver._issue_ipmitool_command, |
1519 | - power_change, **params) |
1520 | + power_change, **context) |
1521 | self.expectThat( |
1522 | call_and_check_mock, MockCalledOnceWith(ipmitool_command)) |
1523 | |
1524 | def test__issue_ipmitool_raises_power_fatal_error(self): |
1525 | - params = make_parameters() |
1526 | + context = make_parameters() |
1527 | moonshot_driver = MoonshotIPMIPowerDriver() |
1528 | call_and_check_mock = self.patch(moonshot_module, 'call_and_check') |
1529 | call_and_check_mock.side_effect = ( |
1530 | @@ -118,38 +118,38 @@ |
1531 | |
1532 | self.assertRaises( |
1533 | PowerFatalError, moonshot_driver._issue_ipmitool_command, |
1534 | - 'status', **params) |
1535 | + 'status', **context) |
1536 | |
1537 | def test_power_on_calls__issue_ipmitool_command(self): |
1538 | - params = make_parameters() |
1539 | + context = make_parameters() |
1540 | moonshot_driver = MoonshotIPMIPowerDriver() |
1541 | _issue_ipmitool_command_mock = self.patch( |
1542 | moonshot_driver, '_issue_ipmitool_command') |
1543 | system_id = factory.make_name('system_id') |
1544 | - moonshot_driver.power_on(system_id, **params) |
1545 | + moonshot_driver.power_on(system_id, context) |
1546 | |
1547 | self.assertThat( |
1548 | - _issue_ipmitool_command_mock, MockCalledOnceWith('on', **params)) |
1549 | + _issue_ipmitool_command_mock, MockCalledOnceWith('on', **context)) |
1550 | |
1551 | def test_power_off_calls__issue_ipmitool_command(self): |
1552 | - params = make_parameters() |
1553 | + context = make_parameters() |
1554 | moonshot_driver = MoonshotIPMIPowerDriver() |
1555 | _issue_ipmitool_command_mock = self.patch( |
1556 | moonshot_driver, '_issue_ipmitool_command') |
1557 | system_id = factory.make_name('system_id') |
1558 | - moonshot_driver.power_off(system_id, **params) |
1559 | + moonshot_driver.power_off(system_id, context) |
1560 | |
1561 | self.assertThat( |
1562 | - _issue_ipmitool_command_mock, MockCalledOnceWith('off', **params)) |
1563 | + _issue_ipmitool_command_mock, MockCalledOnceWith('off', **context)) |
1564 | |
1565 | def test_power_query_calls__issue_ipmitool_command(self): |
1566 | - params = make_parameters() |
1567 | + context = make_parameters() |
1568 | moonshot_driver = MoonshotIPMIPowerDriver() |
1569 | _issue_ipmitool_command_mock = self.patch( |
1570 | moonshot_driver, '_issue_ipmitool_command') |
1571 | system_id = factory.make_name('system_id') |
1572 | - moonshot_driver.power_query(system_id, **params) |
1573 | + moonshot_driver.power_query(system_id, context) |
1574 | |
1575 | self.assertThat( |
1576 | _issue_ipmitool_command_mock, MockCalledOnceWith( |
1577 | - 'status', **params)) |
1578 | + 'status', **context)) |
1579 | |
1580 | === modified file 'src/provisioningserver/drivers/power/tests/test_mscm.py' |
1581 | --- src/provisioningserver/drivers/power/tests/test_mscm.py 2015-10-01 22:48:50 +0000 |
1582 | +++ src/provisioningserver/drivers/power/tests/test_mscm.py 2015-11-17 02:16:14 +0000 |
1583 | @@ -40,55 +40,55 @@ |
1584 | username = factory.make_name('power_user') |
1585 | password = factory.make_name('power_pass') |
1586 | node_id = make_node_id() |
1587 | - params = { |
1588 | + context = { |
1589 | 'system_id': system_id, |
1590 | 'power_address': host, |
1591 | 'power_user': username, |
1592 | 'power_pass': password, |
1593 | 'node_id': node_id, |
1594 | } |
1595 | - return system_id, host, username, password, node_id, params |
1596 | + return system_id, host, username, password, node_id, context |
1597 | |
1598 | def test_extract_mscm_parameters_extracts_parameters(self): |
1599 | - system_id, host, username, password, node_id, params = ( |
1600 | + system_id, host, username, password, node_id, context = ( |
1601 | self.make_parameters()) |
1602 | |
1603 | self.assertItemsEqual( |
1604 | (host, username, password, node_id), |
1605 | - extract_mscm_parameters(params)) |
1606 | + extract_mscm_parameters(context)) |
1607 | |
1608 | def test_power_on_calls_power_control_mscm(self): |
1609 | - system_id, host, username, password, node_id, params = ( |
1610 | + system_id, host, username, password, node_id, context = ( |
1611 | self.make_parameters()) |
1612 | mscm_power_driver = MSCMPowerDriver() |
1613 | power_control_mscm = self.patch( |
1614 | mscm_module, 'power_control_mscm') |
1615 | - mscm_power_driver.power_on(**params) |
1616 | + mscm_power_driver.power_on(system_id, context) |
1617 | |
1618 | self.assertThat( |
1619 | power_control_mscm, MockCalledOnceWith( |
1620 | host, username, password, node_id, power_change='on')) |
1621 | |
1622 | def test_power_off_calls_power_control_mscm(self): |
1623 | - system_id, host, username, password, node_id, params = ( |
1624 | + system_id, host, username, password, node_id, context = ( |
1625 | self.make_parameters()) |
1626 | mscm_power_driver = MSCMPowerDriver() |
1627 | power_control_mscm = self.patch( |
1628 | mscm_module, 'power_control_mscm') |
1629 | - mscm_power_driver.power_off(**params) |
1630 | + mscm_power_driver.power_off(system_id, context) |
1631 | |
1632 | self.assertThat( |
1633 | power_control_mscm, MockCalledOnceWith( |
1634 | host, username, password, node_id, power_change='off')) |
1635 | |
1636 | def test_power_query_calls_power_state_mscm(self): |
1637 | - system_id, host, username, password, node_id, params = ( |
1638 | + system_id, host, username, password, node_id, context = ( |
1639 | self.make_parameters()) |
1640 | mscm_power_driver = MSCMPowerDriver() |
1641 | power_state_mscm = self.patch( |
1642 | mscm_module, 'power_state_mscm') |
1643 | power_state_mscm.return_value = 'off' |
1644 | - expected_result = mscm_power_driver.power_query(**params) |
1645 | + expected_result = mscm_power_driver.power_query(system_id, context) |
1646 | |
1647 | self.expectThat( |
1648 | power_state_mscm, MockCalledOnceWith( |
1649 | |
1650 | === modified file 'src/provisioningserver/drivers/power/tests/test_msftocs.py' |
1651 | --- src/provisioningserver/drivers/power/tests/test_msftocs.py 2015-10-01 22:48:50 +0000 |
1652 | +++ src/provisioningserver/drivers/power/tests/test_msftocs.py 2015-11-17 02:16:14 +0000 |
1653 | @@ -40,7 +40,7 @@ |
1654 | username = factory.make_name('power_user') |
1655 | password = factory.make_name('power_pass') |
1656 | blade_id = factory.make_name('blade_id') |
1657 | - params = { |
1658 | + context = { |
1659 | 'system_id': system_id, |
1660 | 'power_address': ip, |
1661 | 'power_port': port, |
1662 | @@ -48,24 +48,24 @@ |
1663 | 'power_pass': password, |
1664 | 'blade_id': blade_id, |
1665 | } |
1666 | - return system_id, ip, port, username, password, blade_id, params |
1667 | + return system_id, ip, port, username, password, blade_id, context |
1668 | |
1669 | def test_extract_msftocs_parameters_extracts_parameters(self): |
1670 | - system_id, ip, port, username, password, blade_id, params = ( |
1671 | + system_id, ip, port, username, password, blade_id, context = ( |
1672 | self.make_parameters()) |
1673 | |
1674 | self.assertItemsEqual( |
1675 | (ip, port, username, password, blade_id), |
1676 | - extract_msftocs_parameters(params)) |
1677 | + extract_msftocs_parameters(context)) |
1678 | |
1679 | def test_power_on_calls_power_control_msftocs(self): |
1680 | power_change = 'on' |
1681 | - system_id, ip, port, username, password, blade_id, params = ( |
1682 | + system_id, ip, port, username, password, blade_id, context = ( |
1683 | self.make_parameters()) |
1684 | msftocs_power_driver = MicrosoftOCSPowerDriver() |
1685 | power_control_msftocs = self.patch( |
1686 | msftocs_module, 'power_control_msftocs') |
1687 | - msftocs_power_driver.power_on(**params) |
1688 | + msftocs_power_driver.power_on(system_id, context) |
1689 | |
1690 | self.assertThat( |
1691 | power_control_msftocs, MockCalledOnceWith( |
1692 | @@ -73,25 +73,25 @@ |
1693 | |
1694 | def test_power_off_calls_power_control_msftocs(self): |
1695 | power_change = 'off' |
1696 | - system_id, ip, port, username, password, blade_id, params = ( |
1697 | + system_id, ip, port, username, password, blade_id, context = ( |
1698 | self.make_parameters()) |
1699 | msftocs_power_driver = MicrosoftOCSPowerDriver() |
1700 | power_control_msftocs = self.patch( |
1701 | msftocs_module, 'power_control_msftocs') |
1702 | - msftocs_power_driver.power_off(**params) |
1703 | + msftocs_power_driver.power_off(system_id, context) |
1704 | |
1705 | self.assertThat( |
1706 | power_control_msftocs, MockCalledOnceWith( |
1707 | ip, port, username, password, power_change)) |
1708 | |
1709 | def test_power_query_calls_power_state_msftocs(self): |
1710 | - system_id, ip, port, username, password, blade_id, params = ( |
1711 | + system_id, ip, port, username, password, blade_id, context = ( |
1712 | self.make_parameters()) |
1713 | msftocs_power_driver = MicrosoftOCSPowerDriver() |
1714 | power_state_msftocs = self.patch( |
1715 | msftocs_module, 'power_state_msftocs') |
1716 | power_state_msftocs.return_value = 'off' |
1717 | - expected_result = msftocs_power_driver.power_query(**params) |
1718 | + expected_result = msftocs_power_driver.power_query(system_id, context) |
1719 | |
1720 | self.expectThat( |
1721 | power_state_msftocs, MockCalledOnceWith( |
1722 | |
1723 | === modified file 'src/provisioningserver/drivers/power/tests/test_seamicro.py' |
1724 | --- src/provisioningserver/drivers/power/tests/test_seamicro.py 2015-10-01 22:48:50 +0000 |
1725 | +++ src/provisioningserver/drivers/power/tests/test_seamicro.py 2015-11-17 02:16:14 +0000 |
1726 | @@ -50,30 +50,30 @@ |
1727 | missing = driver.detect_missing_packages() |
1728 | self.assertItemsEqual([], missing) |
1729 | |
1730 | - def make_parameters(self): |
1731 | + def make_context(self): |
1732 | ip = factory.make_name('power_address') |
1733 | username = factory.make_name('power_user') |
1734 | password = factory.make_name('power_pass') |
1735 | server_id = factory.make_name('system_id') |
1736 | - params = { |
1737 | + context = { |
1738 | 'power_address': ip, |
1739 | 'power_user': username, |
1740 | 'power_pass': password, |
1741 | 'system_id': server_id, |
1742 | } |
1743 | - return ip, username, password, server_id, params |
1744 | + return ip, username, password, server_id, context |
1745 | |
1746 | def test_extract_seamicro_parameters_extracts_parameters(self): |
1747 | - ip, username, password, server_id, params = self.make_parameters() |
1748 | + ip, username, password, server_id, context = self.make_context() |
1749 | power_control = choice(['ipmi', 'restapi', 'restapi2']) |
1750 | - params['power_control'] = power_control |
1751 | + context['power_control'] = power_control |
1752 | |
1753 | self.assertItemsEqual( |
1754 | (ip, username, password, server_id, power_control), |
1755 | - extract_seamicro_parameters(params)) |
1756 | + extract_seamicro_parameters(context)) |
1757 | |
1758 | def test__power_control_seamicro15k_ipmi_calls_call_and_check(self): |
1759 | - ip, username, password, server_id, _ = self.make_parameters() |
1760 | + ip, username, password, server_id, _ = self.make_context() |
1761 | power_change = choice(['on', 'off']) |
1762 | seamicro_power_driver = SeaMicroPowerDriver() |
1763 | call_and_check_mock = self.patch(seamicro_module, 'call_and_check') |
1764 | @@ -89,7 +89,7 @@ |
1765 | ])) |
1766 | |
1767 | def test__power_control_seamicro15k_ipmi_raises_PowerFatalError(self): |
1768 | - ip, username, password, server_id, _ = self.make_parameters() |
1769 | + ip, username, password, server_id, _ = self.make_context() |
1770 | power_change = choice(['on', 'off']) |
1771 | seamicro_power_driver = SeaMicroPowerDriver() |
1772 | call_and_check_mock = self.patch(seamicro_module, 'call_and_check') |
1773 | @@ -102,74 +102,73 @@ |
1774 | ip, username, password, server_id, power_change) |
1775 | |
1776 | def test__power_calls__power_control_seamicro15k_ipmi(self): |
1777 | - ip, username, password, server_id, params = self.make_parameters() |
1778 | - params['power_control'] = 'ipmi' |
1779 | + ip, username, password, server_id, context = self.make_context() |
1780 | + context['power_control'] = 'ipmi' |
1781 | power_change = choice(['on', 'off']) |
1782 | seamicro_power_driver = SeaMicroPowerDriver() |
1783 | _power_control_seamicro15k_ipmi_mock = self.patch( |
1784 | seamicro_power_driver, '_power_control_seamicro15k_ipmi') |
1785 | - seamicro_power_driver._power(power_change, **params) |
1786 | + seamicro_power_driver._power(power_change, context) |
1787 | |
1788 | self.assertThat( |
1789 | _power_control_seamicro15k_ipmi_mock, MockCalledOnceWith( |
1790 | ip, username, password, server_id, power_change=power_change)) |
1791 | |
1792 | def test__power_calls_power_control_seamicro15k_v09(self): |
1793 | - ip, username, password, server_id, params = self.make_parameters() |
1794 | - params['power_control'] = 'restapi' |
1795 | + ip, username, password, server_id, context = self.make_context() |
1796 | + context['power_control'] = 'restapi' |
1797 | power_change = choice(['on', 'off']) |
1798 | seamicro_power_driver = SeaMicroPowerDriver() |
1799 | power_control_seamicro15k_v09_mock = self.patch( |
1800 | seamicro_module, 'power_control_seamicro15k_v09') |
1801 | - seamicro_power_driver._power(power_change, **params) |
1802 | + seamicro_power_driver._power(power_change, context) |
1803 | |
1804 | self.assertThat( |
1805 | power_control_seamicro15k_v09_mock, MockCalledOnceWith( |
1806 | ip, username, password, server_id, power_change=power_change)) |
1807 | |
1808 | def test__power_calls_power_control_seamicro15k_v2(self): |
1809 | - ip, username, password, server_id, params = self.make_parameters() |
1810 | - params['power_control'] = 'restapi2' |
1811 | + ip, username, password, server_id, context = self.make_context() |
1812 | + context['power_control'] = 'restapi2' |
1813 | power_change = choice(['on', 'off']) |
1814 | seamicro_power_driver = SeaMicroPowerDriver() |
1815 | power_control_seamicro15k_v2_mock = self.patch( |
1816 | seamicro_module, 'power_control_seamicro15k_v2') |
1817 | - seamicro_power_driver._power(power_change, **params) |
1818 | + seamicro_power_driver._power(power_change, context) |
1819 | |
1820 | self.assertThat( |
1821 | power_control_seamicro15k_v2_mock, MockCalledOnceWith( |
1822 | ip, username, password, server_id, power_change=power_change)) |
1823 | |
1824 | def test_power_on_calls_power(self): |
1825 | - _, _, _, _, params = self.make_parameters() |
1826 | - params['power_control'] = factory.make_name('power_control') |
1827 | + _, _, _, _, context = self.make_context() |
1828 | + context['power_control'] = factory.make_name('power_control') |
1829 | seamicro_power_driver = SeaMicroPowerDriver() |
1830 | power_mock = self.patch(seamicro_power_driver, '_power') |
1831 | - seamicro_power_driver.power_on(**params) |
1832 | - del params['system_id'] |
1833 | + seamicro_power_driver.power_on(context['system_id'], context) |
1834 | |
1835 | self.assertThat( |
1836 | - power_mock, MockCalledOnceWith('on', **params)) |
1837 | + power_mock, MockCalledOnceWith('on', context)) |
1838 | |
1839 | def test_power_off_calls_power(self): |
1840 | - _, _, _, _, params = self.make_parameters() |
1841 | - params['power_control'] = factory.make_name('power_control') |
1842 | + _, _, _, _, context = self.make_context() |
1843 | + context['power_control'] = factory.make_name('power_control') |
1844 | seamicro_power_driver = SeaMicroPowerDriver() |
1845 | power_mock = self.patch(seamicro_power_driver, '_power') |
1846 | - seamicro_power_driver.power_off(**params) |
1847 | - del params['system_id'] |
1848 | + seamicro_power_driver.power_off(context['system_id'], context) |
1849 | |
1850 | self.assertThat( |
1851 | - power_mock, MockCalledOnceWith('off', **params)) |
1852 | + power_mock, MockCalledOnceWith('off', context)) |
1853 | |
1854 | def test_power_query_calls_power_query_seamicro15k_v2(self): |
1855 | - ip, username, password, server_id, params = self.make_parameters() |
1856 | - params['power_control'] = 'restapi2' |
1857 | + ip, username, password, server_id, context = self.make_context() |
1858 | + context['power_control'] = 'restapi2' |
1859 | seamicro_power_driver = SeaMicroPowerDriver() |
1860 | power_query_seamicro15k_v2_mock = self.patch( |
1861 | seamicro_module, 'power_query_seamicro15k_v2') |
1862 | power_query_seamicro15k_v2_mock.return_value = 'on' |
1863 | - power_state = seamicro_power_driver.power_query(**params) |
1864 | + power_state = seamicro_power_driver.power_query( |
1865 | + context['system_id'], context) |
1866 | |
1867 | self.expectThat( |
1868 | power_query_seamicro15k_v2_mock, MockCalledOnceWith( |
1869 | @@ -177,9 +176,10 @@ |
1870 | self.expectThat(power_state, Equals('on')) |
1871 | |
1872 | def test_power_query_returns_unknown_if_not_restapi2(self): |
1873 | - ip, username, password, server_id, params = self.make_parameters() |
1874 | - params['power_control'] = factory.make_name('power_control') |
1875 | + ip, username, password, server_id, context = self.make_context() |
1876 | + context['power_control'] = factory.make_name('power_control') |
1877 | seamicro_power_driver = SeaMicroPowerDriver() |
1878 | - power_state = seamicro_power_driver.power_query(**params) |
1879 | + power_state = seamicro_power_driver.power_query( |
1880 | + context['system_id'], context) |
1881 | |
1882 | self.assertThat(power_state, Equals('unknown')) |
1883 | |
1884 | === modified file 'src/provisioningserver/drivers/power/tests/test_ucsm.py' |
1885 | --- src/provisioningserver/drivers/power/tests/test_ucsm.py 2015-10-01 22:48:50 +0000 |
1886 | +++ src/provisioningserver/drivers/power/tests/test_ucsm.py 2015-11-17 02:16:14 +0000 |
1887 | @@ -39,55 +39,55 @@ |
1888 | username = factory.make_name('power_user') |
1889 | password = factory.make_name('power_pass') |
1890 | uuid = factory.make_UUID() |
1891 | - params = { |
1892 | + context = { |
1893 | 'system_id': system_id, |
1894 | 'power_address': url, |
1895 | 'power_user': username, |
1896 | 'power_pass': password, |
1897 | 'uuid': uuid, |
1898 | } |
1899 | - return system_id, url, username, password, uuid, params |
1900 | + return system_id, url, username, password, uuid, context |
1901 | |
1902 | def test_extract_ucsm_parameters_extracts_parameters(self): |
1903 | - system_id, url, username, password, uuid, params = ( |
1904 | + system_id, url, username, password, uuid, context = ( |
1905 | self.make_parameters()) |
1906 | |
1907 | self.assertItemsEqual( |
1908 | (url, username, password, uuid), |
1909 | - extract_ucsm_parameters(params)) |
1910 | + extract_ucsm_parameters(context)) |
1911 | |
1912 | def test_power_on_calls_power_control_ucsm(self): |
1913 | - system_id, url, username, password, uuid, params = ( |
1914 | + system_id, url, username, password, uuid, context = ( |
1915 | self.make_parameters()) |
1916 | ucsm_power_driver = UCSMPowerDriver() |
1917 | power_control_ucsm = self.patch( |
1918 | ucsm_module, 'power_control_ucsm') |
1919 | - ucsm_power_driver.power_on(**params) |
1920 | + ucsm_power_driver.power_on(system_id, context) |
1921 | |
1922 | self.assertThat( |
1923 | power_control_ucsm, MockCalledOnceWith( |
1924 | url, username, password, uuid, maas_power_mode='on')) |
1925 | |
1926 | def test_power_off_calls_power_control_ucsm(self): |
1927 | - system_id, url, username, password, uuid, params = ( |
1928 | + system_id, url, username, password, uuid, context = ( |
1929 | self.make_parameters()) |
1930 | ucsm_power_driver = UCSMPowerDriver() |
1931 | power_control_ucsm = self.patch( |
1932 | ucsm_module, 'power_control_ucsm') |
1933 | - ucsm_power_driver.power_off(**params) |
1934 | + ucsm_power_driver.power_off(system_id, context) |
1935 | |
1936 | self.assertThat( |
1937 | power_control_ucsm, MockCalledOnceWith( |
1938 | url, username, password, uuid, maas_power_mode='off')) |
1939 | |
1940 | def test_power_query_calls_power_state_ucsm(self): |
1941 | - system_id, url, username, password, uuid, params = ( |
1942 | + system_id, url, username, password, uuid, context = ( |
1943 | self.make_parameters()) |
1944 | ucsm_power_driver = UCSMPowerDriver() |
1945 | power_state_ucsm = self.patch( |
1946 | ucsm_module, 'power_state_ucsm') |
1947 | power_state_ucsm.return_value = 'off' |
1948 | - expected_result = ucsm_power_driver.power_query(**params) |
1949 | + expected_result = ucsm_power_driver.power_query(system_id, context) |
1950 | |
1951 | self.expectThat( |
1952 | power_state_ucsm, MockCalledOnceWith( |
1953 | |
1954 | === modified file 'src/provisioningserver/drivers/power/tests/test_virsh.py' |
1955 | --- src/provisioningserver/drivers/power/tests/test_virsh.py 2015-10-01 22:48:50 +0000 |
1956 | +++ src/provisioningserver/drivers/power/tests/test_virsh.py 2015-11-17 02:16:14 +0000 |
1957 | @@ -47,30 +47,30 @@ |
1958 | poweraddr = factory.make_name('power_address') |
1959 | machine = factory.make_name('power_id') |
1960 | password = factory.make_name('power_pass') |
1961 | - params = { |
1962 | + context = { |
1963 | 'system_id': system_id, |
1964 | 'power_address': poweraddr, |
1965 | 'power_id': machine, |
1966 | 'power_pass': password, |
1967 | } |
1968 | - return system_id, poweraddr, machine, password, params |
1969 | + return system_id, poweraddr, machine, password, context |
1970 | |
1971 | def test_extract_virsh_parameters_extracts_parameters(self): |
1972 | - system_id, poweraddr, machine, password, params = ( |
1973 | + system_id, poweraddr, machine, password, context = ( |
1974 | self.make_parameters()) |
1975 | |
1976 | self.assertItemsEqual( |
1977 | (poweraddr, machine, password), |
1978 | - extract_virsh_parameters(params)) |
1979 | + extract_virsh_parameters(context)) |
1980 | |
1981 | def test_power_on_calls_power_control_virsh(self): |
1982 | power_change = 'on' |
1983 | - system_id, poweraddr, machine, password, params = ( |
1984 | + system_id, poweraddr, machine, password, context = ( |
1985 | self.make_parameters()) |
1986 | virsh_power_driver = VirshPowerDriver() |
1987 | power_control_virsh = self.patch( |
1988 | virsh_module, 'power_control_virsh') |
1989 | - virsh_power_driver.power_on(**params) |
1990 | + virsh_power_driver.power_on(system_id, context) |
1991 | |
1992 | self.assertThat( |
1993 | power_control_virsh, MockCalledOnceWith( |
1994 | @@ -78,25 +78,25 @@ |
1995 | |
1996 | def test_power_off_calls_power_control_virsh(self): |
1997 | power_change = 'off' |
1998 | - system_id, poweraddr, machine, password, params = ( |
1999 | + system_id, poweraddr, machine, password, context = ( |
2000 | self.make_parameters()) |
2001 | virsh_power_driver = VirshPowerDriver() |
2002 | power_control_virsh = self.patch( |
2003 | virsh_module, 'power_control_virsh') |
2004 | - virsh_power_driver.power_off(**params) |
2005 | + virsh_power_driver.power_off(system_id, context) |
2006 | |
2007 | self.assertThat( |
2008 | power_control_virsh, MockCalledOnceWith( |
2009 | poweraddr, machine, power_change, password)) |
2010 | |
2011 | def test_power_query_calls_power_state_virsh(self): |
2012 | - system_id, poweraddr, machine, password, params = ( |
2013 | + system_id, poweraddr, machine, password, context = ( |
2014 | self.make_parameters()) |
2015 | virsh_power_driver = VirshPowerDriver() |
2016 | power_state_virsh = self.patch( |
2017 | virsh_module, 'power_state_virsh') |
2018 | power_state_virsh.return_value = 'off' |
2019 | - expected_result = virsh_power_driver.power_query(**params) |
2020 | + expected_result = virsh_power_driver.power_query(system_id, context) |
2021 | |
2022 | self.expectThat( |
2023 | power_state_virsh, MockCalledOnceWith( |
2024 | |
2025 | === modified file 'src/provisioningserver/drivers/power/tests/test_vmware.py' |
2026 | --- src/provisioningserver/drivers/power/tests/test_vmware.py 2015-10-01 22:48:50 +0000 |
2027 | +++ src/provisioningserver/drivers/power/tests/test_vmware.py 2015-11-17 02:16:14 +0000 |
2028 | @@ -1,5 +1,5 @@ |
2029 | # Copyright 2015 Canonical Ltd. This software is licensed under the |
2030 | -# GNU Affero General Public License version 3 (see the file LICENSE). |
2031 | +# Gnu Affero General Public License version 3 (see the file LICENSE). |
2032 | |
2033 | """Tests for `provisioningserver.drivers.power.vmware`.""" |
2034 | |
2035 | @@ -50,7 +50,7 @@ |
2036 | vm_name = factory.make_name('power_vm_name') |
2037 | uuid = factory.make_name('power_uuid') |
2038 | port = protocol = None |
2039 | - params = { |
2040 | + context = { |
2041 | 'system_id': system_id, |
2042 | 'power_address': host, |
2043 | 'power_user': username, |
2044 | @@ -61,24 +61,24 @@ |
2045 | 'power_protocol': protocol, |
2046 | } |
2047 | return (system_id, host, username, password, |
2048 | - vm_name, uuid, port, protocol, params) |
2049 | + vm_name, uuid, port, protocol, context) |
2050 | |
2051 | def test_extract_vmware_parameters_extracts_parameters(self): |
2052 | (system_id, host, username, password, |
2053 | - vm_name, uuid, port, protocol, params) = self.make_parameters() |
2054 | + vm_name, uuid, port, protocol, context) = self.make_parameters() |
2055 | |
2056 | self.assertItemsEqual( |
2057 | (host, username, password, vm_name, uuid, port, protocol), |
2058 | - extract_vmware_parameters(params)) |
2059 | + extract_vmware_parameters(context)) |
2060 | |
2061 | def test_power_on_calls_power_control_vmware(self): |
2062 | power_change = 'on' |
2063 | (system_id, host, username, password, |
2064 | - vm_name, uuid, port, protocol, params) = self.make_parameters() |
2065 | + vm_name, uuid, port, protocol, context) = self.make_parameters() |
2066 | vmware_power_driver = VMwarePowerDriver() |
2067 | power_control_vmware = self.patch( |
2068 | vmware_module, 'power_control_vmware') |
2069 | - vmware_power_driver.power_on(**params) |
2070 | + vmware_power_driver.power_on(system_id, context) |
2071 | |
2072 | self.assertThat( |
2073 | power_control_vmware, MockCalledOnceWith( |
2074 | @@ -88,11 +88,11 @@ |
2075 | def test_power_off_calls_power_control_vmware(self): |
2076 | power_change = 'off' |
2077 | (system_id, host, username, password, |
2078 | - vm_name, uuid, port, protocol, params) = self.make_parameters() |
2079 | + vm_name, uuid, port, protocol, context) = self.make_parameters() |
2080 | vmware_power_driver = VMwarePowerDriver() |
2081 | power_control_vmware = self.patch( |
2082 | vmware_module, 'power_control_vmware') |
2083 | - vmware_power_driver.power_off(**params) |
2084 | + vmware_power_driver.power_off(system_id, context) |
2085 | |
2086 | self.assertThat( |
2087 | power_control_vmware, MockCalledOnceWith( |
2088 | @@ -101,12 +101,12 @@ |
2089 | |
2090 | def test_power_query_calls_power_query_vmware(self): |
2091 | (system_id, host, username, password, |
2092 | - vm_name, uuid, port, protocol, params) = self.make_parameters() |
2093 | + vm_name, uuid, port, protocol, context) = self.make_parameters() |
2094 | vmware_power_driver = VMwarePowerDriver() |
2095 | power_query_vmware = self.patch( |
2096 | vmware_module, 'power_query_vmware') |
2097 | power_query_vmware.return_value = 'off' |
2098 | - expected_result = vmware_power_driver.power_query(**params) |
2099 | + expected_result = vmware_power_driver.power_query(system_id, context) |
2100 | |
2101 | self.expectThat( |
2102 | power_query_vmware, MockCalledOnceWith( |
2103 | |
2104 | === modified file 'src/provisioningserver/drivers/power/ucsm.py' |
2105 | --- src/provisioningserver/drivers/power/ucsm.py 2015-09-30 07:16:42 +0000 |
2106 | +++ src/provisioningserver/drivers/power/ucsm.py 2015-11-17 02:16:14 +0000 |
2107 | @@ -21,11 +21,11 @@ |
2108 | from provisioningserver.drivers.power import PowerDriver |
2109 | |
2110 | |
2111 | -def extract_ucsm_parameters(params): |
2112 | - url = params.get('power_address') |
2113 | - username = params.get('power_user') |
2114 | - password = params.get('power_pass') |
2115 | - uuid = params.get('uuid') |
2116 | +def extract_ucsm_parameters(context): |
2117 | + url = context.get('power_address') |
2118 | + username = context.get('power_user') |
2119 | + password = context.get('power_pass') |
2120 | + uuid = context.get('uuid') |
2121 | return url, username, password, uuid |
2122 | |
2123 | |
2124 | @@ -39,19 +39,19 @@ |
2125 | # uses urllib2 http client - nothing to look for! |
2126 | return [] |
2127 | |
2128 | - def power_on(self, system_id, **kwargs): |
2129 | + def power_on(self, system_id, context): |
2130 | """Power on UCSM node.""" |
2131 | - url, username, password, uuid = extract_ucsm_parameters(kwargs) |
2132 | + url, username, password, uuid = extract_ucsm_parameters(context) |
2133 | power_control_ucsm( |
2134 | url, username, password, uuid, maas_power_mode='on') |
2135 | |
2136 | - def power_off(self, system_id, **kwargs): |
2137 | + def power_off(self, system_id, context): |
2138 | """Power off UCSM node.""" |
2139 | - url, username, password, uuid = extract_ucsm_parameters(kwargs) |
2140 | + url, username, password, uuid = extract_ucsm_parameters(context) |
2141 | power_control_ucsm( |
2142 | url, username, password, uuid, maas_power_mode='off') |
2143 | |
2144 | - def power_query(self, system_id, **kwargs): |
2145 | + def power_query(self, system_id, context): |
2146 | """Power query UCSM node.""" |
2147 | - url, username, password, uuid = extract_ucsm_parameters(kwargs) |
2148 | + url, username, password, uuid = extract_ucsm_parameters(context) |
2149 | return power_state_ucsm(url, username, password, uuid) |
2150 | |
2151 | === modified file 'src/provisioningserver/drivers/power/virsh.py' |
2152 | --- src/provisioningserver/drivers/power/virsh.py 2015-10-01 22:48:50 +0000 |
2153 | +++ src/provisioningserver/drivers/power/virsh.py 2015-11-17 02:16:14 +0000 |
2154 | @@ -26,10 +26,10 @@ |
2155 | ["virt-login-shell", "libvirt-bin"]] |
2156 | |
2157 | |
2158 | -def extract_virsh_parameters(params): |
2159 | - poweraddr = params.get('power_address') |
2160 | - machine = params.get('power_id') |
2161 | - password = params.get('power_pass') |
2162 | +def extract_virsh_parameters(context): |
2163 | + poweraddr = context.get('power_address') |
2164 | + machine = context.get('power_id') |
2165 | + password = context.get('power_pass') |
2166 | return poweraddr, machine, password |
2167 | |
2168 | |
2169 | @@ -46,21 +46,21 @@ |
2170 | missing_packages.add(package) |
2171 | return list(missing_packages) |
2172 | |
2173 | - def power_on(self, system_id, **kwargs): |
2174 | + def power_on(self, system_id, context): |
2175 | """Power on Virsh node.""" |
2176 | power_change = 'on' |
2177 | - poweraddr, machine, password = extract_virsh_parameters(kwargs) |
2178 | + poweraddr, machine, password = extract_virsh_parameters(context) |
2179 | power_control_virsh( |
2180 | poweraddr, machine, power_change, password) |
2181 | |
2182 | - def power_off(self, system_id, **kwargs): |
2183 | + def power_off(self, system_id, context): |
2184 | """Power off Virsh node.""" |
2185 | power_change = 'off' |
2186 | - poweraddr, machine, password = extract_virsh_parameters(kwargs) |
2187 | + poweraddr, machine, password = extract_virsh_parameters(context) |
2188 | power_control_virsh( |
2189 | poweraddr, machine, power_change, password) |
2190 | |
2191 | - def power_query(self, system_id, **kwargs): |
2192 | + def power_query(self, system_id, context): |
2193 | """Power query Virsh node.""" |
2194 | - poweraddr, machine, password = extract_virsh_parameters(kwargs) |
2195 | + poweraddr, machine, password = extract_virsh_parameters(context) |
2196 | return power_state_virsh(poweraddr, machine, password) |
2197 | |
2198 | === modified file 'src/provisioningserver/drivers/power/vmware.py' |
2199 | --- src/provisioningserver/drivers/power/vmware.py 2015-10-01 22:48:50 +0000 |
2200 | +++ src/provisioningserver/drivers/power/vmware.py 2015-11-17 02:16:14 +0000 |
2201 | @@ -22,14 +22,14 @@ |
2202 | from provisioningserver.drivers.power import PowerDriver |
2203 | |
2204 | |
2205 | -def extract_vmware_parameters(params): |
2206 | - host = params.get('power_address') |
2207 | - username = params.get('power_user') |
2208 | - password = params.get('power_pass') |
2209 | - vm_name = params.get('power_vm_name') |
2210 | - uuid = params.get('power_uuid') |
2211 | - port = params.get('power_port') |
2212 | - protocol = params.get('power_protocol') |
2213 | +def extract_vmware_parameters(context): |
2214 | + host = context.get('power_address') |
2215 | + username = context.get('power_user') |
2216 | + password = context.get('power_pass') |
2217 | + vm_name = context.get('power_vm_name') |
2218 | + uuid = context.get('power_uuid') |
2219 | + port = context.get('power_port') |
2220 | + protocol = context.get('power_protocol') |
2221 | return host, username, password, vm_name, uuid, port, protocol |
2222 | |
2223 | |
2224 | @@ -44,27 +44,27 @@ |
2225 | return ["python-pyvmomi"] |
2226 | return [] |
2227 | |
2228 | - def power_on(self, system_id, **kwargs): |
2229 | + def power_on(self, system_id, context): |
2230 | """Power on VMware node.""" |
2231 | power_change = 'on' |
2232 | host, username, password, vm_name, uuid, port, protocol = ( |
2233 | - extract_vmware_parameters(kwargs)) |
2234 | + extract_vmware_parameters(context)) |
2235 | power_control_vmware( |
2236 | host, username, password, vm_name, |
2237 | uuid, power_change, port, protocol) |
2238 | |
2239 | - def power_off(self, system_id, **kwargs): |
2240 | + def power_off(self, system_id, context): |
2241 | """Power off VMware node.""" |
2242 | power_change = 'off' |
2243 | host, username, password, vm_name, uuid, port, protocol = ( |
2244 | - extract_vmware_parameters(kwargs)) |
2245 | + extract_vmware_parameters(context)) |
2246 | power_control_vmware( |
2247 | host, username, password, vm_name, |
2248 | uuid, power_change, port, protocol) |
2249 | |
2250 | - def power_query(self, system_id, **kwargs): |
2251 | + def power_query(self, system_id, context): |
2252 | """Power query VMware node.""" |
2253 | host, username, password, vm_name, uuid, port, protocol = ( |
2254 | - extract_vmware_parameters(kwargs)) |
2255 | + extract_vmware_parameters(context)) |
2256 | return power_query_vmware( |
2257 | host, username, password, vm_name, uuid, port, protocol) |
2258 | |
2259 | === modified file 'src/provisioningserver/power/change.py' |
2260 | --- src/provisioningserver/power/change.py 2015-10-20 17:59:57 +0000 |
2261 | +++ src/provisioningserver/power/change.py 2015-11-17 02:16:14 +0000 |
2262 | @@ -116,9 +116,9 @@ |
2263 | power_driver = PowerDriverRegistry.get_item(power_type) |
2264 | |
2265 | if power_change == 'on': |
2266 | - d = power_driver.on(**context) |
2267 | + d = power_driver.on(system_id, context) |
2268 | elif power_change == 'off': |
2269 | - d = power_driver.off(**context) |
2270 | + d = power_driver.off(system_id, context) |
2271 | |
2272 | def power_change_failed(failure): |
2273 | message = "Node could not be powered %s: %s" % ( |
2274 | |
2275 | === modified file 'src/provisioningserver/power/query.py' |
2276 | --- src/provisioningserver/power/query.py 2015-10-20 17:59:57 +0000 |
2277 | +++ src/provisioningserver/power/query.py 2015-11-17 02:16:14 +0000 |
2278 | @@ -82,7 +82,7 @@ |
2279 | """ |
2280 | # Get power driver for given power type |
2281 | power_driver = PowerDriverRegistry[power_type] |
2282 | - return power_driver.query(**context) |
2283 | + return power_driver.query(system_id, context) |
2284 | |
2285 | |
2286 | @asynchronous |
Looks good. Mechanical change.