From 7f7ab040b1fd1edad48a72d7e36398a32d7131b1 Mon Sep 17 00:00:00 2001 From: Alexander Olofsson <alexander.olofsson@liu.se> Date: Fri, 29 Nov 2019 11:19:58 +0100 Subject: [PATCH] Add some debug logging for image retrieval --- app/models/wds_server.rb | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/app/models/wds_server.rb b/app/models/wds_server.rb index a0c4a4d..b1f6294 100644 --- a/app/models/wds_server.rb +++ b/app/models/wds_server.rb @@ -208,11 +208,25 @@ class WdsServer < ApplicationRecord def images(type, name = nil) raise ArgumentError, 'Type must be :boot or :install' unless %i[boot install].include? type - objects = connection.run_wql("SELECT * FROM MSFT_Wds#{type.to_s.capitalize}Image#{" WHERE Name=\"#{name}\"" if name}")["msft_wds#{type}image".to_sym] rescue nil - objects = nil if objects.empty? - objects ||= underscore_result([JSON.parse(connection.shell(:powershell) do |s| - s.run("Get-WDS#{type.to_s.capitalize}Image #{"-ImageName '#{name.sub("'", "`'")}'" if name} | ConvertTo-Json -Compress") - end.stdout)].flatten) + begin + objects = connection.run_wql("SELECT * FROM MSFT_Wds#{type.to_s.capitalize}Image#{" WHERE Name=\"#{name}\"" if name}")["msft_wds#{type}image".to_sym] + objects = nil if objects.empty? + rescue StandardError => e + ::Rails.logger.debug "WQL image query failed with #{e.class}: #{e}" + end + + unless objects + begin + result = connection.shell(:powershell) do |s| + s.run("Get-WDS#{type.to_s.capitalize}Image #{"-ImageName '#{name.sub("'", "`'")}'" if name} | ConvertTo-Json -Compress") + end + + objects = underscore_result([JSON.parse(result.stdout)].flatten) + rescue JSON::ParserError => e + ::Rails.logger.error "#{e.class}: #{e}\n#{result}" + raise e + end + end objects.map do |obj| ForemanWds.const_get("Wds#{type.to_s.capitalize}Image").new obj.merge(wds_server: self) -- GitLab