@@ -489,36 +489,54 @@ def cleanup_rules_for_dead_vms():
489489
490490
491491def 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
523541def check_rule_log_for_vm (vmName , vmId , vmIP , domID , signature , seqno ):
524542 vm_name = vmName ;
0 commit comments