3 # Copyright (c) 2003 Intel Corporation
6 # Copyright (c) 2004-2006 The Trustees of Princeton University
9 from Exceptions import *
11 import notify_messages
16 Change this nodes boot state at PLC.
18 The only valid transition is from reinstall to boot. All other changes to
19 the boot state of a node should be performed by the Admin, Tech or PI
20 through the API or Web interface.
22 The current value of the BOOT_STATE key in vars is used.
23 Optionally, notify the contacts of the boot state change.
24 If this is the case, the following keys/values
25 should be set in vars before calling this step:
26 STATE_CHANGE_NOTIFY = 1
27 STATE_CHANGE_NOTIFY_MESSAGE = "<notify message>"
28 The second value is a message to send the users from notify_messages.py
30 Return 1 if succesfull, a BootManagerException otherwise.
33 log.write("\n\nStep: Updating node boot state at PLC.\n")
36 update_vals['boot_state'] = vars['BOOT_STATE']
38 BootAPI.call_api_function(vars, "BootUpdateNode", (update_vals,))
39 log.write("Successfully updated boot state for this node at PLC\n")
40 except BootManagerException as e:
41 log.write("Unable to update boot state for this node at PLC: {}.\n".format(e))
43 notify = vars.get("STATE_CHANGE_NOTIFY",0)
46 message = vars['STATE_CHANGE_NOTIFY_MESSAGE']
53 sent = BootAPI.call_api_function(vars, "BootNotifyOwners",
58 except BootManagerException as e:
59 log.write("Call to BootNotifyOwners failed: {}.\n".format(e))
62 log.write("Unable to notify site contacts of state change.\n")