facter 2.1.0-universal-darwin → 2.2.0-universal-darwin
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of facter might be problematic. Click here for more details.
- data/COMMITTERS.md +25 -34
- data/CONTRIBUTING.md +27 -5
- data/README.md +32 -0
- data/ext/build_defaults.yaml +1 -1
- data/ext/debian/control +3 -2
- data/ext/osx/file_mapping.yaml +5 -0
- data/ext/redhat/facter.spec.erb +4 -1
- data/lib/facter/Cfkey.rb +2 -2
- data/lib/facter/architecture.rb +2 -2
- data/lib/facter/augeasversion.rb +2 -2
- data/lib/facter/blockdevices.rb +12 -12
- data/lib/facter/dhcp_servers.rb +4 -4
- data/lib/facter/domain.rb +4 -4
- data/lib/facter/ec2.rb +17 -0
- data/lib/facter/ec2/rest.rb +2 -2
- data/lib/facter/facterversion.rb +2 -2
- data/lib/facter/filesystems.rb +10 -3
- data/lib/facter/fqdn.rb +1 -1
- data/lib/facter/gid.rb +16 -0
- data/lib/facter/hardwareisa.rb +3 -3
- data/lib/facter/hardwaremodel.rb +3 -3
- data/lib/facter/hostname.rb +1 -1
- data/lib/facter/id.rb +4 -4
- data/lib/facter/interfaces.rb +3 -0
- data/lib/facter/ipaddress6.rb +9 -9
- data/lib/facter/kernel.rb +2 -2
- data/lib/facter/kernelmajversion.rb +2 -2
- data/lib/facter/kernelrelease.rb +4 -4
- data/lib/facter/kernelversion.rb +3 -3
- data/lib/facter/ldom.rb +11 -0
- data/lib/facter/lsbdistcodename.rb +8 -4
- data/lib/facter/lsbdistdescription.rb +6 -10
- data/lib/facter/lsbdistid.rb +8 -4
- data/lib/facter/lsbdistrelease.rb +8 -4
- data/lib/facter/lsbmajdistrelease.rb +7 -12
- data/lib/facter/lsbminordistrelease.rb +22 -0
- data/lib/facter/lsbrelease.rb +8 -4
- data/lib/facter/macaddress.rb +1 -0
- data/lib/facter/macosx.rb +1 -1
- data/lib/facter/manufacturer.rb +3 -3
- data/lib/facter/memory.rb +8 -8
- data/lib/facter/netmask.rb +2 -1
- data/lib/facter/network.rb +3 -3
- data/lib/facter/operatingsystem.rb +9 -126
- data/lib/facter/operatingsystem/base.rb +61 -0
- data/lib/facter/operatingsystem/cumuluslinux.rb +27 -0
- data/lib/facter/operatingsystem/implementation.rb +30 -0
- data/lib/facter/operatingsystem/linux.rb +467 -0
- data/lib/facter/operatingsystem/sunos.rb +54 -0
- data/lib/facter/operatingsystem/vmkernel.rb +11 -0
- data/lib/facter/operatingsystem/windows.rb +37 -0
- data/lib/facter/operatingsystemmajrelease.rb +14 -33
- data/lib/facter/operatingsystemrelease.rb +14 -235
- data/lib/facter/os.rb +69 -0
- data/lib/facter/osfamily.rb +4 -23
- data/lib/facter/partitions.rb +4 -3
- data/lib/facter/path.rb +2 -2
- data/lib/facter/physicalprocessorcount.rb +10 -74
- data/lib/facter/processor.rb +13 -129
- data/lib/facter/processors.rb +60 -0
- data/lib/facter/processors/os.rb +234 -0
- data/lib/facter/ps.rb +5 -4
- data/lib/facter/puppetversion.rb +1 -1
- data/lib/facter/rackspace.rb +34 -0
- data/lib/facter/rubysitedir.rb +3 -0
- data/lib/facter/rubyversion.rb +2 -2
- data/lib/facter/selinux.rb +57 -2
- data/lib/facter/ssh.rb +1 -0
- data/lib/facter/system_uptime.rb +42 -0
- data/lib/facter/timezone.rb +1 -1
- data/lib/facter/uptime.rb +5 -23
- data/lib/facter/uptime_days.rb +4 -6
- data/lib/facter/uptime_hours.rb +4 -6
- data/lib/facter/uptime_seconds.rb +5 -9
- data/lib/facter/util/formatter.rb +1 -1
- data/lib/facter/util/manufacturer.rb +1 -1
- data/lib/facter/util/partitions.rb +3 -1
- data/lib/facter/util/partitions/linux.rb +1 -1
- data/lib/facter/util/partitions/openbsd.rb +35 -0
- data/lib/facter/util/uptime.rb +4 -3
- data/lib/facter/util/virtual.rb +3 -1
- data/lib/facter/util/xendomains.rb +12 -3
- data/lib/facter/version.rb +1 -1
- data/lib/facter/virtual.rb +24 -23
- data/lib/facter/vlans.rb +1 -1
- data/lib/facter/xendomains.rb +1 -1
- data/lib/facter/zfs_version.rb +6 -2
- data/lib/facter/zones.rb +6 -5
- data/lib/facter/zpool_version.rb +1 -1
- data/spec/fixtures/cpuinfo/amd64dual-grep +2 -0
- data/spec/fixtures/cpuinfo/amd64twentyfour-grep +24 -0
- data/spec/fixtures/cpuinfo/two_multicore-grep +4 -0
- data/spec/fixtures/cpuinfo/two_singlecore-grep +2 -0
- data/spec/fixtures/unit/processors/os/darwin-system-profiler +287 -0
- data/spec/fixtures/unit/zfs_version/zfs_new +61 -0
- data/spec/fixtures/unit/zfs_version/zfs_old +43 -0
- data/spec/fixtures/unit/zfs_version/zfsonlinux_0.6.1 +13 -0
- data/spec/fixtures/unit/zpool_version/zfsonlinux_0.6.1 +48 -0
- data/spec/unit/ec2/rest_spec.rb +6 -6
- data/spec/unit/gid_spec.rb +22 -0
- data/spec/unit/hardwaremodel_spec.rb +2 -0
- data/spec/unit/lsbdistcodename_spec.rb +22 -17
- data/spec/unit/lsbdistdescription_spec.rb +22 -17
- data/spec/unit/lsbdistid_spec.rb +23 -18
- data/spec/unit/lsbdistrelease_spec.rb +22 -17
- data/spec/unit/lsbmajdistrelease_spec.rb +23 -6
- data/spec/unit/lsbminordistrelease_spec.rb +31 -0
- data/spec/unit/lsbrelease_spec.rb +22 -17
- data/spec/unit/macaddress_spec.rb +3 -0
- data/spec/unit/operatingsystem/base_spec.rb +76 -0
- data/spec/unit/operatingsystem/cumuluslinux_spec.rb +40 -0
- data/spec/unit/operatingsystem/implementation_spec.rb +49 -0
- data/spec/unit/operatingsystem/linux_spec.rb +538 -0
- data/spec/unit/operatingsystem/sunos_spec.rb +144 -0
- data/spec/unit/operatingsystem/vmkernel_spec.rb +13 -0
- data/spec/unit/operatingsystem/windows_spec.rb +68 -0
- data/spec/unit/operatingsystem_spec.rb +10 -153
- data/spec/unit/operatingsystemmajrelease_spec.rb +14 -31
- data/spec/unit/operatingsystemrelease_spec.rb +13 -229
- data/spec/unit/os_spec.rb +131 -0
- data/spec/unit/osfamily_spec.rb +9 -54
- data/spec/unit/partitions_spec.rb +41 -3
- data/spec/unit/physicalprocessorcount_spec.rb +6 -78
- data/spec/unit/processor_spec.rb +18 -381
- data/spec/unit/processors/os_spec.rb +446 -0
- data/spec/unit/processors_spec.rb +203 -0
- data/spec/unit/rackspace_spec.rb +40 -0
- data/spec/unit/system_uptime_spec.rb +80 -0
- data/spec/unit/util/formatter_spec.rb +5 -0
- data/spec/unit/util/macaddress_spec.rb +2 -0
- data/spec/unit/util/processor_spec.rb +120 -0
- data/spec/unit/util/uptime_spec.rb +3 -4
- data/spec/unit/util/virtual_spec.rb +8 -0
- data/spec/unit/util/xendomains_spec.rb +54 -9
- data/spec/unit/virtual_spec.rb +8 -1
- data/spec/unit/zfs_version_spec.rb +20 -8
- data/spec/unit/zpool_version_spec.rb +5 -0
- metadata +654 -589
- checksums.yaml +0 -7
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'facter/util/file_read'
|
2
|
+
require 'facter/operatingsystem/base'
|
3
|
+
|
4
|
+
module Facter
|
5
|
+
module Operatingsystem
|
6
|
+
class SunOS < Base
|
7
|
+
def get_operatingsystem
|
8
|
+
output = Facter::Core::Execution.exec('uname -v')
|
9
|
+
if output =~ /^joyent_/
|
10
|
+
"SmartOS"
|
11
|
+
elsif output =~ /^oi_/
|
12
|
+
"OpenIndiana"
|
13
|
+
elsif output =~ /^omnios-/
|
14
|
+
"OmniOS"
|
15
|
+
elsif FileTest.exists?("/etc/debian_version")
|
16
|
+
"Nexenta"
|
17
|
+
else
|
18
|
+
"Solaris"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def get_osfamily
|
23
|
+
"Solaris"
|
24
|
+
end
|
25
|
+
|
26
|
+
def get_operatingsystemrelease
|
27
|
+
if release = Facter::Util::FileRead.read('/etc/release')
|
28
|
+
line = release.split("\n").first
|
29
|
+
|
30
|
+
# Solaris 10: Solaris 10 10/09 s10x_u8wos_08a X86
|
31
|
+
# Solaris 11 (old naming scheme): Oracle Solaris 11 11/11 X86
|
32
|
+
# Solaris 11 (new naming scheme): Oracle Solaris 11.1 SPARC
|
33
|
+
if match = /\s+s(\d+)[sx]?(_u\d+)?.*(?:SPARC|X86)/.match(line)
|
34
|
+
match.captures.join('')
|
35
|
+
elsif match = /Solaris ([0-9\.]+(?:\s*[0-9\.\/]+))\s*(?:SPARC|X86)/.match(line)
|
36
|
+
match.captures[0]
|
37
|
+
else
|
38
|
+
Facter[:kernelrelease].value
|
39
|
+
end
|
40
|
+
else
|
41
|
+
Facter[:kernelrelease].value
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def get_operatingsystemmajrelease
|
46
|
+
if get_operatingsystem == "Solaris"
|
47
|
+
if match = get_operatingsystemrelease.match(/^(\d+)/)
|
48
|
+
match.captures[0]
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'facter/operatingsystem/base'
|
2
|
+
|
3
|
+
module Facter
|
4
|
+
module Operatingsystem
|
5
|
+
class Windows < Base
|
6
|
+
def get_operatingsystemrelease
|
7
|
+
require 'facter/util/wmi'
|
8
|
+
result = nil
|
9
|
+
Facter::Util::WMI.execquery("SELECT version, producttype FROM Win32_OperatingSystem").each do |os|
|
10
|
+
result =
|
11
|
+
case os.version
|
12
|
+
when /^6\.2/
|
13
|
+
os.producttype == 1 ? "8" : "2012"
|
14
|
+
when /^6\.1/
|
15
|
+
os.producttype == 1 ? "7" : "2008 R2"
|
16
|
+
when /^6\.0/
|
17
|
+
os.producttype == 1 ? "Vista" : "2008"
|
18
|
+
when /^5\.2/
|
19
|
+
if os.producttype == 1
|
20
|
+
"XP"
|
21
|
+
else
|
22
|
+
begin
|
23
|
+
os.othertypedescription == "R2" ? "2003 R2" : "2003"
|
24
|
+
rescue NoMethodError
|
25
|
+
"2003"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
else
|
29
|
+
Facter[:kernelrelease].value
|
30
|
+
end
|
31
|
+
break
|
32
|
+
end
|
33
|
+
result
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -3,45 +3,26 @@
|
|
3
3
|
# Purpose: Returns the major release of the operating system.
|
4
4
|
#
|
5
5
|
# Resolution:
|
6
|
-
#
|
6
|
+
# Uses the releasemajor key of the os structured fact, which itself
|
7
|
+
# splits down its operatingsystemrelease key at decimal point for
|
7
8
|
# osfamily RedHat derivatives and Debian.
|
8
|
-
# Uses operatingsystemrelease to the first non decimal
|
9
|
-
# operatingsystem Solaris
|
9
|
+
# Uses operatingsystemrelease key to the first non decimal
|
10
|
+
# character for operatingsystem Solaris.
|
10
11
|
#
|
11
|
-
#
|
12
|
-
#
|
12
|
+
# This should be the same as lsbmajdistrelease, but on minimal systems there
|
13
|
+
# are too many dependencies to use LSB
|
13
14
|
#
|
14
15
|
# List of operatingsystems at time of writing:
|
15
|
-
#"Alpine" "Amazon" "Archlinux" "Ascendos" "Bluewhite64" "CentOS" "CloudLinux"
|
16
|
-
#"Debian" "Fedora" "Gentoo" "Mandrake" "Mandriva" "MeeGo" "OEL" "OpenSuSE"
|
17
|
-
#"OracleLinux" "OVS" "PSBM" "RedHat" "Scientific" "Slackware" "Slamd64" "SLC"
|
18
|
-
#"SLED" "SLES" "SuSE" "Ubuntu" "VMWareESX"
|
16
|
+
# "Alpine" "Amazon" "Archlinux" "Ascendos" "Bluewhite64" "CentOS" "CloudLinux"
|
17
|
+
# "Debian" "Fedora" "Gentoo" "Mandrake" "Mandriva" "MeeGo" "OEL" "OpenSuSE"
|
18
|
+
# "OracleLinux" "OVS" "PSBM" "RedHat" "Scientific" "Slackware" "Slamd64" "SLC"
|
19
|
+
# "SLED" "SLES" "SuSE" "Ubuntu" "VMWareESX"
|
20
|
+
#
|
19
21
|
|
20
22
|
Facter.add(:operatingsystemmajrelease) do
|
21
|
-
confine
|
22
|
-
|
23
|
-
:CentOS,
|
24
|
-
:CloudLinux,
|
25
|
-
:Debian,
|
26
|
-
:Fedora,
|
27
|
-
:OEL,
|
28
|
-
:OracleLinux,
|
29
|
-
:OVS,
|
30
|
-
:RedHat,
|
31
|
-
:Scientific,
|
32
|
-
:SLC,
|
33
|
-
:CumulusLinux
|
34
|
-
]
|
35
|
-
setcode do
|
36
|
-
Facter.value('operatingsystemrelease').split('.').first
|
23
|
+
confine do
|
24
|
+
!Facter.value("os")["release"]["major"].nil?
|
37
25
|
end
|
38
|
-
end
|
39
26
|
|
40
|
-
Facter.
|
41
|
-
confine :operatingsystem => :solaris
|
42
|
-
setcode do
|
43
|
-
if match = Facter.value(:operatingsystemrelease).match(/^(\d+)/)
|
44
|
-
match.captures[0]
|
45
|
-
end
|
46
|
-
end
|
27
|
+
setcode { Facter.value("os")["release"]["major"].to_s }
|
47
28
|
end
|
@@ -3,248 +3,27 @@
|
|
3
3
|
# Purpose: Returns the release of the operating system.
|
4
4
|
#
|
5
5
|
# Resolution:
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
# On
|
6
|
+
# Uses the release key of the os structured hash, which itself
|
7
|
+
# operates on the following conditions:
|
8
|
+
#
|
9
|
+
# On RedHat derivatives, returns their `/etc/<variant>-release` file.
|
10
|
+
# On Debian, returns `/etc/debian_version`.
|
11
|
+
# On Ubuntu, parses `/etc/lsb-release` for the release version.
|
12
|
+
# On Suse, derivatives, parses `/etc/SuSE-release` for a selection of version
|
10
13
|
# information.
|
11
|
-
# On Slackware, parses
|
12
|
-
# On Amazon Linux, returns the
|
13
|
-
# On Mageia, parses
|
14
|
+
# On Slackware, parses `/etc/slackware-version`.
|
15
|
+
# On Amazon Linux, returns the `lsbdistrelease` value.
|
16
|
+
# On Mageia, parses `/etc/mageia-release` for the release version.
|
14
17
|
#
|
15
|
-
# On all remaining systems, returns the
|
18
|
+
# On all remaining systems, returns the kernelrelease fact's value.
|
16
19
|
#
|
17
20
|
# Caveats:
|
18
21
|
#
|
19
22
|
|
20
|
-
require 'facter/util/operatingsystem'
|
21
|
-
require 'facter/util/file_read'
|
22
|
-
|
23
|
-
Facter.add(:operatingsystemrelease) do
|
24
|
-
confine :operatingsystem => %w{CentOS Fedora oel ovs OracleLinux RedHat MeeGo Scientific SLC Ascendos CloudLinux PSBM}
|
25
|
-
setcode do
|
26
|
-
case Facter.value(:operatingsystem)
|
27
|
-
when "CentOS", "RedHat", "Scientific", "SLC", "Ascendos", "CloudLinux", "PSBM", "XenServer"
|
28
|
-
releasefile = "/etc/redhat-release"
|
29
|
-
when "Fedora"
|
30
|
-
releasefile = "/etc/fedora-release"
|
31
|
-
when "MeeGo"
|
32
|
-
releasefile = "/etc/meego-release"
|
33
|
-
when "OracleLinux"
|
34
|
-
releasefile = "/etc/oracle-release"
|
35
|
-
when "OEL", "oel"
|
36
|
-
releasefile = "/etc/enterprise-release"
|
37
|
-
when "OVS", "ovs"
|
38
|
-
releasefile = "/etc/ovs-release"
|
39
|
-
end
|
40
|
-
|
41
|
-
if release = Facter::Util::FileRead.read(releasefile)
|
42
|
-
line = release.split("\n").first.chomp
|
43
|
-
if match = /\(Rawhide\)$/.match(line)
|
44
|
-
"Rawhide"
|
45
|
-
elsif match = /release (\d[\d.]*)/.match(line)
|
46
|
-
match[1]
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
Facter.add(:operatingsystemrelease) do
|
53
|
-
confine :operatingsystem => %w{Debian}
|
54
|
-
setcode do
|
55
|
-
if release = Facter::Util::FileRead.read('/etc/debian_version')
|
56
|
-
release.sub!(/\s*$/, '')
|
57
|
-
release
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
Facter.add(:operatingsystemrelease) do
|
63
|
-
confine :operatingsystem => %w{Ubuntu}
|
64
|
-
setcode do
|
65
|
-
if release = Facter::Util::FileRead.read('/etc/lsb-release')
|
66
|
-
if match = release.match(/DISTRIB_RELEASE=((\d+.\d+)(\.(\d+))?)/)
|
67
|
-
# Return only the major and minor version numbers. This behavior must
|
68
|
-
# be preserved for compatibility reasons.
|
69
|
-
match[2]
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
Facter.add(:operatingsystemrelease) do
|
76
|
-
confine :operatingsystem => 'LinuxMint'
|
77
|
-
setcode do
|
78
|
-
if release = Facter::Util::FileRead.read('/etc/linuxmint/info')
|
79
|
-
if match = release.match(/RELEASE\=(\d+)/)
|
80
|
-
match[1]
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
Facter.add(:operatingsystemrelease) do
|
87
|
-
confine :operatingsystem => 'CumulusLinux'
|
88
|
-
setcode do
|
89
|
-
Facter::Util::Operatingsystem.os_release['VERSION_ID']
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
Facter.add(:operatingsystemrelease) do
|
94
|
-
confine :operatingsystem => %w{SLES SLED OpenSuSE}
|
95
|
-
setcode do
|
96
|
-
if release = Facter::Util::FileRead.read('/etc/SuSE-release')
|
97
|
-
if match = /^VERSION\s*=\s*(\d+)/.match(release)
|
98
|
-
releasemajor = match[1]
|
99
|
-
if match = /^PATCHLEVEL\s*=\s*(\d+)/.match(release)
|
100
|
-
releaseminor = match[1]
|
101
|
-
elsif match = /^VERSION\s=.*.(\d+)/.match(release)
|
102
|
-
releaseminor = match[1]
|
103
|
-
else
|
104
|
-
releaseminor = "0"
|
105
|
-
end
|
106
|
-
releasemajor + "." + releaseminor
|
107
|
-
else
|
108
|
-
"unknown"
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
Facter.add(:operatingsystemrelease) do
|
115
|
-
confine :operatingsystem => %w{OpenWrt}
|
116
|
-
setcode do
|
117
|
-
if release = Facter::Util::FileRead.read('/etc/openwrt_version')
|
118
|
-
if match = /^(\d+\.\d+.*)/.match(release)
|
119
|
-
match[1]
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
Facter.add(:operatingsystemrelease) do
|
126
|
-
confine :operatingsystem => %w{Slackware}
|
127
|
-
setcode do
|
128
|
-
if release = Facter::Util::FileRead.read('/etc/slackware-version')
|
129
|
-
if match = /Slackware ([0-9.]+)/.match(release)
|
130
|
-
match[1]
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
Facter.add(:operatingsystemrelease) do
|
137
|
-
confine :operatingsystem => %w{Mageia}
|
138
|
-
setcode do
|
139
|
-
if release = Facter::Util::FileRead.read('/etc/mageia-release')
|
140
|
-
if match = /Mageia release ([0-9.]+)/.match(release)
|
141
|
-
match[1]
|
142
|
-
end
|
143
|
-
end
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
Facter.add(:operatingsystemrelease) do
|
148
|
-
confine :operatingsystem => %w{Bluewhite64}
|
149
|
-
setcode do
|
150
|
-
if release = Facter::Util::FileRead.read('/etc/bluewhite64-version')
|
151
|
-
if match = /^\s*\w+\s+(\d+)\.(\d+)/.match(release)
|
152
|
-
match[1] + "." + match[2]
|
153
|
-
else
|
154
|
-
"unknown"
|
155
|
-
end
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
|
-
Facter.add(:operatingsystemrelease) do
|
161
|
-
confine :operatingsystem => %w{VMwareESX}
|
162
|
-
setcode do
|
163
|
-
release = Facter::Core::Execution.exec('vmware -v')
|
164
|
-
if match = /VMware ESX .*?(\d.*)/.match(release)
|
165
|
-
match[1]
|
166
|
-
end
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
Facter.add(:operatingsystemrelease) do
|
171
|
-
confine :operatingsystem => %w{Slamd64}
|
172
|
-
setcode do
|
173
|
-
if release = Facter::Util::FileRead.read('/etc/slamd64-version')
|
174
|
-
if match = /^\s*\w+\s+(\d+)\.(\d+)/.match(release)
|
175
|
-
match[1] + "." + match[2]
|
176
|
-
else
|
177
|
-
"unknown"
|
178
|
-
end
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
182
|
-
|
183
|
-
Facter.add(:operatingsystemrelease) do
|
184
|
-
confine :operatingsystem => :Alpine
|
185
|
-
setcode do
|
186
|
-
if release = Facter::Util::FileRead.read('/etc/alpine-release')
|
187
|
-
release.sub!(/\s*$/, '')
|
188
|
-
release
|
189
|
-
end
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
|
-
Facter.add(:operatingsystemrelease) do
|
194
|
-
confine :operatingsystem => %W{Amazon}
|
195
|
-
setcode do Facter[:lsbdistrelease].value end
|
196
|
-
end
|
197
|
-
|
198
|
-
Facter.add(:operatingsystemrelease) do
|
199
|
-
confine :osfamily => :solaris
|
200
|
-
setcode do
|
201
|
-
if release = Facter::Util::FileRead.read('/etc/release')
|
202
|
-
line = release.split("\n").first.chomp
|
203
|
-
# Solaris 10: Solaris 10 10/09 s10x_u8wos_08a X86
|
204
|
-
# Solaris 11 (old naming scheme): Oracle Solaris 11 11/11 X86
|
205
|
-
# Solaris 11 (new naming scheme): Oracle Solaris 11.1 SPARC
|
206
|
-
if match = /\s+s(\d+)[sx]?(_u\d+)?.*(?:SPARC|X86)/.match(line)
|
207
|
-
match.captures.join('')
|
208
|
-
elsif match = /Solaris ([0-9\.]+(?:\s*[0-9\.\/]+))\s*(?:SPARC|X86)/.match(line)
|
209
|
-
match.captures[0]
|
210
|
-
end
|
211
|
-
end
|
212
|
-
end
|
213
|
-
end
|
214
|
-
|
215
23
|
Facter.add(:operatingsystemrelease) do
|
216
|
-
confine
|
217
|
-
|
218
|
-
require 'facter/util/wmi'
|
219
|
-
result = nil
|
220
|
-
Facter::Util::WMI.execquery("SELECT version, producttype FROM Win32_OperatingSystem").each do |os|
|
221
|
-
result =
|
222
|
-
case os.version
|
223
|
-
when /^6\.2/
|
224
|
-
os.producttype == 1 ? "8" : "2012"
|
225
|
-
when /^6\.1/
|
226
|
-
os.producttype == 1 ? "7" : "2008 R2"
|
227
|
-
when /^6\.0/
|
228
|
-
os.producttype == 1 ? "Vista" : "2008"
|
229
|
-
when /^5\.2/
|
230
|
-
if os.producttype == 1
|
231
|
-
"XP"
|
232
|
-
else
|
233
|
-
begin
|
234
|
-
os.othertypedescription == "R2" ? "2003 R2" : "2003"
|
235
|
-
rescue NoMethodError
|
236
|
-
"2003"
|
237
|
-
end
|
238
|
-
end
|
239
|
-
else
|
240
|
-
Facter[:kernelrelease].value
|
241
|
-
end
|
242
|
-
break
|
243
|
-
end
|
244
|
-
result
|
24
|
+
confine do
|
25
|
+
!Facter.value("os")["release"]["full"].nil?
|
245
26
|
end
|
246
|
-
end
|
247
27
|
|
248
|
-
Facter.
|
249
|
-
setcode do Facter[:kernelrelease].value end
|
28
|
+
setcode { Facter.value("os")["release"]["full"].to_s }
|
250
29
|
end
|
data/lib/facter/os.rb
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
# Fact: os
|
2
|
+
#
|
3
|
+
# Purpose:
|
4
|
+
# Return various facts related to the machine's operating system.
|
5
|
+
#
|
6
|
+
# Resolution:
|
7
|
+
# For operatingsystem, if the kernel is a Linux kernel, check for the
|
8
|
+
# existence of a selection of files in `/etc` to find the specific flavor.
|
9
|
+
# On SunOS based kernels, attempt to determine the flavor, otherwise return Solaris.
|
10
|
+
# On systems other than Linux, use the kernel value.
|
11
|
+
#
|
12
|
+
# For operatingsystemrelease, on RedHat derivatives, we return their `/etc/<varient>-release` file.
|
13
|
+
# On Debian, returns `/etc/debian_version`.
|
14
|
+
# On Ubuntu, parses `/etc/lsb-release` for the release version
|
15
|
+
# On Suse and derivatives, parses `/etc/SuSE-release` for a selection of version information.
|
16
|
+
# On Slackware, parses `/etc/slackware-version`.
|
17
|
+
# On Amazon Linux, returns the lsbdistrelease fact's value.
|
18
|
+
# On Mageia, parses `/etc/mageia-release` for the release version.
|
19
|
+
# On all remaining systems, returns the kernelrelease fact's value.
|
20
|
+
#
|
21
|
+
# For the lsb facts, uses the `lsb_release` system command.
|
22
|
+
#
|
23
|
+
# Caveats:
|
24
|
+
# Lsb facts only work on Linux (and the kfreebsd derivative) systems.
|
25
|
+
# Requires the `lsb_release` program, which may not be installed by default.
|
26
|
+
# It is only as accurate as the ourput of lsb_release.
|
27
|
+
#
|
28
|
+
|
29
|
+
require 'facter/operatingsystem/implementation'
|
30
|
+
|
31
|
+
Facter.add(:os, :type => :aggregate) do
|
32
|
+
def os
|
33
|
+
@os ||= Facter::Operatingsystem.implementation
|
34
|
+
end
|
35
|
+
|
36
|
+
chunk(:name) do
|
37
|
+
os_hash = {}
|
38
|
+
if (operatingsystem = os.get_operatingsystem)
|
39
|
+
os_hash["name"] = operatingsystem
|
40
|
+
os_hash
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
chunk(:family) do
|
45
|
+
os_hash = {}
|
46
|
+
if (osfamily = os.get_osfamily)
|
47
|
+
os_hash["family"] = osfamily
|
48
|
+
os_hash
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
chunk(:release) do
|
53
|
+
os_hash = {}
|
54
|
+
if (releasedata = os.get_operatingsystemrelease_hash)
|
55
|
+
os_hash["release"] = releasedata
|
56
|
+
os_hash unless os_hash["release"].empty?
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
chunk(:lsb) do
|
61
|
+
os_hash = {}
|
62
|
+
if os.has_lsb?
|
63
|
+
if (lsbdata = os.get_lsb_facts_hash)
|
64
|
+
os_hash["lsb"] = lsbdata
|
65
|
+
os_hash unless os_hash["lsb"].empty?
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|