class OVSImager::DotWriter::BridgeWriter

Public Class Methods

new(dot, dot_peers) click to toggle source
# File lib/ovsimager/dotwriter.rb, line 53
def initialize(dot, dot_peers)
  @dot = dot
  @dot_peers = dot_peers
end

Public Instance Methods

add_iface(name, mark, dump, inet, tag, peer, remote=nil, ns=:root) click to toggle source
# File lib/ovsimager/dotwriter.rb, line 58
def add_iface(name, mark, dump, inet, tag, peer, remote=nil, ns=:root)
  fill = mark ? "fillcolor=#{mark2color(mark)},style=filled," : ''
  label = "#{name}<BR/><FONT POINT-SIZE=\"10\">#{inet.join('<BR/>')}"
  if tag or remote
    label += "<BR/>#{tag}#{remote && remote.gsub('>','&gt;')}"
  end
  if dump
    label += " </FONT><FONT COLOR=\"blue\">"
    if dump[0] && dump[2] && dump[0] == dump[3] && dump[1] == dump[2]
      label += "<BR/>[#{dump[0]} &lt;-&gt; #{dump[1]}]"
    else
      label += "<BR/>[#{dump[0]} --&gt; #{dump[1]}]" if dump[0]
      label += "<BR/>[#{dump[3]} &lt;-- #{dump[2]}]" if dump[2]
    end
    if dump[4] && dump[4][:cap]
      cap = dump[4][:cap]
      label += "<BR/><FONT POINT-SIZE=\"10\">(#{cap[2]} #{cap[3]} " +
        "#{cap[0]}&lt;=&gt;#{cap[1]})</FONT>"
    end
  end
  label += " </FONT>"
  ename = escape(name) + (ns == :root ? '' : "___" + escape(ns.to_s))
  @dot.puts "    #{ename} [#{fill}label=<#{label}>]"
  if peer
    if peer[0] == ' '
      @dot_peers << "  #{escape(peer.strip)} -- #{ename}"
    elsif name <= peer
      @dot_peers << "  #{ename} -- #{escape(peer)}"
    end
  end
end

Private Instance Methods

escape(name) click to toggle source
# File lib/ovsimager/dotwriter.rb, line 95
def escape(name)
  Utils.escape_nodename(name)
end
mark2color(mark) click to toggle source
# File lib/ovsimager/dotwriter.rb, line 91
def mark2color(mark)
  {'<' => 'red', '>' => 'pink', '*' => 'yellow'}[mark]
end