From 77b030957abbfaf8ca63465ebf397e4d87eee920 Mon Sep 17 00:00:00 2001 From: Vitalii Chulak Date: Mon, 25 Mar 2024 22:15:07 +0200 Subject: [PATCH] Support HCK installer as ISO Signed-off-by: Vitalii Chulak --- lib/engines/hckinstall/hckinstall.rb | 52 +++++++++++++------ lib/engines/hckinstall/kit.json | 1 - .../hckinstall/setup_scripts_helper.rb | 12 ++++- 3 files changed, 46 insertions(+), 19 deletions(-) diff --git a/lib/engines/hckinstall/hckinstall.rb b/lib/engines/hckinstall/hckinstall.rb index 04e868cd..eb7e4059 100644 --- a/lib/engines/hckinstall/hckinstall.rb +++ b/lib/engines/hckinstall/hckinstall.rb @@ -87,10 +87,10 @@ def init_config end def studio_platform(kit) - res = @kit_info + res = @kit_info['studio_platform'] @logger.info("Loading studio platform for kit: #{kit}") - @logger.fatal("Kit studio platform for kit #{kit} does not exist") unless res['studio_platform'] - res['studio_platform'] || raise(InvalidConfigFile, "Kit studio platform for kit #{kit} does not exist") + @logger.fatal("Kit studio platform for kit #{kit} does not exist") unless res + res || raise(InvalidConfigFile, "Kit studio platform for kit #{kit} does not exist") end def client_platform @@ -234,12 +234,11 @@ def run_first(studio:, client:) if studio prepare_studio_drives + iso_list = [@setup_studio_iso, @studio_iso_info['path']] + iso_list << @kit_path if @kit_is_iso vms << [ 'studio', - run_studio(scope, [ - @setup_studio_iso, - @studio_iso_info['path'] - ], keep_alive: false, snapshot: false) + run_studio(scope, iso_list, keep_alive: false, snapshot: false) ] end @@ -270,31 +269,49 @@ def run_second(client:) end def prepare_setup_scripts_config - kit_string = @platform['kit'] - kit_type = kit_string[0..2] - kit_version = '' - kit_type == 'HCK' || kit_version = kit_string[3..] + kit_type, kit_version = parse_kit_info config = { kit_type:, hlk_kit_ver: kit_version } - unless @kit_info['download_url'].nil? + kit_present = kit_exist?(kit_type, kit_version) + + if @kit_info['download_url'].nil? || kit_present + @logger.info("HLK installer #{kit_type}#{kit_version} already exists, download skipped") if kit_present + @logger.info('HLK installer download URL is not provided') if @kit_info['download_url'].nil? + else download_kit_installer(@kit_info['download_url'], "#{kit_type}#{kit_version}", @hck_setup_scripts_path) end + raise(AutoHCKError, "HLK installer #{@kit_path} not found") unless kit_exist?(kit_type, kit_version) + + @logger.info("HLK installer #{kit_type}#{kit_version} was found at #{@kit_path}") + + create_setup_scripts_config(@hck_setup_scripts_path, config) + end + + def parse_kit_info + kit_string = @platform['kit'] + kit_type = kit_string[0..2] + kit_version = kit_type == 'HCK' ? '' : kit_string[3..] + [kit_type, kit_version] + end + + def kit_exist?(kit_type, kit_version) installers = [ "#{@hck_setup_scripts_path}/Kits/#{kit_type}#{kit_version}Setup.exe", - "#{@hck_setup_scripts_path}/Kits/#{kit_type}#{kit_version}/#{kit_type}Setup.exe" + "#{@hck_setup_scripts_path}/Kits/#{kit_type}#{kit_version}/#{kit_type}Setup.exe", + "#{@hck_setup_scripts_path}/Kits/#{kit_type}#{kit_version}Setup.iso" ] - raise unless (file = installers.find { File.exist? _1 }) + return false unless (@kit_path = installers.find { File.exist? _1 }) - @logger.info("HLK installer #{file} was found") + @kit_is_iso = @kit_path.end_with?('.iso') - create_setup_scripts_config(@hck_setup_scripts_path, config) + true end def product_key_xml(product_key) @@ -354,7 +371,8 @@ def prepare_studio_drives file_gsub(build_studio_answer_file_path(file), @hck_setup_scripts_path + "/#{file}", replacement_list) end - create_iso(@setup_studio_iso, [@hck_setup_scripts_path]) + + create_iso(@setup_studio_iso, [@hck_setup_scripts_path], @kit_is_iso ? ['Kits'] : []) @project.setup_manager.create_studio_image end diff --git a/lib/engines/hckinstall/kit.json b/lib/engines/hckinstall/kit.json index ac3f6386..5ae6bf78 100644 --- a/lib/engines/hckinstall/kit.json +++ b/lib/engines/hckinstall/kit.json @@ -70,4 +70,3 @@ "studio_platform": "Win2012R2x64" } } - diff --git a/lib/engines/hckinstall/setup_scripts_helper.rb b/lib/engines/hckinstall/setup_scripts_helper.rb index 8f311132..dea69170 100644 --- a/lib/engines/hckinstall/setup_scripts_helper.rb +++ b/lib/engines/hckinstall/setup_scripts_helper.rb @@ -25,7 +25,17 @@ def validate_setup_scripts_config(config) def download_kit_installer(url, kit, hck_setup_scripts_path) dw = Downloader.new(@logger) - dw.download(url, "#{hck_setup_scripts_path}/Kits/#{kit}Setup.exe") + + kit_setup_path = "#{hck_setup_scripts_path}/Kits/#{kit}Setup" + + dw.download(url, "#{kit_setup_path}.tmp") + if File.read("#{kit_setup_path}.tmp", 2) == 'MZ' + FileUtils.mv("#{kit_setup_path}.tmp", + "#{kit_setup_path}.exe") + else + FileUtils.mv("#{kit_setup_path}.tmp", + "#{kit_setup_path}.iso") + end end def copy_extra_software(hck_setup_scripts_path, extra_software_path, sw_names)