From 2f775ea05d3017cb12846648bec4f3bdd6e9c08a Mon Sep 17 00:00:00 2001
From: Alexander Olofsson <alexander.olofsson@liu.se>
Date: Fri, 23 Jul 2021 09:39:41 +0200
Subject: [PATCH] Add wds-localboot parameter for template usage

---
 .../foreman_wds/unattended_controller_extensions.rb    |  5 +++++
 app/models/concerns/foreman_wds/host_extensions.rb     | 10 ++++++++++
 2 files changed, 15 insertions(+)

diff --git a/app/controllers/concerns/foreman_wds/unattended_controller_extensions.rb b/app/controllers/concerns/foreman_wds/unattended_controller_extensions.rb
index 5d9f870..a952191 100644
--- a/app/controllers/concerns/foreman_wds/unattended_controller_extensions.rb
+++ b/app/controllers/concerns/foreman_wds/unattended_controller_extensions.rb
@@ -30,6 +30,11 @@ module ForemanWds
       iface.send :rebuild_tftp
       iface.send :rebuild_dhcp
 
+      @host.parameters.where(name: 'wds-specifictemplate').first_or_initialize.tap do |p|
+        p.value = 'local-boot'
+        p.save
+      end
+
       render inline: "Success. Local boot template was deployed successfully.\n"
     rescue StandardError => e
       message = format('Failed to set local boot template: %{error}', error: e)
diff --git a/app/models/concerns/foreman_wds/host_extensions.rb b/app/models/concerns/foreman_wds/host_extensions.rb
index f80b490..69e186c 100644
--- a/app/models/concerns/foreman_wds/host_extensions.rb
+++ b/app/models/concerns/foreman_wds/host_extensions.rb
@@ -3,6 +3,7 @@ module ForemanWds
     def self.prepended(base)
       base.class_eval do
         after_build :ensure_wds_client
+        after_build :ensure_wds_boot
         before_provision :remove_wds_client
 
         has_one :wds_facet,
@@ -89,6 +90,15 @@ module ForemanWds
 
     private
 
+    def ensure_wds_boot
+      return unless wds?
+
+      parameters.where(name: 'wds-specifictemplate').each(&:destroy)
+      Rails.logger.info 'Ensuring WDS boot'
+    rescue StandardError => ex
+      Rails.logger.error "Failed to ensure WDS boot, #{ex}"
+    end
+
     def ensure_wds_client
       raise NotImplementedError, 'Not implemented yet'
       return unless wds?
-- 
GitLab