Project

General

Profile

« Previous | Next » 

Revision 7e2880b6

Added by Ruediger Mueck over 10 years ago

fixes #1489 - add AIX family and facts importer support

View differences:

app/helpers/operatingsystems_helper.rb
"SLC"
when /FreeBSD/i
"FreeBSD"
when /aix/i
"AIX"
else
return "" if record.family.blank?
record.family
app/models/operatingsystem.rb
'Archlinux' => %r{Archlinux}i,
'Gentoo' => %r{Gentoo}i,
'Solaris' => %r{Solaris}i,
'Freebsd' => %r{FreeBSD}i }
'Freebsd' => %r{FreeBSD}i,
'AIX' => %r{AIX}i }
class Jail < Safemode::Jail
allow :name, :media_url, :major, :minor, :family, :to_s, :repos, :==, :release_name, :kernel, :initrd, :pxe_type, :medium_uri
app/models/operatingsystems/aix.rb
class AIX < Operatingsystem
PXEFILES = {:kernel => "powerpc", :initrd => "initrd"}
# Override the class representation, as this breaks many rails helpers
def class
Operatingsystem
end
def pxe_type
"nim"
end
def pxedir
"boot/$arch/loader"
end
def url_for_boot(file)
pxedir + "/" + PXEFILES[file]
end
def display_family
"AIX"
end
end
app/services/facts_parser.rb
when /sid/i
orel = "99"
end
elsif os_name[/AIX/i]
majoraix, tlaix, spaix, yearaix = orel.split("-")
orel = majoraix + "." + tlaix + spaix
end
major, minor = orel.split(".")
major.to_s.gsub!(/\D/,'') unless is_numeric? major
test/unit/facts_aix.json
{"name":"hostname.domain.com","facts":{"kernel":"AIX","swapfree":"499.00 MB","processorcount":"1","fqdn":"hostname.domain.com","uniqueid":168965206,"operatingsystemrelease":"6100-06-04-1112","ipaddress":"192.168.1.102","hardwaremodel":"powerpc","rubysitedir":"/opt/puppet/pup-puppet/lib/ruby/site_ruby/1.8","ps":"ps -ef","kernelrelease":"6100-06-04-1112","domain":"domain.com","timezone":"EST","uptime_days":-286,"id":"root","uptime_hours":-6841,"processor0":[0,"PowerPC_POWER5"],"hardwareisa":"powerpc","manufacturer":"IBM","osfamily":"AIX","kernelversion":"6100","path":"/usr/bin:/etc:/usr/sbin:/usr/ucb://bin:/usr/bin/X11:/sbin:/opt/freeware/bin:.:/usr/sbin:/opt/VRTSvxfs/sbin:/opt/VRTSob/bin:/opt/VRTSvcs/bin:/opt/VRTS/bin","hostname":"hostname","puppetversion":"2.7.6","uptime":"-286 days","operatingsystem":"AIX","swapsize":"512.00 MB","kernelmajversion":"6100","macaddress":"00:00:00:ff:ee:cc","serialnumber":"SNABC123","facterversion":"1.6.5","uptime_seconds":-24624185,"rubyversion":"1.8.7","productname":"IBM,9131-52A","architecture":"powerpc"}}
test/unit/facts_parser_test.rb
refute @importer.operatingsystem.description
end
test "should set os.major and minor for from AIX facts" do
@importer = Facts::Parser.new(aix_facts)
assert_equal 'AIX', @importer.operatingsystem.family
assert_equal '6100', @importer.operatingsystem.major
assert_equal '0604', @importer.operatingsystem.minor
end
private
def facts
......
def debian_facts
JSON.parse(File.read(File.expand_path(File.dirname(__FILE__) + '/facts_debian.json')))['facts']
end
def aix_facts
JSON.parse(File.read(File.expand_path(File.dirname(__FILE__) + '/facts_aix.json')))['facts']
end
end
test/unit/operatingsystem_test.rb
test "families_as_collection contains correct names and values" do
families = Operatingsystem.families_as_collection
assert_equal ["Arch Linux", "Debian", "FreeBSD", "Gentoo", "Red Hat", "SUSE", "Solaris", "Windows"], families.map(&:name).sort
assert_equal ["Archlinux", "Debian", "Freebsd", "Gentoo", "Redhat", "Solaris", "Suse", "Windows"], families.map(&:value).sort
assert_equal ["AIX", "Arch Linux", "Debian", "FreeBSD", "Gentoo", "Red Hat", "SUSE", "Solaris", "Windows"], families.map(&:name).sort
assert_equal ["AIX", "Archlinux", "Debian", "Freebsd", "Gentoo", "Redhat", "Solaris", "Suse", "Windows"], families.map(&:value).sort
end
end

Also available in: Unified diff