~smoser/ubuntu/trusty/maas/lp-1172566

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# -*- mode: shell-script -*-
#
# Control a system via ipmipower, sending the seamicro specific hex codes
#

# Parameters
power_change={{power_change}}
power_address={{power_address}}
power_user={{power_user}}
power_pass={{power_pass}}
power_control={{power_control}}
system_id={{system_id}}
ipmitool={{ipmitool}}

# IPMI power mode
{{py: power_mode = 1 if power_change == 'on' else 6 }}
power_mode={{power_mode}}

# Control power using IPMI
issue_ipmi_command() {
    ${ipmitool} -I lanplus \
        -H ${power_address} -U ${power_user}\
        -P ${power_pass} raw 0x2E 1 0x00 0x7d 0xab \
        ${power_mode} 0 ${system_id}
}

# Control power using REST v0.9
issue_rest_v09_command() {
python - << END
from provisioningserver.custom_hardware.seamicro import power_control_seamicro15k_v09
power_control_seamicro15k_v09("${power_address}", "${power_user}", "${power_pass}", "${system_id}", "${power_change}")
END
}

# Control power using REST v2
issue_rest_v2_command() {
python - << END
from provisioningserver.custom_hardware.seamicro import power_control_seamicro15k_v2
power_control_seamicro15k_v2("${power_address}", "${power_user}", "${power_pass}", "${system_id}", "${power_change}")
END
}

if [ "${power_control}" = "ipmi" ]
then
    issue_ipmi_command
elif [ "${power_control}" = "restapi" ]
then
    issue_rest_v09_command
elif [ "${power_control}" = "restapi2" ]
then
    issue_rest_v2_command
fi