Michael Pasternak has uploaded a new change for review. Change subject: cli: disallow app internal options to be specified by the user ......................................................................
cli: disallow app internal options to be specified by the user Change-Id: I7e943f1573aea0e1608fac87735b523a9631fd55 Signed-off-by: Michael Pasternak <mpast...@redhat.com> --- M src/cli/context.py M src/cli/messages.py M src/ovirtcli/context.py M src/ovirtcli/main.py M src/ovirtcli/options.py 5 files changed, 17 insertions(+), 6 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine-cli refs/changes/22/8122/1 diff --git a/src/cli/context.py b/src/cli/context.py index 9fa655b..10d5984 100644 --- a/src/cli/context.py +++ b/src/cli/context.py @@ -53,11 +53,12 @@ welcome = None goodbye = None - def __init__(self, cmdin=None, args=None): + def __init__(self, cmdin=None, args=None, option_parser=None): """Constructor.""" self.parameters_cash = {} self.cmdin = cmdin or sys.stdin self.args = args + self.option_parser = option_parser self.commands = [] self.status = None self.interactive = sys.stdin.isatty() and sys.stdout.isatty() \ @@ -81,6 +82,7 @@ self._logger = logger def __collect_connection_data(self): + self.__exclude_app_options() if self.settings['ovirt-shell:url'] == '' and \ not self.__is_option_specified_in_cli_args('--url') and \ not self.__is_option_specified_in_cli_args('-l'): @@ -93,6 +95,15 @@ self.settings['ovirt-shell:password'] = getpass.getpass() sys.stdin.flush() + def __exclude_app_options(self): + for opt in self.option_parser.app_options: + if self.__is_option_specified_in_cli_args(opt): + self.__option_error(opt) + + def __option_error(self, opt): + from cli.messages import Messages + sys.exit('\n' + Messages.Error.NO_SUCH_OPTION % opt + '\n') + def __is_option_specified_in_cli_args(self, optionname): if self.args: if optionname in self.args: return True diff --git a/src/cli/messages.py b/src/cli/messages.py index 3926c5d..5a50f56 100644 --- a/src/cli/messages.py +++ b/src/cli/messages.py @@ -18,7 +18,7 @@ class Messages(): class Error(): OBJECT_IS_IMMUTABLE = '%s "%s" is immutable.' - NO_SUCH_OPTION = 'option "%s" is not supported.' + NO_SUCH_OPTION = 'option "%s" is not supported, see help for more details.' NO_SUCH_OBJECT = '%s "%s" does not exist.' NO_SUCH_ACTION = 'action "%s" does not exist.' NO_SUCH_TYPE = 'type "%s" does not exist.' diff --git a/src/ovirtcli/context.py b/src/ovirtcli/context.py index fd8de8c..c72084b 100644 --- a/src/ovirtcli/context.py +++ b/src/ovirtcli/context.py @@ -41,8 +41,8 @@ CLI_MODULE_NAME = "ovirt-shell" DEFAULT_VERSION = (0, 0, 0, 0) - def __init__(self, args=None): - super(OvirtCliExecutionContext, self).__init__(args=args) + def __init__(self, args=None, option_parser=None): + super(OvirtCliExecutionContext, self).__init__(args=args, option_parser=option_parser) self.connection = None self.formatter = create(Formatter, self.settings['ovirt-shell:output_format']) self.settings.add_callback('cli:verbosity', self._set_verbosity) diff --git a/src/ovirtcli/main.py b/src/ovirtcli/main.py index 0abc315..24b6838 100644 --- a/src/ovirtcli/main.py +++ b/src/ovirtcli/main.py @@ -24,7 +24,7 @@ ############################## MAIN ################################# def main(): parser = create(OvirtCliOptionParser) - context = OvirtCliExecutionContext(sys.argv) + context = OvirtCliExecutionContext(sys.argv, parser) shell = EngineShell(context, parser) if len(sys.argv) > 1: diff --git a/src/ovirtcli/options.py b/src/ovirtcli/options.py index 2541987..0963e65 100644 --- a/src/ovirtcli/options.py +++ b/src/ovirtcli/options.py @@ -53,7 +53,7 @@ self.disable_interspersed_args() # list of hidden app. options (long format) - self.app_options = ['--password'] + self.app_options = ['--password', '-p'] def exit(self, status=0, msg=None): self.values._exit = True -- To view, visit http://gerrit.ovirt.org/8122 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7e943f1573aea0e1608fac87735b523a9631fd55 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine-cli Gerrit-Branch: master Gerrit-Owner: Michael Pasternak <mpast...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches