From 421ac132539c2d12de1cb467f2c6c8f9ebd62971 Mon Sep 17 00:00:00 2001
From: Alexander Olofsson <alexander.olofsson@liu.se>
Date: Fri, 5 Apr 2024 14:48:38 +0200
Subject: [PATCH] Clean up method of extending provision methods

---
 .../foreman_wds/host_edit_extensions.js       | 27 ++++++++++---------
 .../hosts_controller_extensions.rb            |  8 ++++--
 2 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/app/assets/javascripts/foreman_wds/host_edit_extensions.js b/app/assets/javascripts/foreman_wds/host_edit_extensions.js
index 19c224e..7a6b791 100644
--- a/app/assets/javascripts/foreman_wds/host_edit_extensions.js
+++ b/app/assets/javascripts/foreman_wds/host_edit_extensions.js
@@ -32,13 +32,6 @@ function wds_os_selected() {
   }
 };
 
-function wds_content_loaded() {
-  $('#wds_provisioning').detach().insertBefore('#media_select');
-  $('#host_provision_method_build').prop('disabled', false);
-  $('#host_provision_method_wds').prop('disabled', false);
-};
-
-
 function wds_provision_method_selected() {
   $('div[id*=_provisioning]').hide();
   $('#network_provisioning').show();
@@ -48,13 +41,23 @@ function wds_provision_method_selected() {
     $('#wds_image_select select').attr('disabled', true);
   }
 }
-$(document)
-  .on('change', '#host_provision_method_wds', wds_provision_method_selected)
-  .on('change', '.host-architecture-os-select', wds_os_selected)
-  .on('ContentLoad', wds_content_loaded);
 
-$(function() {
+function wds_enable_provision_methods() {
+  $('#provision_method').show();
+  $('#host_provision_method_build').prop('disabled', false);
+  $('#host_provision_method_wds').prop('disabled', false);
+
   if($('#host_provision_method_wds').is(':checked')) {
     wds_provision_method_selected();
   }
+};
+
+$(document)
+  .on('change', '#host_provision_method_wds', wds_provision_method_selected)
+  .on('change', '.host-architecture-os-select', wds_os_selected);
+
+$(function() {
+  $('#wds_provisioning').detach().insertBefore('#media_select');
+
+  wds_enable_provision_methods();
 });
diff --git a/app/controllers/concerns/foreman_wds/hosts_controller_extensions.rb b/app/controllers/concerns/foreman_wds/hosts_controller_extensions.rb
index c9e5351..9ddf276 100644
--- a/app/controllers/concerns/foreman_wds/hosts_controller_extensions.rb
+++ b/app/controllers/concerns/foreman_wds/hosts_controller_extensions.rb
@@ -2,6 +2,8 @@
 
 module ForemanWds
   module HostsControllerExtensions
+    extend ActiveSupport::Concern
+
     included do
       before_action :cleanup_wds_params
 
@@ -17,8 +19,10 @@ module ForemanWds
     end
 
     def cleanup_wds_params
-      # Don't create a WDS facet unless provisioning with it
-      params[:host].delete :wds_facet_attributes if params[:host] && params[:host][:provision_method] != 'wds'
+      return unless params.dig(:host, :provision_method)
+
+      # Don't create a WDS facet if not provisioning with it
+      params[:host].delete :wds_facet_attributes if params.dig(:host, :provision_method) != 'wds'
     end
   end
 end
-- 
GitLab