ovsimager 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 942f5129336b94a275250c7beace88ff2845e1c7
4
- data.tar.gz: 8b573ec884c8362da8d6f9b55ae95439dbd2e128
3
+ metadata.gz: 0af6a722ca075a7d9bcfd9b792b892fa97e24969
4
+ data.tar.gz: 5dcde2f06dedfe546934483f12ea0fc4560406e5
5
5
  SHA512:
6
- metadata.gz: 7b8dcce662f61b16c1f6cdb282d50f85140f64fc50bc79eb7579c8db7730e85998378f560a03396897381e95da783fdc7695b65e7c757b4b2ebc9aaba4c99759
7
- data.tar.gz: d4e2dbcae2702ce811a6bc1567b58c3772bb838bfe4f95c266971e07d736dc88614aa1e3d44c116a4ef509b42e350411f2da8a6d3ec81ce5ab5a934390c2c9a3
6
+ metadata.gz: 699eebe74d319453352ae91953e8db5804f6f273893d9e42ea2a51d5d91cc54827c19064232f5b68b170f7181bf1cfce928503dbd287df51fb8aeac3c921630c
7
+ data.tar.gz: 924751e4f3d08cda2f4427e2f0ae09dd61bf467c25afca2e03253de1701f193b79481a7e2b1374bbe5a5e4c9b69748f8c4ccb866131031e570b221199c363cc3
@@ -55,7 +55,7 @@ module OVSImager
55
55
  @dot_peers = dot_peers
56
56
  end
57
57
 
58
- def add_iface(name, mark, dump, inet, tag, peer, remote=nil)
58
+ def add_iface(name, mark, dump, inet, tag, peer, remote=nil, ns=:root)
59
59
  fill = mark ? "fillcolor=#{mark2color(mark)},style=filled," : ''
60
60
  label = "#{name}<BR/><FONT POINT-SIZE=\"10\">#{inet.join('<BR/>')}"
61
61
  if tag or remote
@@ -76,12 +76,13 @@ module OVSImager
76
76
  end
77
77
  end
78
78
  label += " </FONT>"
79
- @dot.puts " #{escape(name)} [#{fill}label=<#{label}>]"
79
+ ename = escape(name) + (ns == :root ? '' : "___" + escape(ns.to_s))
80
+ @dot.puts " #{ename} [#{fill}label=<#{label}>]"
80
81
  if peer
81
82
  if peer[0] == ' '
82
- @dot_peers << " #{escape(peer.strip)} -- #{escape(name)}"
83
+ @dot_peers << " #{escape(peer.strip)} -- #{ename}"
83
84
  elsif name <= peer
84
- @dot_peers << " #{escape(name)} -- #{escape(peer)}"
85
+ @dot_peers << " #{ename} -- #{escape(peer)}"
85
86
  end
86
87
  end
87
88
  end
@@ -104,8 +105,9 @@ module OVSImager
104
105
  @nsname = nsname
105
106
  end
106
107
 
107
- def add_br_iface(name)
108
- @dot_peers << " #{escape(name)} -- ns__#{escape(@nsname)} " +
108
+ def add_br_iface(name, ns=:root)
109
+ ename = escape(name) + (ns == :root ? '' : "___" + escape(ns.to_s))
110
+ @dot_peers << " #{ename} -- ns__#{escape(@nsname)} " +
109
111
  "[style=dashed,lhead=cluster_ns__#{escape(@nsname)}]"
110
112
  end
111
113
  end
@@ -25,8 +25,12 @@ module OVSImager
25
25
  @ifaces
26
26
  end
27
27
 
28
+ def ifname_ns(iface)
29
+ iface[:name] + (iface[:ns] == :root ? "" : ":" + iface[:ns].to_s)
30
+ end
31
+
28
32
  def ifaces_hash()
29
- @ifaces.inject({}) {|h, (ns, v)| v.each {|i| h[i[:name]] = i}; h}
33
+ @ifaces.inject({}) {|h, (ns, v)| v.each {|i| h[ifname_ns(i)] = i}; h}
30
34
  end
31
35
 
32
36
  def ifaces_ary()
@@ -77,14 +77,22 @@ module OVSImager
77
77
  end
78
78
 
79
79
  private
80
- def show_iface_common(name, inet, patch='', tag='', ns='')
81
- puts " [#{@mark[name]||' '}] #{name}#{tag}#{patch}\t" +
82
- "#{inet.join(',')}\t#{ns}"
80
+ def ifname_ns(iface)
81
+ iface[:name] + (iface[:ns] == :root ? "" : ":" + iface[:ns].to_s)
82
+ end
83
+
84
+ def mark(name, ns)
85
+ @mark[name + (ns == :root ? "" : ":" + ns.to_s)]
86
+ end
87
+
88
+ def show_iface_common(name, inet, patch='', tag='', ns=:root)
89
+ puts " [#{mark(name, ns)||' '}] #{name}#{tag}#{patch}\t" +
90
+ "#{inet.join(',')}\t#{ns == :root ? '' : ns}"
83
91
  end
84
92
 
85
93
  def show_iface(iface)
86
94
  patch = iface[:peer] ? " <-> #{iface[:peer]}" : ''
87
- show_iface_common(iface[:name], iface[:inet], patch)
95
+ show_iface_common(iface[:name], iface[:inet], patch, '', iface[:ns])
88
96
  end
89
97
 
90
98
  def show_ovsvs
@@ -94,19 +102,22 @@ module OVSImager
94
102
 
95
103
  br[:ports].each do |port|
96
104
  name = port[:name]
97
- iface = @ifaces[name] || {}
105
+ iface = @ifaces[name]
106
+ _, iface = @ifaces.find {|i, _| i.split(':')[0] == name} unless iface
107
+ iface = {:name => name, :ns => :root} unless iface
98
108
  inet = iface[:inet] || []
99
109
  tag = port[:tag] ? ' (tag=' + port[:tag] + ')' : ''
100
110
  peer = port[:peer] || iface[:peer]
101
111
  remote = port[:remote_ip] ?
102
112
  " #{port[:local_ip] || ''} => #{port[:remote_ip]}" : ''
103
113
  patch = peer ? ' <-> ' + peer : remote
104
- ns = iface[:ns] == :root ? '' : iface[:ns]
114
+ ns = iface[:ns]
115
+ nn = ifname_ns(iface)
105
116
 
106
117
  show_iface_common(name, inet, patch, tag, ns)
107
- dot_br.add_iface(name, @mark[name], @dump_result[name],
108
- inet, tag, peer, remote)
109
- @done[name] = true
118
+ dot_br.add_iface(name, mark(name, ns), @dump_result[name],
119
+ inet, tag, peer, remote, ns)
120
+ @done[nn] = true
110
121
 
111
122
  port[:interfaces].each do |port_if|
112
123
  port_name = port_if[:name]
@@ -116,9 +127,9 @@ module OVSImager
116
127
  show_iface_common(port_name, inet)
117
128
  dot_br.add_iface(port_name, @mark[port_name],
118
129
  @dump_result[port_name], port_inet,
119
- '', ' '+name)
130
+ '', ' '+name, nil, ns)
120
131
  ###
121
- @done[port_name] = true
132
+ @done[nn] = true
122
133
  end
123
134
  end
124
135
  end
@@ -149,16 +160,18 @@ module OVSImager
149
160
  @dotwriter.namespace(name) do |dot_ns|
150
161
  ifaces.each do |iface|
151
162
  ifname = iface[:name]
163
+ nn = ifname_ns(iface)
152
164
  if ifname != 'lo' and !iface[:inet].empty?
153
- if @done[ifname]
154
- dot_ns.add_br_iface(ifname)
165
+ if @done[nn]
166
+ dot_ns.add_br_iface(ifname, iface[:ns])
155
167
  else
156
- dot_ns.add_iface(ifname, @mark[ifname], @dump_result[ifname],
157
- iface[:inet], iface[:tag], iface[:peer])
168
+ dot_ns.add_iface(ifname, mark(ifname, name), @dump_result[nn],
169
+ iface[:inet], iface[:tag], iface[:peer],
170
+ remote=nil, ns=name)
158
171
  end
159
172
  end
160
- show_iface iface unless @done[iface[:name]]
161
- @done[iface[:name]] = true
173
+ show_iface iface unless @done[nn]
174
+ @done[nn] = true
162
175
  end
163
176
  end
164
177
  end
@@ -18,8 +18,9 @@ module OVSImager
18
18
  ping = IO.popen("ping -s #{SIZE} -c 15 #{@from?'-I '+@from:''} #{@to} >/dev/null", "r")
19
19
  end
20
20
 
21
- threads = ifaces.map do |(iface, iref)|
21
+ threads = ifaces.map do |(nn, iref)|
22
22
  Thread.new do
23
+ iface = iref[:name]
23
24
  Thread.current[:iface] = iface
24
25
  ns = iref[:ns]
25
26
  nscmd = ns == :root ? '' : "ip netns exec #{ns} "
@@ -68,8 +69,9 @@ module OVSImager
68
69
  puts "Killing tcpdump(#{dump.pid}) on interface #{iface}."
69
70
  Process.kill('TERM', dump.pid)
70
71
  dump.close
71
- result[iface] = [req_from, req_to, rep_from, rep_to, {}]
72
- result[iface][4][:cap] = cap if cap
72
+ ifname_netns = iface + (ns == :root ? "" : ":" + ns.to_s)
73
+ result[ifname_netns] = [req_from, req_to, rep_from, rep_to, {}]
74
+ result[ifname_netns][4][:cap] = cap if cap
73
75
  end
74
76
  end
75
77
  threads.each {|th| th.join(10)}
@@ -1,3 +1,3 @@
1
1
  module OVSImager
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ovsimager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - NeoCat
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-26 00:00:00.000000000 Z
11
+ date: 2016-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler