s4-fsmo: nicer error messages on failed FSMO transfers
authorAndrew Tridgell <tridge@samba.org>
Mon, 28 Mar 2011 04:32:41 +0000 (15:32 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 28 Mar 2011 22:00:22 +0000 (00:00 +0200)
Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>

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

index df6bb20ba3e3c65e421ba14f2b9a48555779cd70..ff33491194cf4e40a321c2ebafd2b28eaed7f196 100644 (file)
@@ -88,7 +88,12 @@ all=all of the above"""),
                 "becomeSchemaMaster")
         else:
             raise CommandError("Invalid FSMO role.")
-        samdb.modify(m)
+        try:
+            samdb.modify(m)
+        except LdbError, (num, msg):
+            raise CommandError("Failed to initiate transfer: %s" % msg)
+        print("Scheduled FSMO transfer - use 'fsmo show' and 'drs showrepl' for result")
+
 
     def seize_role(self, role, samdb, force):
         res = samdb.search("",
@@ -116,19 +121,21 @@ all=all of the above"""),
                 self.transfer_role(role, samdb)
             except LdbError, (num, _):
             #transfer failed, use the big axe...
-                self.message("Transfer unsuccessfull, seizing...")
+                self.message("Transfer unsuccessful, seizing...")
                 m["fSMORoleOwner"]= ldb.MessageElement(
                     serviceName, ldb.FLAG_MOD_REPLACE,
                     "fSMORoleOwner")
-                samdb.modify(m)
-            else:
-                self.message("Transfer succeeded.")
         else:
             self.message("Will not attempt transfer, seizing...")
             m["fSMORoleOwner"]= ldb.MessageElement(
                 serviceName, ldb.FLAG_MOD_REPLACE,
                 "fSMORoleOwner")
+        try:
             samdb.modify(m)
+        except LdbError, (num, msg):
+            raise CommandError("Failed to initiate role seize: %s" % msg)
+        print("Scheduled FSMO transfer - use 'fsmo show' and 'drs showrepl' for result")
+
 
     def run(self, subcommand, force=None, url=None, role=None,
             credopts=None, sambaopts=None, versionopts=None):