From 04905be9cdcadbde197b93ba37b23243ae15514c Mon Sep 17 00:00:00 2001
From: Sebastian Miclea <sebastian.miclea@puppet.com>
Date: Thu, 9 Jul 2020 13:11:01 +0300
Subject: [PATCH] (FACT-2656) Added dhcp for primary interface

---
 lib/facts/solaris/networking/dhcp.rb         | 17 +++++++++++++++++
 lib/resolvers/solaris/networking_resolver.rb |  8 ++++++++
 2 files changed, 25 insertions(+)
 create mode 100644 lib/facts/solaris/networking/dhcp.rb

diff --git a/lib/facts/solaris/networking/dhcp.rb b/lib/facts/solaris/networking/dhcp.rb
new file mode 100644
index 0000000000..218a2b723b
--- /dev/null
+++ b/lib/facts/solaris/networking/dhcp.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+module Facts
+  module Solaris
+    module Networking
+      class Dhcp
+        FACT_NAME = 'networking.dhcp'
+
+        def call_the_resolver
+          fact_value = Facter::Resolvers::Solaris::Networking.resolve(:dhcp)
+
+          Facter::ResolvedFact.new(FACT_NAME, fact_value)
+        end
+      end
+    end
+  end
+end
diff --git a/lib/resolvers/solaris/networking_resolver.rb b/lib/resolvers/solaris/networking_resolver.rb
index 6e99606ca1..6850dcbdc4 100644
--- a/lib/resolvers/solaris/networking_resolver.rb
+++ b/lib/resolvers/solaris/networking_resolver.rb
@@ -35,6 +35,8 @@ def read_facts(fact_name)
             end
 
             @fact_list = { interfaces: @fact_list }
+            primary_interface
+            extract_dhcp(@fact_list[:primary_interface])
             @fact_list[fact_name]
           end
 
@@ -132,6 +134,12 @@ def primary_interface
 
             @fact_list[:primary_interface] = result.match(/interface: (.+)/)&.captures&.first
           end
+
+          def extract_dhcp(interface_name)
+            result = Facter::Core::Execution.execute("dhcpinfo -i #{interface_name} ServerID", logger: log)
+
+            @fact_list[:dhcp] = result.chomp
+          end
         end
       end
     end