Skip to content

Commit

Permalink
Support HCK installer as ISO
Browse files Browse the repository at this point in the history
Signed-off-by: Vitalii Chulak <[email protected]>
  • Loading branch information
Jedoku committed Mar 28, 2024
1 parent 5a92c52 commit 72a1526
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 19 deletions.
57 changes: 40 additions & 17 deletions lib/engines/hckinstall/hckinstall.rb
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,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
Expand Down Expand Up @@ -239,12 +239,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

Expand Down Expand Up @@ -275,31 +274,54 @@ 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_path = find_kit(kit_type, kit_version)

log_kit_status(@kit_path, kit_type, kit_version)

unless @kit_info['download_url'].nil? || @kit_path
download_kit_installer(@kit_info['download_url'],
"#{kit_type}#{kit_version}", @hck_setup_scripts_path)
end

@kit_is_iso = @kit_path.end_with?('.iso')

@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 find_kit(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_path
end

create_setup_scripts_config(@hck_setup_scripts_path, config)
def log_kit_status(kit_presense, kit_type, kit_version)
if kit_presense
@logger.info("HLK installer #{kit_type}#{kit_version} already exists")
elsif @kit_info['download_url'].nil?
@logger.info('HLK installer download URL is not provided')
end
end

def product_key_xml(product_key)
Expand Down Expand Up @@ -359,7 +381,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
Expand Down
1 change: 0 additions & 1 deletion lib/engines/hckinstall/kit.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,4 +70,3 @@
"studio_platform": "Win2012R2x64"
}
}

10 changes: 9 additions & 1 deletion lib/engines/hckinstall/setup_scripts_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,15 @@ 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"
temp_path = "#{kit_setup_path}.tmp"

dw.download(url, temp_path)

file_type = File.read(temp_path, 2) == 'MZ' ? 'exe' : 'iso'

@kit_path = "#{kit_setup_path}.#{file_type}"
FileUtils.mv(temp_path, @kit_path)
end

def copy_extra_software(hck_setup_scripts_path, extra_software_path, sw_names)
Expand Down

0 comments on commit 72a1526

Please sign in to comment.