samba-tool drs showrepl: add --json option for JSON output
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Thu, 8 Feb 2018 02:52:01 +0000 (15:52 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 14 Feb 2018 23:18:29 +0000 (00:18 +0100)
Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
python/samba/netcmd/drs.py

index dc86f2e1fd9659ef90ba3d01f6e5003c1bbc3cb9..a45b906282771fddc001ffc006f0062ef4dc1c63 100644 (file)
@@ -95,6 +95,10 @@ class cmd_drs_showrepl(Command):
         "credopts": options.CredentialsOptions,
     }
 
+    takes_options = [
+        Option("--json", help="output in JSON format", action='store_true'),
+    ]
+
     takes_args = ["DC?"]
 
     def parse_neighbour(self, n):
@@ -144,7 +148,7 @@ class cmd_drs_showrepl(Command):
         return (info_type, info)
 
     def run(self, DC=None, sambaopts=None,
-            credopts=None, versionopts=None, server=None):
+            credopts=None, versionopts=None, server=None, json=False):
 
         self.lp = sambaopts.get_loadparm()
         if DC is None:
@@ -209,6 +213,17 @@ class cmd_drs_showrepl(Command):
                 a = str(r).split(':')
                 d['replicates NC'].append((a[3], int(a[2])))
 
+        if json:
+            import json as json_mod
+            data = {
+                'dsa': dsa_details,
+                'repsFrom': repsfrom,
+                'repsTo': repsto,
+                'NTDSConnections': conn_details
+            }
+            json_mod.dump(data, self.outf, indent=2)
+            return
+
         self.message("%s\\%s" % (site, server))
         self.message("DSA Options: 0x%08x" % dsa_details["options"])
         self.message("DSA object GUID: %s" % dsa_details["objectGUID"])