-
Notifications
You must be signed in to change notification settings - Fork 449
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
collect fs info by device or mountpoint on AIX AIX WPARs have no macaddresses provide proper os_version on AIX provide WPAR info for an LPAR node (AIX) collect AIX hostnames with dashes properly style and credit for AIX plugns PR comment feedback re: license accommodate WPARs in AIX fs plugin avoid phantom CPUs on WPARs in AIX CPU plugin avoid macaddress on WPARs in AIX networking plugin & test hostname right test AIX platform_version right detect WPARs on LPARs (AIX) refactor AIX filesystem AIX fs plugin: mount options as array license update AIX plugins change AIX test hostnames provide "wpars" as a child of virtualization on AIX reduse code resuse in AIX virt plugin
- Loading branch information
Isa Farnik
committed
Dec 10, 2015
1 parent
cc6fa24
commit 2434cb9
Showing
20 changed files
with
824 additions
and
191 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,8 @@ | ||
# | ||
# Author:: Joshua Timberman <[email protected]> | ||
# Author:: Prabhu Das (<[email protected]>) | ||
# Copyright:: Copyright (c) 2013, Opscode, Inc. | ||
# Author:: Isa Farnik (<[email protected]>) | ||
# Copyright:: Copyright (c) 2013-2015 Chef Software, Inc. | ||
# License:: Apache License, Version 2.0 | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
|
@@ -22,36 +23,41 @@ | |
|
||
collect_data(:aix) do | ||
cpu Mash.new | ||
|
||
cpu[:total] = shell_out("pmcycles -m").stdout.lines.length | ||
# At least one CPU will be available, but we'll wait to increment this later. | ||
cpu[:available] = 0 | ||
|
||
cpudevs = shell_out("lsdev -Cc processor").stdout.lines | ||
#from http://www-01.ibm.com/software/passportadvantage/pvu_terminology_for_customers.html | ||
#on AIX number of cores and processors are considered same | ||
cpu[:real] = cpu[:cores] = cpudevs.length | ||
cpudevs.each.with_index do |c,i| | ||
name, status, location = c.split | ||
index = i.to_s | ||
cpu[index] = Mash.new | ||
cpu[index][:status] = status | ||
cpu[index][:location] = location | ||
if status =~ /Available/ | ||
cpu[:available] += 1 | ||
lsattr = shell_out("lsattr -El #{name}").stdout.lines | ||
lsattr.each do |attribute| | ||
attrib, value = attribute.split | ||
if attrib == "type" | ||
cpu[index][:model_name] = value | ||
elsif attrib == "frequency" | ||
cpu[index][:mhz] = value.to_i / (1000 * 1000) #convert from hz to MHz | ||
else | ||
cpu[index][attrib] = value | ||
# The below is only relevent on an LPAR | ||
if shell_out('uname -W').stdout.strip == "0" | ||
|
||
# At least one CPU will be available, but we'll wait to increment this later. | ||
cpu[:available] = 0 | ||
|
||
cpudevs = shell_out("lsdev -Cc processor").stdout.lines | ||
#from http://www-01.ibm.com/software/passportadvantage/pvu_terminology_for_customers.html | ||
#on AIX number of cores and processors are considered same | ||
cpu[:real] = cpu[:cores] = cpudevs.length | ||
cpudevs.each.with_index do |c,i| | ||
name, status, location = c.split | ||
index = i.to_s | ||
cpu[index] = Mash.new | ||
cpu[index][:status] = status | ||
cpu[index][:location] = location | ||
if status =~ /Available/ | ||
cpu[:available] += 1 | ||
lsattr = shell_out("lsattr -El #{name}").stdout.lines | ||
lsattr.each do |attribute| | ||
attrib, value = attribute.split | ||
if attrib == "type" | ||
cpu[index][:model_name] = value | ||
elsif attrib == "frequency" | ||
cpu[index][:mhz] = value.to_i / (1000 * 1000) #convert from hz to MHz | ||
else | ||
cpu[index][attrib] = value | ||
end | ||
end | ||
end | ||
# IBM is the only maker of CPUs for AIX systems. | ||
cpu[index][:vendor_id] = "IBM" | ||
# IBM is the only maker of CPUs for AIX systems. | ||
cpu[index][:vendor_id] = "IBM" | ||
end | ||
end | ||
end | ||
end | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,8 @@ | ||
# | ||
# Author:: Deepali Jagtap (<[email protected]>) | ||
# Author:: Prabhu Das (<[email protected]>) | ||
# Copyright:: Copyright (c) 2013 Opscode, Inc. | ||
# Author:: Isa Farnik (<[email protected]>) | ||
# 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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,7 @@ | ||
# | ||
# Author:: Joshua Timberman <[email protected]> | ||
# Copyright:: Copyright (c) 2013 Opscode, Inc. | ||
# Author:: Isa Farnik (<[email protected]>) | ||
# Copyright:: Copyright (c) 2013-2015 Chef Software, Inc. | ||
# License:: Apache License, Version 2.0 | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,7 @@ | ||
# | ||
# Author:: Joshua Timberman <[email protected]> | ||
# Copyright:: Copyright (c) 2013, Opscode, Inc. | ||
# Author:: Isa Farnik (<[email protected]>) | ||
# Copyright:: Copyright (c) 2013-2015 Chef Software, Inc. | ||
# License:: Apache License, Version 2.0 | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
|
@@ -27,7 +28,7 @@ | |
total_in_mb, u, free_in_mb = meminfo.split | ||
memory[:total] = "#{total_in_mb.to_i * 1024}kB" | ||
memory[:free] = "#{free_in_mb.to_i * 1024}kB" | ||
|
||
swapinfo = shell_out("swap -s").stdout.split #returns swap info in 4K blocks | ||
memory[:swap]['total'] = "#{(swapinfo[2].to_i) * 4}kB" | ||
memory[:swap]['free'] = "#{(swapinfo[10].to_i) * 4}kB" | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,7 +2,7 @@ | |
# Author:: Kaustubh Deorukhkar (<[email protected]>) | ||
# Author:: Prabhu Das (<[email protected]>) | ||
# Author:: Isa Farnik (<[email protected]>) | ||
# Copyright:: Copyright (c) 2015 Chef, Inc. | ||
# 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,7 +21,7 @@ | |
Ohai.plugin(:Network) do | ||
require 'ipaddr' | ||
|
||
provides "network", "counters/network" | ||
provides "network", "counters/network", "macaddress" | ||
|
||
# Helpers | ||
def hex_to_dec_netmask(netmask) | ||
|
@@ -115,7 +115,10 @@ def hex_to_dec_netmask(netmask) | |
e_so = shell_out("entstat -d #{interface} | grep \"Hardware Address\"") | ||
iface[interface][:addresses] = Mash.new unless iface[interface][:addresses] | ||
e_so.stdout.lines.each do |line| | ||
iface[interface][:addresses][$1.upcase] = { "family" => "lladdr" } if line =~ /Hardware Address: (\S+)/ | ||
if line =~ /Hardware Address: (\S+)/ | ||
iface[interface][:addresses][$1.upcase] = { "family" => "lladdr" } | ||
macaddress $1.upcase unless shell_out("uname -W").stdout.to_i > 0 | ||
end | ||
end | ||
end #ifconfig stdout | ||
|
||
|
@@ -145,7 +148,6 @@ def hex_to_dec_netmask(netmask) | |
count += 1 | ||
end | ||
end | ||
|
||
network["interfaces"] = iface | ||
end | ||
end | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
# | ||
# Author:: Adam Jacob (<[email protected]>) | ||
# Author:: Isa Farnik (<[email protected]>) | ||
# Copyright:: Copyright (c) 2013-2015 Chef Software, Inc. | ||
# 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. | ||
# | ||
|
||
require 'ohai/mixin/os' | ||
|
||
Ohai.plugin(:OS) do | ||
provides "os", "os_version" | ||
depends 'kernel' | ||
|
||
collect_data(:aix) do | ||
os collect_os | ||
os_version kernel[:version] | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,7 @@ | ||
# | ||
# Author:: Joshua Timberman <[email protected]> | ||
# Copyright:: Copyright (c) 2013, Opscode, Inc. | ||
# Author:: Isa Farnik (<[email protected]>) | ||
# Copyright:: Copyright (c) 2013-2015 Chef Software, Inc. | ||
# License:: Apache License, Version 2.0 | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,7 @@ | ||
# | ||
# Author:: Kurt Yoder (<[email protected]>) | ||
# Copyright:: Copyright (c) 2013 Opscode, Inc. | ||
# Author:: Isa Farnik (<[email protected]>) | ||
# Copyright:: Copyright (c) 2013-2015 Chef Software, Inc. | ||
# License:: Apache License, Version 2.0 | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
|
@@ -33,4 +34,4 @@ | |
end | ||
end | ||
end | ||
end | ||
end |
Oops, something went wrong.