sensu-extensions-snmp-trap 0.0.12 → 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9f0973bb3ae00e0a0ce2cb2c73f791647e1c0cc6
4
- data.tar.gz: dfb3cddff9fdd957baebc60eb66f98ca0abc5122
3
+ metadata.gz: 5d5ef1ace4e6db46ada2a1af63d43ec120423aa0
4
+ data.tar.gz: 0e5192ef22a7c8c72d1552f4ab8ec1036459f161
5
5
  SHA512:
6
- metadata.gz: 9821e8c84870558c58d524457e7755cc03d64ed0bf4669bf0b8278de07588d96cd602531a998fe7c8a99ac7a35112b58cbebc6f302a723c067804afd126bb28f
7
- data.tar.gz: c16dff9fa82c6a204858921c49449bd0ef4881e1ac441cc93236322dc1032d86cc29087bf2c99826a76586b3baad2c64d0bcf48dc6d4789c63843809f8ae0fbd
6
+ metadata.gz: 12221123c60ed7e98bb028e53e6bc7e36e942894a28a01bd54cc8d8886d5ac8f5697a4abc7effa39b5759249f8a0839bf87a8ea4f3e1a4fab40df011a7b2af22
7
+ data.tar.gz: 3a706a9964258ea92cdeca593a8abe174086f11adf6c4010b39e557e71b4b2e63e0869b42decd7dd504dd7e9b2893e49ec11de622bc68f06fe3990e592aa0e5d
@@ -66,20 +66,72 @@ module Sensu
66
66
  end
67
67
  end
68
68
 
69
+ def determine_mib_preload(module_name)
70
+ preload = []
71
+ if @mib_map[module_name]
72
+ @mib_map[module_name][:imports].each do |import|
73
+ if @mib_map[import]
74
+ preload << @mib_map[import][:mib_file]
75
+ end
76
+ preload << determine_mib_preload(import)
77
+ end
78
+ else
79
+ @logger.fatal("snmp trap check extension unknown mib preload", :module_name => module_name)
80
+ end
81
+ preload.flatten
82
+ end
83
+
84
+ def create_mib_map!
85
+ @logger.debug("snmp trap check extension creating mib map", :mibs_dir => options[:mibs_dir])
86
+ @mib_map = {}
87
+ Dir.glob(File.join(options[:mibs_dir], "*")).each do |mib_file|
88
+ mib_contents = IO.read(mib_file)
89
+ module_name = mib_contents.scan(/([\w-]+)\s+DEFINITIONS\s+::=\s+BEGIN/).flatten.first
90
+ details = {
91
+ :mib_file => mib_file,
92
+ :imports => mib_contents.scan(/FROM\s+([\w-]+)/).flatten
93
+ }
94
+ if @mib_map.has_key?(module_name)
95
+ @logger.debug("snmp trap check extension overriding mib map entry", {
96
+ :module_name => module_name,
97
+ :details => details
98
+ })
99
+ end
100
+ @mib_map[module_name] = details
101
+ end
102
+ @mib_map.each_key do |module_name|
103
+ @mib_map[module_name][:preload] = determine_mib_preload(module_name)
104
+ end
105
+ puts @mib_map
106
+ @mib_map
107
+ end
108
+
69
109
  def load_mibs!
70
110
  @logger.debug("snmp trap check extension importing mibs", {
71
111
  :mibs_dir => options[:mibs_dir],
72
112
  :imported_dir => options[:imported_dir]
73
113
  })
74
- mib_files = Dir.glob(File.join(options[:mibs_dir], "*"))
75
- mib_files.each do |mib_file|
76
- @logger.debug("snmp trap check extension importing mib", :mib_file => mib_file)
114
+ @mib_map.each do |module_name, details|
115
+ @logger.debug("snmp trap check extension importing mib", {
116
+ :module_name => module_name,
117
+ :details => details
118
+ })
77
119
  begin
78
- preload = mib_files - [mib_file]
79
- SNMP::MIB.import_module(mib_file, options[:imported_dir], preload)
120
+ @logger.debug("snmp trap check extension mib dependencies", {
121
+ :module_name => module_name,
122
+ :details => details
123
+ })
124
+ unless details[:preload].empty?
125
+ arguments = "-p "
126
+ arguments << details[:preload].map { |preload| preload }.join(" -p ")
127
+ else
128
+ arguments = nil
129
+ end
130
+ SNMP::MIB.import_module(details[:mib_file], options[:imported_dir], arguments)
80
131
  rescue StandardError, SyntaxError => error
81
132
  @logger.debug("snmp trap check extension failed to import mib", {
82
- :mib_file => mib_file,
133
+ :module_name => module_name,
134
+ :details => details,
83
135
  :error => error
84
136
  })
85
137
  end
@@ -160,6 +212,7 @@ module Sensu
160
212
 
161
213
  def start_trap_processor!
162
214
  @processor = Thread.new do
215
+ create_mib_map!
163
216
  load_mibs!
164
217
  loop do
165
218
  process_trap(@traps.pop)
@@ -13,13 +13,13 @@ module SNMP
13
13
  @sensu_logger.warn("snmp trap check extension mib warning", :warning => message.downcase)
14
14
  end
15
15
 
16
- def import_module(module_file, mib_dir=DEFAULT_MIB_PATH, mib_preload=[])
16
+ def import_module(module_file, mib_dir=DEFAULT_MIB_PATH, raw_arguments=nil)
17
17
  raise "smidump tool must be installed" unless import_supported?
18
18
  FileUtils.makedirs mib_dir
19
- # PATCH: add preload support
20
- preload = mib_preload.map {|mib_file| " -p #{mib_file}"}.join("")
19
+ # PATCH: add arguments support
20
+ arguments = raw_arguments ? " #{raw_arguments}" : ""
21
21
  # PATCH: redirect STDERR to /dev/null
22
- mib_hash = `smidump#{preload} -k -f python #{module_file} 2>/dev/null`
22
+ mib_hash = `smidump#{arguments} -k -f python #{module_file} 2>/dev/null`
23
23
  mib = eval_mib_data(mib_hash)
24
24
  if mib
25
25
  module_name = mib["moduleName"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-extensions-snmp-trap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sensu-Extensions and contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-18 00:00:00.000000000 Z
11
+ date: 2016-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sensu-extension