1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# Fact: manufacturer
#
# Purpose: Return the hardware manufacturer information about the hardware.
#
# Resolution:
# On OpenBSD, queries sysctl values, via a util class.
# On SunOS Sparc, uses prtdiag via a util class.
# On Windows, queries the system via a util class.
# Uses the 'util/manufacturer.rb' for fallback parsing.
#
# Caveats:
#
# manufacturer.rb
# Facts related to hardware manufacturer
#
#
require 'facter/util/manufacturer'
if Facter.value(:kernel) == "OpenBSD"
mfg_keys = {
'hw.vendor' => 'manufacturer',
'hw.product' => 'productname',
'hw.serialno' => 'serialnumber'
}
Facter::Manufacturer.sysctl_find_system_info(mfg_keys)
elsif Facter.value(:kernel) == "SunOS" and Facter.value(:hardwareisa) == "sparc"
Facter::Manufacturer.prtdiag_sparc_find_system_info()
elsif Facter.value(:kernel) == "windows"
win32_keys = {
'manufacturer' => ['Manufacturer', 'Bios'],
'serialNumber' => ['Serialnumber', 'Bios'],
'productname' => ['Name', 'ComputerSystemProduct']
}
Facter::Manufacturer.win32_find_system_info(win32_keys)
else
query = {
'[Ss]ystem [Ii]nformation' => [
{ 'Manufacturer:' => 'manufacturer' },
{ 'Product(?: Name)?:' => 'productname' },
{ 'Serial Number:' => 'serialnumber' }
],
'(Chassis Information|system enclosure or chassis)' => [
{ '(?:Chassis )?Type:' => 'type' }
]
}
Facter::Manufacturer.dmi_find_system_info(query)
end
|