Skip to content

Commit 06d4bf2

Browse files
authored
fix(logs): Improve the litmus-checker logs (#505)
Signed-off-by: Shubham Chaudhary <[email protected]>
1 parent a3f5998 commit 06d4bf2

File tree

6 files changed

+55
-43
lines changed

6 files changed

+55
-43
lines changed

custom/litmus-checker/go.mod

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
module github.com/gdsoumya/resourceChecker
1+
module github.com/litmuschaos/test-tools/custom/litmus-checker
22

33
go 1.20
44

55
require (
6+
github.com/sirupsen/logrus v1.9.3
67
k8s.io/apimachinery v0.21.2
78
k8s.io/client-go v0.21.2
89
)

custom/litmus-checker/go.sum

+4-1
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
162162
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
163163
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
164164
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
165+
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
166+
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
165167
github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
166168
github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
167169
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
@@ -170,8 +172,9 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
170172
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
171173
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
172174
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
173-
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
174175
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
176+
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
177+
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
175178
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
176179
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
177180
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=

custom/litmus-checker/main.go

+30-16
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,55 @@ package main
22

33
import (
44
"flag"
5+
"github.com/sirupsen/logrus"
56
"io/ioutil"
6-
"log"
77
"os"
88
"os/signal"
99
"syscall"
1010

11-
chaos_checker "github.com/gdsoumya/resourceChecker/pkg/chaos-checker"
12-
"github.com/gdsoumya/resourceChecker/pkg/k8s"
13-
"github.com/gdsoumya/resourceChecker/pkg/util"
11+
chaos_checker "github.com/litmuschaos/test-tools/custom/litmus-checker/pkg/chaos-checker"
12+
"github.com/litmuschaos/test-tools/custom/litmus-checker/pkg/k8s"
13+
"github.com/litmuschaos/test-tools/custom/litmus-checker/pkg/util"
1414
)
1515

16+
func init() {
17+
logrus.SetFormatter(&logrus.JSONFormatter{})
18+
}
19+
1620
func main() {
1721
signalChannel := make(chan os.Signal)
1822
signal.Notify(signalChannel, os.Interrupt, syscall.SIGTERM)
1923
kubeconfig := flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
2024
file := flag.String("file", "", "absolute path to the chaosengine yaml")
2125
engineFile := flag.String("saveName", "", "absolute path to the output file")
2226
flag.Parse()
23-
if *file == "" {
24-
log.Fatal("Error Engine Artefact path not specified")
27+
28+
if file == nil || *file == "" {
29+
logrus.Fatal("Error Engine Artefact path not specified")
2530
}
31+
2632
data, err := ioutil.ReadFile(*file)
2733
if err != nil {
28-
log.Fatal("Error Reading Artefact : ", err)
34+
logrus.Fatalf("Error Reading Artefact : %v", err)
2935
}
30-
resp, err := k8s.CreateChaosDeployment(data, kubeconfig)
36+
37+
dc, dyn, err := k8s.GetDynamicClient(kubeconfig)
3138
if err != nil {
32-
log.Fatal("Error Creating Resource : ", err)
39+
logrus.Fatalf("Error Getting Dynamic Client : %v", err)
3340
}
34-
engineName := resp.GetName()
35-
log.Print("\n\nChaosEngine Name : ", engineName, "\n\n")
36-
err = util.WriteToFile(*engineFile, engineName)
41+
42+
resp, err := k8s.CreateChaosDeployment(data, dc, dyn)
3743
if err != nil {
38-
log.Print("ERROR : cannot write engine-name - ", err)
44+
logrus.Fatalf("Error Creating Resource : %v", err)
45+
}
46+
47+
engineName := resp.GetName()
48+
logrus.Infof("ChaosEngine Name : %s", engineName)
49+
50+
if err = util.WriteToFile(*engineFile, engineName); err != nil {
51+
logrus.Infof("ERROR: cannot write engine-name %v", err)
3952
}
53+
4054
gvk := resp.GroupVersionKind()
4155
resDef := k8s.ResourceDef{
4256
Name: engineName,
@@ -50,10 +64,10 @@ func main() {
5064
// Required, While aborting a Chaos Experiment, wait-container (argo-exec) sends SIGTERM signal to other (main) containers for aborting Argo-Workflow Pod
5165
go func() {
5266
<-signalChannel
53-
log.Print("SIGTERM SIGNAL RECEIVED, Shutting down litmus-checker...")
67+
logrus.Info("SIGTERM SIGNAL RECEIVED, Shutting down litmus-checker...")
5468
os.Exit(0)
5569
}()
5670

57-
log.Print("Created Resource Details: \n", resDef)
58-
chaos_checker.CheckChaos(kubeconfig, resDef)
71+
logrus.Infof("Created Resource Details: %v", resDef)
72+
chaos_checker.CheckChaos(resDef, dc, dyn)
5973
}

custom/litmus-checker/pkg/chaos-checker/check.go

+11-12
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,36 @@
11
package chaos_checker
22

33
import (
4-
"log"
4+
"github.com/sirupsen/logrus"
5+
"k8s.io/client-go/discovery"
6+
"k8s.io/client-go/dynamic"
57
"strings"
68
"time"
79

8-
"github.com/gdsoumya/resourceChecker/pkg/k8s"
10+
"github.com/litmuschaos/test-tools/custom/litmus-checker/pkg/k8s"
911
)
1012

11-
func CheckChaos(kubeconfig *string, res k8s.ResourceDef) {
12-
dc, dyn, err := k8s.GetDynamicClient(kubeconfig)
13-
if err != nil {
14-
log.Fatal("ERROR : ", err)
15-
}
16-
log.Print("Starting Chaos Checker in 1min")
13+
func CheckChaos(res k8s.ResourceDef, dc discovery.DiscoveryInterface, dyn dynamic.Interface) {
14+
logrus.Info("Starting Chaos Checker in 1min")
15+
1716
for {
1817
time.Sleep(time.Minute * 1)
19-
log.Print("Checking if Engine Completed or Stopped")
2018
data, err := k8s.GetResourceDetails(dc, dyn, res)
2119
if err != nil {
22-
log.Fatal("ERROR : ", err)
20+
logrus.Fatalf("Failed to get resource details: %v", err)
2321
}
2422
status, ok := data.Object["status"].(map[string]interface{})
2523
if !ok {
2624
continue
2725
}
2826
engStat, ok := status["engineStatus"].(string)
2927
if ok {
28+
logrus.Infof("Engine Status :%s", engStat)
3029
if strings.ToLower(engStat) == "completed" {
31-
log.Print("[*] ENGINE COMPLETED")
30+
logrus.Info("[*] ENGINE COMPLETED")
3231
return
3332
} else if strings.ToLower(engStat) == "stopped" {
34-
log.Print("[!] ERROR : ENGINE STATUS STOPPED")
33+
logrus.Info("[!] ERROR : ENGINE STATUS STOPPED")
3534
return
3635
}
3736
}

custom/litmus-checker/pkg/k8s/client.go

+6-11
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,18 @@ type ResourceDef struct {
2828

2929
var decUnstructured = yaml.NewDecodingSerializer(unstructured.UnstructuredJSONScheme)
3030

31-
func CreateChaosDeployment(manifest []byte, kubeconfig *string) (*unstructured.Unstructured, error) {
32-
dc, dyn, err := GetDynamicClient(kubeconfig)
33-
if err != nil {
34-
return nil, err
35-
}
31+
func CreateChaosDeployment(manifest []byte, dc discovery.DiscoveryInterface, dyn dynamic.Interface) (*unstructured.Unstructured, error) {
32+
3633
mapper := restmapper.NewDeferredDiscoveryRESTMapper(memory.NewMemCacheClient(dc))
3734
// Decode YAML manifest into unstructured.Unstructured
3835
obj := &unstructured.Unstructured{}
39-
_, gvk, err := decUnstructured.Decode([]byte(manifest), nil, obj)
36+
_, gvk, err := decUnstructured.Decode(manifest, nil, obj)
4037
if err != nil {
4138
return nil, err
4239
}
40+
4341
if obj.GetKind() != "ChaosEngine" {
44-
return nil, errors.New("Not A ChaosEngine Spec")
42+
return nil, errors.New("not a ChaosEngine Spec")
4543
}
4644
// Find GVR
4745
mapping, err := mapper.RESTMapping(gvk.GroupKind(), gvk.Version)
@@ -84,10 +82,7 @@ func GetResourceDetails(dc discovery.DiscoveryInterface, dyn dynamic.Interface,
8482
func GetKubeConfig(kubeconfig *string) (*rest.Config, error) {
8583
// Use in-cluster config if kubeconfig path is specified
8684
if *kubeconfig == "" {
87-
config, err := rest.InClusterConfig()
88-
if err != nil {
89-
return config, err
90-
}
85+
return rest.InClusterConfig()
9186
}
9287
config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
9388
if err != nil {

custom/litmus-checker/pkg/util/utils.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package util
22

33
import (
4-
"log"
4+
"github.com/sirupsen/logrus"
55
"os"
66
)
77

88
func WriteToFile(engine, engineName string) error {
99
if engine == "" {
10-
log.Print("No output file provided skipping write")
10+
logrus.Info("No output file provided skipping write")
1111
return nil
1212
}
1313
f, err := os.Create(engine)

0 commit comments

Comments
 (0)