Skip to content

Commit cc7cb4f

Browse files
committed
feat: log job errors
1 parent 9799ef1 commit cc7cb4f

File tree

3 files changed

+155
-92
lines changed

3 files changed

+155
-92
lines changed

pkg/data_collector/data_collector.go

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"archive/tar"
55
"bytes"
66
"compress/gzip"
7+
"context"
78
"fmt"
89
helmClient "github.com/mittwald/go-helm-client"
910
"io"
@@ -16,6 +17,7 @@ import (
1617
"k8s.io/client-go/tools/remotecommand"
1718
"k8s.io/client-go/util/homedir"
1819
metricsClient "k8s.io/metrics/pkg/client/clientset/versioned"
20+
"log"
1921
"os"
2022
"path/filepath"
2123
"strconv"
@@ -25,6 +27,8 @@ import (
2527
type DataCollector struct {
2628
BaseDir string
2729
Namespaces []string
30+
Logger *log.Logger
31+
LogFile *os.File
2832
K8sRestConfig *rest.Config
2933
K8sCoreClientSet *kubernetes.Clientset
3034
K8sCrdClientSet *crdClient.Clientset
@@ -35,11 +39,15 @@ type DataCollector struct {
3539
func NewDataCollector(namespaces ...string) (*DataCollector, error) {
3640

3741
tmpDir, err := os.MkdirTemp("", "kic-diag")
38-
3942
if err != nil {
4043
return nil, fmt.Errorf("unable to create temp directory: %s", err)
4144
}
4245

46+
logFile, err := os.OpenFile(filepath.Join(tmpDir, "kic-supportpkg.log"), os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
47+
if err != nil {
48+
return nil, fmt.Errorf("unable to create log file: %s", err)
49+
}
50+
4351
// Find config
4452
kubeConfig := os.Getenv("KUBECONFIG")
4553
if kubeConfig == "" {
@@ -54,6 +62,8 @@ func NewDataCollector(namespaces ...string) (*DataCollector, error) {
5462
dc := DataCollector{
5563
BaseDir: tmpDir,
5664
Namespaces: namespaces,
65+
LogFile: logFile,
66+
Logger: log.New(logFile, "", log.LstdFlags|log.LUTC|log.Lmicroseconds|log.Lshortfile),
5767
K8sHelmClientSet: make(map[string]helmClient.Client),
5868
}
5969

@@ -79,6 +89,8 @@ func (c *DataCollector) WrapUp() (string, error) {
7989
tarballName := fmt.Sprintf("kic-supportpkg-%s.tar.gz", unixTimeString)
8090
tarballRootDirName := fmt.Sprintf("kic-supportpkg-%s", unixTimeString)
8191

92+
c.LogFile.Close()
93+
8294
file, err := os.Create(tarballName)
8395
if err != nil {
8496
return "", err
@@ -132,7 +144,7 @@ func (c *DataCollector) WrapUp() (string, error) {
132144
return tarballName, nil
133145
}
134146

135-
func (c *DataCollector) PodExecutor(namespace string, pod string, command []string) ([]byte,error) {
147+
func (c *DataCollector) PodExecutor(namespace string, pod string, command []string, ctx context.Context) ([]byte, error) {
136148
req := c.K8sCoreClientSet.CoreV1().RESTClient().Post().
137149
Namespace(namespace).
138150
Resource("pods").
@@ -148,10 +160,10 @@ func (c *DataCollector) PodExecutor(namespace string, pod string, command []stri
148160

149161
exec, _ := remotecommand.NewSPDYExecutor(c.K8sRestConfig, "POST", req.URL())
150162
var stdout, stderr bytes.Buffer
151-
err := exec.Stream(remotecommand.StreamOptions{
163+
err := exec.StreamWithContext(ctx, remotecommand.StreamOptions{
152164
Stdin: nil,
153165
Stdout: &stdout,
154166
Stderr: &stderr,
155167
})
156168
return stdout.Bytes(), err
157-
}
169+
}

pkg/jobs/job.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,21 @@ func (j Job) Collect(dc *data_collector.DataCollector) error {
2727
ctx, cancel := context.WithTimeout(context.Background(), j.Timeout)
2828
defer cancel()
2929

30+
dc.Logger.Printf("\tJob %s has started\n", j.Name)
3031
go j.Execute(dc, ctx, ch)
3132

3233
select {
3334
case <-ctx.Done():
35+
dc.Logger.Printf("\tJob %s has timed out: %s\n", j.Name, ctx.Err())
3436
return errors.New(fmt.Sprintf("Context cancelled: %v", ctx.Err()))
3537

3638
case jobResults := <-ch:
3739
if jobResults.Error != nil {
40+
dc.Logger.Printf("\tJob %s has failed: %s\n", j.Name, jobResults.Error)
3841
return jobResults.Error
3942
}
4043

44+
dc.Logger.Printf("\tJob %s completed successfully\n", j.Name)
4145
for fileName, fileValue := range jobResults.Files {
4246
err := os.MkdirAll(path.Dir(fileName), os.ModePerm)
4347
if err != nil {

0 commit comments

Comments
 (0)