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

Reply via email to