Project

General

Profile

« Previous | Next » 

Revision d4cac085

Added by Michael Moll over 9 years ago

fixes #8993 - handle FreeBSD patch releases better

View differences:

app/services/puppet_fact_parser.rb
elsif os_name[/JUNOS/i]
majorjunos, minorjunos = orel.split("R")
orel = majorjunos + "." + minorjunos
elsif os_name[/FreeBSD/i]
orel.gsub!(/\-RELEASE\-p[0-9]+/, '')
end
major, minor = orel.split(".")
major.to_s.gsub!(/\D/, '') unless is_numeric? major
test/unit/facts_freebsd_patch.json
{
"facts": {
"hostname": "fbsdpatch",
"rubyplatform": "sparc64-freebsd10",
"facterversion": "2.3.0",
"netmask": "255.255.255.192",
"osfamily": "FreeBSD",
"gid": "wheel",
"uptime_days": 16,
"os": {
"name": "FreeBSD",
"family": "FreeBSD",
"release": {
"major": "10",
"minor": "1",
"full": "10.1-RELEASE-p30"
}
},
"kernel": "FreeBSD",
"kernelversion": "10.1",
"virtual": "physical",
"is_virtual": false,
"operatingsystem": "FreeBSD",
"puppetversion": "3.6.2",
"rubyversion": "2.1.5",
"kernelrelease": "10.1-RELEASE-p30",
"timezone": "CET",
"hardwaremodel": "sparc64",
"rubysitedir": "/usr/local/lib/ruby/site_ruby/2.1",
"id": "root",
"macaddress": "00:03:ba:64:d1:14",
"zpool_version": "28",
"ipaddress6": "2001:1234:321:123::2",
"kernelmajversion": "10",
"uptime": "16 days",
"fqdn": "fbsdpatch.example.com",
"path": "/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin",
"processors": {
"count": 2
},
"processorcount": 2,
"processor": "Sun Microsystems UltraSparc-IIIi",
"memorysize": "7.98 GB",
"memoryfree": "2.81 GB",
"swapsize": "4.00 GB",
"swapfree": "4.00 GB",
"swapsize_mb": "4094.69",
"swapfree_mb": "4094.69",
"memorysize_mb": "8170.64",
"memoryfree_mb": "2877.84",
"uptime_seconds": 1453507,
"architecture": "sparc64",
"ipaddress": "192.168.123.19",
"operatingsystemrelease": "10.1-RELEASE-p30",
"hardwareisa": "sparc64",
"domain": "example.com",
"interfaces": "bge0,bge1,bge2,bge3,lo0,lagg0,pflog0",
"macaddress_bge0": "00:03:ba:64:d1:14",
"mtu_bge0": 1500,
"macaddress_bge1": "00:03:ba:64:d1:24",
"mtu_bge1": 1500,
"macaddress_bge2": "00:03:ba:64:d1:34",
"mtu_bge2": 1500,
"macaddress_bge3": "00:03:ba:64:d1:44",
"mtu_bge3": 1500,
"ipaddress_lo0": "127.0.0.1",
"netmask_lo0": "255.0.0.0",
"mtu_lo0": 16384,
"ipaddress_lagg0": "192.168.123.19",
"ipaddress6_lagg0": "2001:1234:321:123::2",
"macaddress_lagg0": "00:03:ba:64:d1:24",
"netmask_lagg0": "255.255.255.192",
"mtu_lagg0": 1500,
"mtu_pflog0": 33160,
"uptime_hours": 403,
"system_uptime": {
"seconds": 1453507,
"hours": 403,
"days": 16,
"uptime": "16 days"
},
"ps": "ps auxwww",
"augeasversion": "1.2.0",
"zfs_version": "5",
"network_lo0": "127.0.0.0",
"network_lagg0": "192.168.123.0",
"operatingsystemmajrelease": "10"
},
"name": "fbsdpatch.example.com"
}
test/unit/facts_freebsd_stable.json
{
"facts": {
"zpool_version": "28",
"uptime_hours": 168,
"os": {
"name": "FreeBSD",
"family": "FreeBSD",
"release": {
"major": "10",
"minor": "1",
"full": "10.1-STABLE"
}
},
"rubyversion": "2.1.5",
"hardwaremodel": "amd64",
"hostname": "fbsdstable",
"osfamily": "FreeBSD",
"kernel": "FreeBSD",
"boardmanufacturer": "Intel Corporation",
"boardproductname": "To be filled by O.E.M.",
"boardserialnumber": "To be filled by O.E.M.",
"bios_vendor": "Intel Corp.",
"bios_version": "S1200BT.86B.02.00.0041.120520121743",
"bios_release_date": "12/05/2012",
"manufacturer": "Intel Corporation",
"productname": "SandyBridge Platform",
"serialnumber": "To be filled by O.E.M.",
"uuid": "805FE30A-D55A-E111-BEA6-001E6751209a",
"type": "Laptop",
"memorysize": "31.71 GB",
"memoryfree": "10.38 GB",
"swapsize": "8.00 GB",
"swapfree": "8.00 GB",
"swapsize_mb": "8192.00",
"swapfree_mb": "8192.00",
"memorysize_mb": "32466.49",
"memoryfree_mb": "10626.66",
"timezone": "CET",
"uptime_days": 7,
"virtual": "physical",
"is_virtual": false,
"architecture": "amd64",
"operatingsystem": "FreeBSD",
"kernelrelease": "10.1-STABLE",
"network_lo0": "127.0.0.0",
"network_lagg0": "192.168.123.0",
"domain": "example.com",
"uptime_seconds": 606076,
"kernelmajversion": "10",
"operatingsystemmajrelease": "10",
"kernelversion": "10.1",
"id": "root",
"interfaces": "em0,em1,lo0,lagg0",
"macaddress_em0": "00:1e:67:51:21:9a",
"mtu_em0": 1500,
"macaddress_em1": "00:1e:67:51:20:9a",
"mtu_em1": 1500,
"ipaddress_lo0": "127.0.0.1",
"netmask_lo0": "255.0.0.0",
"mtu_lo0": 16384,
"ipaddress_lagg0": "192.168.123.11",
"ipaddress6_lagg0": "2001:123:1234:5::11",
"macaddress_lagg0": "00:1e:67:51:20:9a",
"netmask_lagg0": "255.255.255.0",
"mtu_lagg0": 1500,
"ipaddress": "192.168.123.11",
"facterversion": "2.3.0",
"processors": {
"count": 4
},
"rubysitedir": "/usr/local/lib/ruby/site_ruby/2.1",
"path": "/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin",
"puppetversion": "3.6.2",
"processorcount": 4,
"processor": "Intel(R) Xeon(R) CPU E31220L @ 2.20GHz",
"fqdn": "fbsdstable.example.com",
"operatingsystemrelease": "10.1-STABLE",
"system_uptime": {
"seconds": 606076,
"hours": 168,
"days": 7,
"uptime": "7 days"
},
"hardwareisa": "amd64",
"augeasversion": "1.2.0",
"gid": "wheel",
"netmask": "255.255.255.0",
"macaddress": "00:1e:67:51:21:9a",
"rubyplatform": "amd64-freebsd10",
"zfs_version": "5",
"uptime": "7 days",
"ipaddress6": "2001:123:1234:5::11",
"ps": "ps auxwww"
},
"name": "fbsdstable.example.com"
}
test/unit/puppet_fact_parser_test.rb
refute @importer.operatingsystem.description
end
test "should set os.major and minor for from AIX facts" do
test "should set os.major and minor correctly from AIX facts" do
@importer = PuppetFactParser.new(aix_facts)
assert_equal 'AIX', @importer.operatingsystem.family
assert_equal '6100', @importer.operatingsystem.major
assert_equal '0604', @importer.operatingsystem.minor
end
test 'should handle FreeBSD rolling releases correctly' do
@importer = PuppetFactParser.new(freebsd_stable_facts)
assert_equal '10', @importer.operatingsystem.major
assert_equal '1', @importer.operatingsystem.minor
end
test 'should handle FreeBSD patch releases correctly' do
@importer = PuppetFactParser.new(freebsd_patch_facts)
assert_equal '10', @importer.operatingsystem.major
assert_equal '1', @importer.operatingsystem.minor
end
test "#get_interfaces" do
host = FactoryGirl.create(:host, :hostgroup => FactoryGirl.create(:hostgroup))
parser = get_parser(host.facts_hash)
......
def aix_facts
JSON.parse(File.read(File.expand_path(File.dirname(__FILE__) + '/facts_aix.json')))['facts']
end
def freebsd_stable_facts
JSON.parse(File.read(File.expand_path(File.dirname(__FILE__) + '/facts_freebsd_stable.json')))['facts']
end
def freebsd_patch_facts
JSON.parse(File.read(File.expand_path(File.dirname(__FILE__) + '/facts_freebsd_patch.json')))['facts']
end
end

Also available in: Unified diff