def login(self, *args, **kwargs): r""" Assign BMC default values for username, password and auth arguments and call parent class login method. Description of argument(s): args See parent class method prolog for details. kwargs See parent class method prolog for details. """ if MTLS_ENABLED == 'True': return None if not self.__inited__: message = "bmc_redfish.__init__() was never successfully run. It " message += "is likely that the target BMC firmware code level " message += "does not support redfish.\n" raise ValueError(message) # Assign default values for username, password, auth where necessary. openbmc_username = BuiltIn().get_variable_value("${OPENBMC_USERNAME}") openbmc_password = BuiltIn().get_variable_value("${OPENBMC_PASSWORD}") username, args, kwargs = fa.pop_arg(openbmc_username, *args, **kwargs) password, args, kwargs = fa.pop_arg(openbmc_password, *args, **kwargs) auth, args, kwargs = fa.pop_arg('session', *args, **kwargs) super(bmc_redfish, self).login(username, password, auth, *args, **kwargs)
def restore_plug_in_value(*args, **kwargs): r""" Return a value from a plug-in save file. The args/kwargs are interpreted differently depending on how this function is called. Mode 1 - The output of this function is assigned to a variable: Example: my_var1 = restore_plug_in_value(2) In this mode, the lvalue ("my_var1" in this example) will serve as the name of the value to be restored. Mode 2 - The output of this function is NOT assigned to a variable: Example: if restore_plug_in_value('my_var1', 2): do_something() In this mode, the caller must explicitly provide the name of the value being restored. The args/kwargs are interpreted as follows: Description of argument(s): var_name The name of the value to be restored. Only relevant in mode 1 (see example above). default The default value to be returned if there is no plug-in save file for the value in question. plug_in_package_name See compose_plug_in_save_dir_path for details. """ # Process args. lvalue = gp.get_arg_name(0, -1, stack_frame_ix=2) if lvalue: var_name = lvalue else: var_name, args, kwargs = fa.pop_arg("", *args, **kwargs) default, args, kwargs = fa.pop_arg("", *args, **kwargs) plug_in_package_name, args, kwargs = fa.pop_arg(None, *args, **kwargs) if args or kwargs: error_message = "Programmer error - Too many arguments passed for this function." raise ValueError(error_message) plug_in_save_dir_path = create_plug_in_save_dir(plug_in_package_name) save_file_path = plug_in_save_dir_path + var_name if os.path.isfile(save_file_path): gp.qprint_timen("Restoring " + var_name + " value from " + save_file_path + ".") var_value = gm.file_to_list(save_file_path, newlines=0, comments=0, trim=1)[0] if type(default) is bool: # Convert from string to bool. var_value = (var_value == 'True') if type(default) is int: # Convert from string to int. var_value = int(var_value) else: var_value = default gp.qprint_timen("Save file " + save_file_path + " does not exist so returning default value.") gp.qprint_varx(var_name, var_value) return var_value
def get_var_name(*args, **kwargs): r""" If args/kwargs contain a var_name, simply return its value. Otherwise, get the variable name of the first argument used to call the validation function (e.g. valid, valid_integer, etc.) and return it. This function is designed solely for use by other functions in this file. Example: A programmer codes this: valid_value(last_name) Which results in the following call stack: valid_value(last_name) -> get_var_name(var_name) In this example, this function will return "last_name". Example: err_msg = valid_value(last_name, var_name="some_other_name") Which results in the following call stack: valid_value(var_value, var_name="some_other_name") -> get_var_name(var_name) In this example, this function will return "some_other_name". Description of argument(s): var_name The name of the variable. """ var_name, args, kwargs = fa.pop_arg(*args, **kwargs) if var_name: return var_name return gp.get_arg_name(0, 1, stack_frame_ix=3)