From c1f7f4f359643aad748729ef5bd24123c507b62f Mon Sep 17 00:00:00 2001 From: ravalsam Date: Wed, 4 Mar 2026 00:06:53 +0000 Subject: [PATCH] DAOS-18642 Control: rsync step in "dmg support collect-log" should be optional. Removing the final log rsync option since it's not open and required secure connection between the system which might be different for different sites. So, removing the mandatory rsync option. Customer can use rsync option with help of FileTransferExec option. Test-tag: pr support control Signed-off-by: ravalsam --- src/control/cmd/dmg/support.go | 49 +++++------------------------ src/control/lib/support/log.go | 28 +++-------------- src/control/lib/support/log_test.go | 37 +--------------------- 3 files changed, 12 insertions(+), 102 deletions(-) diff --git a/src/control/cmd/dmg/support.go b/src/control/cmd/dmg/support.go index fdd30691f97..3f9a3226c6f 100644 --- a/src/control/cmd/dmg/support.go +++ b/src/control/cmd/dmg/support.go @@ -1,5 +1,6 @@ // // (C) Copyright 2022-2024 Intel Corporation. +// (C) Copyright 2026 Hewlett Packard Enterprise Development LP // // SPDX-License-Identifier: BSD-2-Clause-Patent // @@ -36,34 +37,6 @@ type collectLogCmd struct { support.LogTypeSubCmd } -// gRPC call to initiate the rsync and copy the logs to Admin (central location). -func (cmd *collectLogCmd) rsyncLog() error { - hostName, err := support.GetHostName() - if err != nil { - return err - } - - req := &control.CollectLogReq{ - TargetFolder: cmd.TargetFolder, - AdminNode: hostName, - LogFunction: support.RsyncLogEnum, - FileTransferExecArgs: cmd.FileTransferExecArgs, - } - cmd.Debugf("Rsync logs from servers to %s:%s ", hostName, cmd.TargetFolder) - resp, err := control.CollectLog(cmd.MustLogCtx(), cmd.ctlInvoker, req) - if err != nil && cmd.StopOnError { - return err - } - if len(resp.GetHostErrors()) > 0 { - if err := pretty.UpdateErrorSummary(resp, "rsync", &cmd.bld); err != nil { - return err - } - return resp.Errors() - } - - return nil -} - // gRPC call to Archive the logs on individual servers. func (cmd *collectLogCmd) archLogsOnServer() error { hostName, err := support.GetHostName() @@ -126,7 +99,7 @@ func (cmd *collectLogCmd) Execute(_ []string) error { // set of support collection steps to show in progress bar progress := support.ProgressBar{ - Total: len(LogCollection) + len(DmgInfoCollection) + 1, // Extra 1 is for rsync operation. + Total: len(LogCollection) + len(DmgInfoCollection), NoDisplay: cmd.JSONOutputEnabled(), } @@ -228,12 +201,6 @@ func (cmd *collectLogCmd) Execute(_ []string) error { } params.FileTransferExecArgs = cmd.FileTransferExecArgs - // R sync the logs from servers - rsyncerr := cmd.rsyncLog() - fmt.Print(progress.Display()) - if rsyncerr != nil && cmd.StopOnError { - return rsyncerr - } // Archive the logs if cmd.Archive { @@ -244,14 +211,12 @@ func (cmd *collectLogCmd) Execute(_ []string) error { return err } - // Archive the logs on Server node via gRPC in case of rsync failure and logs can not be - // copied to central/Admin node. - if rsyncerr != nil { - err = cmd.archLogsOnServer() - if err != nil && cmd.StopOnError { - return err - } + // Archive the logs on Server Node + err = cmd.archLogsOnServer() + if err != nil && cmd.StopOnError { + return err } + fmt.Print(progress.Display()) } diff --git a/src/control/lib/support/log.go b/src/control/lib/support/log.go index dc22e8d915f..9dca3b76b24 100644 --- a/src/control/lib/support/log.go +++ b/src/control/lib/support/log.go @@ -1,6 +1,6 @@ // // (C) Copyright 2022-2024 Intel Corporation. -// (C) Copyright 2025 Hewlett Packard Enterprise Development LP +// (C) Copyright 2025-2026 Hewlett Packard Enterprise Development LP // // SPDX-License-Identifier: BSD-2-Clause-Patent // @@ -351,13 +351,12 @@ func ArchiveLogs(log logging.Logger, opts ...CollectLogsParams) error { // Get the system hostname func GetHostName() (string, error) { - hn, err := exec.Command("hostname", "-s").Output() + hn, err := os.Hostname() if err != nil { - return "", errors.Wrapf(err, "Error running hostname -s command %s", hn) + return "", errors.Wrapf(err, "Error getting Hostname %s", hn) } - out := strings.Split(string(hn), "\n") - return out[0], nil + return hn, nil } // Create the local folder on each servers @@ -470,25 +469,6 @@ func rsyncLog(log logging.Logger, opts ...CollectLogsParams) error { } } - targetLocation, err := createHostFolder(opts[0].TargetFolder, log) - if err != nil { - return err - } - - cmd := strings.Join([]string{ - "rsync", - "-av", - "--blocking-io", - targetLocation, - opts[0].AdminNode + ":" + opts[0].TargetFolder}, - " ") - - out, err := exec.Command("sh", "-c", cmd).Output() - if err != nil { - return errors.Wrapf(err, "Error running command %s %s", cmd, string(out)) - } - log.Infof("rsyncCmd:= %s stdout:\n%s\n\n", cmd, string(out)) - return nil } diff --git a/src/control/lib/support/log_test.go b/src/control/lib/support/log_test.go index 1b3ebf8d32f..a1545455513 100644 --- a/src/control/lib/support/log_test.go +++ b/src/control/lib/support/log_test.go @@ -1,6 +1,6 @@ // // (C) Copyright 2022-2024 Intel Corporation. -// (C) Copyright 2025 Hewlett Packard Enterprise Development LP +// (C) Copyright 2025-2026 Hewlett Packard Enterprise Development LP // // SPDX-License-Identifier: BSD-2-Clause-Patent // @@ -336,41 +336,6 @@ func TestSupport_createHostLogFolder(t *testing.T) { } } -func TestSupport_rsyncLog(t *testing.T) { - log, buf := logging.NewTestLogger(t.Name()) - defer test.ShowBufferOnFailure(t, buf) - targetTestDir, targetCleanup := test.CreateTestDir(t) - defer targetCleanup() - srcPath := test.CreateTestFile(t, targetTestDir, "Temp File\n") - hostName, _ := os.Hostname() - - rsLog := CollectLogsParams{} - - for name, tc := range map[string]struct { - targetFolder string - AdminNode string - expErr error - }{ - "rsync to invalid Target directory": { - targetFolder: targetTestDir + "/foo/bar", - AdminNode: hostName + ":/tmp/foo/bar/", - expErr: errors.New("Error running command"), - }, - "rsync invalid log directory": { - targetFolder: srcPath + "/file1", - AdminNode: hostName, - expErr: errors.New("not a directory"), - }, - } { - t.Run(name, func(t *testing.T) { - rsLog.TargetFolder = tc.targetFolder - rsLog.AdminNode = tc.AdminNode - gotErr := rsyncLog(log, rsLog) - test.CmpErr(t, tc.expErr, gotErr) - }) - } -} - func TestSupport_customCopy(t *testing.T) { log, buf := logging.NewTestLogger(t.Name()) defer test.ShowBufferOnFailure(t, buf)