alces-software / adminware

A sandbox CLI for running commands remotely across nodes
1 stars 0 forks source link

Tool argument names with uppercase characters raise breaking errors when the tool is run #179

Open DavidMarchant opened 5 years ago

DavidMarchant commented 5 years ago

If an argument specified in a tools config (the 'key' of the key/value pair) contains any uppercase characters in its name when run, even with valid CLI input, it will crash the system & print an ugly stack trace as so:

``` adminware> run cmd1 -n node dsadas sadsada Traceback (most recent call last): File "src/adminware", line 7, in adminware() File "/tmp/adminware/venv/lib/python3.5/site-packages/click/core.py", line 722, in __call__ return self.main(*args, **kwargs) File "/tmp/adminware/venv/lib/python3.5/site-packages/click/core.py", line 697, in main rv = self.invoke(ctx) File "/tmp/adminware/venv/lib/python3.5/site-packages/click/core.py", line 1066, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/tmp/adminware/venv/lib/python3.5/site-packages/click/core.py", line 895, in invoke return ctx.invoke(self.callback, **ctx.params) File "/tmp/adminware/venv/lib/python3.5/site-packages/click/core.py", line 535, in invoke return callback(*args, **kwargs) File "/tmp/adminware/src/appliance_cli/sandbox.py", line 31, in sandbox allow_internal_commands=False, File "/tmp/adminware/venv/src/click-repl/click_repl/__init__.py", line 194, in repl group.invoke(ctx) File "/tmp/adminware/venv/lib/python3.5/site-packages/click/core.py", line 1066, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/tmp/adminware/venv/lib/python3.5/site-packages/click/core.py", line 1066, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/tmp/adminware/venv/lib/python3.5/site-packages/click/core.py", line 895, in invoke return ctx.invoke(self.callback, **ctx.params) File "/tmp/adminware/venv/lib/python3.5/site-packages/click/core.py", line 535, in invoke return callback(*args, **kwargs) File "/tmp/adminware/venv/lib/python3.5/site-packages/click/decorators.py", line 17, in new_func return f(get_current_context(), *args, **kwargs) File "/tmp/adminware/src/appliance_cli/command_generation.py", line 136, in click_callback params[arg_name] for arg_name in arguments.keys() File "/tmp/adminware/src/appliance_cli/command_generation.py", line 136, in params[arg_name] for arg_name in arguments.keys() KeyError: 'INPUT' ```

This acts similarly for any uppercase chars; inpuT as a name would also error.

This is likely due to some down-casing before entry into the params dict resulting in a KeyError on attempted lookup.

This should either be fixed such that arguments with uppercase chars in their names are valid or such that the system errors in a much more graceful way, either on startup when the configs are loaded or when the tool's attempted to be ran.

WilliamMcCumstie commented 5 years ago

@DavidMarchant Can you give an example of the config.yaml?