Merge ~troyanov/maas:ipmi-power-off-mode-settings into maas:master

Proposed by Anton Troyanov
Status: Merged
Approved by: Anton Troyanov
Approved revision: aba365a591d3c79fdd2bb18a2d5e81f8fc8836ae
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~troyanov/maas:ipmi-power-off-mode-settings
Merge into: maas:master
Diff against target: 43 lines (+15/-0)
2 files modified
src/provisioningserver/drivers/power/ipmi.py (+13/-0)
src/provisioningserver/tests/test_power_driver_command.py (+2/-0)
Reviewer Review Type Date Requested Status
Peter Makowski Approve
Adam Collard (community) Approve
MAAS Lander Approve
Alberto Donato (community) Approve
Review via email: mp+455689@code.launchpad.net

Commit message

fix: add power-off-mode to ipmi settings

Description of the change

Existing behaviour was:

```
if power_off_mode == "soft":
  ipmipower_command.append("--soft")
else:
  ipmipower_command.append("--off")
```

This basically mimics the same approach that was exposed via API, where for the method `def power_off(self, request, system_id)` we had "hard" to be the default value:

```
stop_mode = request.POST.get("stop_mode", "hard")
```

And also the Node model has defaults as "hard":
`def stop(self, user=None, stop_mode="hard", comment=None)`

The name for the exposed property is "power-off-mode" as thats how existing IPMI driver wants it (not the "stop_mode")
```
power_info.power_parameters["power_off_mode"] = stop_mode
```

To post a comment you must log in.
Revision history for this message
Alberto Donato (ack) wrote :

+1

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

UNIT TESTS
-b ipmi-power-off-mode-settings lp:~troyanov/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 7a0f6d02c4ed71ed5a558c9536b8de3a15bcf309

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

UNIT TESTS
-b ipmi-power-off-mode-settings lp:~troyanov/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 30c7dc590e3d3c369fce2135e3963b8b7fe04a10

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

UNIT TESTS
-b ipmi-power-off-mode-settings lp:~troyanov/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: aba365a591d3c79fdd2bb18a2d5e81f8fc8836ae

review: Approve
Revision history for this message
Adam Collard (adam-collard) :
review: Approve
Revision history for this message
Peter Makowski (petermakowski) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/provisioningserver/drivers/power/ipmi.py b/src/provisioningserver/drivers/power/ipmi.py
2index f3f0806..752ae66 100644
3--- a/src/provisioningserver/drivers/power/ipmi.py
4+++ b/src/provisioningserver/drivers/power/ipmi.py
5@@ -233,6 +233,11 @@ IPMI_WORKAROUND_FLAG_CHOICES = [
6 ["", "None"],
7 ]
8
9+IPMI_POWER_OFF_MODE_CHOICES = [
10+ ["soft", "Soft power off"],
11+ ["hard", "Power off"],
12+]
13+
14
15 @enum.unique
16 class IPMI_PRIVILEGE_LEVEL(enum.Enum):
17@@ -306,6 +311,14 @@ class IPMIPowerDriver(PowerDriver):
18 make_setting_field(
19 "mac_address", "Power MAC", scope=SETTING_SCOPE.NODE
20 ),
21+ make_setting_field(
22+ "power_off_mode",
23+ "Power off mode",
24+ field_type="choice",
25+ choices=IPMI_POWER_OFF_MODE_CHOICES,
26+ default="hard",
27+ required=False,
28+ ),
29 ]
30 ip_extractor = make_ip_extractor("power_address")
31 wait_time = (4, 8, 16, 32)
32diff --git a/src/provisioningserver/tests/test_power_driver_command.py b/src/provisioningserver/tests/test_power_driver_command.py
33index 93aaace..3ea8a5a 100644
34--- a/src/provisioningserver/tests/test_power_driver_command.py
35+++ b/src/provisioningserver/tests/test_power_driver_command.py
36@@ -111,6 +111,8 @@ class TestPowerDriverCommand(MAASTestCase):
37 "opensesspriv",
38 "--workaround-flags",
39 "authcap",
40+ "--power-off-mode",
41+ "hard",
42 ]
43 )
44

Subscribers

People subscribed via source and target branches