samba-tool: gpo: Add listcontainers subcommand to list containers using given GPO
authorAmitay Isaacs <amitay@gmail.com>
Tue, 3 Jul 2012 04:22:42 +0000 (14:22 +1000)
committerAmitay Isaacs <amitay@gmail.com>
Tue, 3 Jul 2012 05:20:42 +0000 (15:20 +1000)
Thanks to Denis Bonnenfant <denis.bonnenfant@diderot.org> for patch.

source4/scripting/python/samba/netcmd/gpo.py

index 86c5465bb58b42e9d371a08ac9afa6c5f7239ec9..e32458ed47dcf3b005074d8834019f3fb304baf6 100644 (file)
@@ -652,6 +652,42 @@ class cmd_dellink(Command):
         cmd_getlink().run(container_dn, H, sambaopts, credopts, versionopts)
 
 
+class cmd_listcontainers(Command):
+    """List all linked containers for a GPO"""
+
+    synopsis = "%prog <gpo> [options]"
+
+    takes_optiongroups = {
+        "sambaopts": options.SambaOptions,
+        "versionopts": options.VersionOptions,
+        "credopts": options.CredentialsOptions,
+    }
+
+    takes_args = ['gpo']
+
+    takes_options = [
+        Option("-H", help="LDB URL for database or target server", type=str)
+        ]
+
+    def run(self, gpo, H=None, sambaopts=None, credopts=None,
+                versionopts=None):
+
+        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)
+
+        msg = get_gpo_containers(self.samdb, gpo)
+        if len(msg):
+            self.outf.write("Container(s) using GPO %s\n" % gpo)
+            for m in msg:
+                self.outf.write("    DN: %s\n" % m['dn'])
+        else:
+            self.outf.write("No Containers using GPO %s\n" % gpo)
+
+
 class cmd_getinheritance(Command):
     """Get inheritance flag for a container"""
 
@@ -966,6 +1002,7 @@ class cmd_gpo(SuperCommand):
     subcommands["getlink"] = cmd_getlink()
     subcommands["setlink"] = cmd_setlink()
     subcommands["dellink"] = cmd_dellink()
+    subcommands["listcontainers"] = cmd_listcontainers()
     subcommands["getinheritance"] = cmd_getinheritance()
     subcommands["setinheritance"] = cmd_setinheritance()
     subcommands["fetch"] = cmd_fetch()