mirror of https://github.com/apache/cloudstack.git
bug 11625: separate out error paths to enable fine grained error handling and cleanup
status 11625: resolved fixed
This commit is contained in:
parent
45b7e13529
commit
5b86cb12fd
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue