Skip to content

Commit 3bda38c

Browse files
committed
(FACT-3163) Add support for OpenBSD
Most inspiration taken from FreeBSD, rest from other OS, and some own creations. Not all core facts supported, but makes puppet facts works well, as well as puppet agent --test Developed/Tested on OpenBSD 7.2, AMD64, Puppet 7.20.0, Ruby 3.1.2 also disable RuboCop Metrics/PerceivedComplexity and Metrics/CyclomaticComplexity as suggested by @joshcooper Additionally: Case insensitive OS detection ran into trouble when facter installed via puppetserver gem install, there the OS returned seems to be OpenBSD instead of all lowercase.
1 parent d1ce081 commit 3bda38c

File tree

130 files changed

+3370
-22
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

130 files changed

+3370
-22
lines changed

.rubocop.yml

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -55,27 +55,10 @@ Metrics/AbcSize:
5555
Enabled: false
5656

5757
Metrics/PerceivedComplexity:
58-
Exclude:
59-
- 'lib/facter/custom_facts/util/values.rb'
60-
- 'lib/facter/custom_facts/util/confine.rb'
61-
- 'lib/facter/custom_facts/core/execution/windows.rb'
62-
- 'lib/facter/custom_facts/core/execution/posix.rb'
63-
- 'install.rb'
64-
- 'lib/facter/resolvers/aix/ffi/ffi_helper.rb'
58+
Enabled: false
6559

6660
Metrics/CyclomaticComplexity:
67-
Exclude:
68-
- 'lib/facter/resolvers/windows/product_release.rb'
69-
- 'lib/facter/custom_facts/util/values.rb'
70-
- 'lib/facter/custom_facts/util/confine.rb'
71-
- 'lib/facter/custom_facts/core/execution/windows.rb'
72-
- 'lib/facter/custom_facts/core/execution/posix.rb'
73-
- 'lib/facter/facts/linux/cloud/provider.rb'
74-
- 'lib/facter/facts/windows/cloud/provider.rb'
75-
- 'lib/facter/framework/detector/os_detector.rb'
76-
- 'install.rb'
77-
- 'scripts/generate_changelog.rb'
78-
- 'lib/facter/resolvers/aix/ffi/ffi_helper.rb'
61+
Enabled: false
7962

8063
Metrics/ClassLength:
8164
Enabled: false

lib/facter/config.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,9 @@ module Config
4444
]
4545
},
4646
{
47-
'Bsd' => [
48-
'Freebsd'
47+
'Bsd' => %w[
48+
Freebsd
49+
Openbsd
4950
]
5051
},
5152
'Solaris',
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# frozen_string_literal: true
2+
3+
module Facts
4+
module Openbsd
5+
module Augeas
6+
class Version
7+
FACT_NAME = 'augeas.version'
8+
ALIASES = 'augeasversion'
9+
10+
def call_the_resolver
11+
fact_value = Facter::Resolvers::Augeas.resolve(:augeas_version)
12+
13+
[Facter::ResolvedFact.new(FACT_NAME, fact_value),
14+
Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
15+
end
16+
end
17+
end
18+
end
19+
end
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# frozen_string_literal: true
2+
3+
module Facts
4+
module Openbsd
5+
module Dmi
6+
module Bios
7+
class Vendor
8+
FACT_NAME = 'dmi.bios.vendor'
9+
ALIASES = 'bios_vendor'
10+
11+
def call_the_resolver
12+
fact_value = Facter::Resolvers::Openbsd::DmiBios.resolve(:bios_vendor)
13+
[Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14+
end
15+
end
16+
end
17+
end
18+
end
19+
end
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# frozen_string_literal: true
2+
3+
module Facts
4+
module Openbsd
5+
module Dmi
6+
module Bios
7+
class Version
8+
FACT_NAME = 'dmi.bios.version'
9+
ALIASES = 'bios_version'
10+
11+
def call_the_resolver
12+
fact_value = Facter::Resolvers::Openbsd::DmiBios.resolve(:bios_version)
13+
[Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14+
end
15+
end
16+
end
17+
end
18+
end
19+
end
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# frozen_string_literal: true
2+
3+
module Facts
4+
module Openbsd
5+
module Dmi
6+
class Manufacturer
7+
FACT_NAME = 'dmi.manufacturer'
8+
ALIASES = 'manufacturer'
9+
10+
def call_the_resolver
11+
fact_value = Facter::Resolvers::Openbsd::DmiBios.resolve(:sys_vendor)
12+
[Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
13+
end
14+
end
15+
end
16+
end
17+
end
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# frozen_string_literal: true
2+
3+
module Facts
4+
module Openbsd
5+
module Dmi
6+
module Product
7+
class Name
8+
FACT_NAME = 'dmi.product.name'
9+
ALIASES = 'productname'
10+
11+
def call_the_resolver
12+
fact_value = Facter::Resolvers::Openbsd::DmiBios.resolve(:product_name)
13+
[Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14+
end
15+
end
16+
end
17+
end
18+
end
19+
end
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# frozen_string_literal: true
2+
3+
module Facts
4+
module Openbsd
5+
module Dmi
6+
module Product
7+
class SerialNumber
8+
FACT_NAME = 'dmi.product.serial_number'
9+
ALIASES = 'serialnumber'
10+
11+
def call_the_resolver
12+
fact_value = Facter::Resolvers::Openbsd::DmiBios.resolve(:product_serial)
13+
[Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14+
end
15+
end
16+
end
17+
end
18+
end
19+
end
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# frozen_string_literal: true
2+
3+
module Facts
4+
module Openbsd
5+
module Dmi
6+
module Product
7+
class Uuid
8+
FACT_NAME = 'dmi.product.uuid'
9+
ALIASES = 'uuid'
10+
11+
def call_the_resolver
12+
fact_value = Facter::Resolvers::Openbsd::DmiBios.resolve(:product_uuid)
13+
[Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14+
end
15+
end
16+
end
17+
end
18+
end
19+
end
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# frozen_string_literal: true
2+
3+
module Facts
4+
module Openbsd
5+
class Ec2Metadata
6+
FACT_NAME = 'ec2_metadata'
7+
8+
def call_the_resolver
9+
return Facter::ResolvedFact.new(FACT_NAME, nil) unless aws_hypervisors?
10+
11+
fact_value = Facter::Resolvers::Ec2.resolve(:metadata)
12+
13+
Facter::ResolvedFact.new(FACT_NAME, fact_value&.empty? ? nil : fact_value)
14+
end
15+
16+
private
17+
18+
def aws_hypervisors?
19+
Facter::Util::Facts::Posix::VirtualDetector.platform =~ /kvm|xen|aws/
20+
end
21+
end
22+
end
23+
end

0 commit comments

Comments
 (0)