From fef0f6e6ec225039e1640f5ba26a2bf61aea4840 Mon Sep 17 00:00:00 2001 From: Jason Yong Date: Tue, 7 Nov 2023 11:19:19 +0000 Subject: [PATCH] Checkout whether serviceability has been set for dump and trace --- controllers/webspherelibertydump_controller.go | 2 +- controllers/webspherelibertytrace_controller.go | 2 +- utils/utils.go | 6 +++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/controllers/webspherelibertydump_controller.go b/controllers/webspherelibertydump_controller.go index 95651361..a5403737 100644 --- a/controllers/webspherelibertydump_controller.go +++ b/controllers/webspherelibertydump_controller.go @@ -108,7 +108,7 @@ func (r *ReconcileWebSphereLibertyDump) Reconcile(ctx context.Context, request c time := time.Now() dumpFolder := "/serviceability/" + pod.Namespace + "/" + pod.Name dumpFileName := dumpFolder + "/" + time.Format("2006-01-02_15:04:05") + ".zip" - dumpCmd := "mkdir -p " + dumpFolder + " && server dump --archive=" + dumpFileName + dumpCmd := "if [ ! -d \"serviceability\" ]; then exit 1; fi && " + "mkdir -p " + dumpFolder + " && server dump --archive=" + dumpFileName if len(instance.Spec.Include) > 0 { dumpCmd += " --include=" for i := range instance.Spec.Include { diff --git a/controllers/webspherelibertytrace_controller.go b/controllers/webspherelibertytrace_controller.go index 6a2bdbdf..4510d4a6 100644 --- a/controllers/webspherelibertytrace_controller.go +++ b/controllers/webspherelibertytrace_controller.go @@ -158,7 +158,7 @@ func (r *ReconcileWebSphereLibertyTrace) Reconcile(ctx context.Context, request } traceConfig += "/>" - _, err = lutils.ExecuteCommandInContainer(r.RestConfig, podName, podNamespace, "app", []string{"/bin/sh", "-c", "mkdir -p " + traceOutputDir + " && echo '" + traceConfig + "' > " + traceConfigFile}) + _, err = lutils.ExecuteCommandInContainer(r.RestConfig, podName, podNamespace, "app", []string{"/bin/sh", "-c", "if [ ! -d \"serviceability\" ]; then exit 1; fi && " + "mkdir -p " + traceOutputDir + " && echo '" + traceConfig + "' > " + traceConfigFile}) if err != nil { reqLogger.Error(err, "Encountered error while setting up trace for pod "+podName+" in namespace "+podNamespace) return r.UpdateStatus(err, webspherelibertyv1.OperationStatusConditionTypeEnabled, *instance, corev1.ConditionFalse, podName, podChanged) diff --git a/utils/utils.go b/utils/utils.go index 5c132ca3..5308de8c 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -125,7 +125,11 @@ func ExecuteCommandInContainer(config *rest.Config, podName, podNamespace, conta }) if err != nil { - return stderr.String(), fmt.Errorf("Encountered error while running command: %v ; Stderr: %v ; Error: %v", command, stderr.String(), err.Error()) + if strings.Contains(err.Error(), "command terminated with exit code 1") { + return stderr.String(), fmt.Errorf("Unable to find serviceability directory. Please check that serviceability has been configured correctly in the relevant WebsphereLibertyApplication custom resource for pod: %v in namespace: %v.", podName, podNamespace) + } else { + return stderr.String(), fmt.Errorf("Encountered error while running command: %v ; Stderr: %v ; Error: %v", command, stderr.String(), err.Error()) + } } return stderr.String(), nil