diff --git a/lib/facts/solaris/networking/ip6.rb b/lib/facts/solaris/networking/ip6.rb new file mode 100644 index 0000000000..22bee32ba0 --- /dev/null +++ b/lib/facts/solaris/networking/ip6.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module Facts + module Solaris + module Networking + class Ip6 + FACT_NAME = 'networking.ip6' + ALIASES = 'ipaddress6' + + def call_the_resolver + fact_value = Facter::Resolvers::Solaris::Networking.resolve(:ip6) + + [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)] + end + end + end + end +end diff --git a/lib/facts/solaris/networking/mac.rb b/lib/facts/solaris/networking/mac.rb new file mode 100644 index 0000000000..3cf5bd769d --- /dev/null +++ b/lib/facts/solaris/networking/mac.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module Facts + module Solaris + module Networking + class Mac + FACT_NAME = 'networking.mac' + ALIASES = 'macaddress' + + def call_the_resolver + fact_value = Facter::Resolvers::Solaris::Networking.resolve(:mac) + + [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)] + end + end + end + end +end diff --git a/lib/facts/solaris/networking/mtu.rb b/lib/facts/solaris/networking/mtu.rb new file mode 100644 index 0000000000..95c48300e5 --- /dev/null +++ b/lib/facts/solaris/networking/mtu.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module Facts + module Solaris + module Networking + class Mtu + FACT_NAME = 'networking.mtu' + + def call_the_resolver + fact_value = Facter::Resolvers::Solaris::Networking.resolve(:mtu) + + Facter::ResolvedFact.new(FACT_NAME, fact_value) + end + end + end + end +end diff --git a/lib/facts/solaris/networking/netmask.rb b/lib/facts/solaris/networking/netmask.rb new file mode 100644 index 0000000000..3b7e41381d --- /dev/null +++ b/lib/facts/solaris/networking/netmask.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module Facts + module Solaris + module Networking + class Netmask + FACT_NAME = 'networking.netmask' + ALIASES = 'netmask' + + def call_the_resolver + fact_value = Facter::Resolvers::Solaris::Networking.resolve(:netmask) + + [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)] + end + end + end + end +end diff --git a/lib/facts/solaris/networking/netmask6.rb b/lib/facts/solaris/networking/netmask6.rb new file mode 100644 index 0000000000..389796890d --- /dev/null +++ b/lib/facts/solaris/networking/netmask6.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module Facts + module Solaris + module Networking + class Netmask6 + FACT_NAME = 'networking.netmask6' + ALIASES = 'netmask6' + + def call_the_resolver + fact_value = Facter::Resolvers::Solaris::Networking.resolve(:netmask6) + + [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)] + end + end + end + end +end diff --git a/lib/facts/solaris/networking/network.rb b/lib/facts/solaris/networking/network.rb new file mode 100644 index 0000000000..ba316c3562 --- /dev/null +++ b/lib/facts/solaris/networking/network.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module Facts + module Solaris + module Networking + class Network + FACT_NAME = 'networking.network' + ALIASES = 'network' + + def call_the_resolver + fact_value = Facter::Resolvers::Solaris::Networking.resolve(:network) + + [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)] + end + end + end + end +end diff --git a/lib/facts/solaris/networking/network6.rb b/lib/facts/solaris/networking/network6.rb new file mode 100644 index 0000000000..508621337f --- /dev/null +++ b/lib/facts/solaris/networking/network6.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module Facts + module Solaris + module Networking + class Network6 + FACT_NAME = 'networking.network' + ALIASES = 'network' + + def call_the_resolver + fact_value = Facter::Resolvers::Solaris::Networking.resolve(:network6) + + [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)] + end + end + end + end +end diff --git a/lib/resolvers/solaris/networking_resolver.rb b/lib/resolvers/solaris/networking_resolver.rb index d9b79a8a44..c7561cf979 100644 --- a/lib/resolvers/solaris/networking_resolver.rb +++ b/lib/resolvers/solaris/networking_resolver.rb @@ -12,8 +12,8 @@ class Networking < BaseResolver @fact_list ||= {} BINDINGS_KEY = { - FFI::AF_INET => 'bindings', - FFI::AF_INET6 => 'bindings6' + FFI::AF_INET => :bindings, + FFI::AF_INET6 => :bindings6 }.freeze class << self @@ -32,11 +32,14 @@ def read_facts(fact_name) add_mac(lifreq) add_bindings(lifreq) add_mtu(lifreq) + add_dhcp(lifreq.name) end @fact_list = { interfaces: @fact_list } primary_interface - extract_dhcp(@fact_list[:primary_interface]) + + ::Resolvers::Utils::Networking.expand_main_bindings(@fact_list) + @fact_list[fact_name] end @@ -135,10 +138,10 @@ def primary_interface @fact_list[:primary_interface] = result.match(/interface: (.+)/)&.captures&.first end - def extract_dhcp(interface_name) + def add_dhcp(interface_name) result = Facter::Core::Execution.execute("dhcpinfo -i #{interface_name} ServerID", logger: log) - @fact_list[:dhcp] = result.chomp + @fact_list[interface_name][:dhcp] = result.chomp end end end diff --git a/spec/mocks/ffi_mock.rb b/spec/mocks/ffi_mock.rb index 45610b4f57..7fdf9fd3e5 100644 --- a/spec/mocks/ffi_mock.rb +++ b/spec/mocks/ffi_mock.rb @@ -19,11 +19,13 @@ def self.define_errno(arg) def self.type_size(arg); end module Library + LIBC = 'libc'.freeze + def ffi_convention(arg); end def ffi_lib(arg); end - def attach_function(function, args, return_type); end + def attach_function(*); end def enum(*); end