power_state_change: convert an int input for delay to string, improve doc

this adds 'timeout' to the documentation for power_state_change, and
supports delay being an integer or a string.  This is so that yaml
can contain:
 delay: 30
rather than
 delay: "+30"
or
 dealy: "30"
This commit is contained in:
Scott Moser 2013-10-09 10:03:03 -04:00
parent 1effd9ba84
commit b3b8de6f9c
2 changed files with 16 additions and 1 deletions

View File

@ -75,6 +75,12 @@ def load_power_state(cfg):
','.join(opt_map.keys()))
delay = pstate.get("delay", "now")
# convert integer 30 or string '30' to '+30'
try:
delay = "+%s" % int(delay)
except ValueError:
pass
if delay != "now" and not re.match(r"\+[0-9]+", delay):
raise TypeError("power_state[delay] must be 'now' or '+m' (minutes).")

View File

@ -12,11 +12,20 @@
# that may go to the console as a result of system services like
# syslog being taken down while cloud-init is running.
#
# If you delay '+5' (5 minutes) and have a timeout of
# 120 (2 minutes), then the max time until shutdown will be 7 minutes.
# cloud-init will invoke 'shutdown +5' after the process finishes, or
# when 'timeout' seconds have elapsed.
#
# delay: form accepted by shutdown. default is 'now'. other format
# accepted is +m (m in minutes)
# mode: required. must be one of 'poweroff', 'halt', 'reboot'
# message: provided as the message argument to 'shutdown'. default is none.
# timeout: the amount of time to give the cloud-init process to finish
# before executing shutdown.
#
power_state:
delay: 30
delay: "+30"
mode: poweroff
message: Bye Bye
timeout: 30