use ../lib_provisioning/utils/ssh.nu * use ../lib_provisioning/defs/lists.nu * use lib_provisioning * export def taskserv_get_file [ settings: record taskserv: record server: record live_ip: string req_sudo: bool local_mode: bool ]: nothing -> bool { let target_path = ($taskserv.target_path | default "") if $target_path == "" { _print $"🛑 No (_ansi red_bold)target_path(_ansi reset) found in ($server.hostname) taskserv ($taskserv.name)" return false } let source_path = ($taskserv.soruce_path | default "") if $source_path == "" { _print $"🛑 No (_ansi red_bold)source_path(_ansi reset) found in ($server.hostname) taskserv ($taskserv.name)" return false } if $local_mode { let res = (^cp $source_path $target_path | combine) if $res.exit_code != 0 { _print $"🛑 Error get_file [ local-mode ] (_ansi red_bold)($source_path) to ($target_path)(_ansi reset) in ($server.hostname) taskserv ($taskserv.name)" _print $res.stdout return false } return true } let ip = if $live_ip != "" { $live_ip } else { #use ../../../providers/prov_lib/middleware.nu mw_get_ip (mw_get_ip $settings $server $server.liveness_ip false) } let ssh_key_path = ($server.ssh_key_path | default "") if $ssh_key_path == "" { _print $"🛑 No (_ansi red_bold)ssh_key_path(_ansi reset) found in ($server.hostname) taskserv ($taskserv.name)" return false } if not ($ssh_key_path | path exists) { _print $"🛑 Error (_ansi red_bold)($ssh_key_path)(_ansi reset) not found for ($server.hostname) taskserv ($taskserv.name)" return false } mut cmd = if $req_sudo { "sudo" } else { "" } let wk_path = $"/home/($env.SSH_USER)/($source_path | path basename)" $cmd = $"($cmd) cp ($source_path) ($wk_path); sudo chown ($env.SSH_USER) ($wk_path)" let res = (ssh_cmd $settings $server false $cmd $ip) if not $res { return false } if not (scp_from $settings $server $wk_path $target_path $ip ) { return false } let rm_cmd = if $req_sudo { $"sudo rm -f ($wk_path)" } else { $"rm -f ($wk_path)" } return ( ssh_cmd $settings $server false $rm_cmd $ip ) } export def find_taskserv [ settings: record, server: record, taskserv_name: string, out: string ]: nothing -> record { let taskserv = ($server | get -o taskservs | where {|t| ($t | get -o name | default "") == $taskserv_name} | get -o 0 | default {} ) if ($taskserv | is-empty) { _print $"🛑 No taskserv found" $"for (_ansi yellow_bold)($taskserv_name)(_ansi reset)" return "" } let src_path = ($settings | get -o src_path | default "") let hostname = ($server | get -o hostname | default "") mut taskserv_host_path = ($src_path | path join $env.PROVISIONING_RUN_TASKSERVS_PATH | path join $hostname | path join $"($taskserv_name).k") let def_taskserv = if ($taskserv_host_path | path exists) { (open -r $taskserv_host_path) } else { $taskserv_host_path = ($src_path | path join $env.PROVISIONING_RUN_TASKSERVS_PATH | path join $"($taskserv_name).k") if ($taskserv_host_path | path exists) { (open -r $taskserv_host_path) } else { _print $"🛑 No taskserv path found" $"for (_ansi yellow_bold)($taskserv_name)(_ansi reset) in ($taskserv_host_path)" $taskserv_host_path = "" "" } } mut main_taskserv_path = ($env.PROVISIONING_TASKSERVS_PATH | path join $taskserv_name | path join "kcl" | path join $"($taskserv_name).k") if not ($main_taskserv_path | path exists) { $main_taskserv_path = ($env.PROVISIONING_TASKSERVS_PATH | path join $taskserv_name | path join ($taskserv | get -o profile | default "") | path join "kcl" | path join $"($taskserv_name).k") } let def_main = if ($main_taskserv_path | path exists) { (open -r $main_taskserv_path) } else { _print $"🛑 No taskserv main path found" $"for (_ansi yellow_bold)($taskserv_name)(_ansi reset) ($main_taskserv_path)" $main_taskserv_path = "" "" } { path_def: $taskserv_host_path, def: $def_taskserv, path_main: $main_taskserv_path, main: $def_main } } export def list_taskservs [ settings: record ]: nothing -> list { let list_taskservs = (taskservs_list) if ($list_taskservs | length) == 0 { _print $"🛑 no items found for (_ansi cyan)taskservs list(_ansi reset)" return } $list_taskservs }