Skip to content

Commit 879672b

Browse files
committed
chore: refactor
1 parent 29ff916 commit 879672b

File tree

5 files changed

+232
-224
lines changed

5 files changed

+232
-224
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package data_collector
2+
3+
import (
4+
"fmt"
5+
helmClient "github.com/mittwald/go-helm-client"
6+
crdClient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
7+
"k8s.io/client-go/kubernetes"
8+
"k8s.io/client-go/rest"
9+
metricsClient "k8s.io/metrics/pkg/client/clientset/versioned"
10+
"os"
11+
)
12+
13+
type DataCollector struct {
14+
BaseDir string
15+
Namespaces []string
16+
K8sCoreClientSet *kubernetes.Clientset
17+
K8sCrdClientSet *crdClient.Clientset
18+
K8sMetricsClientSet *metricsClient.Clientset
19+
K8sHelmClientSet helmClient.Client
20+
}
21+
22+
func NewDataCollector(config *rest.Config, namespaces... string) *DataCollector {
23+
24+
tmpDir, err := os.MkdirTemp("", "kic-diag")
25+
26+
if err != nil {
27+
panic(fmt.Sprintf("%s: Unable to create temporary directory.\n", err))
28+
}
29+
30+
dc := DataCollector{
31+
BaseDir: tmpDir,
32+
Namespaces : namespaces,
33+
}
34+
35+
//Initialize clients
36+
dc.K8sCoreClientSet, _ = kubernetes.NewForConfig(config)
37+
dc.K8sCrdClientSet, _ = crdClient.NewForConfig(config)
38+
dc.K8sMetricsClientSet, _ = metricsClient.NewForConfig(config)
39+
dc.K8sHelmClientSet, _ = helmClient.NewClientFromRestConf(&helmClient.RestConfClientOptions{
40+
Options: &helmClient.Options{},
41+
RestConfig: config,
42+
})
43+
44+
return &dc
45+
}
46+
47+
func (c *DataCollector) WrapUp() {
48+
os.RemoveAll(c.BaseDir)
49+
}

internal/jobs/helm_job.go

Lines changed: 0 additions & 54 deletions
This file was deleted.

internal/jobs/job.go

Lines changed: 12 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,67 +2,28 @@ package jobs
22

33
import (
44
"context"
5-
crdClient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
6-
"k8s.io/client-go/kubernetes"
7-
metricsClient "k8s.io/metrics/pkg/client/clientset/versioned"
5+
"github.com/nginxinc/kubectl-kic-supportpkg/internal/data_collector"
86
"os"
97
"path"
108
"time"
119
)
1210

1311
type Job struct {
14-
Name string
15-
OutputFile string
16-
RetrieveFunction func(*kubernetes.Clientset, context.Context) []byte
12+
Name string
13+
Global bool
14+
Execute func(dc *data_collector.DataCollector, ctx context.Context) map[string][]byte
1715
}
1816

19-
type CustomJob struct {
20-
Name string
21-
OutputFile string
22-
RetrieveFunction func(*crdClient.Clientset, context.Context) []byte
23-
}
24-
25-
type MetricsJob struct {
26-
Name string
27-
OutputFile string
28-
RetrieveFunction func(*metricsClient.Clientset, context.Context) []byte
29-
}
30-
31-
func (j Job) Collect(baseFolder string, cs *kubernetes.Clientset) {
32-
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
33-
defer cancel()
34-
result := j.RetrieveFunction(cs, ctx)
35-
36-
fullPathFile := path.Join(baseFolder, j.OutputFile)
37-
os.MkdirAll(path.Dir(fullPathFile), os.ModePerm)
38-
39-
file, _ := os.Create(fullPathFile)
40-
defer file.Close()
41-
_, _ = file.Write(result)
42-
}
43-
44-
func (j CustomJob) CustomCollect(baseFolder string, cs *crdClient.Clientset) {
45-
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
46-
defer cancel()
47-
result := j.RetrieveFunction(cs, ctx)
48-
49-
fullPathFile := path.Join(baseFolder, j.OutputFile)
50-
os.MkdirAll(path.Dir(fullPathFile), os.ModePerm)
51-
52-
file, _ := os.Create(fullPathFile)
53-
defer file.Close()
54-
_, _ = file.Write(result)
55-
}
56-
57-
func (j MetricsJob) MetricsCollect(baseFolder string, cs *metricsClient.Clientset) {
17+
func (j Job) Collect(dc *data_collector.DataCollector) {
5818
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
5919
defer cancel()
60-
result := j.RetrieveFunction(cs, ctx)
6120

62-
fullPathFile := path.Join(baseFolder, j.OutputFile)
63-
os.MkdirAll(path.Dir(fullPathFile), os.ModePerm)
21+
jobResults := j.Execute(dc, ctx)
6422

65-
file, _ := os.Create(fullPathFile)
66-
defer file.Close()
67-
_, _ = file.Write(result)
23+
for fileName, fileValue := range jobResults {
24+
os.MkdirAll(path.Dir(fileName), os.ModePerm)
25+
file, _ := os.Create(fileName)
26+
_, _ = file.Write(fileValue)
27+
file.Close()
28+
}
6829
}

0 commit comments

Comments
 (0)