From: Joe Guo Date: Wed, 3 Oct 2018 10:21:11 +0000 (+1300) Subject: uptodateness: extract function get_utdv_distances X-Git-Tag: tdb-1.3.17~1289 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bbef7d6727bee12c3dee14cd9b67440d0548a8b4;p=thirdparty%2Fsamba.git uptodateness: extract function get_utdv_distances Signed-off-by: Joe Guo Reviewed-by: Douglas Bagnall Reviewed-by: Andrew Bartlett BUG: https://bugzilla.samba.org/show_bug.cgi?id=13658 --- diff --git a/python/samba/netcmd/visualize.py b/python/samba/netcmd/visualize.py index ae09b4fc353..98d33dbba56 100644 --- a/python/samba/netcmd/visualize.py +++ b/python/samba/netcmd/visualize.py @@ -45,6 +45,7 @@ from samba.uptodateness import ( get_own_cursor, get_utdv, get_utdv_edges, + get_utdv_distances, ) COMMON_OPTIONS = [ @@ -691,28 +692,7 @@ class cmd_uptodateness(GraphCommand): utdv_edges = get_utdv_edges(local_kcc, dsas, part_dn, lp, creds) - distances = {} - max_distance = 0 - for dn1 in dsas: - try: - peak = utdv_edges[dn1][dn1] - except KeyError as e: - peak = 0 - d = {} - distances[dn1] = d - for dn2 in dsas: - if dn2 in utdv_edges: - if dn1 in utdv_edges[dn2]: - dist = peak - utdv_edges[dn2][dn1] - d[dn2] = dist - if dist > max_distance: - max_distance = dist - else: - print("Missing dn %s from UTD vector" % dn1, - file=sys.stderr) - else: - print("missing dn %s from UTD vector list" % dn2, - file=sys.stderr) + distances, max_distance = get_utdv_distances(utdv_edges, dsas) digits = min(max_digits, len(str(max_distance))) if digits < 1: diff --git a/python/samba/uptodateness.py b/python/samba/uptodateness.py index 834026c8b8f..b3468639e92 100644 --- a/python/samba/uptodateness.py +++ b/python/samba/uptodateness.py @@ -113,3 +113,29 @@ def get_utdv_edges(local_kcc, dsas, part_dn, lp, creds): continue utdv_edges[dsa_dn] = remotes return utdv_edges + + +def get_utdv_distances(utdv_edges, dsas): + distances = {} + max_distance = 0 + for dn1 in dsas: + try: + peak = utdv_edges[dn1][dn1] + except KeyError as e: + peak = 0 + d = {} + distances[dn1] = d + for dn2 in dsas: + if dn2 in utdv_edges: + if dn1 in utdv_edges[dn2]: + dist = peak - utdv_edges[dn2][dn1] + d[dn2] = dist + if dist > max_distance: + max_distance = dist + else: + print("Missing dn %s from UTD vector" % dn1, + file=sys.stderr) + else: + print("missing dn %s from UTD vector list" % dn2, + file=sys.stderr) + return distances, max_distance