diff --git a/projects/amdsmi/amdsmi_cli/amdsmi_cli.py b/projects/amdsmi/amdsmi_cli/amdsmi_cli.py index 8b88025d46..d104745e85 100755 --- a/projects/amdsmi/amdsmi_cli/amdsmi_cli.py +++ b/projects/amdsmi/amdsmi_cli/amdsmi_cli.py @@ -103,9 +103,18 @@ if __name__ == "__main__": except NameError: logging.debug("argcomplete module not found. Autocomplete will not work.") + valid_commands = ['version', 'list', 'static', 'firmware', 'bad-pages', + 'metric', 'process', 'profile', 'event', 'topology', 'set', + 'reset', 'monitor', 'xgmi', 'partition', '--help'] + sys.argv = [arg.lower() if arg.startswith('--') or not arg.startswith('-') else arg for arg in sys.argv] - args = amd_smi_parser.parse_args(args=None if sys.argv[1:] else ['--help']) + if len(sys.argv) == 1: + args = amd_smi_parser.parse_args(args=['--help']) + elif sys.argv[1] in valid_commands: + args = amd_smi_parser.parse_args(args=None) + else: + raise amdsmi_cli_exceptions.AmdSmiInvalidSubcommandException(sys.argv[1],amd_smi_commands.logger.destination) # Handle command modifiers before subcommand execution if args.json: diff --git a/projects/amdsmi/amdsmi_cli/amdsmi_cli_exceptions.py b/projects/amdsmi/amdsmi_cli/amdsmi_cli_exceptions.py index ad4ae386fc..ee4e823cb5 100644 --- a/projects/amdsmi/amdsmi_cli/amdsmi_cli_exceptions.py +++ b/projects/amdsmi/amdsmi_cli/amdsmi_cli_exceptions.py @@ -241,6 +241,21 @@ class AmdSmiRequiredCommandException(AmdSmiException): self.stdout_message = f"{common_message} Error code: {self.value}" +class AmdSmiInvalidSubcommandException(AmdSmiException): + def __init__(self, command, outputformat: str): + super().__init__() + self.value = -10 + self.command = command + self.output_format = outputformat + + common_message = f"AMD-SMI Command '{self.command}' is invalid. Must receive valid AMD-SMI Command first. 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: str): super().__init__()