Sha256: 4a2b7340397c3f15d132b5f4effc169c0486767f729ec1e2e97b0354bfcc62c2

Contents?: true

Size: 1.82 KB

Versions: 66

Compression:

Stored size: 1.82 KB

Contents

require 'metadata/linux/LinuxUtils'

module HostScanItemFile
  def parse_data(ssu, data, &_blk)
    if data.nil?
      d = scan_definition

      st = Time.now
      $log.info "Scanning [Profile-Files] information."
      yield({:msg => 'Scanning Profile-File'}) if block_given?

      fs_files = d["stats"].collect { |s| s["target"] }.uniq

      $log.info "Retrieving file metadata for targets."
      files = ssu.shell_exec("ls -lLd --full-time #{fs_files.join(' ')} 2>/dev/null; true").split("\n")
      files = MiqLinux::Utils.parse_ls_l_fulltime(files)
      files.each do |f|
        f.delete(:hard_links)
        f[:rsc_type] = f.delete(:ftype)
        f[:contents] = nil
      end

      md5_files = files.collect { |f| f[:name] if f[:rsc_type] == 'file' }.compact
      $log.info "Retrieving md5 values for targets."
      md5_files = ssu.shell_exec("md5sum #{md5_files.join(' ')} 2>/dev/null; true").split("\n")
      md5_files.each do |line|
        parts = line.chomp.split(' ')
        md5, fname = parts[0], parts[1..-1].join(' ')
        file = files.find { |f| f[:name] == fname }
        file[:md5] = md5 unless file.nil?
      end

      cat_files = d["stats"].collect { |s| s["target"] if s["content"] }.compact.uniq
      unless cat_files.empty?
        $log.info "Retrieving content for specified targets."
        cat_files = ssu.shell_exec("ls -1d #{cat_files.join(' ')} 2>/dev/null; true").split("\n")
        cat_files.each do |fname|
          fname = fname.chomp
          next if fname.empty?
          file = files.find { |f| f[:name] == fname }
          $log.debug "Retrieving content for #{fname}."
          file[:contents] = ssu.shell_exec("cat #{fname} 2>/dev/null; true")
        end
      end

      d[:data] = files

      $log.info "Scanning [Profile-Files] information ran for [#{Time.now - st}] seconds."
    end
  end
end

Version data entries

66 entries across 66 versions & 1 rubygems

Version Path
manageiq-smartstate-0.10.1 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.10.0 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.9.0 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.8.1 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.8.0 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.7.0 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.6.2 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.5.10 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.3.10 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.6.1 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.3.9 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.6.0 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.5.9 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.5.8 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.3.8 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.5.7 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.3.7 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.5.6 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.3.6 lib/metadata/ScanProfile/modules/HostScanItemFile.rb
manageiq-smartstate-0.5.5 lib/metadata/ScanProfile/modules/HostScanItemFile.rb