sensu-extensions-snmp-trap 0.0.12 → 0.0.13

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: 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