Module: FsProbe

Defined in:
lib/fs/MiqFS/FsProbe.rb

Constant Summary collapse

MODDIR =
File.expand_path(File.join(File.dirname(__FILE__), "modules"))
PROBE_FILES =
Dir.glob(File.join(MODDIR, "*Probe.rb*"))

Class Method Summary collapse

Class Method Details

.getFsMod(dobj, probes = nil) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/fs/MiqFS/FsProbe.rb', line 19

def self.getFsMod(dobj, probes = nil)
  probes = PROBE_FILES if probes.nil?
  probes = [probes] unless probes.kind_of?(Array)

  fname = dobj.dInfo.fileName || "" rescue ""
  fname = dobj.dInfo.lvObj.lvName || "" if fname.empty? rescue ""
  partNum = dobj.partNum

  probes.each do |pmod|
    $log.debug("MIQ(FsProbe-getFsMod) FS probe attempting [#{pmod}] for [#{fname}] [partition: #{partNum}]")

    require_relative "modules/#{pmod}"
    begin
      if Object.const_get(pmod).probe(dobj)
        mod = pmod.chomp("Probe")
        $log.info("MIQ(FsProbe-getFsMod) FS probe detected [#{mod}] for [#{fname}] [partition: #{partNum}]")
        require_relative "modules/#{mod}"
        return Object.const_get(mod)
      end
    rescue StandardError => err
      $log.debug(err.to_s)
      # continue to probe even when one probing fails.
      next
    end
  end
  nil
end