python: netcmd: make use of HostOptions for claims and sites commands
authorRob van der Linde <rob@catalyst.net.nz>
Fri, 6 Oct 2023 02:49:27 +0000 (15:49 +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/netcmd/__init__.py
python/samba/netcmd/domain/auth/policy.py
python/samba/netcmd/domain/auth/silo.py
python/samba/netcmd/domain/auth/silo_member.py
python/samba/netcmd/domain/claim/claim_type.py
python/samba/netcmd/domain/claim/value_type.py
python/samba/netcmd/sites.py

index 48fdbd92ee843655afab39a13042e1d55c233a1a..ca7727b42b62ddab856cd5b02040ee2b041bc9d3 100644 (file)
@@ -115,11 +115,11 @@ class Command(object):
         else:
             print(f"{err}{klass}: {msg} - {evalue}", file=self.errf)
 
-    def ldb_connect(self, ldap_url, sambaopts, credopts):
+    def ldb_connect(self, hostopts, sambaopts, credopts):
         """Helper to connect to Ldb database using command line opts."""
         lp = sambaopts.get_loadparm()
         creds = credopts.get_credentials(lp)
-        return SamDB(ldap_url, credentials=creds,
+        return SamDB(hostopts.H, credentials=creds,
                      session_info=system_session(lp), lp=lp)
 
     def print_json(self, data):
index b3235b8cac69b5e78e3fb6ab47f3817a27556330..7d7dea7ef03870b6d3ab0b228c21268e2cb84374 100644 (file)
@@ -37,19 +37,18 @@ class cmd_domain_auth_policy_list(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--json", help="Output results in JSON format.",
                dest="output_format", action="store_const", const="json"),
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None,
+    def run(self, hostopts=None, sambaopts=None, credopts=None,
             output_format=None):
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         # Authentication policies grouped by cn.
         try:
@@ -74,19 +73,18 @@ class cmd_domain_auth_policy_view(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--name",
                help="Name of authentication policy to view (required).",
                dest="name", action="store", type=str, required=True),
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None, name=None):
+    def run(self, hostopts=None, sambaopts=None, credopts=None, name=None):
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         try:
             policy = AuthenticationPolicy.get(ldb, cn=name)
@@ -109,11 +107,10 @@ class cmd_domain_auth_policy_create(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--name", help="Name of authentication policy (required).",
                dest="name", action="store", type=str, required=True),
         Option("--description",
@@ -175,7 +172,7 @@ class cmd_domain_auth_policy_create(Command):
                dest="computer_allowed_to_authenticate_to", type=str, action="store"),
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None, name=None,
+    def run(self, hostopts=None, sambaopts=None, credopts=None, name=None,
             description=None, protect=None, unprotect=None, audit=None,
             enforce=None, strong_ntlm_policy=None, user_tgt_lifetime=None,
             user_allow_ntlm_auth=None, user_allowed_to_authenticate_from=None,
@@ -189,7 +186,7 @@ class cmd_domain_auth_policy_create(Command):
         if audit and enforce:
             raise CommandError("--audit and --enforce cannot be used together.")
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         try:
             policy = AuthenticationPolicy.get(ldb, cn=name)
@@ -245,11 +242,10 @@ class cmd_domain_auth_policy_modify(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--name", help="Name of authentication policy (required).",
                dest="name", action="store", type=str, required=True),
         Option("--description",
@@ -310,7 +306,7 @@ class cmd_domain_auth_policy_modify(Command):
                dest="computer_allowed_to_authenticate_to", type=str, action="store"),
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None, name=None,
+    def run(self, hostopts=None, sambaopts=None, credopts=None, name=None,
             description=None, protect=None, unprotect=None, audit=None,
             enforce=None, strong_ntlm_policy=None, user_tgt_lifetime=None,
             user_allow_ntlm_auth=None, user_allowed_to_authenticate_from=None,
@@ -324,7 +320,7 @@ class cmd_domain_auth_policy_modify(Command):
         if audit and enforce:
             raise CommandError("--audit and --enforce cannot be used together.")
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         try:
             policy = AuthenticationPolicy.get(ldb, cn=name)
@@ -410,21 +406,20 @@ class cmd_domain_auth_policy_delete(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--name", help="Name of authentication policy (required).",
                dest="name", action="store", type=str, required=True),
         Option("--force", help="Force delete protected authentication policy.",
                dest="force", action="store_true")
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None, name=None,
+    def run(self, hostopts=None, sambaopts=None, credopts=None, name=None,
             force=None):
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         try:
             policy = AuthenticationPolicy.get(ldb, cn=name)
index ad0d075a18aa666c1710698b5fa68a86395123b2..0c486aeeaffa609c1b9537c834df2255d57b0a47 100644 (file)
@@ -36,19 +36,18 @@ class cmd_domain_auth_silo_list(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--json", help="Output results in JSON format.",
                dest="output_format", action="store_const", const="json"),
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None,
+    def run(self, hostopts=None, sambaopts=None, credopts=None,
             output_format=None):
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         # Authentication silos grouped by cn.
         try:
@@ -73,19 +72,18 @@ class cmd_domain_auth_silo_view(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--name",
                help="Name of authentication silo to view (required).",
                dest="name", action="store", type=str, required=True),
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None, name=None):
+    def run(self, hostopts=None, sambaopts=None, credopts=None, name=None):
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         try:
             silo = AuthenticationSilo.get(ldb, cn=name)
@@ -108,11 +106,10 @@ class cmd_domain_auth_silo_create(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--name", help="Name of authentication silo (required).",
                dest="name", action="store", type=str, required=True),
         Option("--description",
@@ -156,7 +153,7 @@ class cmd_domain_auth_silo_create(Command):
         except (LookupError, ValueError) as e:
             raise CommandError(e)
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None, name=None,
+    def run(self, hostopts=None, sambaopts=None, credopts=None, name=None,
             description=None, policy=None, user_policy=None,
             service_policy=None, computer_policy=None, protect=None,
             unprotect=None, audit=None, enforce=None):
@@ -173,7 +170,7 @@ class cmd_domain_auth_silo_create(Command):
             service_policy = service_policy or policy
             computer_policy = computer_policy or policy
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         try:
             silo = AuthenticationSilo.get(ldb, cn=name)
@@ -227,11 +224,10 @@ class cmd_domain_auth_silo_modify(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--name", help="Name of authentication silo (required).",
                dest="name", action="store", type=str, required=True),
         Option("--description",
@@ -275,7 +271,7 @@ class cmd_domain_auth_silo_modify(Command):
         except (LookupError, ModelError, ValueError) as e:
             raise CommandError(e)
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None, name=None,
+    def run(self, hostopts=None, sambaopts=None, credopts=None, name=None,
             description=None, policy=None, user_policy=None,
             service_policy=None, computer_policy=None, protect=None,
             unprotect=None, audit=None, enforce=None):
@@ -292,7 +288,7 @@ class cmd_domain_auth_silo_modify(Command):
             service_policy = service_policy or policy
             computer_policy = computer_policy or policy
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         try:
             silo = AuthenticationSilo.get(ldb, cn=name)
@@ -354,21 +350,20 @@ class cmd_domain_auth_silo_delete(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--name", help="Name of authentication silo (required).",
                dest="name", action="store", type=str, required=True),
         Option("--force", help="Force delete protected authentication silo.",
                dest="force", action="store_true")
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None, name=None,
+    def run(self, hostopts=None, sambaopts=None, credopts=None, name=None,
             force=None):
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         try:
             silo = AuthenticationSilo.get(ldb, cn=name)
index 21275e680f39931292d9b7e2fcccb42fd41c294a..294519255d01294074bd27c40ad418a696011e17 100644 (file)
@@ -35,11 +35,10 @@ class cmd_domain_auth_silo_member_add(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--name",
                help="Name of authentication silo (required).",
                dest="name", action="store", type=str, required=True),
@@ -48,10 +47,10 @@ class cmd_domain_auth_silo_member_add(Command):
                dest="member", action="store", type=str, required=True),
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None,
+    def run(self, hostopts=None, sambaopts=None, credopts=None,
             name=None, member=None):
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         try:
             silo = AuthenticationSilo.get(ldb, cn=name)
@@ -98,11 +97,10 @@ class cmd_domain_auth_silo_member_list(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--name",
                help="Name of authentication silo (required).",
                dest="name", action="store", type=str, required=True),
@@ -110,10 +108,10 @@ class cmd_domain_auth_silo_member_list(Command):
                dest="output_format", action="store_const", const="json"),
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None,
+    def run(self, hostopts=None, sambaopts=None, credopts=None,
             name=None, output_format=None):
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         try:
             silo = AuthenticationSilo.get(ldb, cn=name)
@@ -146,11 +144,10 @@ class cmd_domain_auth_silo_member_remove(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--name",
                help="Name of authentication silo (required).",
                dest="name", action="store", type=str, required=True),
@@ -159,10 +156,10 @@ class cmd_domain_auth_silo_member_remove(Command):
                dest="member", action="store", type=str, required=True),
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None,
+    def run(self, hostopts=None, sambaopts=None, credopts=None,
             name=None, member=None):
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         try:
             silo = AuthenticationSilo.get(ldb, cn=name)
index 6d187906933c47a5ec002721369714350f123d01..c0825c660d2534c78959b415c1e1ec22831f61ca 100644 (file)
@@ -38,11 +38,10 @@ class cmd_domain_claim_claim_type_create(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--attribute", help="Attribute of claim type to create (required).",
                dest="attribute_name", action="store", type=str, required=True),
         Option("--class", help="Object classes to set claim type to.",
@@ -64,7 +63,7 @@ class cmd_domain_claim_claim_type_create(Command):
                dest="unprotect", action="store_true")
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None, name=None,
+    def run(self, hostopts=None, sambaopts=None, credopts=None, name=None,
             attribute_name=None, class_names=None, description=None,
             disable=None, enable=None, protect=None, unprotect=None):
 
@@ -74,7 +73,7 @@ class cmd_domain_claim_claim_type_create(Command):
         if protect and unprotect:
             raise CommandError("--protect and --unprotect cannot be used together.")
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         display_name = name or attribute_name
         try:
@@ -153,11 +152,10 @@ class cmd_domain_claim_claim_type_modify(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--name", help="Display name of claim type to modify (required).",
                dest="name", action="store", type=str, required=True),
         Option("--class", help="Object classes to set claim type to.",
@@ -178,7 +176,7 @@ class cmd_domain_claim_claim_type_modify(Command):
                dest="unprotect", action="store_true")
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None, name=None,
+    def run(self, hostopts=None, sambaopts=None, credopts=None, name=None,
             class_names=None, description=None, enable=None, disable=None,
             protect=None, unprotect=None):
 
@@ -187,7 +185,7 @@ class cmd_domain_claim_claim_type_modify(Command):
         if protect and unprotect:
             raise CommandError("--protect and --unprotect cannot be used together.")
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         try:
             claim_type = ClaimType.get(ldb, display_name=name)
@@ -241,21 +239,20 @@ class cmd_domain_claim_claim_type_delete(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--name", help="Display name of claim type to delete (required).",
                dest="name", action="store", type=str, required=True),
         Option("--force", help="Force claim type delete even if it is protected.",
                dest="force", action="store_true")
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None,
+    def run(self, hostopts=None, sambaopts=None, credopts=None,
             name=None, force=None):
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         try:
             claim_type = ClaimType.get(ldb, display_name=name)
@@ -291,19 +288,18 @@ class cmd_domain_claim_claim_type_list(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--json", help="Output results in JSON format.",
                dest="output_format", action="store_const", const="json"),
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None,
+    def run(self, hostopts=None, sambaopts=None, credopts=None,
             output_format=None):
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         # Claim types grouped by displayName.
         try:
@@ -328,18 +324,17 @@ class cmd_domain_claim_claim_type_view(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--name", help="Display name of claim type to view (required).",
                dest="name", action="store", type=str, required=True),
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None, name=None):
+    def run(self, hostopts=None, sambaopts=None, credopts=None, name=None):
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         try:
             claim_type = ClaimType.get(ldb, display_name=name)
index 579cc949dccef2458963eb43dc34b61b4c9507d5..a26111338ca43ff4e835240771688c8f5ffdb1bb 100644 (file)
@@ -34,19 +34,18 @@ class cmd_domain_claim_value_type_list(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--json", help="Output results in JSON format.",
                dest="output_format", action="store_const", const="json"),
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None,
+    def run(self, hostopts=None, sambaopts=None, credopts=None,
             output_format=None):
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         # Value types grouped by display name.
         try:
@@ -71,19 +70,18 @@ class cmd_domain_claim_value_type_view(Command):
     takes_optiongroups = {
         "sambaopts": options.SambaOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server.",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--name",
                help="Display name of claim value type to view (required).",
                dest="name", action="store", type=str, required=True),
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None, name=None):
+    def run(self, hostopts=None, sambaopts=None, credopts=None, name=None):
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         try:
             value_type = ValueType.get(ldb, display_name=name)
index a004600a2d12e545ca868e1b771ffd8508a24ac9..52565d5e2b15970757eedd0349a21871baec06cc 100644 (file)
@@ -37,19 +37,18 @@ class cmd_sites_list(Command):
         "sambaopts": options.SambaOptions,
         "versionopts": options.VersionOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--json", help="Output results in JSON format.",
                dest="output_format", action="store_const", const="json"),
     ]
 
-    def run(self, ldap_url=None, sambaopts=None, credopts=None,
+    def run(self, hostopts=None, sambaopts=None, credopts=None,
             versionopts=None, output_format=None):
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         # sites by cn.
         try:
@@ -77,17 +76,13 @@ class cmd_sites_view(Command):
         "sambaopts": options.SambaOptions,
         "versionopts": options.VersionOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
-    takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server",
-               type=str, metavar="URL", dest="ldap_url"),
-    ]
-
-    def run(self, sitename, ldap_url=None, sambaopts=None, credopts=None,
+    def run(self, sitename, hostopts=None, sambaopts=None, credopts=None,
             versionopts=None):
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         try:
             site = Site.get(ldb, cn=sitename)
@@ -113,16 +108,12 @@ class cmd_sites_create(Command):
         "sambaopts": options.SambaOptions,
         "versionopts": options.VersionOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
-    takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server",
-               type=str, metavar="URL", dest="H"),
-    ]
-
-    def run(self, sitename, H=None, sambaopts=None, credopts=None,
+    def run(self, sitename, hostopts=None, sambaopts=None, credopts=None,
             versionopts=None):
-        samdb = self.ldb_connect(H, sambaopts, credopts)
+        samdb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         samdb.transaction_start()
         try:
@@ -147,16 +138,12 @@ class cmd_sites_delete(Command):
         "sambaopts": options.SambaOptions,
         "versionopts": options.VersionOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
-    takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server",
-               type=str, metavar="URL", dest="H"),
-    ]
-
-    def run(self, sitename, H=None, sambaopts=None, credopts=None,
+    def run(self, sitename, hostopts=None, sambaopts=None, credopts=None,
             versionopts=None):
-        samdb = self.ldb_connect(H, sambaopts, credopts)
+        samdb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         samdb.transaction_start()
         try:
@@ -181,19 +168,18 @@ class cmd_sites_subnet_list(Command):
         "sambaopts": options.SambaOptions,
         "versionopts": options.VersionOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
     takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server",
-               type=str, metavar="URL", dest="ldap_url"),
         Option("--json", help="Output results in JSON format.",
                dest="output_format", action="store_const", const="json"),
     ]
 
-    def run(self, sitename, ldap_url=None, sambaopts=None, credopts=None,
+    def run(self, sitename, hostopts=None, sambaopts=None, credopts=None,
             versionopts=None, output_format=None):
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         try:
             site = Site.get(ldb, cn=sitename)
@@ -231,17 +217,13 @@ class cmd_sites_subnet_view(Command):
         "sambaopts": options.SambaOptions,
         "versionopts": options.VersionOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
-    takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server",
-               type=str, metavar="URL", dest="ldap_url"),
-    ]
-
-    def run(self, subnetname, ldap_url=None, sambaopts=None, credopts=None,
+    def run(self, subnetname, hostopts=None, sambaopts=None, credopts=None,
             versionopts=None):
 
-        ldb = self.ldb_connect(ldap_url, sambaopts, credopts)
+        ldb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         try:
             subnet = Subnet.get(ldb, cn=subnetname)
@@ -265,16 +247,12 @@ class cmd_sites_subnet_create(Command):
         "sambaopts": options.SambaOptions,
         "versionopts": options.VersionOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
-    takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server",
-               type=str, metavar="URL", dest="H"),
-    ]
-
-    def run(self, subnetname, site_of_subnet, H=None, sambaopts=None,
+    def run(self, subnetname, site_of_subnet, hostopts=None, sambaopts=None,
             credopts=None, versionopts=None):
-        samdb = self.ldb_connect(H, sambaopts, credopts)
+        samdb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         samdb.transaction_start()
         try:
@@ -300,16 +278,12 @@ class cmd_sites_subnet_delete(Command):
         "sambaopts": options.SambaOptions,
         "versionopts": options.VersionOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
-    takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server",
-               type=str, metavar="URL", dest="H"),
-    ]
-
-    def run(self, subnetname, H=None, sambaopts=None, credopts=None,
+    def run(self, subnetname, hostopts=None, sambaopts=None, credopts=None,
             versionopts=None):
-        samdb = self.ldb_connect(H, sambaopts, credopts)
+        samdb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         samdb.transaction_start()
         try:
@@ -332,16 +306,12 @@ class cmd_sites_subnet_set_site(Command):
         "sambaopts": options.SambaOptions,
         "versionopts": options.VersionOptions,
         "credopts": options.CredentialsOptions,
+        "hostopts": options.HostOptions,
     }
 
-    takes_options = [
-        Option("-H", "--URL", help="LDB URL for database or target server",
-               type=str, metavar="URL", dest="H"),
-    ]
-
-    def run(self, subnetname, site_of_subnet, H=None, sambaopts=None,
+    def run(self, subnetname, site_of_subnet, hostopts=None, sambaopts=None,
             credopts=None, versionopts=None):
-        samdb = self.ldb_connect(H, sambaopts, credopts)
+        samdb = self.ldb_connect(hostopts, sambaopts, credopts)
 
         samdb.transaction_start()
         try: