module Havox::RouteFlow

Constants

ENTRY_REGEX

Public Class Methods

fetch(vm_name, protocol = nil) click to toggle source
# File lib/havox/modules/routeflow.rb, line 34
def self.fetch(vm_name, protocol = nil)
  result = run(cmd.show_ip_route(vm_name, protocol))
  result = parse(result)
  result = Havox::RouteFiller.new(result).filled_routes
  result
end
ribs(vm_names, opts = {}) click to toggle source
# File lib/havox/modules/routeflow.rb, line 41
def self.ribs(vm_names, opts = {})
  routes = []
  vm_names.each do |vm_name|
    raw_routes = fetch(vm_name)
    routes += raw_routes.map { |rr| Havox::Route.new(rr, vm_name, opts) }
  end
  routes
end
run(command) click to toggle source
# File lib/havox/modules/routeflow.rb, line 28
def self.run(command)
  output = nil
  ssh_connection { |ssh| output = ssh.exec!(command) }
  output
end

Private Class Methods

cmd() click to toggle source
# File lib/havox/modules/routeflow.rb, line 12
def cmd
  Havox::Command
end
config() click to toggle source
# File lib/havox/modules/routeflow.rb, line 8
def config
  Havox.configuration
end
parse(output) click to toggle source
# File lib/havox/modules/routeflow.rb, line 22
def parse(output)
  result = output.each_line.map { |l| l.match(ENTRY_REGEX) }.compact
  result.map(&:to_s)
end
ssh_connection() { |ssh| ... } click to toggle source
# File lib/havox/modules/routeflow.rb, line 16
def ssh_connection
  Net::SSH.start(config.rf_host, config.rf_user, password: config.rf_password) do |ssh|
    yield(ssh)
  end
end