class OnetableTerminator::Core

Attributes

exec[R]
rules_handler[R]

Public Class Methods

new(dry_run = false) click to toggle source
# File lib/onetable_terminator/core.rb, line 5
def initialize(dry_run = false)
  @exec = OnetableTerminator::Iptables::Exec.new dry_run
  @rules_handler = OnetableTerminator::Iptables::RulesHandler.new
end

Public Instance Methods

run() click to toggle source
# File lib/onetable_terminator/core.rb, line 10
def run
  rules = retrieve_redundant_rules

  if rules.empty?
    logger.debug 'Found no redundant rules, nothing to delete'
    return
  end

  log_redundant_rules rules
  delete_redundant_rules rules
end

Private Instance Methods

delete_redundant_rules(rules) click to toggle source
# File lib/onetable_terminator/core.rb, line 38
def delete_redundant_rules(rules)
  logger.debug 'Deleting redundant rules and chains...'
  rules.each do |rule|
    exec.delete_opennebula_rule rule.number
    exec.flush_opennebula_chain rule.target
    exec.delete_opennebula_chain rule.target
  end
end
log_redundant_rules(rules) click to toggle source
# File lib/onetable_terminator/core.rb, line 33
def log_redundant_rules(rules)
  logger.info 'Found these redundant rules:'
  rules.each { |rule| logger.info rule.raw_line.inspect }
end
retrieve_redundant_rules() click to toggle source
# File lib/onetable_terminator/core.rb, line 24
def retrieve_redundant_rules
  nics = exec.load_opennebula_chain
  rules = rules_handler.find_redundant_rules(nics)
  rules.sort! { |left, right| left.number <=> right.number }
  rules.reverse!

  rules
end