summaryrefslogtreecommitdiff
path: root/lib/ohai/plugins/aix/filesystem.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ohai/plugins/aix/filesystem.rb')
-rw-r--r--lib/ohai/plugins/aix/filesystem.rb98
1 files changed, 58 insertions, 40 deletions
diff --git a/lib/ohai/plugins/aix/filesystem.rb b/lib/ohai/plugins/aix/filesystem.rb
index ac35dc2d..8b7419a9 100644
--- a/lib/ohai/plugins/aix/filesystem.rb
+++ b/lib/ohai/plugins/aix/filesystem.rb
@@ -1,7 +1,8 @@
#
# Author:: Deepali Jagtap (<deepali.jagtap@clogeny.com>)
# Author:: Prabhu Das (<prabhu.das@clogeny.com>)
-# Copyright:: Copyright (c) 2013 Opscode, Inc.
+# Author:: Isa Farnik (<isa@chef.io>)
+# Copyright:: Copyright (c) 2013-2015 Chef Software, Inc.
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,52 +22,69 @@
Ohai.plugin(:Filesystem) do
provides "filesystem"
- collect_data(:aix) do
- fs = Mash.new
+ def parse_df_or_mount(shell_out)
+ oldie = Mash.new
- # Grab filesystem data from df
- so = shell_out("df -P")
- so.stdout.lines.each do |line|
+ shell_out.lines.each do |line|
+ fields = line.split
case line
- when /^Filesystem\s+1024-blocks/
+ # headers and horizontal rules to skip
+ when /^\s*(node|---|^Filesystem\s+1024-blocks)/
next
- when /^(.+?)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+\%)\s+(.+)$/
- filesystem = $1
- fs[filesystem] = Mash.new
- fs[filesystem][:kb_size] = $2
- fs[filesystem][:kb_used] = $3
- fs[filesystem][:kb_available] = $4
- fs[filesystem][:percent_used] = $5
- fs[filesystem][:mount] = $6
+ # strictly a df entry
+ when /^(.+?)\s+([0-9-]+)\s+([0-9-]+)\s+([0-9-]+)\s+([0-9-]+\%*)\s+(.+)$/
+ if $1 == "Global"
+ key = "#{$1}:#{$6}"
+ else
+ key = $1
+ end
+ oldie[key] ||= Mash.new
+ oldie[key][:kb_size] = $2
+ oldie[key][:kb_used] = $3
+ oldie[key][:kb_available] = $4
+ oldie[key][:percent_used] = $5
+ oldie[key][:mount] = $6
+ # an entry starting with 'G' or / (E.G. /tmp or /var)
+ when /^\s*(G.*?|\/\w)/
+ if fields[0] == "Global"
+ key = fields[0] + ":" + fields[1]
+ else
+ key = fields[0]
+ end
+ oldie[key] ||= Mash.new
+ oldie[key][:mount] = fields[1]
+ oldie[key][:fs_type] = fields[2]
+ oldie[key][:mount_options] = fields[6].split(',')
+ # entries occupying the 'Node' column parsed here
+ else
+ key = fields[0] + ":" + fields[1]
+ oldie[key] ||= Mash.new
+ oldie[key][:mount] = fields[1]
+ oldie[key][:fs_type] = fields[3]
+ oldie[key][:mount_options] = fields[7].split(',')
end
end
+ oldie
+ end
- # Grab mount information from /bin/mount
- so = shell_out("mount")
- so.stdout.lines.each do |line|
- case line
- when /^\s*node/
- next
- when /^\s*---/
- next
- when /^\s*\/\w/
- fields = line.split
- filesystem = fields[0]
- fs[filesystem] = Mash.new unless fs.has_key?(filesystem)
- fs[filesystem][:mount] = fields[1]
- fs[filesystem][:fs_type] = fields[2]
- fs[filesystem][:mount_options] = fields[6]
- else
- fields = line.split
- filesystem = fields[0] + ":" + fields[1]
- fs[filesystem] = Mash.new unless fs.has_key?(filesystem)
- fs[filesystem][:mount] = fields[2]
- fs[filesystem][:fs_type] = fields[3]
- fs[filesystem][:mount_options] = fields[7]
- end
+ def collect_old_version(shell_outs)
+ mount_hash = parse_df_or_mount shell_outs[:mount]
+ df_hash = parse_df_or_mount shell_outs[:df_Pk]
+
+ mount_hash.each do |key, hash|
+ df_hash[key].merge!(hash) if df_hash.has_key?(key)
end
- # Set the filesystem data
- filesystem fs
+ mount_hash.merge(df_hash)
+ end
+
+ collect_data(:aix) do
+
+ # Cache the command output
+ shell_outs = Mash.new
+ shell_outs[:mount] = shell_out("mount").stdout
+ shell_outs[:df_Pk] = shell_out("df -Pk").stdout
+
+ filesystem collect_old_version(shell_outs)
end
end