X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=source%2Fsteps%2FGetAndUpdateNodeDetails.py;h=b6d20a6fc07e1f00c683372c4931fdb97f48ae18;hb=f52080486db907ba6557d1047730c638c4562790;hp=eb92160ef60ad43704b1ecee4c8dfb14c0f55ea3;hpb=efffd4409c55f5d0d6b6462c32fc6ce657487404;p=bootmanager.git diff --git a/source/steps/GetAndUpdateNodeDetails.py b/source/steps/GetAndUpdateNodeDetails.py index eb92160..b6d20a6 100644 --- a/source/steps/GetAndUpdateNodeDetails.py +++ b/source/steps/GetAndUpdateNodeDetails.py @@ -13,7 +13,7 @@ from Exceptions import * import BootAPI import ModelOptions -def Run( vars, log ): +def Run(vars, log): """ Contact PLC and get the attributes for this node. Also, parse in @@ -44,73 +44,73 @@ def Run( vars, log ): Raise a BootManagerException if anything fails. """ - log.write( "\n\nStep: Retrieving details of node from PLC.\n" ) + log.write("\n\nStep: Retrieving details of node from PLC.\n") # make sure we have the variables we need try: - SKIP_HARDWARE_REQUIREMENT_CHECK= vars["SKIP_HARDWARE_REQUIREMENT_CHECK"] + SKIP_HARDWARE_REQUIREMENT_CHECK = vars["SKIP_HARDWARE_REQUIREMENT_CHECK"] if SKIP_HARDWARE_REQUIREMENT_CHECK == "": - raise ValueError, "SKIP_HARDWARE_REQUIREMENT_CHECK" + raise ValueError("SKIP_HARDWARE_REQUIREMENT_CHECK") - INTERFACE_SETTINGS= vars["INTERFACE_SETTINGS"] + INTERFACE_SETTINGS = vars["INTERFACE_SETTINGS"] if INTERFACE_SETTINGS == "": - raise ValueError, "INTERFACE_SETTINGS" + raise ValueError("INTERFACE_SETTINGS") - WAS_NODE_ID_IN_CONF= vars["WAS_NODE_ID_IN_CONF"] + WAS_NODE_ID_IN_CONF = vars["WAS_NODE_ID_IN_CONF"] if WAS_NODE_ID_IN_CONF == "": - raise ValueError, "WAS_NODE_ID_IN_CONF" + raise ValueError("WAS_NODE_ID_IN_CONF") - WAS_NODE_KEY_IN_CONF= vars["WAS_NODE_KEY_IN_CONF"] + WAS_NODE_KEY_IN_CONF = vars["WAS_NODE_KEY_IN_CONF"] if WAS_NODE_KEY_IN_CONF == "": - raise ValueError, "WAS_NODE_KEY_IN_CONF" + raise ValueError("WAS_NODE_KEY_IN_CONF") - except KeyError, var: - raise BootManagerException, "Missing variable in vars: %s\n" % var - except ValueError, var: - raise BootManagerException, "Variable in vars, shouldn't be: %s\n" % var + except KeyError as var: + raise BootManagerException("Missing variable in vars: {}\n".format(var)) + except ValueError as var: + raise BootManagerException("Variable in vars, shouldn't be: {}\n".format(var)) - node_details= BootAPI.call_api_function( vars, "GetNodes", + node_details = BootAPI.call_api_function(vars, "GetNodes", (vars['NODE_ID'], ['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['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" ) - log.write( "Current boot state: %s\n" % vars['BOOT_STATE'] ) - log.write( "Node make/model: %s\n" % vars['NODE_MODEL'] ) + log.write("Successfully retrieved node record.\n") + log.write("Current boot state: {}\n".format(vars['BOOT_STATE'])) + log.write("Node make/model: {}\n".format(vars['NODE_MODEL'])) # parse in the model options from the node_model string - model= vars['NODE_MODEL'] - options= ModelOptions.Get(model) - vars['NODE_MODEL_OPTIONS']=options + model = vars['NODE_MODEL'] + options = ModelOptions.Get(model) + vars['NODE_MODEL_OPTIONS'] = options # Check if we should skip hardware requirement check if options & ModelOptions.MINHW: - vars['SKIP_HARDWARE_REQUIREMENT_CHECK']=1 - log.write( "node model indicates override to hardware requirements.\n" ) + vars['SKIP_HARDWARE_REQUIREMENT_CHECK'] = 1 + log.write("node model indicates override to hardware requirements.\n") # this contains all the node networks, for now, we are only concerned # in the primary network - interfaces= BootAPI.call_api_function( vars, "GetInterfaces", (node_details['interface_ids'],)) - got_primary= 0 + interfaces = BootAPI.call_api_function(vars, "GetInterfaces", (node_details['interface_ids'],)) + got_primary = 0 for network in interfaces: if network['is_primary'] == 1: - log.write( "Primary network as returned from PLC: %s\n" % str(network) ) - got_primary= 1 + log.write("Primary network as returned from PLC: {}\n".format(network)) + got_primary = 1 break if not got_primary: - raise BootManagerException, "Node did not have a primary network." + raise BootManagerException("Node did not have a primary network.") - vars['INTERFACES']= interfaces + vars['INTERFACES'] = interfaces # call getNodeFlavour and store in VARS['node_flavour'] try: - node_flavour = BootAPI.call_api_function(vars, "GetNodeFlavour", (vars['NODE_ID'], ) ) + 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") + log.write("GetNodeFlavour failed, not fatal if the node flavour is available in ``configuration''\n") pass flavour_keys = [ @@ -121,20 +121,22 @@ def Run( vars, log ): ] # MyPLC 5.0 workaround - if (vars['extensions']==''): - vars['extensions']=[] + # 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)): + # Support MyPLC<5.2 + if k not in vars: 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") + 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) + log.write ("NodeFlavour as returned from PLC: {}\n".format(node_flavour)) return 1