[SCM] Samba Shared Repository - branch master updated

Andrew Bartlett abartlet at samba.org
Fri Jun 12 01:47:05 MDT 2015


The branch, master has been updated
       via  eef3dab KCC: use python 2.6 compatible dictonary comprehensions
       via  bbe9084 KCC: intrasite double_directed_ring test shouldn't include RODCs
       via  c450079 KCC: use logger.critical rather than print >> sys.stderr
       via  db48fb2 KCC: draw a site-edges graph for each partition
       via  db4e96b KCC: use KccError, simplify logic in NTDSConn.commit_modified
       via  65fb95e KCC: remove unused create_edge_set() function
       via  dcf582a KCC: ignore the bridges_required option
       via  430b089 KCC: fix the polarity of bridges_required option
       via  2291655 KCC: remove a TODO with seemingly no basis in specification
       via  534dfb0 KCC: clarify setup-vertices docstring, remove TODO
       via  218baa6 KCC: note about the meaning of None in schedule types
       via  957e9b0 KCC: combine_repl_info() returns the combined replinfo
       via  d662cc7 KCC: remove unnecessary comment
       via  7fc108b KCC: reword comment, removing unwarranted XXX
       via  69488c8 KCC: remove an unwarranted XXX comment
       via  b5a294e KCC: let kcc.graph.ReplInfo know its duration
       via  27e08cd KCC: docstring for kcc.graph.InternalEdge
       via  0f438ac KCC: docstring for kcc.graph.MultiEdge
       via  5a3cb71 KCC: docstring for kcc.graph.Vertex
       via  ea48c8f KCC: docstring for kcc.graph.VertexColour()
       via  7663951 KCC: docstring for kcc.graph.setup_graph()
       via  2331161 KCC: docstring for kcc.graph.add_edge_out()
       via  3a5a516 KCC: docstring for kcc.graph.find_component()
       via  f019fea KCC: some rearrangement in kcc.graph.add_int_edge()
       via  6c760c1 KCC: docstring for kcc.graph.kruskal()
       via  84fb4af KCC: docstring for kcc.graph.add_int_edge()
       via  61c1d8a KCC: docstring for kcc.graph.process_edge()
       via  a75b874 KCC: docstring for kcc.graph.process_edge_set()
       via  7c62a85 KCC: docstring for kcc.graph.undemote_vertex()
       via  90aa7f1 KCC: docstring for kcc.graph.check_demote_vertex()
       via  490eb10 KCC: pep8 line length in plot all connections
       via  5ea0dfb KCC: pep8 -- remove an extra line in graph_utils
       via  f360010 KCC: pep8 remove a line
       via  316fa2e KCC: samba.kcc formatting fixes for pep8
       via  68a0f13 KCC: remove XXX scare comments around guid comparisons.
       via  af1a307 KCC: setup_dijkstra() creates its own empty queue
       via  4a9b9b2 KCC: Add graph.InternalEdge.__lt__ docstring
       via  b59666c KCC: Add graph.try_new_path docstring
       via  3069fba KCC: Add graph.dijkstra and setup_dijkstra() docstrings
       via  a0fea23 KCC: Add graph.setup_vertices() docstring
       via  aeda7f4 KCC: don't pretend graph.create_edge_set() is useful
       via  a49cd69 KCC: Add s.k.g.create_auto_edge_set() docstring, improve variable name
       via  f86620e KCC: Add samba.kcc.graph.create_edge() docstring
       via  86004da KCC: improve samba.kcc.graph.get_spanning_tree_edges() docstring
       via  79f2c71 KCC: Add ReplInfo docstring
       via  6c86ddc KCC: docstring for test_all_reps_from()
       via  99f07fa KCC: use logger functions rather than print in create_connections
       via  56b7b15 KCC: ldif_import_export tests dotfiles have contents
       via  33e82b8 KCC: ldif_import_export tests checks the dot-files
       via  746c67c KCC: ldif_import_export tests use samba.tests.TestCaseInTempDir
       via  3102509 KCC: add tests for kcc.graph repltimes functions
       via  751726c KCC: beginning of tests for kcc.graph
       via  9f33d91 KCC: add a very puny stub for kcc.kcc_utils tests
       via  004a9ba KCC: shift ReplInfo, MAX_DWORD from kcc.kcc_utils to kcc.graph
       via  a6b7a9a KCC: Don't pretend to "load_all_transports"
       via  12de3df KCC: ignore SMTP transport and warn about unknown ones
       via  e6d8a8e KCC: remove "forest_of_rings" verification check
       via  f8a68af KCC: improve docstring for kcc.graph.get_spanning_tree_edges()
       via  9af0a06 KCC: improve docstring for kcc.graph.combine_repl_info()
       via  4376f1a KCC: improve documentation for KCC.export_ldif()
       via  a811df8 KCC: improve documentation for KCC.import_ldif()
       via  303c2c0 KCC: print error messages to stderr, not stdout
       via  ce9d1d5 KCC: improve documentation for KCC.intrasite_max_node_edges()
       via  9ff5a38 KCC: improve documentation for KCC.intersite() and KCC.intrasite()
       via  a866b70 KCC: improve docstring for KCC.create_connections()
       via  c93c2fc KCC: samba_kcc uses forced_local_dsa in import_ldif
       via  6328b10 KCC move and fix ldif_import_export and graph_utils tests
       via  e6991d2 KCC: remove dead code that depends on SMTP replication
       via  94094d0 KCC: fix KCC.import_ldif() use of forced_local_dsa
       via  9f0209a KCC: shift tests/ldif_utils.py to tests/kcc/ldif_import_export.py
       via  07daef8 KCC: shift tests/graph_utils.py to tests/kcc/graph_utils.py
       via  a0b0a0f kcc: Allow RODC to be included in intersite topology
       via  7c6a6f2 KCC: remove a condition dependant on non-IP transport
       via  e2eb3f7 KCC: Add fake transport EDGE_TYPE_ALL at most once
       via  7f4b7fe KCC: simplify repsfrom pruning in KCC.translate_ntdsconn()
       via  7e8a1a8 KCC: improve docstring for KCC.plot_all_connections()
       via  fcd8639 KCC: improve docstring for KCC.run()
       via  9b945bd KCC: add multi-site ldif to ldif_import_export test suite
       via  a918edc KCC: test stub for KCC object
       via  eba852c KCC: write dot files in a deterministic, user specified place
       via  169fcd7 KCC: remove unnecessary debug message in KCC.get_all_bridgeheads()
       via  bfbb3dc KCC: don't generate dot/verify graph edges unless necessary
       via  cc375f5 KCC: clarify a comment in is_stale_link_connection()
       via  7ff2861 KCC: explicit None check in refresh_failed_links_connections()
       via  747e080 KCC: remove commented out code in KCC.refresh_failed_links_connections()
       via  21e276d KCC: remove unused method KCC.should_be_present_test()
       via  2a776d9 KCC: remove an unused variable in KCC.remove_unneeded_ntdsconn()
       via  733d6ea KCC: rename is_repsFrom_implied to get_dsa_for_implied_replica, simplify
       via  fa22921 KCC: tidy up a missed keystroke in a comment
       via  b08684c KCC: remove unused variable from KCC.modify_repsFrom()
       via  b845e29 KCC: move functions used in kcc.graph into kcc.graph
       via  f1b7007 KCC: add a warning about side-effects in RepsFromTo.__setattr__
       via  c73a571 KCC: fix combine_repl_info
       via  ff7a090 KCC: clarify a couple of comments in graph.py
       via  cb94863 KCC: switch samba_kcc over to samba.kcc module
       via  c182df9 KCC: KCC object keeps lp and creds for live pings
       via  215f1c2 KCC improve docstring for KCC.load_samdb()
       via  21b792b KCC improve docstring for KCC.construct_intrasite_graph()
       via  62a7ae5 KCC improve docstring for update_rodc_connection()
       via  257219c KCC improve docstring for KCC.create_intersite_connections()
       via  6aa9240 KCC improve docstring for refresh_failed_links_connections()
       via  032291f KCC: shift samba.ldif_utils to samba.kcc.ldif_import_export
       via  db56d4a KCC: remove remnants of script from samba/kcc/__init__
       via  427d05d KCC: shift samba.kcc intersite functions to samba.kcc.graph
       via  b0e6a74 KCC: split kcc_utils into samba.kcc.{kcc_utils,graph}
       via  8d6f256 KCC: rearrange 3 functions in samba.kcc __init__
       via  7cd3505 KCC: split and shift samba.graph_utils -> samba.kcc.{graph_utils,debug}
       via  f37b89c KCC: Reduce brokenness of samba.kcc module
       via  94b1258 KCC: Copy KCC core out of samba_kcc into samba.kcc module
      from  6e473c5 messaging: Init server_id_db after clustering

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit eef3dab079bef63eb52a15e47f3a8f1c4a386df2
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Jun 11 11:11:06 2015 +1200

    KCC: use python 2.6 compatible dictonary comprehensions
    
    The `{k: v for k, v in whatever}` syntax is "new" in Python 2.7.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    
    Autobuild-User(master): Andrew Bartlett <abartlet at samba.org>
    Autobuild-Date(master): Fri Jun 12 09:46:13 CEST 2015 on sn-devel-104

commit bbe90840b94b6af5f5c0326a0aebaa8158e65ded
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 27 18:04:15 2015 +1200

    KCC: intrasite double_directed_ring test shouldn't include RODCs
    
    RODCs don't belong in the ring. In practice, they don't really belong
    in the same site as a ring, but that is another matter.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit c45007953b71e733976a7dca38adec5c7569b04a
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 15 15:04:01 2015 +1200

    KCC: use logger.critical rather than print >> sys.stderr
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit db48fb252fc1acbea15b4da291443128aecd7c96
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 15 15:03:35 2015 +1200

    KCC: draw a site-edges graph for each partition
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit db4e96ba06fd4c3f9d6e43e14f0c5bd003b9b703
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 13 15:36:09 2015 +1200

    KCC: use KccError, simplify logic in NTDSConn.commit_modified
    
    silence a pep8 thing.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 65fb95eda19f2883ad833877bc1e084a9bd3e5d3
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 13 14:43:29 2015 +1200

    KCC: remove unused create_edge_set() function
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit dcf582ae31722d29bab4f97c5e6660991000d128
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 13 13:58:15 2015 +1200

    KCC: ignore the bridges_required option
    
    At least until we have SiteLinkBridges to test against.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 430b0896f271946e5464f27067502ce35cd44009
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 13 13:55:00 2015 +1200

    KCC: fix the polarity of bridges_required option
    
    If one of the *_BRIDGES_REQUIRED flags is set, bridges_required is
    True.
    
    We ignore this option anyway.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 229165553af1c976c71e407406883b77a60f5e9d
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 13 13:33:51 2015 +1200

    KCC: remove a TODO with seemingly no basis in specification
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 534dfb08fbb55f830a4218a31af7ec7a7afbf041
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri Jun 5 12:14:12 2015 +1200

    KCC: clarify setup-vertices docstring, remove TODO
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 218baa67ca20a538922ca301538cfbeb64fc67f8
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 8 16:38:42 2015 +1200

    KCC: note about the meaning of None in schedule types
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 957e9b0278a8ea2add0ccdc08876c61e4a2178d1
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed Jun 10 16:01:52 2015 +1200

    KCC: combine_repl_info() returns the combined replinfo
    
    Previously it returned False if there was no intersections (i.e,
    the new repl_info duration was 0). Now the same check can be performed
    by checking the duration directly.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    
    Conflicts:
    	python/samba/kcc/graph.py

commit d662cc7519c0244eef6cc1f1b38ed2d7c11929f2
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 13 15:09:03 2015 +1200

    KCC: remove unnecessary comment
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 7fc108bcb3ac8483cfa7823c0a27c492e692769a
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 13 15:08:47 2015 +1200

    KCC: reword comment, removing unwarranted XXX
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 69488c85c1f3fc945147d86a756ae7dcd1b651d1
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 13 15:08:06 2015 +1200

    KCC: remove an unwarranted XXX comment
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit b5a294eb50f2303298c146d4a73a35bc61b3b44e
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri Jun 5 12:35:39 2015 +1200

    KCC: let kcc.graph.ReplInfo know its duration
    
    This is going to lead to a few simplifications.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 27e08cdead00db1abee3be6956eba3044bb96e43
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 8 14:53:41 2015 +1200

    KCC: docstring for kcc.graph.InternalEdge
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 0f438acd8cfb4ce09d2fd4229f852daa9ab8c3f0
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 8 14:53:27 2015 +1200

    KCC: docstring for kcc.graph.MultiEdge
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 5a3cb71d0ba1391b033526d29c597c627708684c
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 8 14:53:16 2015 +1200

    KCC: docstring for kcc.graph.Vertex
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit ea48c8f2b6bbc77973ad324f3d57c8ab6b637d88
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 8 14:52:59 2015 +1200

    KCC: docstring for kcc.graph.VertexColour()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 7663951112255eb5561df626331dbcb72ad706ef
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 8 14:52:41 2015 +1200

    KCC: docstring for kcc.graph.setup_graph()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 2331161a4a1034c45a4f98138d1c8ca7f09d17b2
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 8 14:52:27 2015 +1200

    KCC: docstring for kcc.graph.add_edge_out()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 3a5a516ce3e10982156268cb639b564c1dad5e84
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 8 14:52:13 2015 +1200

    KCC: docstring for kcc.graph.find_component()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit f019fea9472d774291041b645a4315f77b9883b2
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 8 12:26:00 2015 +1200

    KCC: some rearrangement in kcc.graph.add_int_edge()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 6c760c1a0dd66ac7a38501adb9397e291fca4673
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 8 12:25:12 2015 +1200

    KCC: docstring for kcc.graph.kruskal()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 84fb4afe874d235936ab4a3c7b70f69c095e6b94
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 8 12:19:51 2015 +1200

    KCC: docstring for kcc.graph.add_int_edge()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 61c1d8ad390c70507618bde1a6c659e92a62e286
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 8 11:03:37 2015 +1200

    KCC: docstring for kcc.graph.process_edge()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit a75b87490232a599c1aa3d0ccef660334eea9cc7
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 8 11:03:26 2015 +1200

    KCC: docstring for kcc.graph.process_edge_set()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 7c62a858514090217a84ac7fe2b6595a1654cc77
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 8 11:03:07 2015 +1200

    KCC: docstring for kcc.graph.undemote_vertex()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 90aa7f12e109669eef23959c510387af31bd8569
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 8 11:02:54 2015 +1200

    KCC: docstring for kcc.graph.check_demote_vertex()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 490eb10023c219e04273f2ff72358d0521203fb1
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 13 15:38:22 2015 +1200

    KCC: pep8 line length in plot all connections
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 5ea0dfb46f5192b8bc2c8d7d8bea444364cf124e
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 13 15:37:24 2015 +1200

    KCC: pep8 -- remove an extra line in graph_utils
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit f3600102ea72c1c56e7c8454ddd713dd570e68c2
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 13 15:34:32 2015 +1200

    KCC: pep8 remove a line
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 316fa2ee8a634f0408e7562e04c537d4b99f4139
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 8 11:00:23 2015 +1200

    KCC: samba.kcc formatting fixes for pep8
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 68a0f131fb5adc48e9c1a49dede696cacf358d76
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu May 7 14:26:33 2015 +1200

    KCC: remove XXX scare comments around guid comparisons.
    
    The guid comparisons are settled. We use ndrpack.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit af1a307f8d6d1d6b721ed4803a9d9ad08faa7e53
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu May 7 14:22:56 2015 +1200

    KCC: setup_dijkstra() creates its own empty queue
    
    It needs to operate on an empty list, which is something the caller
    really shouldn't have to worry about.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 4a9b9b23f0b962677d406df7bfefc8c179913503
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu May 7 14:07:27 2015 +1200

    KCC: Add graph.InternalEdge.__lt__ docstring
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit b59666c36d3992674caf1233e1a1f7f245e26f2f
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu May 7 14:07:01 2015 +1200

    KCC: Add graph.try_new_path docstring
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 3069fba6e52fa6e5e8814adec7cd1948b20dfeed
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu May 7 14:06:42 2015 +1200

    KCC: Add graph.dijkstra and setup_dijkstra() docstrings
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit a0fea23811601bf8ecc07017c2e28ac811b1d1bd
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu May 7 14:06:09 2015 +1200

    KCC: Add graph.setup_vertices() docstring
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit aeda7f4c61105bdda8d1d1a35c8c55858054d0bc
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu May 7 14:04:23 2015 +1200

    KCC: don't pretend graph.create_edge_set() is useful
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit a49cd696429ea6a45b0f82105751f3c9d34989b8
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu May 7 13:59:39 2015 +1200

    KCC: Add s.k.g.create_auto_edge_set() docstring, improve variable name
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit f86620edc72ebc5557c2fda83d0d5edbd09f3cb0
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu May 7 13:57:58 2015 +1200

    KCC: Add samba.kcc.graph.create_edge() docstring
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 86004daff50c8f8277d413e80af66f7ec73b355a
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu May 7 13:57:10 2015 +1200

    KCC: improve samba.kcc.graph.get_spanning_tree_edges() docstring
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 79f2c717096274f97602bbfb59f534f8ca08409e
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu May 7 13:56:18 2015 +1200

    KCC: Add ReplInfo docstring
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 6c86ddc3ff1d2ba6384698fbffb8629b54cb66ff
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu May 7 10:33:29 2015 +1200

    KCC: docstring for test_all_reps_from()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 99f07fa69513e023594a079be7a6a77ba356e3ee
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 6 14:30:42 2015 +1200

    KCC: use logger functions rather than print in create_connections
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 56b7b157a882752b0d2373c513dd29e862a17c00
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 6 13:40:50 2015 +1200

    KCC: ldif_import_export tests dotfiles have contents
    
    This is regardless of whether validation is available via /usr/bin/dot -Tcanon
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 33e82b88b65d8492e9d1b64f39b354a93915a3a4
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 6 12:28:24 2015 +1200

    KCC: ldif_import_export tests checks the dot-files
    
    if /usr/bin/dot exists,  the files should be checked for validity.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 746c67c527c97a3a540915f2b2df9146835aa144
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 6 12:27:11 2015 +1200

    KCC: ldif_import_export tests use samba.tests.TestCaseInTempDir
    
    Rather than making their own tempdirs.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 310250935ecdd9c92a6b6ea49b11555fe28b459b
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 6 11:20:28 2015 +1200

    KCC: add tests for kcc.graph repltimes functions
    
    There used to be bugs in these.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 751726c02dafcc36dd7fa25d3004ab5815b6b6b9
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Tue May 5 12:06:52 2015 +1200

    KCC: beginning of tests for kcc.graph
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 9f33d91ee7601ae8aeaa1345d77a46d5e35d505d
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Tue May 5 11:26:42 2015 +1200

    KCC: add a very puny stub for kcc.kcc_utils tests
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 004a9ba6b1c27bce0ea7464cdaf4b72e149a4c79
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Tue May 5 11:12:30 2015 +1200

    KCC: shift ReplInfo, MAX_DWORD from kcc.kcc_utils to kcc.graph
    
    They are only used in graph.py.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit a6b7a9abc330c8b396ad2b743bef4c3a090fdc9e
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed Jun 10 17:12:51 2015 +1200

    KCC: Don't pretend to "load_all_transports"
    
    Samba doesn't do SMTP, so nor does Samba KCC. Because we were
    following the spec, we have had special cases for non-IP transports
    in numerous places. This removes a few more of those.
    
    The gains are a loss of complexity and the removal of untestable code.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    
    Conflicts:
    	python/samba/kcc/__init__.py

commit 12de3dfe6aad3222052474ff0be259bf2c5c980b
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri Jun 5 12:05:30 2015 +1200

    KCC: ignore SMTP transport and warn about unknown ones
    
    An info line is enough for SMTP. Warn about other as yet unknown
    transports, because we want to know if they turn up.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit e6d8a8ec2a3c427f8a85697c9f51b8754ce338e6
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 1 15:08:51 2015 +1200

    KCC: remove "forest_of_rings" verification check
    
    Because it didn't actually check anything.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit f8a68af6ff571de7f51f1b9a37570d3930f7fd32
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 1 15:06:22 2015 +1200

    KCC: improve docstring for kcc.graph.get_spanning_tree_edges()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 9af0a067f034866eda9a27ca500098baac70ca5b
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed Jun 10 16:00:36 2015 +1200

    KCC: improve docstring for kcc.graph.combine_repl_info()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 4376f1aa1d2cd34c18660adb906bdde748a688de
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 1 13:48:34 2015 +1200

    KCC: improve documentation for KCC.export_ldif()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit a811df892bb4774592397ea7013188f939493da7
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 1 13:38:31 2015 +1200

    KCC: improve documentation for KCC.import_ldif()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 303c2c028d124e067619dc58f4a7ca9a07bffcf7
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 1 13:36:04 2015 +1200

    KCC: print error messages to stderr, not stdout
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit ce9d1d5b27e526841807450e9b8ce4d05bf68ff8
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 1 12:12:39 2015 +1200

    KCC: improve documentation for KCC.intrasite_max_node_edges()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 9ff5a38566329b633bb7fa696f23567392d2bb8c
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 1 12:00:14 2015 +1200

    KCC: improve documentation for KCC.intersite() and KCC.intrasite()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit a866b70cd7dd04a7aaa8dd352379209120d437d9
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 1 11:00:12 2015 +1200

    KCC: improve docstring for KCC.create_connections()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit c93c2fcba5226418c8807f3545cf6edf87e71ddf
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Apr 30 14:35:18 2015 +1200

    KCC: samba_kcc uses forced_local_dsa in import_ldif
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 6328b100a3177012e0d39090e4e382b14acd4a87
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Apr 30 14:33:30 2015 +1200

    KCC move and fix ldif_import_export and graph_utils tests
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit e6991d2a071c0ab50d32bb002b04b87faf9200e9
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 1 16:15:43 2015 +1200

    KCC: remove dead code that depends on SMTP replication
    
    We don't support SMTP replication and probably never will. This code
    is never used, untested, and unlikely to be correct.
    
    The remaining little bit of IP transport code is slightly rewritten.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 94094d0c918e5368b6643b89bffe64d2e8ccf5aa
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 1 16:11:04 2015 +1200

    KCC: fix KCC.import_ldif() use of forced_local_dsa
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 9f0209a486ee56a7c06ef19e39556a05a339a3c0
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 1 16:09:30 2015 +1200

    KCC: shift tests/ldif_utils.py to tests/kcc/ldif_import_export.py
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 07daef8d85344dde2959086ee07028305b692f66
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri May 1 16:08:46 2015 +1200

    KCC: shift tests/graph_utils.py to tests/kcc/graph_utils.py
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit a0b0a0f91a16c7ac1d0c77c7678425697fef3ab6
Author: Garming Sam <garming at catalyst.net.nz>
Date:   Thu Apr 30 11:26:18 2015 +1200

    kcc: Allow RODC to be included in intersite topology
    
    This creates behaviour not described by ADTS. RODC are now treated as
    RED, however they are demoted to the equivalent of WHITE when running
    the first half of the algorithm.
    
    The change implies that RED does in fact refer to full-replicas, not
    writable replicas.
    
    Signed-off-by: Garming Sam <garming at catalyst.net.nz>
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 7c6a6f2bd8e852c69b6f588b5ce1bef01f7745dc
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Apr 30 12:44:51 2015 +1200

    KCC: remove a condition dependant on non-IP transport
    
    Because it is in a loop that ignores non-IP transports
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit e2eb3f7e9eab0ce0f01f8b0bc563bd97aa157d8f
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Apr 30 12:41:34 2015 +1200

    KCC: Add fake transport EDGE_TYPE_ALL at most once
    
    It was being added in a loop which only ever looped once (because
    we only do one transport, IP), so this makes no actual difference
    but it is the correct thing.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 7f4b7fed1e7619b5cc6af38c8d40dddf840e5737
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Apr 30 12:36:18 2015 +1200

    KCC: simplify repsfrom pruning in KCC.translate_ntdsconn()
    
    This section is actually quite simple -- we don't want a repsFrom if
    there is no DRS connection -- but the existing comments and code had
    managed to cause us hours of confusion and much gnashing teeth, the
    evidence of which will hopefully have been squashed out of the git
    history by the time you read this.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 7e8a1a8ae9220da4e94a4891b58b6ecad2418d99
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Apr 30 11:33:23 2015 +1200

    KCC: improve docstring for KCC.plot_all_connections()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit fcd863958182aaa85322897a6f697705df37c9bd
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Apr 30 11:33:01 2015 +1200

    KCC: improve docstring for KCC.run()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 9b945bdc5b68e54a816e5cd628376b94cbf6bbe7
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Apr 30 11:32:11 2015 +1200

    KCC: add multi-site ldif to ldif_import_export test suite
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit a918edced08d0c1d1c294a31dbc90125b5c76d3a
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri Jun 5 11:53:19 2015 +1200

    KCC: test stub for KCC object
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit eba852cc98714fa383a058c4da73a9d8854e8d9b
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Apr 30 10:39:54 2015 +1200

    KCC: write dot files in a deterministic, user specified place
    
    We were using randomised tempfile names in /tmp, initially to avoid
    overwriting previous runs so as to track progress. Now we hardly ever
    care about the old versions, and a user-specified name will be handy
    for testing.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 169fcd7addad00c5e5c0bdf00edff418ed7aab3d
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Tue Apr 28 11:31:14 2015 +1200

    KCC: remove unnecessary debug message in KCC.get_all_bridgeheads()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit bfbb3dc81b974565fefc9e249bc2b47c3425a171
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Tue Apr 28 11:27:57 2015 +1200

    KCC: don't generate dot/verify graph edges unless necessary
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit cc375f5f28cca3154937d23b66787d6395aab7d8
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Tue Apr 28 11:26:31 2015 +1200

    KCC: clarify a comment in is_stale_link_connection()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 7ff2861e71632223c08649e15d999dad7e7500d9
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Tue Apr 28 11:25:44 2015 +1200

    KCC: explicit None check in refresh_failed_links_connections()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 747e0804f4755f6c74f9cafdcf169a01836e9010
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Tue Apr 28 11:25:18 2015 +1200

    KCC: remove commented out code in KCC.refresh_failed_links_connections()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 21e276d31921743f26bb736ff25ed08cd2e01366
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Tue Apr 28 11:23:50 2015 +1200

    KCC: remove unused method KCC.should_be_present_test()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 2a776d9f8d391e615503a2e17d077a58e4ab1ef9
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed Jun 10 16:38:32 2015 +1200

    KCC: remove an unused variable in KCC.remove_unneeded_ntdsconn()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 733d6ea6fab18be6ad8a2b59e38c494baf4ff13d
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Tue Apr 28 11:20:30 2015 +1200

    KCC: rename is_repsFrom_implied to get_dsa_for_implied_replica, simplify
    
    KCC.is_repsFrom_implied() did more than it sounded like -- it returned
    a tuple of (implied, dsa), where the dsa was None if and only if implied
    was False, and a DSA object if implied was True. Thus the implied flag
    was strictly reduntant and the only caller really only wanted the DSA.
    Now it just gets the DSA, or None.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit fa22921ed45ae65777305cf6a2c999bd15e86854
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Tue Apr 28 11:12:37 2015 +1200

    KCC: tidy up a missed keystroke in a comment
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit b08684c402c8fbff63a8339e4623a40a7decef83
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Tue Apr 28 11:10:15 2015 +1200

    KCC: remove unused variable from KCC.modify_repsFrom()
    
    It looks as if this update bitfield was meant to be returned. It isn't,
    and none of the callers expect it. Good riddance.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit b845e29b268b2122779e3b0218caa73a089aed03
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Apr 23 14:42:51 2015 +1200

    KCC: move functions used in kcc.graph into kcc.graph
    
    This should have happened when graph.py was split off from kcc_utils,
    and we *would* merge it there, but too many things have happened to
    these functions in the meantime.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit f1b7007883bb4a12d93ecf7de48560e9703cbf36
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Apr 23 14:24:59 2015 +1200

    KCC: add a warning about side-effects in RepsFromTo.__setattr__
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit c73a5713533a2d33b11fe26d4459af36869eb396
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri Jun 5 12:29:44 2015 +1200

    KCC: fix combine_repl_info
    
    Previous the supposedly combined repl_info was always the default, all
    0x11, repl_info.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit ff7a0902dde932b4d166abc664165a2f9f12603d
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Apr 23 14:18:53 2015 +1200

    KCC: clarify a couple of comments in graph.py
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit cb9486308780c5736d2f7a3dde5f45a0e7f4a8ce
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Jun 4 11:19:56 2015 +1200

    KCC: switch samba_kcc over to samba.kcc module
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit c182df99698332772ae5b4a454dc55dff35a398d
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed Jun 10 15:40:43 2015 +1200

    KCC: KCC object keeps lp and creds for live pings
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 215f1c2c5386543b0f6ad763f15b85f253f3781b
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 6 18:07:23 2015 +1200

    KCC improve docstring for KCC.load_samdb()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 21b792b7ba253553ab19ed0839b9756b2a6d0acd
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 6 18:05:50 2015 +1200

    KCC improve docstring for KCC.construct_intrasite_graph()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 62a7ae572796f4d45790666582ff53159da03a35
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 6 18:05:21 2015 +1200

    KCC improve docstring for update_rodc_connection()
    
    Also make a short-cut early exit visually shorter and earlier.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 257219c836d7edccff530eaf27c50180dc40bba1
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 6 18:03:05 2015 +1200

    KCC improve docstring for KCC.create_intersite_connections()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 6aa9240cb8afc62b25806f02cb3cac1bc97c13b4
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed May 6 18:02:34 2015 +1200

    KCC improve docstring for refresh_failed_links_connections()
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 032291f49247b740aa6f4c9ec5bd51364e02779d
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri Jun 5 15:09:05 2015 +1200

    KCC: shift samba.ldif_utils to samba.kcc.ldif_import_export
    
    These functions are really only of use for KCC, and they only import and
    export rather than be general utils.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit db56d4ae3b0a0b8e76beee1fe5ccbb2c3c258e68
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed Jun 10 15:39:40 2015 +1200

    KCC: remove remnants of script from samba/kcc/__init__
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 427d05d1ac451bdeeabdc3567e9c2243ee31e1dd
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed Jun 10 16:42:54 2015 +1200

    KCC: shift samba.kcc intersite functions to samba.kcc.graph
    
    So samba.kcc.graph is the place to look for everything intersite.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit b0e6a7436233c39f1ebf1a40e4c6cc495ed926f9
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed Jun 10 16:42:37 2015 +1200

    KCC: split kcc_utils into samba.kcc.{kcc_utils,graph}
    
    graph.py has the intersite graph stuff.
    kcc_utils does intrasite, namespace, &cetera.
    
    The wildcard imports are tidied up, so samba_kcc imports unix2nttime
    directly rather than letting it fall out of kcc_utils.
    
    Intersite graph functions samba/kcc/__init__.py are also shifted into
    graph.py.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 8d6f256f381abf1d932bfecb6542590eae9a5f32
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Wed Jun 10 15:35:05 2015 +1200

    KCC: rearrange 3 functions in samba.kcc __init__
    
    This module still isn't actually used.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 7cd35051c80a01fbe289f73b3f57180d997d523f
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Thu Jun 4 11:16:15 2015 +1200

    KCC: split and shift samba.graph_utils -> samba.kcc.{graph_utils,debug}
    
    The debug module contains debug functions and colours.
    
    Graph_utils keeps the DOT file generation and graph verification code.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit f37b89c157f0f439e3c5edb24419ba5efed180b0
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri Jun 5 10:59:23 2015 +1200

    KCC: Reduce brokenness of samba.kcc module
    
    This module is still not being used, and is being fixed slowly to make
    it clear what is happening. Here we remove references to globals in
    the samba_kcc script (notably opts), and instead add the various
    options as KCC.__init__ arguments.
    
    There is more to come.
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 94b1258501b717e2173d266dfc118fcd42649ca6
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date:   Fri Jun 5 10:49:30 2015 +1200

    KCC: Copy KCC core out of samba_kcc into samba.kcc module
    
    The "module" is not actually used at this point, which is just as well
    as it would be utterly broken. This copy is just to show that the
    eventual move is really a move and not a complete rewrite.
    
    Note that if this file is not executable (and it really shouldn't be),
    this commit causes the samba.tests.source test to fail with "Files
    with shebang line that are not executable".
    
    Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
    Reviewed-by: Garming Sam <garming at catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 .../bin/samba_kcc => python/samba/kcc/__init__.py  | 1636 +++-------
 python/samba/kcc/debug.py                          |   68 +
 python/samba/kcc/graph.py                          |  850 ++++++
 python/samba/{ => kcc}/graph_utils.py              |   60 +-
 python/samba/{ => kcc}/kcc_utils.py                |  272 +-
 .../{ldif_utils.py => kcc/ldif_import_export.py}   |    3 +-
 python/samba/tests/kcc/__init__.py                 |   80 +
 python/samba/tests/kcc/graph.py                    |   70 +
 python/samba/tests/{ => kcc}/graph_utils.py        |    9 +-
 python/samba/tests/kcc/kcc_utils.py                |   37 +
 .../{ldif_utils.py => kcc/ldif_import_export.py}   |  110 +-
 selftest/tests.py                                  |    6 +-
 source4/scripting/bin/samba_kcc                    | 3165 +-------------------
 source4/selftest/tests.py                          |   12 +
 14 files changed, 1755 insertions(+), 4623 deletions(-)
 copy source4/scripting/bin/samba_kcc => python/samba/kcc/__init__.py (67%)
 mode change 100755 => 100644
 create mode 100644 python/samba/kcc/debug.py
 create mode 100644 python/samba/kcc/graph.py
 rename python/samba/{ => kcc}/graph_utils.py (89%)
 rename python/samba/{ => kcc}/kcc_utils.py (91%)
 rename python/samba/{ldif_utils.py => kcc/ldif_import_export.py} (99%)
 create mode 100644 python/samba/tests/kcc/__init__.py
 create mode 100644 python/samba/tests/kcc/graph.py
 rename python/samba/tests/{ => kcc}/graph_utils.py (96%)
 create mode 100644 python/samba/tests/kcc/kcc_utils.py
 rename python/samba/tests/{ldif_utils.py => kcc/ldif_import_export.py} (53%)


Changeset truncated at 500 lines:

diff --git a/source4/scripting/bin/samba_kcc b/python/samba/kcc/__init__.py
old mode 100755
new mode 100644
similarity index 67%
copy from source4/scripting/bin/samba_kcc
copy to python/samba/kcc/__init__.py
index 1c1e6d9..46a25ce
--- a/source4/scripting/bin/samba_kcc
+++ b/python/samba/kcc/__init__.py
@@ -1,6 +1,4 @@
-#!/usr/bin/env python
-#
-# Compute our KCC topology
+# define the KCC object
 #
 # Copyright (C) Dave Craft 2011
 # Copyright (C) Andrew Bartlett 2015
@@ -21,43 +19,71 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-import os
-import sys
 import random
 import uuid
 
-# ensure we get messages out immediately, so they get in the samba logs,
-# and don't get swallowed by a timeout
-os.environ['PYTHONUNBUFFERED'] = '1'
-
-# forcing GMT avoids a problem in some timezones with kerberos. Both MIT
-# heimdal can get mutual authentication errors due to the 24 second difference
-# between UTC and GMT when using some zone files (eg. the PDT zone from
-# the US)
-os.environ["TZ"] = "GMT"
-
-# Find right directory when running from source tree
-sys.path.insert(0, "bin/python")
-
-import optparse
-import logging
 import itertools
-import heapq
-import time
-from functools import partial
-
-from samba import (
-    getopt as options,
-    ldb,
-    dsdb,
-    drs_utils,
-    nttime2unix)
+from samba import unix2nttime, nttime2unix
+from samba import ldb, dsdb, drs_utils
 from samba.auth import system_session
 from samba.samdb import SamDB
-from samba.dcerpc import drsuapi
-from samba.kcc_utils import *
-from samba.graph_utils import *
-from samba import ldif_utils
+from samba.dcerpc import drsuapi, misc
+
+from samba.kcc.kcc_utils import Site, Partition, Transport, SiteLink
+from samba.kcc.kcc_utils import NCReplica, NCType, nctype_lut, GraphNode
+from samba.kcc.kcc_utils import RepsFromTo, KCCError, KCCFailedObject
+from samba.kcc.graph import convert_schedule_to_repltimes
+
+from samba.ndr import ndr_pack
+
+from samba.kcc.graph_utils import verify_and_dot
+
+from samba.kcc import ldif_import_export
+from samba.kcc.graph import setup_graph, get_spanning_tree_edges
+from samba.kcc.graph import Vertex
+
+from samba.kcc.debug import DEBUG, DEBUG_FN, logger
+from samba.kcc import debug
+
+
+def sort_replica_by_dsa_guid(rep1, rep2):
+    """Helper to sort NCReplicas by their DSA guids
+
+    The guids need to be sorted in their NDR form.
+
+    :param rep1: An NC replica
+    :param rep2: Another replica
+    :return: -1, 0, or 1, indicating sort order.
+    """
+    return cmp(ndr_pack(rep1.rep_dsa_guid), ndr_pack(rep2.rep_dsa_guid))
+
+
+def sort_dsa_by_gc_and_guid(dsa1, dsa2):
+    """Helper to sort DSAs by guid global catalog status
+
+    GC DSAs come before non-GC DSAs, other than that, the guids are
+    sorted in NDR form.
+
+    :param dsa1: A DSA object
+    :param dsa2: Another DSA
+    :return: -1, 0, or 1, indicating sort order.
+    """
+    if dsa1.is_gc() and not dsa2.is_gc():
+        return -1
+    if not dsa1.is_gc() and dsa2.is_gc():
+        return +1
+    return cmp(ndr_pack(dsa1.dsa_guid), ndr_pack(dsa2.dsa_guid))
+
+
+def is_smtp_replication_available():
+    """Can the KCC use SMTP replication?
+
+    Currently always returns false because Samba doesn't implement
+    SMTP transfer for NC changes between DCs.
+
+    :return: Boolean (always False)
+    """
+    return False
 
 
 class KCC(object):
@@ -71,16 +97,16 @@ class KCC(object):
     :param read_only: Don't write to the database.
     :param verify: Check topological invariants for the generated graphs
     :param debug: Write verbosely to stderr.
-    "param dot_files: write Graphviz files in /tmp showing topology
+    "param dot_file_dir: write diagnostic Graphviz files in this directory
     """
-    def __init__(self):
+    def __init__(self, unix_now, readonly=False, verify=False, debug=False,
+                 dot_file_dir=None):
         """Initializes the partitions class which can hold
         our local DCs partitions or all the partitions in
         the forest
         """
         self.part_table = {}    # partition objects
         self.site_table = {}
-        self.transport_table = {}
         self.ip_transport = None
         self.sitelink_table = {}
         self.dsa_by_dnstr = {}
@@ -108,7 +134,14 @@ class KCC(object):
 
         self.samdb = None
 
-    def load_all_transports(self):
+        self.unix_now = unix_now
+        self.nt_now = unix2nttime(unix_now)
+        self.readonly = readonly
+        self.verify = verify
+        self.debug = debug
+        self.dot_file_dir = dot_file_dir
+
+    def load_ip_transport(self):
         """Loads the inter-site transport objects for Sites
 
         :return: None
@@ -129,10 +162,14 @@ 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
+            elif transport.name == 'SMTP':
+                logger.info("Samba KCC is ignoring the obsolete SMTP transport.")
+
+            else:
+                logger.warning("Samba KCC does not support the transport called %r."
+                               % (transport.name,))
 
         if self.ip_transport is None:
             raise KCCError("there doesn't seem to be an IP transport")
@@ -174,7 +211,7 @@ class KCC(object):
         :param dn_str: a site dn_str
         :return: the Site object pertaining to the dn_str
         """
-        site = Site(dn_str, unix_now)
+        site = Site(dn_str, self.unix_now)
         site.load_site(self.samdb)
 
         # We avoid replacing the site with an identical copy in case
@@ -264,11 +301,11 @@ class KCC(object):
         self.my_dsa = self.my_site.get_dsa(self.my_dsa_dnstr)
 
         if self.my_dsa_dnstr not in self.dsa_by_dnstr:
-            DEBUG_DARK_YELLOW("my_dsa %s isn't in self.dsas_by_dnstr:"
-                              " it must be RODC.\n"
-                              "Let's add it, because my_dsa is special!\n"
-                              "(likewise for self.dsa_by_guid of course)" %
-                              self.my_dsas_dnstr)
+            debug.DEBUG_DARK_YELLOW("my_dsa %s isn't in self.dsas_by_dnstr:"
+                                    " it must be RODC.\n"
+                                    "Let's add it, because my_dsa is special!"
+                                    "\n(likewise for self.dsa_by_guid)" %
+                                    self.my_dsas_dnstr)
 
             self.dsa_by_dnstr[self.my_dsa_dnstr] = self.my_dsa
             self.dsa_by_guid[str(self.my_dsa.dsa_guid)] = self.my_dsa
@@ -302,22 +339,14 @@ class KCC(object):
             part.load_partition(self.samdb)
             self.part_table[partstr] = part
 
-    def should_be_present_test(self):
-        """Enumerate all loaded partitions and DSAs in local
-        site and test if NC should be present as replica
-        """
-        for partdn, part in self.part_table.items():
-            for dsadn, dsa in self.my_site.dsa_table.items():
-                needed, ro, partial = part.should_be_present(dsa)
-                logger.info("dsadn:%s\nncdn:%s\nneeded=%s:ro=%s:partial=%s\n" %
-                            (dsadn, part.nc_dnstr, needed, ro, partial))
-
-    def refresh_failed_links_connections(self):
-        """Based on MS-ADTS 6.2.2.1"""
+    def refresh_failed_links_connections(self, ping=None):
+        """Ensure the failed links list is up to date
 
-        # Instead of NULL link with failure_count = 0, the tuple is
-        # simply removed
+        Based on MS-ADTS 6.2.2.1
 
+        :param ping: An oracle function of remote site availability
+        :return: None
+        """
         # LINKS: Refresh failed links
         self.kcc_failed_links = {}
         current, needed = self.my_dsa.get_rep_tables()
@@ -334,15 +363,11 @@ class KCC(object):
                 dns_name = reps_from.dns_name1
 
                 f = self.kcc_failed_links.get(dsa_guid)
-                if not f:
+                if f is None:
                     f = KCCFailedObject(dsa_guid, failure_count,
                                         time_first_failure, last_result,
                                         dns_name)
                     self.kcc_failed_links[dsa_guid] = f
-                #elif f.failure_count == 0:
-                #    f.failure_count = failure_count
-                #    f.time_first_failure = time_first_failure
-                #    f.last_result = last_result
                 else:
                     f.failure_count = max(f.failure_count, failure_count)
                     f.time_first_failure = min(f.time_first_failure,
@@ -351,15 +376,13 @@ class KCC(object):
 
         # CONNECTIONS: Refresh failed connections
         restore_connections = set()
-        if opts.attempt_live_connections:
+        if ping is not None:
             DEBUG("refresh_failed_links: checking if links are still down")
             for connection in self.kcc_failed_connections:
-                try:
-                    drs_utils.drsuapi_connect(connection.dns_name, lp, creds)
+                if ping(connection.dns_name):
                     # Failed connection is no longer failing
                     restore_connections.add(connection)
-                except drs_utils.drsException:
-                    # Failed connection still failing
+                else:
                     connection.failure_count += 1
         else:
             DEBUG("refresh_failed_links: not checking live links because we\n"
@@ -386,15 +409,17 @@ class KCC(object):
                 unix_first_failure = \
                     nttime2unix(failed_link.time_first_failure)
                 # TODO guard against future
-                if unix_first_failure > unix_now:
+                if unix_first_failure > self.unix_now:
                     logger.error("The last success time attribute for \
                                  repsFrom is in the future!")
 
                 # Perform calculation in seconds
-                if (unix_now - unix_first_failure) > 60 * 60 * 2:
+                if (self.unix_now - unix_first_failure) > 60 * 60 * 2:
                     return True
 
-        # TODO connections
+        # TODO connections.
+        # We have checked failed *links*, but we also need to check
+        # *connections*
 
         return False
 
@@ -421,9 +446,9 @@ class KCC(object):
         # sorting. Add them.
         for cn_conn in mydsa.connect_table.values():
             if cn_conn.guid is None:
-                if opts.readonly:
+                if self.readonly:
                     cn_conn.guid = misc.GUID(str(uuid.uuid4()))
-                    cn_conn.whenCreated = nt_now
+                    cn_conn.whenCreated = self.nt_now
                 else:
                     cn_conn.load_connection(self.samdb)
 
@@ -434,10 +459,6 @@ class KCC(object):
                 cn_conn.to_be_deleted = True
                 continue
 
-            # Get the source DSA no matter what site
-            # XXX s_dsa is NEVER USED. It will be removed.
-            s_dsa = self.get_dsa(s_dnstr)
-
             #XXX should an RODC be regarded as same site
             same_site = s_dnstr in self.my_site.dsa_table
 
@@ -485,7 +506,6 @@ class KCC(object):
                     if s2_dnstr != s_dnstr:
                         continue
 
-                    #XXX GUID comparison
                     lesser = (cn_conn.whenCreated < cn2_conn.whenCreated or
                               (cn_conn.whenCreated == cn2_conn.whenCreated and
                                packed_guid < ndr_pack(cn2_conn.guid)))
@@ -548,7 +568,7 @@ class KCC(object):
                 if not cn_conn.is_rodc_topology():
                     cn_conn.to_be_deleted = True
 
-        if mydsa.is_ro() or opts.readonly:
+        if mydsa.is_ro() or self.readonly:
             for connect in mydsa.connect_table.values():
                 if connect.to_be_deleted:
                     DEBUG_FN("TO BE DELETED:\n%s" % connect)
@@ -587,15 +607,12 @@ class KCC(object):
         :return: None
         """
         s_dnstr = s_dsa.dsa_dnstr
-        update = 0x0
-
         same_site = s_dnstr in self.my_site.dsa_table
 
         # if schedule doesn't match then update and modify
         times = convert_schedule_to_repltimes(cn_conn.schedule)
         if times != t_repsFrom.schedule:
             t_repsFrom.schedule = times
-            update |= drsuapi.DRSUAPI_DRS_UPDATE_SCHEDULE
 
         # Bit DRS_PER_SYNC is set in replicaFlags if and only
         # if nTDSConnection schedule has a value v that specifies
@@ -627,7 +644,7 @@ class KCC(object):
              dsdb.NTDSCONN_OPT_OVERRIDE_NOTIFY_DEFAULT) != 0x0):
 
             if (cn_conn.options & dsdb.NTDSCONN_OPT_USE_NOTIFY) == 0x0:
-                # XXX WARNING
+                # WARNING
                 #
                 # it LOOKS as if this next test is a bit silly: it
                 # checks the flag then sets it if it not set; the same
@@ -744,109 +761,41 @@ class KCC(object):
         #
         nastr = "%s._msdcs.%s" % (s_dsa.dsa_guid, self.samdb.forest_dns_name())
 
-        # We're not currently supporting SMTP replication
-        # so is_smtp_replication_available() is currently
-        # always returning False
-        if ((same_site or
-             cn_conn.transport_dnstr is None or
-             cn_conn.transport_dnstr.find("CN=IP") == 0 or
-             not is_smtp_replication_available())):
-
-            if ((t_repsFrom.replica_flags &
-                 drsuapi.DRSUAPI_DRS_MAIL_REP) != 0x0):
-                t_repsFrom.replica_flags &= ~drsuapi.DRSUAPI_DRS_MAIL_REP
+        if ((t_repsFrom.replica_flags &
+             drsuapi.DRSUAPI_DRS_MAIL_REP) != 0x0):
+            t_repsFrom.replica_flags &= ~drsuapi.DRSUAPI_DRS_MAIL_REP
 
-            t_repsFrom.transport_guid = misc.GUID()
+        t_repsFrom.transport_guid = misc.GUID()
 
-            # See (NOTE MS-TECH INCORRECT) above
-            if t_repsFrom.version == 0x1:
-                if t_repsFrom.dns_name1 is None or \
-                   t_repsFrom.dns_name1 != nastr:
-                    t_repsFrom.dns_name1 = nastr
-            else:
-                if t_repsFrom.dns_name1 is None or \
-                   t_repsFrom.dns_name2 is None or \
-                   t_repsFrom.dns_name1 != nastr or \
-                   t_repsFrom.dns_name2 != nastr:
-                    t_repsFrom.dns_name1 = nastr
-                    t_repsFrom.dns_name2 = nastr
+        # See (NOTE MS-TECH INCORRECT) above
 
-        else:
-            # XXX This entire branch is NEVER used! Because we don't do SMTP!
-            # (see the if condition above). Just close your eyes here.
-            if ((t_repsFrom.replica_flags &
-                 drsuapi.DRSUAPI_DRS_MAIL_REP) == 0x0):
-                t_repsFrom.replica_flags |= drsuapi.DRSUAPI_DRS_MAIL_REP
+        # NOTE: it looks like these conditionals are pointless,
+        # because the state will end up as `t_repsFrom.dns_name1 ==
+        # nastr` in either case, BUT the repsFrom thing is magic and
+        # assigning to it alters some flags. So we try not to update
+        # it unless necessary.
+        if t_repsFrom.dns_name1 != nastr:
+            t_repsFrom.dns_name1 = nastr
 
-            # We have a transport type but its not an
-            # object in the database
-            if cn_conn.transport_guid not in self.transport_table:
-                raise KCCError("Missing inter-site transport - (%s)" %
-                               cn_conn.transport_dnstr)
+        if t_repsFrom.version > 0x1 and t_repsFrom.dns_name2 != nastr:
+            t_repsFrom.dns_name2 = nastr
 
-            x_transport = self.transport_table[str(cn_conn.transport_guid)]
-
-            if t_repsFrom.transport_guid != x_transport.guid:
-                t_repsFrom.transport_guid = x_transport.guid
-
-            # See (NOTE MS-TECH INCORRECT) above
-            if x_transport.address_attr == "dNSHostName":
-
-                if t_repsFrom.version == 0x1:
-                    if t_repsFrom.dns_name1 is None or \
-                       t_repsFrom.dns_name1 != nastr:
-                        t_repsFrom.dns_name1 = nastr
-                else:
-                    if t_repsFrom.dns_name1 is None or \
-                       t_repsFrom.dns_name2 is None or \
-                       t_repsFrom.dns_name1 != nastr or \
-                       t_repsFrom.dns_name2 != nastr:
-                        t_repsFrom.dns_name1 = nastr
-                        t_repsFrom.dns_name2 = nastr
-
-            else:
-                # MS tech specification says we retrieve the named
-                # attribute in "transportAddressAttribute" from the parent of
-                # the DSA object
-                try:
-                    pdnstr = s_dsa.get_parent_dnstr()
-                    attrs = [x_transport.address_attr]
-
-                    res = self.samdb.search(base=pdnstr, scope=ldb.SCOPE_BASE,
-                                            attrs=attrs)
-                except ldb.LdbError, (enum, estr):
-                    raise KCCError(
-                        "Unable to find attr (%s) for (%s) - (%s)" %
-                        (x_transport.address_attr, pdnstr, estr))
-
-                msg = res[0]
-                nastr = str(msg[x_transport.address_attr][0])
-
-                # See (NOTE MS-TECH INCORRECT) above
-                if t_repsFrom.version == 0x1:
-                    if t_repsFrom.dns_name1 is None or \
-                       t_repsFrom.dns_name1 != nastr:
-                        t_repsFrom.dns_name1 = nastr
-                else:
-                    if t_repsFrom.dns_name1 is None or \
-                       t_repsFrom.dns_name2 is None or \
-                       t_repsFrom.dns_name1 != nastr or \
-                       t_repsFrom.dns_name2 != nastr:
+        if t_repsFrom.is_modified():
+            DEBUG_FN("modify_repsFrom(): %s" % t_repsFrom)
 
-                        t_repsFrom.dns_name1 = nastr
-                        t_repsFrom.dns_name2 = nastr
+    def get_dsa_for_implied_replica(self, n_rep, cn_conn):
+        """If a connection imply a replica, find the relevant DSA
 
-        if t_repsFrom.is_modified():
-            logger.debug("modify_repsFrom(): %s" % t_repsFrom)
+        Given a NC replica and NTDS Connection, determine if the
+        connection implies a repsFrom tuple should be present from the
+        source DSA listed in the connection to the naming context. If
+        it should be, return the DSA; otherwise return None.
 
-    def is_repsFrom_implied(self, n_rep, cn_conn):
-        """Given a NC replica and NTDS Connection, determine if the connection
-        implies a repsFrom tuple should be present from the source DSA listed
-        in the connection to the naming context
+        Based on part of MS-ADTS 6.2.2.5
 
         :param n_rep: NC replica
-        :param conn: NTDS Connection
-        ::returns (True || False), source DSA:
+        :param cn_conn: NTDS Connection
+        :return: source DSA or None
         """
         #XXX different conditions for "implies" than MS-ADTS 6.2.2
 
@@ -857,16 +806,15 @@ class KCC(object):
         #    cn!options does not contain NTDSCONN_OPT_RODC_TOPOLOGY.
         #    cn!fromServer references an nTDSDSA object.
 
-        s_dsa = None
+        if not cn_conn.is_enabled() or cn_conn.is_rodc_topology():
+            return None
 
-        if cn_conn.is_enabled() and not cn_conn.is_rodc_topology():
-            s_dnstr = cn_conn.get_from_dnstr()
-            if s_dnstr is not None:
-                s_dsa = self.get_dsa(s_dnstr)
+        s_dnstr = cn_conn.get_from_dnstr()
+        s_dsa = self.get_dsa(s_dnstr)
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list