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