diff options
Diffstat (limited to 'lib/ohai/plugins/packages.rb')
-rw-r--r-- | lib/ohai/plugins/packages.rb | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/lib/ohai/plugins/packages.rb b/lib/ohai/plugins/packages.rb deleted file mode 100644 index de031b9e..00000000 --- a/lib/ohai/plugins/packages.rb +++ /dev/null @@ -1,122 +0,0 @@ -# Author:: "Christian Höltje" <choltje@us.ibm.com> -# Author:: "Christopher M. Luciano" <cmlucian@us.ibm.com> -# Author:: Shahul Khajamohideen (<skhajamohid1@bloomberg.net>) -# Copyright (C) 2015 IBM Corp. -# Copyright (C) 2015 Bloomberg Finance L.P. -# License:: Apache License, Version 2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -Ohai.plugin(:Packages) do - provides 'packages' - depends 'platform_family' - - collect_data(:linux) do - packages Mash.new - - if %w(debian).include? platform_family - so = shell_out('dpkg-query -W') - pkgs = so.stdout.lines - - pkgs.each do |pkg| - name, version = pkg.split - packages[name] = { 'version' => version } - end - - elsif %w(rhel fedora suse).include? platform_family - require 'shellwords' - format = Shellwords.escape '%{NAME}\t%{VERSION}\t%{RELEASE}\n' - so = shell_out("rpm -qa --queryformat #{format}") - pkgs = so.stdout.lines - - pkgs.each do |pkg| - name, version, release = pkg.split - packages[name] = { 'version' => version, 'release' => release } - end - end - end - - collect_data(:windows) do - packages Mash.new - - require 'wmi-lite' - - wmi = WmiLite::Wmi.new - w32_product = wmi.instances_of('Win32_Product') - - w32_product.find_all.each do |product| - name = product['name'] - package = packages[name] = Mash.new - %w(version vendor installdate).each do |attr| - package[attr] = product[attr] - end - end - end - - collect_data(:aix) do - packages Mash.new - so = shell_out('lslpp -L -q -c') - pkgs = so.stdout.lines - - # Output format is - # Package Name:Fileset:Level - # On aix, filesets are packages and levels are versions - pkgs.each do |pkg| - _, name, version = pkg.split(':') - packages[name] = { 'version' => version } - end - end - - def collect_ips_packages - so = shell_out('pkg list -H') - # Output format is - # NAME (PUBLISHER) VERSION IFO - so.stdout.lines.each do |pkg| - tokens = pkg.split - if tokens.length == 3 # No publisher info - name, version, = tokens - else - name, publisher, version, = tokens - publisher = publisher[1..-2] - end - packages[name] = { 'version' => version } - packages[name]['publisher'] = publisher if publisher - end - end - - def collect_sysv_packages - so = shell_out('pkginfo -l') - # Each package info is separated by a blank line - chunked_lines = so.stdout.lines.map(&:strip).chunk do |line| - !line.empty? || nil - end - chunked_lines.each do |_, lines| - package = {} - lines.each do |line| - key, value = line.split(':', 2) - package[key.strip.downcase] = value.strip unless value.nil? - end - # pkginst is the installed package name - packages[package['pkginst']] = package.tap do |p| - p.delete('pkginst') - end - end - end - - collect_data(:solaris2) do - packages Mash.new - collect_ips_packages - collect_sysv_packages - end -end |