bug 11625: separate out error paths to enable fine grained error handling and cleanup

status 11625: resolved fixed
This commit is contained in:
Chiradeep Vittal 2011-10-04 17:10:52 -07:00
parent 45b7e13529
commit 5b86cb12fd
1 changed files with 24 additions and 2 deletions

View File

@ -434,18 +434,40 @@ def ipset(ipsetname, proto, start, end, ips):
try:
util.pread2(['ipset', '-N', ipsettmp, 'iptreemap'])
except:
util.SMlog("Failed to create temp ipset, reusing old name= " + ipsettmp)
try:
util.pread2(['ipset', '-F', ipsettmp])
except:
util.SMlog("Failed to clear old temp ipset name=" + ipsettmp)
return False
try:
for ip in ips:
try:
util.pread2(['ipset', '-A', ipsettmp, ip])
except CommandException, cex:
if cex.reason.rfind('already in set') == -1:
raise
util.pread2(['ipset', '-W', ipsettmp, ipsetname])
util.pread2(['ipset', '-X', ipsettmp])
except:
util.SMlog("Failed to program ipset " + ipsetname)
util.pread2(['ipset', '-F', ipsettmp])
util.pread2(['ipset', '-X', ipsettmp])
return False
try:
util.pread2(['ipset', '-W', ipsettmp, ipsetname])
except:
util.SMlog("Failed to swap ipset " + ipsetname)
result = False
try:
util.pread2(['ipset', '-F', ipsettmp])
util.pread2(['ipset', '-X', ipsettmp])
except:
# if the temporary name clashes next time we'll just reuse it
util.SMlog("Failed to delete temp ipset " + ipsettmp)
return result
@echo