From 2707fabd3aaba3219714ab8b3c48dc634a6bd978 Mon Sep 17 00:00:00 2001 From: Alexander Olofsson <alexander.olofsson@liu.se> Date: Fri, 23 Jul 2021 09:37:59 +0200 Subject: [PATCH] Support nextserver names if DHCP supports them --- app/models/concerns/foreman_wds/nic_extensions.rb | 5 ++++- app/models/wds_server.rb | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/models/concerns/foreman_wds/nic_extensions.rb b/app/models/concerns/foreman_wds/nic_extensions.rb index 5487ddf..abc8345 100644 --- a/app/models/concerns/foreman_wds/nic_extensions.rb +++ b/app/models/concerns/foreman_wds/nic_extensions.rb @@ -10,7 +10,10 @@ module ForemanWds def boot_server return super if host.nil? || !host.wds? || host.wds_facet.nil? - return host.wds_server.next_server_ip if host.build? # TODO: Support choosing local boot method + if host.build? # TODO: Support choosing local boot method + return host.wds_server.next_server_ip unless subnet.dhcp.has_capability?(:DHCP, :dhcp_filename_hostname) + return host.wds_server.next_server_name + end super end diff --git a/app/models/wds_server.rb b/app/models/wds_server.rb index 835735f..33df3c5 100644 --- a/app/models/wds_server.rb +++ b/app/models/wds_server.rb @@ -110,8 +110,12 @@ class WdsServer < ApplicationRecord end end + def next_server_name + URI(url).host + end + def next_server_ip - res = Resolv::DNS.open { |dns| dns.getaddresses(URI(url).host) }.select { |addr| addr.is_a? Resolv::IPv4 }.first + res = Resolv::DNS.open { |dns| dns.getaddresses(next_server_name) }.select { |addr| addr.is_a? Resolv::IPv4 }.first return res.to_s if res IPSocket.getaddress URI(url).host -- GitLab