6 # Copyright (c) 2003 Intel Corporation
9 # Copyright (c) 2004-2006 The Trustees of Princeton University
10 # All rights reserved.
12 from Exceptions import *
14 import notify_messages
19 Change this nodes run level at PLC.
21 Replaces the behavior of UpdateBootStateWithPLC. Where previously, the
22 boot_state of a node would be altered by the BM, now the run_level is
23 updated, and the boot_state is preserved as a record of a User's
26 The current value of the RUN_LEVEL key in vars is used.
27 Optionally, notify the contacts of the run level change.
28 If this is the case, the following keys/values
29 should be set in vars before calling this step:
30 STATE_CHANGE_NOTIFY= 1
31 STATE_CHANGE_NOTIFY_MESSAGE= "<notify message>"
32 The second value is a message to send the users from notify_messages.py
34 Return 1 if succesfull, a BootManagerException otherwise.
37 log.write( "\n\nStep: Updating node run level at PLC.\n" )
40 # translate boot_state values to run_level value
41 if vars['RUN_LEVEL'] in ['diag', 'diagnose', 'disabled', 'disable']:
42 vars['RUN_LEVEL']='safeboot'
43 update_vals['run_level']=vars['RUN_LEVEL']
45 BootAPI.call_api_function( vars, "ReportRunlevel", (update_vals,) )
46 log.write( "Successfully updated run level for this node at PLC\n" )
47 except BootManagerException, e:
48 log.write( "Unable to update run level for this node at PLC: %s.\n" % e )
50 notify = vars.get("STATE_CHANGE_NOTIFY",0)
53 message= vars['STATE_CHANGE_NOTIFY_MESSAGE']
60 sent= BootAPI.call_api_function( vars, "BootNotifyOwners",
65 except BootManagerException, e:
66 log.write( "Call to BootNotifyOwners failed: %s.\n" % e )
69 log.write( "Unable to notify site contacts of state change.\n" )