From: Mark Wooding Date: Thu, 28 Sep 2017 23:15:19 +0000 (+0100) Subject: svc/conntrack.in: Maintain config groups in a dictionary. X-Git-Tag: 1.5.0~41^2~9 X-Git-Url: https://git.distorted.org.uk/~mdw/tripe/commitdiff_plain/f8d6fc7b379fc963c1a310872fb030c69c7aff7d svc/conntrack.in: Maintain config groups in a dictionary. Nothing cares about the relative order of the groups, and the `showgroup' command wants to be able to look one up by name. Really, the question is why I didn't do it like this the first time. --- diff --git a/svc/conntrack.in b/svc/conntrack.in index 83b2993c..b840fc20 100644 --- a/svc/conntrack.in +++ b/svc/conntrack.in @@ -207,7 +207,7 @@ class Config (object): testaddr = TESTADDR ## Scan the configuration file and build the groups structure. - groups = [] + groups = {} for sec in cp.sections(): pats = [] for tag in cp.options(sec): @@ -234,7 +234,7 @@ class Config (object): (p and not pp) or \ (p == pp and n.withinp(nn)), pats)) - groups.append((sec, pats)) + groups[sec] = pats ## Done. me.testaddr = testaddr @@ -246,15 +246,11 @@ CF = None def cmd_showconfig(): T.svcinfo('test-addr=%s' % CF.testaddr) def cmd_showgroups(): - for sec, pats in CF.groups: - T.svcinfo(sec) + for g in sorted(CF.groups.iterkeys()): + T.svcinfo(g) def cmd_showgroup(g): - for s, p in CF.groups: - if s == g: - pats = p - break - else: - raise T.TripeJobError('unknown-group', g) + try: pats = CF.groups[g] + except KeyError: raise T.TripeJobError('unknown-group', g) for t, p, n in pats: T.svcinfo('peer', t, 'target', p and str(p) or '(default)', @@ -340,7 +336,7 @@ def kickpeers(): ## Now decide what to do. changes = [] - for g, pp in CF.groups: + for g, pp in CF.groups.iteritems(): if T._debug: print '# check group %s' % g ## Find out which peer in the group ought to be active.