Class: OVSImager::DotWriter

Inherits:
Object
  • Object
show all
Defined in:
lib/ovsimager/dotwriter.rb

Defined Under Namespace

Classes: BridgeWriter, NSWriter

Instance Method Summary collapse

Constructor Details

#initialize(fname) ⇒ DotWriter

Returns a new instance of DotWriter.



3
4
5
6
7
8
9
10
# File 'lib/ovsimager/dotwriter.rb', line 3

def initialize(fname)
  @fname = fname
  @dot = File.open(fname, 'w')
  @dot.puts 'graph interfaces {'
  @dot.puts '  compound=true'
  @dot.puts '  node [shape=rect,margin=0.1]'
  @dot_peers = []
end

Instance Method Details

#bridge(name, br_type) {|BridgeWriter.new(@dot, @dot_peers)| ... } ⇒ Object

Draw OVSVS & LinuxBridge

Yields:



24
25
26
27
28
29
30
31
# File 'lib/ovsimager/dotwriter.rb', line 24

def bridge(name, br_type)
  @dot.puts "  subgraph cluster_br__#{escape(name)} {"
  @dot.puts "    label = \"#{br_type}Bridge #{name}\""

  yield BridgeWriter.new(@dot, @dot_peers)

  @dot.puts "  }"
end

#finish(pngname) ⇒ Object



12
13
14
15
16
17
18
19
20
21
# File 'lib/ovsimager/dotwriter.rb', line 12

def finish(pngname)
  @dot.puts @dot_peers.join "\n"
  @dot.puts '}'
  @dot.close
  @dot = nil

  unless system("dot -Tpng \"#{@fname}\" -o \"#{pngname}\"")
    puts "Failed to execute dot command: #$?"
  end
end

#namespace(name) {|NSWriter.new(@dot, @dot_peers, name)| ... } ⇒ Object

Draw IPNetNS

Yields:

  • (NSWriter.new(@dot, @dot_peers, name))


34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/ovsimager/dotwriter.rb', line 34

def namespace(name)
  @dot.puts "  subgraph cluster_ns__#{escape(name)} {"
  @dot.puts "  label = \"Namespace\\n#{name}\""
  @dot.puts "  style = \"filled\""
  @dot.puts "  fillcolor = \"#eeeeee\""
  @dot.puts "  ns__#{escape(name)} " +
    "[label=\"\",style=invis,width=0,height=0,margin=0]"

  yield NSWriter.new(@dot, @dot_peers, name)

  @dot.puts '  }'
end