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 +4 -4
- data/lib/ovsimager/dotwriter.rb +8 -6
- data/lib/ovsimager/ipnetns.rb +5 -1
- data/lib/ovsimager/ovsimager.rb +30 -17
- data/lib/ovsimager/tcpdump.rb +5 -3
- data/lib/ovsimager/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0af6a722ca075a7d9bcfd9b792b892fa97e24969
|
4
|
+
data.tar.gz: 5dcde2f06dedfe546934483f12ea0fc4560406e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 699eebe74d319453352ae91953e8db5804f6f273893d9e42ea2a51d5d91cc54827c19064232f5b68b170f7181bf1cfce928503dbd287df51fb8aeac3c921630c
|
7
|
+
data.tar.gz: 924751e4f3d08cda2f4427e2f0ae09dd61bf467c25afca2e03253de1701f193b79481a7e2b1374bbe5a5e4c9b69748f8c4ccb866131031e570b221199c363cc3
|
data/lib/ovsimager/dotwriter.rb
CHANGED
@@ -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
|
-
|
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)} -- #{
|
83
|
+
@dot_peers << " #{escape(peer.strip)} -- #{ename}"
|
83
84
|
elsif name <= peer
|
84
|
-
@dot_peers << " #{
|
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
|
-
|
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
|
data/lib/ovsimager/ipnetns.rb
CHANGED
@@ -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
|
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()
|
data/lib/ovsimager/ovsimager.rb
CHANGED
@@ -77,14 +77,22 @@ module OVSImager
|
|
77
77
|
end
|
78
78
|
|
79
79
|
private
|
80
|
-
def
|
81
|
-
|
82
|
-
|
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]
|
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,
|
108
|
-
inet, tag, peer, remote)
|
109
|
-
@done[
|
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[
|
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[
|
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,
|
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[
|
161
|
-
@done[
|
173
|
+
show_iface iface unless @done[nn]
|
174
|
+
@done[nn] = true
|
162
175
|
end
|
163
176
|
end
|
164
177
|
end
|
data/lib/ovsimager/tcpdump.rb
CHANGED
@@ -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 |(
|
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
|
-
|
72
|
-
result[
|
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)}
|
data/lib/ovsimager/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2016-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|