X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=source%2Fsteps%2FGetAndUpdateNodeDetails.py;h=58e3bf8785d2bdb0179b9dd90cb1fb64cb7b311f;hb=0e57d290f7ee2c4c05bff3048229ea2b58d3d506;hp=594683a5168ef37356ae1c86eae367f1e86a450c;hpb=094a91004df52c1db9cbdd65abe8bff6dbccd99c;p=bootmanager.git diff --git a/source/steps/GetAndUpdateNodeDetails.py b/source/steps/GetAndUpdateNodeDetails.py index 594683a..58e3bf8 100644 --- a/source/steps/GetAndUpdateNodeDetails.py +++ b/source/steps/GetAndUpdateNodeDetails.py @@ -1,11 +1,12 @@ #!/usr/bin/python - +# # Copyright (c) 2003 Intel Corporation # All rights reserved. # # Copyright (c) 2004-2006 The Trustees of Princeton University # All rights reserved. +import sys, traceback import string from Exceptions import * @@ -73,6 +74,7 @@ def Run( vars, log ): ['boot_state', 'nodegroup_ids', 'interface_ids', 'model', 'site_id']))[0] vars['BOOT_STATE']= node_details['boot_state'] + vars['RUN_LEVEL']= node_details['boot_state'] vars['NODE_MODEL']= string.strip(node_details['model']) vars['SITE_ID'] = node_details['site_id'] log.write( "Successfully retrieved node record.\n" ) @@ -104,4 +106,36 @@ def Run( vars, log ): vars['INTERFACES']= interfaces + # call getNodeFlavour and store in VARS['node_flavour'] + try: + node_flavour = BootAPI.call_api_function(vars, "GetNodeFlavour", (vars['NODE_ID'], ) ) + except: + log.write("GetNodeFlavour failed, not fatal if the node flavor is available in ``configuration''\n") + pass + + flavour_keys = [ + 'virt',# 'vs' or 'lxc' + 'nodefamily',# the basename for downloading nodeimage + 'extensions',# extensions to be applied on top of the base nodeimage + 'plain'# false if compressed image, true if not + ] + + # MyPLC 5.0 workaround + # make sure to define 'extensions' even if not yet set + if ('extensions' not in vars or vars['extensions']==''): + vars['extensions']=[] + + for k in flavour_keys: + # Support MyPLC <5.2 + if (not vars.has_key(k)): + try: + vars[k] = node_flavour[k] + except: + exc_type, exc_value, exc_traceback = sys.exc_info() + lines=traceback.format_exception(exc_type,exc_value,exc_traceback) + for line in lines: log.write(line) + raise BootManagerException ("Could not call GetNodeFlavour - need PLCAPI-5.2") + + log.write ("NodeFlavour as returned from PLC: %s\n"%node_flavour) + return 1