From 7b37a35aefab59dfc6f2648ef5a40cbfccc49c7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Holger=20Wei=C3=9F?= Date: Tue, 5 Jul 2011 18:56:10 +0200 Subject: bcfg2-admin compare: Don't edit list in for loop Removing elements from a list while iterating over it (forwards) leads to unexpected results. --- src/lib/Server/Admin/Compare.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/lib/Server/Admin/Compare.py b/src/lib/Server/Admin/Compare.py index c62b4a76a..1768223d2 100644 --- a/src/lib/Server/Admin/Compare.py +++ b/src/lib/Server/Admin/Compare.py @@ -62,17 +62,19 @@ class Compare(Bcfg2.Server.Admin.Mode): both = [] oldl = ["%s %s" % (entry.tag, entry.get('name')) for entry in old] newl = ["%s %s" % (entry.tag, entry.get('name')) for entry in new] + onlyold = list(oldl) + onlynew = list(newl) for entry in newl: if entry in oldl: both.append(entry) - newl.remove(entry) - oldl.remove(entry) + onlyold.remove(entry) + onlynew.remove(entry) for entry in both: print(" %s differs (in bundle %s)" % (entry, name)) - for entry in oldl: + for entry in onlyold: print(" %s only in old configuration (in bundle %s)" % (entry, name)) - for entry in newl: + for entry in onlynew: print(" %s only in new configuration (in bundle %s)" % (entry, name)) return False -- cgit v1.2.3-1-g7c22