diff options
-rw-r--r-- | source4/scripting/python/samba/netcmd/gpo.py | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/source4/scripting/python/samba/netcmd/gpo.py b/source4/scripting/python/samba/netcmd/gpo.py index cbddcc5a8d..86c5465bb5 100644 --- a/source4/scripting/python/samba/netcmd/gpo.py +++ b/source4/scripting/python/samba/netcmd/gpo.py @@ -672,11 +672,11 @@ class cmd_getinheritance(Command): def run(self, container_dn, H=None, sambaopts=None, credopts=None, versionopts=None): - self.url = H self.lp = sambaopts.get_loadparm() - self.creds = credopts.get_credentials(self.lp, fallback_machine=True) + self.url = dc_url(self.lp, self.creds, H) + samdb_connect(self) try: @@ -723,13 +723,12 @@ class cmd_setinheritance(Command): else: raise CommandError("Unknown inheritance state (%s)" % inherit_state) - self.url = H self.lp = sambaopts.get_loadparm() - self.creds = credopts.get_credentials(self.lp, fallback_machine=True) - samdb_connect(self) + self.url = dc_url(self.lp, self.creds, H) + samdb_connect(self) try: msg = self.samdb.search(base=container_dn, scope=ldb.SCOPE_BASE, expression="(objectClass=*)", @@ -774,8 +773,13 @@ class cmd_fetch(Command): self.lp = sambaopts.get_loadparm() self.creds = credopts.get_credentials(self.lp, fallback_machine=True) - dc_hostname = netcmd_finddc(self.lp, self.creds) - self.url = dc_url(self.lp, self.creds, H, dc=dc_hostname) + # We need to know writable DC to setup SMB connection + if H and H.startswith('ldap://'): + dc_hostname = H[7:] + self.url = H + else: + dc_hostname = netcmd_finddc(self.lp, self.creds) + self.url = dc_url(self.lp, self.creds, dc=dc_hostname) samdb_connect(self) try: @@ -843,9 +847,14 @@ class cmd_create(Command): self.lp = sambaopts.get_loadparm() self.creds = credopts.get_credentials(self.lp, fallback_machine=True) - self.url = dc_url(self.lp, self.creds, url=H) + # We need to know writable DC to setup SMB connection + if H and H.startswith('ldap://'): + dc_hostname = H[7:] + self.url = H + else: + dc_hostname = netcmd_finddc(self.lp, self.creds) + self.url = dc_url(self.lp, self.creds, dc=dc_hostname) - dc_hostname = netcmd_finddc(self.lp, self.creds) samdb_connect(self) msg = get_gpo_info(self.samdb, displayname=displayname) |