python: getopt: Add HostOptions to avoid need to manually add -H
authorRob van der Linde <rob@catalyst.net.nz>
Fri, 6 Oct 2023 02:47:43 +0000 (15:47 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 24 Oct 2023 23:31:29 +0000 (23:31 +0000)
Signed-off-by: Rob van der Linde <rob@catalyst.net.nz>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
python/samba/getopt.py
python/samba/tests/samba_tool/base.py

index 11af22f496e3f7770a41753c0d3050de4f74e95b..210288f9a0d9fbeb99bc534a9677c59e33ee5747 100644 (file)
@@ -269,6 +269,22 @@ class Samba3Options(SambaOptions):
         self._lp = s3param.get_context()
 
 
+class HostOptions(optparse.OptionGroup):
+    """Command line options for connecting to target host or database."""
+
+    def __init__(self, parser):
+        super().__init__(parser, "Host Options")
+
+        self.H = None
+        self.add_option("-H", "--URL",
+                        help="LDB URL for database or target server",
+                        type=str, metavar="URL", action="callback",
+                        callback=self._set_H, dest="H")
+
+    def _set_H(self, option, opt_str, arg, parser):
+        parser.values.H = self.H = arg
+
+
 class VersionOptions(optparse.OptionGroup):
     """Command line option for printing Samba version."""
     def __init__(self, parser):
index f305c1df566520784bb9a34a382728cb7fb53f57..a4f4578ff392454bd98aef4e3765f32ec1c1ef90 100644 (file)
@@ -52,15 +52,13 @@ class SambaToolCmdTest(samba.tests.BlackboxTestCase):
         parser = OptionParser()
         sambaopts = options.SambaOptions(parser)
         credopts = options.CredentialsOptions(parser)
-        parser.add_option("-H", "--URL",
-                          help="LDB URL for database or target server",
-                          type=str, metavar="URL", dest="H")
-        opts, args = parser.parse_args(list(argv))
+        hostopts = options.HostOptions(parser)
+        parser.parse_args(list(argv))
 
         lp = sambaopts.get_loadparm()
         creds = credopts.get_credentials(lp, fallback_machine=True)
 
-        return SamDB(url=opts.H, session_info=system_session(),
+        return SamDB(url=hostopts.H, session_info=system_session(),
                      credentials=creds, lp=lp)
 
     @classmethod