Skip to content

Commit

Permalink
(FACT-2747) Add ssh legacy facts.
Browse files Browse the repository at this point in the history
  • Loading branch information
BogdanIrimie committed Aug 25, 2020
1 parent a2737ea commit 0e9c397
Show file tree
Hide file tree
Showing 32 changed files with 591 additions and 273 deletions.
35 changes: 6 additions & 29 deletions lib/facter/facts/aix/ssh.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,21 @@ module Facts
module Aix
class Ssh
FACT_NAME = 'ssh'
ALIASES = %w[ssh.*key sshfp_.*].freeze

def call_the_resolver
resolved_facts = []
resolver_data = Facter::Resolvers::SshResolver.resolve(:ssh)

fact_value = extract_fact(resolver_data)

resolved_facts.push(Facter::ResolvedFact.new(FACT_NAME, fact_value))

resolver_data.each do |ssh_data|
resolved_facts.push(build_key_data(ssh_data))
resolved_facts.push(build_fp_data(ssh_data))
end

resolved_facts
Facter::ResolvedFact.new(FACT_NAME, fact_value)
end

private

def extract_fact(resolver_data)
def fact_value
resolver_data.map { |el| create_ssh_fact(el) }.inject(:merge)
end

def resolver_data
Facter::Resolvers::SshResolver.resolve(:ssh)
end

def create_ssh_fact(ssh)
return {} unless ssh

Expand All @@ -40,20 +31,6 @@ def create_ssh_fact(ssh)
type: ssh.type
} }
end

def build_key_data(ssh_data)
fact_name = "ssh#{ssh_data.name}key"
fact_value = ssh_data.key

Facter::ResolvedFact.new(fact_name, fact_value, :legacy)
end

def build_fp_data(ssh_data)
fact_name = "sshfp_#{ssh_data.name}"
fact_value = "#{ssh_data.fingerprint.sha1}\n#{ssh_data.fingerprint.sha256}"

Facter::ResolvedFact.new(fact_name, fact_value, :legacy)
end
end
end
end
17 changes: 17 additions & 0 deletions lib/facter/facts/aix/sshalgorithmkey.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# frozen_string_literal: true

module Facts
module Aix
class Sshalgorithmkey
FACT_NAME = 'ssh.*key'
TYPE = :legacy

def call_the_resolver
facts = []
result = Facter::Resolvers::SshResolver.resolve(:ssh)
result.each { |ssh| facts << Facter::ResolvedFact.new("ssh#{ssh.name.to_sym}key", ssh.key, :legacy) }
facts
end
end
end
end
20 changes: 20 additions & 0 deletions lib/facter/facts/aix/sshfp_algorithm.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# frozen_string_literal: true

module Facts
module Aix
class SshfpAlgorithm
FACT_NAME = 'sshfp_.*'
TYPE = :legacy

def call_the_resolver
facts = []
result = Facter::Resolvers::SshResolver.resolve(:ssh)
result.each do |ssh|
facts << Facter::ResolvedFact.new("sshfp_#{ssh.name.to_sym}",
"#{ssh.fingerprint.sha1} \n #{ssh.fingerprint.sha256}", :legacy)
end
facts
end
end
end
end
51 changes: 9 additions & 42 deletions lib/facter/facts/freebsd/ssh.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,55 +4,22 @@ module Facts
module Freebsd
class Ssh
FACT_NAME = 'ssh'
ALIASES = %w[ssh.*key sshfp_.*].freeze

def call_the_resolver
resolved_facts = []
resolver_data = Facter::Resolvers::SshResolver.resolve(:ssh)

fact_value = extract_fact(resolver_data)

resolved_facts.push(Facter::ResolvedFact.new(FACT_NAME, fact_value))

resolver_data.each do |ssh_data|
resolved_facts.push(build_key_data(ssh_data))
resolved_facts.push(build_fp_data(ssh_data))
end

resolved_facts
result = Facter::Resolvers::SshResolver.resolve(:ssh)
ssh_facts = {}
result.each { |ssh| ssh_facts.merge!(create_ssh_fact(ssh)) }
Facter::ResolvedFact.new(FACT_NAME, ssh_facts)
end

private

def extract_fact(resolver_data)
resolver_data.map { |el| create_ssh_fact(el) }.inject(:merge)
end

def create_ssh_fact(ssh)
return {} unless ssh

{ ssh.name.to_sym => {
fingerprints: {
sha1: ssh.fingerprint.sha1,
sha256: ssh.fingerprint.sha256
},
key: ssh.key,
type: ssh.type
} }
end

def build_key_data(ssh_data)
fact_name = "ssh#{ssh_data.name}key"
fact_value = ssh_data.key

Facter::ResolvedFact.new(fact_name, fact_value, :legacy)
end

def build_fp_data(ssh_data)
fact_name = "sshfp_#{ssh_data.name}"
fact_value = "#{ssh_data.fingerprint.sha1}\n#{ssh_data.fingerprint.sha256}"

Facter::ResolvedFact.new(fact_name, fact_value, :legacy)
{ ssh.name.to_sym =>
{ fingerprints: { sha1: ssh.fingerprint.sha1,
sha256: ssh.fingerprint.sha256 },
key: ssh.key,
type: ssh.type } }
end
end
end
Expand Down
17 changes: 17 additions & 0 deletions lib/facter/facts/freebsd/sshalgorithmkey.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# frozen_string_literal: true

module Facts
module Freebsd
class Sshalgorithmkey
FACT_NAME = 'ssh.*key'
TYPE = :legacy

def call_the_resolver
facts = []
result = Facter::Resolvers::SshResolver.resolve(:ssh)
result.each { |ssh| facts << Facter::ResolvedFact.new("ssh#{ssh.name.to_sym}key", ssh.key, :legacy) }
facts
end
end
end
end
20 changes: 20 additions & 0 deletions lib/facter/facts/freebsd/sshfp_algorithm.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# frozen_string_literal: true

module Facts
module Freebsd
class SshfpAlgorithm
FACT_NAME = 'sshfp_.*'
TYPE = :legacy

def call_the_resolver
facts = []
result = Facter::Resolvers::SshResolver.resolve(:ssh)
result.each do |ssh|
facts << Facter::ResolvedFact.new("sshfp_#{ssh.name.to_sym}",
"#{ssh.fingerprint.sha1} \n #{ssh.fingerprint.sha256}", :legacy)
end
facts
end
end
end
end
35 changes: 6 additions & 29 deletions lib/facter/facts/linux/ssh.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,21 @@ module Facts
module Linux
class Ssh
FACT_NAME = 'ssh'
ALIASES = %w[ssh.*key sshfp_.*].freeze

def call_the_resolver
resolved_facts = []
resolver_data = Facter::Resolvers::SshResolver.resolve(:ssh)

fact_value = extract_fact(resolver_data)

resolved_facts.push(Facter::ResolvedFact.new(FACT_NAME, fact_value))

resolver_data.each do |ssh_data|
resolved_facts.push(build_key_data(ssh_data))
resolved_facts.push(build_fp_data(ssh_data))
end

resolved_facts
Facter::ResolvedFact.new(FACT_NAME, fact_value)
end

private

def extract_fact(resolver_data)
def fact_value
resolver_data.map { |el| create_ssh_fact(el) }.inject(:merge)
end

def resolver_data
Facter::Resolvers::SshResolver.resolve(:ssh)
end

def create_ssh_fact(ssh)
return {} unless ssh

Expand All @@ -40,20 +31,6 @@ def create_ssh_fact(ssh)
type: ssh.type
} }
end

def build_key_data(ssh_data)
fact_name = "ssh#{ssh_data.name}key"
fact_value = ssh_data.key

Facter::ResolvedFact.new(fact_name, fact_value, :legacy)
end

def build_fp_data(ssh_data)
fact_name = "sshfp_#{ssh_data.name}"
fact_value = "#{ssh_data.fingerprint.sha1}\n#{ssh_data.fingerprint.sha256}"

Facter::ResolvedFact.new(fact_name, fact_value, :legacy)
end
end
end
end
35 changes: 6 additions & 29 deletions lib/facter/facts/macosx/ssh.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,21 @@ module Facts
module Macosx
class Ssh
FACT_NAME = 'ssh'
ALIASES = %w[ssh.*key sshfp_.*].freeze

def call_the_resolver
resolved_facts = []
resolver_data = Facter::Resolvers::SshResolver.resolve(:ssh)

fact_value = extract_fact(resolver_data)

resolved_facts.push(Facter::ResolvedFact.new(FACT_NAME, fact_value))

resolver_data.each do |ssh_data|
resolved_facts.push(build_key_data(ssh_data))
resolved_facts.push(build_fp_data(ssh_data))
end

resolved_facts
Facter::ResolvedFact.new(FACT_NAME, fact_value)
end

private

def extract_fact(resolver_data)
def fact_value
resolver_data.map { |el| create_ssh_fact(el) }.inject(:merge)
end

def resolver_data
Facter::Resolvers::SshResolver.resolve(:ssh)
end

def create_ssh_fact(ssh)
return {} unless ssh

Expand All @@ -40,20 +31,6 @@ def create_ssh_fact(ssh)
type: ssh.type
} }
end

def build_key_data(ssh_data)
fact_name = "ssh#{ssh_data.name}key"
fact_value = ssh_data.key

Facter::ResolvedFact.new(fact_name, fact_value, :legacy)
end

def build_fp_data(ssh_data)
fact_name = "sshfp_#{ssh_data.name}"
fact_value = "#{ssh_data.fingerprint.sha1}\n#{ssh_data.fingerprint.sha256}"

Facter::ResolvedFact.new(fact_name, fact_value, :legacy)
end
end
end
end
35 changes: 6 additions & 29 deletions lib/facter/facts/solaris/ssh.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,21 @@ module Facts
module Solaris
class Ssh
FACT_NAME = 'ssh'
ALIASES = %w[ssh.*key sshfp_.*].freeze

def call_the_resolver
resolved_facts = []
resolver_data = Facter::Resolvers::SshResolver.resolve(:ssh)

fact_value = extract_fact(resolver_data)

resolved_facts.push(Facter::ResolvedFact.new(FACT_NAME, fact_value))

resolver_data.each do |ssh_data|
resolved_facts.push(build_key_data(ssh_data))
resolved_facts.push(build_fp_data(ssh_data))
end

resolved_facts
Facter::ResolvedFact.new(FACT_NAME, fact_value)
end

private

def extract_fact(resolver_data)
def fact_value
resolver_data.map { |el| create_ssh_fact(el) }.inject(:merge)
end

def resolver_data
Facter::Resolvers::SshResolver.resolve(:ssh)
end

def create_ssh_fact(ssh)
return {} unless ssh

Expand All @@ -40,20 +31,6 @@ def create_ssh_fact(ssh)
type: ssh.type
} }
end

def build_key_data(ssh_data)
fact_name = "ssh#{ssh_data.name}key"
fact_value = ssh_data.key

Facter::ResolvedFact.new(fact_name, fact_value, :legacy)
end

def build_fp_data(ssh_data)
fact_name = "sshfp_#{ssh_data.name}"
fact_value = "#{ssh_data.fingerprint.sha1}\n#{ssh_data.fingerprint.sha256}"

Facter::ResolvedFact.new(fact_name, fact_value, :legacy)
end
end
end
end
17 changes: 17 additions & 0 deletions lib/facter/facts/solaris/sshalgorithmkey.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# frozen_string_literal: true

module Facts
module Solaris
class Sshalgorithmkey
FACT_NAME = 'ssh.*key'
TYPE = :legacy

def call_the_resolver
facts = []
result = Facter::Resolvers::SshResolver.resolve(:ssh)
result.each { |ssh| facts << Facter::ResolvedFact.new("ssh#{ssh.name.to_sym}key", ssh.key, :legacy) }
facts
end
end
end
end
Loading

0 comments on commit 0e9c397

Please sign in to comment.