From c5cf93f75c58272d12e953193d04e0d06bd76753 Mon Sep 17 00:00:00 2001 From: Marcus Poller Date: Mon, 8 Jun 2026 09:22:08 +0200 Subject: [PATCH] SLES uses wicked, which is a systemd overlay. This fact parses wicked for IPv4 DHCP leases. Signed-off-by: Marcus Poller --- lib/facter/util/linux/dhcp.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/facter/util/linux/dhcp.rb b/lib/facter/util/linux/dhcp.rb index d2abdc0ca..fd0d96bea 100644 --- a/lib/facter/util/linux/dhcp.rb +++ b/lib/facter/util/linux/dhcp.rb @@ -21,11 +21,26 @@ def dhcp(interface_name, interface_index, logger) dhcp ||= search_dhclient_leases(interface_name) dhcp ||= search_internal_leases(interface_name) dhcp ||= search_with_dhcpcd_command(interface_name) + dhcp ||= search_wicked_leases(interface_name) dhcp end private + def search_wicked_leases(interface_name) + path_candidate = "/var/lib/wicked/lease-#{interface_name}-dhcp-ipv4.xml" + + return unless File.exist? path_candidate + + @log.debug("Attempt to get DHCP for interface #{interface_name}, from #{path_candidate}") + + require 'rexml/document' + + xmlstring = File.open(path_candidate).read.gsub('ipv4:dhcp', 'ipv4_dhcp') + rex = REXML::Document.new xmlstring + rex.root.elements['/lease/ipv4_dhcp/server-id/'].text + end + def search_systemd_netif_leases(index, interface_name) return if index.nil?