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 run level at PLC.
18 Replaces the behavior of UpdateBootStateWithPLC. Where previously, the
19 boot_state of a node would be altered by the BM, now the run_level is
20 updated, and the boot_state is preserved as a record of a User's
23 The current value of the RUN_LEVEL key in vars is used.
24 Optionally, notify the contacts of the run level change.
25 If this is the case, the following keys/values
26 should be set in vars before calling this step:
27 STATE_CHANGE_NOTIFY = 1
28 STATE_CHANGE_NOTIFY_MESSAGE = "<notify message>"
29 The second value is a message to send the users from notify_messages.py
31 Return 1 if succesfull, a BootManagerException otherwise.
34 log.write("\n\nStep: Updating node run level at PLC.\n")
37 # translate boot_state values to run_level value
38 if vars['RUN_LEVEL'] in ['diag', 'diagnose', 'disabled', 'disable']:
39 vars['RUN_LEVEL'] = 'safeboot'
40 update_vals['run_level'] = vars['RUN_LEVEL']
42 BootAPI.call_api_function(vars, "ReportRunlevel", (update_vals,))
43 log.write("Successfully updated run level for this node at PLC\n")
44 except BootManagerException as e:
45 log.write("Unable to update run level for this node at PLC: {}.\n".format(e))
47 notify = vars.get("STATE_CHANGE_NOTIFY",0)
50 message = vars['STATE_CHANGE_NOTIFY_MESSAGE']
57 sent = BootAPI.call_api_function(vars, "BootNotifyOwners",
62 except BootManagerException as e:
63 log.write("Call to BootNotifyOwners failed: {}.\n".format(e))
66 log.write("Unable to notify site contacts of state change.\n")