Fixed set & reset parser no argument handling

Change-Id: If8161059810a9a4fc7845eb4ffd6d3dbd0e8df64
Signed-off-by: Maisam Arif <maisarif@amd.com>


[ROCm/amdsmi commit: 5405615062]
Αυτή η υποβολή περιλαμβάνεται σε:
Maisam Arif
2023-10-16 06:24:42 -05:00
υποβλήθηκε από Galantsev, Dmitrii
γονέας e114a2ad27
υποβολή 49a797f36e
3 αρχεία άλλαξαν με 55 προσθήκες και 22 διαγραφές
@@ -61,6 +61,7 @@ def _get_error_message(error_code):
return AMDSMI_ERROR_MESSAGES[abs(error_code)]
return "Generic error"
class AmdSmiException(Exception):
def __init__(self):
self.json_message = {}
@@ -125,6 +126,7 @@ class AmdSmiDeviceNotFoundException(AmdSmiException):
self.csv_message = f"error,code\n{common_message}, {self.value}"
self.stdout_message = f"{common_message} Error code: {self.value}"
class AmdSmiInvalidFilePathException(AmdSmiException):
def __init__(self, command, outputformat):
super().__init__()
@@ -184,6 +186,22 @@ class AmdSmiParameterNotSupportedException(AmdSmiException):
self.csv_message = f"error,code\n{common_message}, {self.value}"
self.stdout_message = f"{common_message} Error code: {self.value}"
class AmdSmiRequiredCommandException(AmdSmiException):
def __init__(self, command, outputformat):
super().__init__()
self.value = -9
self.command = command
self.output_format = outputformat
common_message = f"Command '{self.command}' requires a target argument. Run '--help' for more info."
self.json_message["error"] = common_message
self.json_message["code"] = self.value
self.csv_message = f"error,code\n{common_message}, {self.value}"
self.stdout_message = f"{common_message} Error code: {self.value}"
class AmdSmiUnknownErrorException(AmdSmiException):
def __init__(self, command, outputformat):
super().__init__()
@@ -198,6 +216,7 @@ class AmdSmiUnknownErrorException(AmdSmiException):
self.csv_message = f"error,code\n{common_message}, {self.value}"
self.stdout_message = f"{common_message} Error code: {self.value}"
class AmdSmiAMDSMIErrorException(AmdSmiException):
def __init__(self, outputformat, error_code):
super().__init__()
@@ -20,6 +20,7 @@
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
import argparse
import logging
import sys
import threading
@@ -28,6 +29,7 @@ import time
from _version import __version__
from amdsmi_helpers import AMDSMIHelpers
from amdsmi_logger import AMDSMILogger
from amdsmi_cli_exceptions import AmdSmiRequiredCommandException
from amdsmi import amdsmi_interface
from amdsmi import amdsmi_exception
@@ -1780,6 +1782,11 @@ class AMDSMICommands():
args.gpu = device_handle
# Error if no subcommand args are passed
if not any([args.fan, args.perflevel, args.profile, args.perfdeterminism]):
command = " ".join(sys.argv[1:])
raise AmdSmiRequiredCommandException(command, self.logger.format)
# Build GPU string for errors
try:
gpu_bdf = amdsmi_interface.amdsmi_get_gpu_device_bdf(args.gpu)
@@ -1904,6 +1911,11 @@ class AMDSMICommands():
# Get gpu_id for logging
gpu_id = self.helpers.get_gpu_id_from_device_handle(args.gpu)
# Error if no subcommand args are passed
if not any([args.gpureset, args.clocks, args.fans, args.profile, args.xgmierr, args.perfdeterminism]):
command = " ".join(sys.argv[1:])
raise AmdSmiRequiredCommandException(command, self.logger.format)
if args.gpureset:
if self.helpers.is_amd_device(args.gpu):
try:
@@ -281,6 +281,8 @@ class AMDSMIParser(argparse.ArgumentParser):
version_parser._optionals.title = None
version_parser.formatter_class=lambda prog: AMDSMISubparserHelpFormatter(prog)
version_parser.set_defaults(func=func)
# Add Universal Arguments
self._add_command_modifiers(version_parser)
@@ -298,10 +300,8 @@ class AMDSMIParser(argparse.ArgumentParser):
list_parser.formatter_class=lambda prog: AMDSMISubparserHelpFormatter(prog)
list_parser.set_defaults(func=func)
# Add Command Modifiers
# Add Universal Arguments
self._add_command_modifiers(list_parser)
# Add Device args
self._add_device_arguments(list_parser, required=False)
@@ -337,9 +337,9 @@ class AMDSMIParser(argparse.ArgumentParser):
static_parser._optionals.title = static_optionals_title
static_parser.formatter_class=lambda prog: AMDSMISubparserHelpFormatter(prog)
static_parser.set_defaults(func=func)
self._add_command_modifiers(static_parser)
# Add Device args
# Add Universal Arguments
self._add_command_modifiers(static_parser)
self._add_device_arguments(static_parser, required=False)
# Optional Args
@@ -381,9 +381,9 @@ class AMDSMIParser(argparse.ArgumentParser):
firmware_parser._optionals.title = firmware_optionals_title
firmware_parser.formatter_class=lambda prog: AMDSMISubparserHelpFormatter(prog)
firmware_parser.set_defaults(func=func)
self._add_command_modifiers(firmware_parser)
# Add Device args
# Add Universal Arguments
self._add_command_modifiers(firmware_parser)
self._add_device_arguments(firmware_parser, required=False)
# Optional Args
@@ -414,9 +414,9 @@ class AMDSMIParser(argparse.ArgumentParser):
bad_pages_parser._optionals.title = bad_pages_optionals_title
bad_pages_parser.formatter_class=lambda prog: AMDSMISubparserHelpFormatter(prog)
bad_pages_parser.set_defaults(func=func)
self._add_command_modifiers(bad_pages_parser)
# Add Device args
# Add Universal Arguments
self._add_command_modifiers(bad_pages_parser)
self._add_device_arguments(bad_pages_parser, required=False)
# Optional Args
@@ -464,9 +464,9 @@ class AMDSMIParser(argparse.ArgumentParser):
metric_parser._optionals.title = metric_optionals_title
metric_parser.formatter_class=lambda prog: AMDSMISubparserHelpFormatter(prog)
metric_parser.set_defaults(func=func)
self._add_command_modifiers(metric_parser)
# Add Device args
# Add Universal Arguments
self._add_command_modifiers(metric_parser)
self._add_device_arguments(metric_parser, required=False)
# Add Watch args
@@ -527,9 +527,9 @@ class AMDSMIParser(argparse.ArgumentParser):
process_parser._optionals.title = process_optionals_title
process_parser.formatter_class=lambda prog: AMDSMISubparserHelpFormatter(prog)
process_parser.set_defaults(func=func)
self._add_command_modifiers(process_parser)
# Add Device args
# Add Universal Arguments
self._add_command_modifiers(process_parser)
self._add_device_arguments(process_parser, required=False)
# Add Watch args
@@ -557,9 +557,9 @@ class AMDSMIParser(argparse.ArgumentParser):
profile_parser._optionals.title = profile_optionals_title
profile_parser.formatter_class=lambda prog: AMDSMISubparserHelpFormatter(prog)
profile_parser.set_defaults(func=func)
self._add_command_modifiers(profile_parser)
# Add Device args
# Add Universal Arguments
self._add_command_modifiers(profile_parser)
self._add_device_arguments(profile_parser, required=False)
@@ -578,9 +578,9 @@ class AMDSMIParser(argparse.ArgumentParser):
event_parser._optionals.title = event_optionals_title
event_parser.formatter_class=lambda prog: AMDSMISubparserHelpFormatter(prog)
event_parser.set_defaults(func=func)
self._add_command_modifiers(event_parser)
# Add Device args
# Add Universal Arguments
self._add_command_modifiers(event_parser)
self._add_device_arguments(event_parser, required=False)
@@ -607,9 +607,9 @@ class AMDSMIParser(argparse.ArgumentParser):
topology_parser._optionals.title = topology_optionals_title
topology_parser.formatter_class=lambda prog: AMDSMISubparserHelpFormatter(prog)
topology_parser.set_defaults(func=func)
self._add_command_modifiers(topology_parser)
# Add Device args
# Add Universal Arguments
self._add_command_modifiers(topology_parser)
self._add_device_arguments(topology_parser, required=False)
# Optional Args
@@ -644,8 +644,9 @@ class AMDSMIParser(argparse.ArgumentParser):
set_value_parser._optionals.title = set_value_optionals_title
set_value_parser.formatter_class=lambda prog: AMDSMISubparserHelpFormatter(prog)
set_value_parser.set_defaults(func=func)
self._add_command_modifiers(set_value_parser)
# Add Universal Arguments
self._add_command_modifiers(set_value_parser)
# Device args are required as safeguard from the user applying the operation to all gpus unintentionally
self._add_device_arguments(set_value_parser, required=True)
@@ -777,12 +778,13 @@ class AMDSMIParser(argparse.ArgumentParser):
reset_parser._optionals.title = reset_optionals_title
reset_parser.formatter_class=lambda prog: AMDSMISubparserHelpFormatter(prog)
reset_parser.set_defaults(func=func)
self._add_command_modifiers(reset_parser)
# Add Universal Arguments
self._add_command_modifiers(reset_parser)
# Device args are required as safeguard from the user applying the operation to all gpus unintentionally
self._add_device_arguments(reset_parser, required=True)
# Optional Args
# Add reset arguments
reset_parser.add_argument('-G', '--gpureset', action='store_true', required=False, help=gpureset_help)
reset_parser.add_argument('-c', '--clocks', action='store_true', required=False, help=reset_clocks_help)
reset_parser.add_argument('-f', '--fans', action='store_true', required=False, help=reset_fans_help)