samba-tool: Improve getopt.py error handling
authorGiampaolo Lauria <lauria2@yahoo.com>
Mon, 17 Oct 2011 19:34:47 +0000 (15:34 -0400)
committerJelmer Vernooij <jelmer@samba.org>
Wed, 19 Oct 2011 01:34:07 +0000 (03:34 +0200)
Modified code to handle -k and --kerberos options to:
1. Throw the correct exception
2. On error, display the correct user's specified option

source4/scripting/python/samba/getopt.py

index 7f500ec63da2d6e12a6665ea06e515cefebe3960..68a2cc72f88086d392c5686ce434f73752a4736c 100644 (file)
@@ -111,7 +111,7 @@ class VersionOptions(optparse.OptionGroup):
         sys.exit(0)
 
 
-def parse_kerberos_arg(arg):
+def parse_kerberos_arg(arg, opt_str):
     if arg.lower() in ["yes", 'true', '1']:
         return MUST_USE_KERBEROS
     elif arg.lower() in ["no", 'false', '0']:
@@ -119,7 +119,8 @@ def parse_kerberos_arg(arg):
     elif arg.lower() in ["auto"]:
         return AUTO_USE_KERBEROS
     else:
-        raise optparse.BadOptionError("invalid kerberos option: %s" % arg)
+        raise optparse.OptionValueError("invalid %s option value: %s" %
+                                        (opt_str, arg))
 
 
 class CredentialsOptions(optparse.OptionGroup):
@@ -165,7 +166,7 @@ class CredentialsOptions(optparse.OptionGroup):
         self.ipaddress = arg
 
     def _set_kerberos(self, option, opt_str, arg, parser):
-        self.creds.set_kerberos_state(parse_kerberos_arg(arg))
+        self.creds.set_kerberos_state(parse_kerberos_arg(arg, opt_str))
 
     def _set_simple_bind_dn(self, option, opt_str, arg, parser):
         self.creds.set_bind_dn(arg)
@@ -229,7 +230,7 @@ class CredentialsOptionsDouble(CredentialsOptions):
         self.no_pass2 = False
 
     def _set_kerberos2(self, option, opt_str, arg, parser):
-        self.creds2.set_kerberos_state(parse_kerberos_arg(arg))
+        self.creds2.set_kerberos_state(parse_kerberos_arg(arg, opt_str))
 
     def _set_simple_bind_dn2(self, option, opt_str, arg, parser):
         self.creds2.set_bind_dn(arg)