summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThom May <thom@may.lt>2016-02-18 09:57:03 +0000
committerThom May <thom@may.lt>2016-02-18 09:57:03 +0000
commit5b61ab1b2833b44a915d3f7fd693e216fa8644d6 (patch)
treea60ff4fbf3023690e8f34b282609bf8d888652ad
parentc6051283c1e6353d63e34b8c902d2cabec5b9eb0 (diff)
parent2724ecc4628ca45f745c19da332a060d97e13bb4 (diff)
downloadohai-5b61ab1b2833b44a915d3f7fd693e216fa8644d6.tar.gz
Merge pull request #731 from tas50/fail_gem_fail
Log sigar gem load failures
-rw-r--r--lib/ohai/plugins/network_listeners.rb56
-rw-r--r--lib/ohai/plugins/sigar/network_route.rb61
2 files changed, 63 insertions, 54 deletions
diff --git a/lib/ohai/plugins/network_listeners.rb b/lib/ohai/plugins/network_listeners.rb
index 7ecfef72..62661c77 100644
--- a/lib/ohai/plugins/network_listeners.rb
+++ b/lib/ohai/plugins/network_listeners.rb
@@ -22,35 +22,39 @@ Ohai.plugin(:NetworkListeners) do
depends "network", "counters/network"
collect_data do
- require "sigar"
- flags = Sigar::NETCONN_TCP | Sigar::NETCONN_SERVER
+ begin
+ require 'sigar'
+ flags = Sigar::NETCONN_TCP | Sigar::NETCONN_SERVER
- network Mash.new unless network
- listeners = Mash.new
+ network Mash.new unless network
+ listeners = Mash.new
- sigar = Sigar.new
- sigar.net_connection_list(flags).each do |conn|
- port = conn.local_port
- addr = conn.local_address.to_s
- if addr == "0.0.0.0" || addr == "::"
- addr = "*"
+ sigar = Sigar.new
+ sigar.net_connection_list(flags).each do |conn|
+ port = conn.local_port
+ addr = conn.local_address.to_s
+ if addr == "0.0.0.0" || addr == "::"
+ addr = "*"
+ end
+ listeners[port] = Mash.new
+ listeners[port][:address] = addr
+ begin
+ pid = sigar.proc_port(conn.type, port)
+ # workaround for a failure of proc_state to throw
+ # after the first 0 has been supplied to it
+ #
+ # no longer required when hyperic/sigar#48 is fixed
+ throw ArgumentError.new("No such process") if pid == 0
+ listeners[port][:pid] = pid
+ listeners[port][:name] = sigar.proc_state(pid).name
+ rescue
+ end
end
- listeners[port] = Mash.new
- listeners[port][:address] = addr
- begin
- pid = sigar.proc_port(conn.type, port)
- # workaround for a failure of proc_state to throw
- # after the first 0 has been supplied to it
- #
- # no longer required when hyperic/sigar#48 is fixed
- throw ArgumentError.new("No such process") if pid == 0
- listeners[port][:pid] = pid
- listeners[port][:name] = sigar.proc_state(pid).name
- rescue
- end
- end
- network[:listeners] = Mash.new
- network[:listeners][:tcp] = listeners
+ network[:listeners] = Mash.new
+ network[:listeners][:tcp] = listeners
+ rescue LoadError
+ Ohai::Log.debug('Could not load sigar gem. Skipping NetworkListeners plugin')
+ end
end
end
diff --git a/lib/ohai/plugins/sigar/network_route.rb b/lib/ohai/plugins/sigar/network_route.rb
index eaed4052..f4d3161f 100644
--- a/lib/ohai/plugins/sigar/network_route.rb
+++ b/lib/ohai/plugins/sigar/network_route.rb
@@ -19,41 +19,46 @@
require "ohai/mixin/network_constants"
Ohai.plugin(:NetworkRoutes) do
- include Ohai::Mixin::NetworkConstants
+ begin
+ require "sigar"
- provides "network/interfaces/adapters/route"
- depends "network/interfaces"
+ include Ohai::Mixin::NetworkConstants
- def flags(flags)
- f = ""
- if (flags & Sigar::RTF_UP) != 0
- f += "U"
- end
- if (flags & Sigar::RTF_GATEWAY) != 0
- f += "G"
- end
- if (flags & Sigar::RTF_HOST) != 0
- f += "H"
+ provides "network/interfaces/adapters/route"
+ depends "network/interfaces"
+
+ def flags(flags)
+ f = ""
+ if (flags & Sigar::RTF_UP) != 0
+ f += "U"
+ end
+ if (flags & Sigar::RTF_GATEWAY) != 0
+ f += "G"
+ end
+ if (flags & Sigar::RTF_HOST) != 0
+ f += "H"
+ end
+ f
end
- f
- end
- collect_data(:default) do
- require "sigar"
- sigar = Sigar.new
+ collect_data(:default) do
+ sigar = Sigar.new
- sigar.net_route_list.each do |route|
- next unless network[:interfaces][route.ifname] # this should never happen
- network[:interfaces][route.ifname][:route] = Mash.new unless network[:interfaces][route.ifname][:route]
- route_data = {}
- Ohai::Mixin::NetworkConstants::SIGAR_ROUTE_METHODS.each do |m|
- if(m == :flags)
- route_data[m] = flags(route.send(m))
- else
- route_data[m] = route.send(m)
+ sigar.net_route_list.each do |route|
+ next unless network[:interfaces][route.ifname] # this should never happen
+ network[:interfaces][route.ifname][:route] = Mash.new unless network[:interfaces][route.ifname][:route]
+ route_data = {}
+ Ohai::Mixin::NetworkConstants::SIGAR_ROUTE_METHODS.each do |m|
+ if(m == :flags)
+ route_data[m] = flags(route.send(m))
+ else
+ route_data[m] = route.send(m)
+ end
end
+ network[:interfaces][route.ifname][:route][route.destination] = route_data
end
- network[:interfaces][route.ifname][:route][route.destination] = route_data
end
+ rescue LoadError
+ Ohai::Log.debug('Could not load sigar gem. Skipping NetworkRoutes plugin')
end
end