KCC: Fail earlier if there is no IP transport
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Wed, 1 Apr 2015 04:46:43 +0000 (17:46 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Fri, 29 May 2015 09:08:21 +0000 (11:08 +0200)
Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/scripting/bin/samba_kcc

index 5dcda3e09950565f01784e36ae981078225dd22b..3696e26d79a1d93eea4135ba27a82759a64f1fb9 100755 (executable)
@@ -77,6 +77,7 @@ class KCC(object):
         self.part_table = {}    # partition objects
         self.site_table = {}
         self.transport_table = {}
+        self.ip_transport = None
         self.sitelink_table = {}
         self.dsa_by_dnstr = {}
         self.dsa_by_guid = {}
@@ -123,14 +124,13 @@ class KCC(object):
             transport = Transport(dnstr)
 
             transport.load_transport(self.samdb)
+            self.transport_table.setdefault(str(transport.guid),
+                                            transport)
+            if transport.name == 'IP':
+                self.ip_transport = transport
 
-            # already loaded
-            if str(transport.guid) in self.transport_table:
-                continue
-
-            # Assign this transport to table
-            # and index by guid
-            self.transport_table[str(transport.guid)] = transport
+        if self.ip_transport is None:
+            raise KCCError("there doesn't seem to be an IP transport")
 
     def load_all_sitelinks(self):
         """Loads the inter-site siteLink objects
@@ -1672,13 +1672,7 @@ class KCC(object):
             partial_ok = False
 
         # Utilize the IP transport only for now
-        transport = None
-        for transport in self.transport_table.values():
-            if transport.name == "IP":
-                break
-
-        if transport is None:
-            raise KCCError("Unable to find inter-site transport for IP")
+        transport = self.ip_transport
 
         DEBUG("edge_list %s" % edge_list)
         for e in edge_list: