Skip to content

Commit 8775c5d

Browse files
authored
Merge pull request #23040 from Amrysliu/jsc_10562
Collect and upload y2logs from iscsi server in cloud
2 parents d79be9a + 250da60 commit 8775c5d

File tree

2 files changed

+73
-0
lines changed

2 files changed

+73
-0
lines changed

lib/sles4sap/qesap/qesapdeployment.pm

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ our @EXPORT = qw(
8181
qesap_cluster_logs
8282
qesap_upload_crm_report
8383
qesap_supportconfig_logs
84+
qesap_save_y2logs
8485
qesap_add_server_to_hosts
8586
qesap_calculate_deployment_name
8687
qesap_export_instances
@@ -1386,6 +1387,9 @@ sub qesap_cluster_logs {
13861387
# Upload crm report
13871388
qesap_upload_crm_report(host => $host, provider => $provider, failok => 1);
13881389
}
1390+
1391+
# Collect logs in iscsi service node if there is.
1392+
qesap_save_y2logs(provider => $provider, host => 'iscsi[0]', failok => 1) if (script_run("grep -q 'iscsi' $inventory") == 0);
13891393
}
13901394

13911395
if ($provider eq 'AZURE') {
@@ -1397,6 +1401,53 @@ sub qesap_cluster_logs {
13971401
}
13981402
}
13991403

1404+
=head3 qesap_save_y2logs
1405+
1406+
Collect y2logs from nodes of a deployed cluster
1407+
1408+
=over
1409+
1410+
=item B<PROVIDER> - Cloud provider name using same format of PUBLIC_CLOUD_PROVIDER setting
1411+
1412+
=item B<HOST> - node of a deployed cluster
1413+
1414+
=back
1415+
=cut
1416+
1417+
sub qesap_save_y2logs {
1418+
my (%args) = @_;
1419+
foreach (qw(provider host)) { croak "Missing mandatory $_ argument" unless $args{$_}; }
1420+
$args{failok} //= 0;
1421+
1422+
my $log_filename = "$args{host}-y2logs.tar.gz";
1423+
1424+
$log_filename =~ s/[\[\]"]//g;
1425+
1426+
qesap_ansible_cmd(cmd => "sudo save_y2logs /tmp/$log_filename",
1427+
provider => $args{provider},
1428+
filter => "\"$args{host}\"",
1429+
host_keys_check => 1,
1430+
verbose => 1,
1431+
timeout => bmwqemu::scale_timeout(7200),
1432+
failok => $args{failok});
1433+
qesap_ansible_cmd(cmd => "sudo chmod 755 /tmp/$log_filename",
1434+
provider => $args{provider},
1435+
filter => "\"$args{host}\"",
1436+
host_keys_check => 1,
1437+
verbose => 1,
1438+
timeout => bmwqemu::scale_timeout(7200),
1439+
failok => $args{failok});
1440+
my $local_path = qesap_ansible_fetch_file(provider => $args{provider},
1441+
host => $args{host},
1442+
failok => $args{failok},
1443+
root => 1,
1444+
remote_path => '/tmp/',
1445+
out_path => '/tmp/ansible_script_output/',
1446+
file => "$log_filename",
1447+
verbose => 1);
1448+
upload_logs($local_path, failok => 1);
1449+
}
1450+
14001451
=head3 qesap_supportconfig_logs
14011452
14021453
Collect supportconfig logs from all HANA nodes of a deployed cluster

t/09_qesapdeployment.t

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -784,6 +784,7 @@ subtest '[qesap_cluster_logs]' => sub {
784784
$qesap->redefine(upload_logs => sub { push @save_file_calls, $_[0]; return; });
785785
$qesap->redefine(qesap_cluster_log_cmds => sub { return ({Cmd => 'crm status', Output => 'crm_status.txt'}); });
786786
$qesap->redefine(qesap_upload_crm_report => sub { my (%args) = @_; push @crm_report_calls, $args{host}; return 0; });
787+
$qesap->redefine(qesap_save_y2logs => sub { return 0; });
787788
my $cloud_provider = 'NEMO';
788789
set_var('PUBLIC_CLOUD_PROVIDER', $cloud_provider);
789790

@@ -817,6 +818,7 @@ subtest '[qesap_cluster_logs] multi log command' => sub {
817818
$qesap->redefine(upload_logs => sub { return; });
818819
$qesap->redefine(qesap_cluster_log_cmds => sub { return ({Cmd => 'crm status', Output => 'crm_status.txt', Logs => ['ignore_me.txt', 'ignore_me_too.txt']}); });
819820
$qesap->redefine(qesap_upload_crm_report => sub { return 0; });
821+
$qesap->redefine(qesap_save_y2logs => sub { return 0; });
820822
my $cloud_provider = 'NEMO';
821823
set_var('PUBLIC_CLOUD_PROVIDER', $cloud_provider);
822824

@@ -901,6 +903,26 @@ subtest '[qesap_supportconfig_logs]' => sub {
901903
ok($upload_log_called eq 1), 'upload_log called';
902904
};
903905

906+
subtest '[qesap_save_y2logs]' => sub {
907+
my $qesap = Test::MockModule->new('sles4sap::qesap::qesapdeployment', no_auto => 1);
908+
my @calls;
909+
my $upload_log_called = 0;
910+
911+
$qesap->redefine(qesap_ansible_cmd => sub {
912+
my (%args) = @_;
913+
push @calls, $args{cmd};
914+
return 0; });
915+
$qesap->redefine(qesap_ansible_fetch_file => sub { return 0; });
916+
$qesap->redefine(upload_logs => sub { $upload_log_called = 1; return 0; });
917+
918+
qesap_save_y2logs(provider => 'SAND', host => 'boo');
919+
920+
note("\n C--> " . join("\n C--> ", @calls));
921+
ok((any { /.*save_y2logs \/tmp\/boo-y2logs.*/ } @calls), 'save_y2logs is called');
922+
ok((any { /.*chmod/ } @calls), 'chmod is called');
923+
ok($upload_log_called eq 1, 'upload_log called');
924+
};
925+
904926
subtest '[qesap_calculate_deployment_name]' => sub {
905927
my $qesap = Test::MockModule->new('sles4sap::qesap::qesapdeployment', no_auto => 1);
906928
$qesap->redefine(get_current_job_id => sub { return 42; });

0 commit comments

Comments
 (0)