diff --git a/src/go/pt-k8s-debug-collector/dumper/dumper.go b/src/go/pt-k8s-debug-collector/dumper/dumper.go index bac07fa9..ba1120e7 100644 --- a/src/go/pt-k8s-debug-collector/dumper/dumper.go +++ b/src/go/pt-k8s-debug-collector/dumper/dumper.go @@ -274,7 +274,7 @@ func (d *Dumper) DumpCluster() error { // get individual Logs location = filepath.Join(d.location, ns.Name, pod.Name) for _, path := range d.filePaths { - err = d.getIndividualFiles(resourceType(d.crType), ns.Name, pod.Name, path, location, tw) + err = d.getIndividualFiles(ns.Name, pod.Name, path, location, tw) if err != nil { d.logError(err.Error(), "get file "+path+" for pod "+pod.Name) log.Printf("Error: get %s file: %v", path, err) @@ -372,13 +372,15 @@ type crSecrets struct { } `json:"spec"` } -// TODO: check if resource parameter is really needed -func (d *Dumper) getIndividualFiles(resource, namespace string, podName, path, location string, tw *tar.Writer) error { +func (d *Dumper) getIndividualFiles(namespace string, podName, path, location string, tw *tar.Writer) error { + if len(d.fileContainer) == 0 { + return errors.Errorf("Logs container name is not specified for resource %s in namespace %s", resourceType(d.crType), d.namespace) + } args := []string{"-n", namespace, "-c", d.fileContainer, "cp", podName + ":" + path, "/dev/stdout"} output, err := d.runCmd(args...) if err != nil { d.logError(err.Error(), args...) - log.Printf("Error: get path %s for resource %s in namespace %s: %v", path, resource, d.namespace, err) + log.Printf("Error: get path %s for resource %s in namespace %s: %v", path, resourceType(d.crType), d.namespace, err) return addToArchive(location, d.mode, []byte(err.Error()), tw) } diff --git a/src/go/pt-k8s-debug-collector/dumper/dumper_test.go b/src/go/pt-k8s-debug-collector/dumper/dumper_test.go new file mode 100644 index 00000000..d540e1e7 --- /dev/null +++ b/src/go/pt-k8s-debug-collector/dumper/dumper_test.go @@ -0,0 +1,20 @@ +package dumper + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +/* +Unit test for non-existing logs container name error handling +*/ + +func TestGetIndividualFilesError(t *testing.T) { + d := New("", "", "psmdb", "", "") + + err := d.getIndividualFiles("", "", "", "", nil) + + assert.Error(t, err) + assert.ErrorContains(t, err, "Logs container name is not specified") +}