Skip to content

Commit cefc5cb

Browse files
committed
bug CS-16172
Reviewed-by: chiradeep
1 parent 0d9b81a commit cefc5cb

1 file changed

Lines changed: 46 additions & 28 deletions

File tree

scripts/vm/network/security_group.py

Lines changed: 46 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -489,36 +489,54 @@ def cleanup_rules_for_dead_vms():
489489

490490

491491
def cleanup_rules():
492-
try:
493-
494-
chainscmd = "iptables-save | grep '^:' | grep -v '.*-def' | grep -v '.*-eg' | awk '{print $1}' | cut -d':' -f2"
495-
chains = execute(chainscmd).split('\n')
496-
cleaned = 0
497-
cleanup = []
498-
for chain in chains:
499-
if 1 in [ chain.startswith(c) for c in ['r-', 'i-', 's-', 'v-'] ]:
500-
vm_name = chain
501-
502-
cmd = "virsh list |grep " + vm_name
503-
try:
504-
result = execute(cmd)
505-
except:
506-
result = None
507-
508-
if result == None or len(result) == 0:
509-
logging.debug("chain " + chain + " does not correspond to a vm, cleaning up")
510-
cleanup.append(vm_name)
511-
continue
512-
if result.find("running") == -1:
513-
logging.debug("vm " + vm_name + " is not running, cleaning up")
514-
cleanup.append(vm_name)
492+
try:
493+
chainscmd = "iptables-save | grep '^:' | grep -v '.*-def' | grep -v '.*-eg' | awk '{print $1}' | cut -d':' -f2"
494+
chains = execute(chainscmd).split('\n')
495+
cleanup = []
496+
for chain in chains:
497+
if 1 in [ chain.startswith(c) for c in ['r-', 'i-', 's-', 'v-'] ]:
498+
vm_name = chain
515499

516-
for vmname in cleanup:
517-
destroy_network_rules_for_vm(vmname)
500+
cmd = "virsh list |grep " + vm_name
501+
try:
502+
result = execute(cmd)
503+
except:
504+
result = None
505+
506+
if result == None or len(result) == 0:
507+
logging.debug("chain " + chain + " does not correspond to a vm, cleaning up")
508+
cleanup.append(vm_name)
509+
continue
510+
if result.find("running") == -1:
511+
logging.debug("vm " + vm_name + " is not running, cleaning up")
512+
cleanup.append(vm_name)
513+
514+
chainscmd = "ebtables-save |grep :i |awk '{print $1}' |sed -e 's/\-in//g' |sed -e 's/\-out//g' |sed -e 's/^://g'"
515+
chains = execute(chainscmd).split('\n')
516+
for chain in chains:
517+
if 1 in [ chain.startswith(c) for c in ['r-', 'i-', 's-', 'v-'] ]:
518+
vm_name = chain
519+
520+
cmd = "virsh list |grep " + vm_name
521+
try:
522+
result = execute(cmd)
523+
except:
524+
result = None
525+
526+
if result == None or len(result) == 0:
527+
logging.debug("chain " + chain + " does not correspond to a vm, cleaning up")
528+
cleanup.append(vm_name)
529+
continue
530+
if result.find("running") == -1:
531+
logging.debug("vm " + vm_name + " is not running, cleaning up")
532+
cleanup.append(vm_name)
533+
534+
for vmname in cleanup:
535+
destroy_network_rules_for_vm(vmname)
518536

519-
logging.debug("Cleaned up rules for " + str(len(cleanup)) + " chains")
520-
except:
521-
logging.debug("Failed to cleanup rules !")
537+
logging.debug("Cleaned up rules for " + str(len(cleanup)) + " chains")
538+
except:
539+
logging.debug("Failed to cleanup rules !")
522540

523541
def check_rule_log_for_vm(vmName, vmId, vmIP, domID, signature, seqno):
524542
vm_name = vmName;

0 commit comments

Comments
 (0)