Advertisement
Guest User

Untitled

a guest
Aug 10th, 2015
293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.81 KB | None | 0 0
  1.   def software
  2.     @seen_software = Array.new
  3.     @inventory = Array.new
  4.     package_filter = Regexp.new(/(.*)\-([\d\.]+)\W([a-z]*.*)/, Regexp::IGNORECASE);
  5.  
  6.     sbms = Sbm.where(role: "cloud")
  7.     sbms.each do |sbm|
  8.       if sbm.packages
  9.         software = JSON.parse(sbm.packages)
  10.       else
  11.         software = []
  12.       end
  13.  
  14.       packages = Array.new
  15.       software.each do |raw|
  16.         match = package_filter.match(raw)
  17.         if match
  18.           @seen_software.push(match[1])
  19.           packages.push({"name" => match[1], "version" => match[2], "revision" => match[3]})
  20.         end
  21.       end
  22.       packages.sort_by!{ |hash| hash[:name].to_s }
  23.       @inventory.push({"name" => sbm.hostname, "id" => sbm.id, "software" => packages})
  24.     end
  25.     @seen_software.uniq!.sort_by! {|name| name.to_s }
  26.   end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement