fix(tools): isolate prepare tunnel parents

main
Tsu-ba-me 1 year ago committed by Yanhao Lei
parent ef61801831
commit da17b60ba6
  1. 51
      tools/striker-manage-vnc-pipes

@ -42,6 +42,7 @@ if (not $anvil->data->{sys}{database}{connections})
my $switch_debug = $anvil->data->{switches}{'debug'};
my $open = $anvil->data->{switches}{'open'};
my $prepare = $anvil->data->{switches}{'prepare'};
my $server = $anvil->data->{switches}{'server'};
my $server_uuid = $anvil->data->{switches}{'server-uuid'};
my $server_vnc_port = $anvil->data->{switches}{'server-vnc-port'};
@ -62,13 +63,11 @@ my $map_to_operation = { start => \&start_pipe, stop => \&stop_pipe };
if ($server_uuid)
{
my $rcode;
my $operation = $open ? "start" : "stop";
$anvil->Log->variables({ source => $THIS_FILE, line => __LINE__, level => $switch_debug, list => { operation => $operation } });
($rcode) = $map_to_operation->{$operation}({
my ($rcode) = $map_to_operation->{$operation}({
debug => $switch_debug,
svr_uuid => $server_uuid,
svr_vnc_port => $server_vnc_port,
@ -76,6 +75,12 @@ if ($server_uuid)
$anvil->nice_exit({ exit_code => $rcode });
}
elsif ($prepare)
{
my ($rcode) = prepare_tp_processes({ debug => $switch_debug });
$anvil->nice_exit({ exit_code => $rcode });
}
$anvil->nice_exit({ exit_code => 0 });
@ -336,6 +341,35 @@ sub is_uuid_v4
return $_[0] =~ /[a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}/;
}
sub prepare_tp_processes
{
my $parameters = shift;
my $debug = $parameters->{debug} || 3;
my $common_params = { debug => $debug };
my $rcode;
($rcode, my $hosts) = get_strikers($common_params);
return ($rcode) if ($rcode);
($rcode, my $tp_processes) = find_tp_processes($common_params);
return ($rcode) if ($rcode);
foreach my $host_uuid (keys %{$hosts->{uuids}})
{
my $host_name = $hosts->{uuids}{$host_uuid}{name};
($rcode, my $tp_pid) = start_tp({ tp_processes => $tp_processes, tp_target => $host_name, %$common_params });
return ($rcode) if ($rcode);
}
return (0);
}
sub prettify
{
my $var_value = shift;
@ -541,16 +575,15 @@ sub start_pipe
foreach my $host_uuid (keys %{$hosts->{uuids}})
{
my $host_name = $hosts->{uuids}{$host_uuid}{name};
my $tp_pid = $tp_processes->{targets}{$host_name};
($rcode, my $tp_pid) = start_tp({ tp_processes => $tp_processes, tp_target => $host_name, %$common_params });
next if ($rcode);
return (1) if (not defined $tp_pid);
my $tp_process = $tp_processes->{pids}{$tp_pid};
($rcode, my $tunnels) = find_tunnels({ tunnel_ls_path => $tp_process->{tunnel_ls_path}, %$common_params });
next if ($rcode);
return ($rcode) if ($rcode);
($rcode) = start_tunnel({
svr_uuid => $svr_uuid,
@ -562,7 +595,7 @@ sub start_pipe
%$common_params,
});
next if ($rcode);
return ($rcode) if ($rcode);
my $tunnel = $tunnels->{server_uuids}{$svr_uuid};
@ -577,6 +610,8 @@ sub start_pipe
if ($rcode)
{
stop_tunnel({ %$tunnel, tp_ctl_path => $tp_process->{ctl_path}, %$common_params });
return ($rcode);
}
}

Loading…
Cancel
Save