Skip to content

Commit 1396688

Browse files
authored
Merge branch 'master' into add-a-rds-instance-stop-chaos-fault
2 parents 33d4d7d + caae228 commit 1396688

File tree

123 files changed

+1633
-890
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

123 files changed

+1633
-890
lines changed

.github/workflows/build.yml

+2-9
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,6 @@ jobs:
1818
with:
1919
ref: ${{ github.event.pull_request.head.sha }}
2020

21-
#TODO: Add Dockerfile linting
22-
# Running go-lint
23-
- name: Checking Go-Lint
24-
run : |
25-
sudo apt-get update && sudo apt-get install golint
26-
make gotasks
27-
2821
- name: gofmt check
2922
run: |
3023
if [ "$(gofmt -s -l . | wc -l)" -ne 0 ]
@@ -33,7 +26,7 @@ jobs:
3326
gofmt -s -l .
3427
exit 1
3528
fi
36-
29+
3730
- name: golangci-lint
3831
uses: reviewdog/action-golangci-lint@v1
3932

@@ -93,7 +86,7 @@ jobs:
9386
- name: Build an image from Dockerfile
9487
run: |
9588
docker build -f build/Dockerfile -t docker.io/litmuschaos/go-runner:${{ github.sha }} . --build-arg TARGETARCH=amd64 --build-arg LITMUS_VERSION=3.10.0
96-
89+
9790
- name: Run Trivy vulnerability scanner
9891
uses: aquasecurity/trivy-action@master
9992
with:

.github/workflows/push.yml

+2-9
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,6 @@ jobs:
1616
go-version: '1.20'
1717
- uses: actions/checkout@v2
1818

19-
#TODO: Add Dockerfile linting
20-
# Running go-lint
21-
- name: Checking Go-Lint
22-
run : |
23-
sudo apt-get update && sudo apt-get install golint
24-
make gotasks
25-
2619
- name: gofmt check
2720
run: |
2821
if [ "$(gofmt -s -l . | wc -l)" -ne 0 ]
@@ -31,9 +24,9 @@ jobs:
3124
gofmt -s -l .
3225
exit 1
3326
fi
34-
27+
3528
- name: golangci-lint
36-
uses: reviewdog/action-golangci-lint@v1
29+
uses: reviewdog/action-golangci-lint@v1
3730

3831
push:
3932
needs: pre-checks

.github/workflows/release.yml

-6
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,6 @@ jobs:
1515
go-version: '1.20'
1616
- uses: actions/checkout@v2
1717

18-
#TODO: Add Dockerfile linting
19-
# Running go-lint
20-
- name: Checking Go-Lint
21-
run : |
22-
sudo apt-get update && sudo apt-get install golint
23-
make gotasks
2418
push:
2519
needs: pre-checks
2620
runs-on: ubuntu-latest

bin/experiment/experiment.go

+74-52
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package main
22

33
import (
4+
"context"
5+
"errors"
46
"flag"
7+
"os"
8+
59
// Uncomment to load all auth plugins
610
// _ "k8s.io/client-go/plugin/pkg/client/auth"
711

@@ -60,10 +64,11 @@ import (
6064
k6Loadgen "github.com/litmuschaos/litmus-go/experiments/load/k6-loadgen/experiment"
6165
springBootFaults "github.com/litmuschaos/litmus-go/experiments/spring-boot/spring-boot-faults/experiment"
6266
vmpoweroff "github.com/litmuschaos/litmus-go/experiments/vmware/vm-poweroff/experiment"
63-
64-
"github.com/litmuschaos/litmus-go/pkg/clients"
67+
cli "github.com/litmuschaos/litmus-go/pkg/clients"
6568
"github.com/litmuschaos/litmus-go/pkg/log"
69+
"github.com/litmuschaos/litmus-go/pkg/telemetry"
6670
"github.com/sirupsen/logrus"
71+
"go.opentelemetry.io/otel"
6772
)
6873

6974
func init() {
@@ -76,8 +81,25 @@ func init() {
7681
}
7782

7883
func main() {
84+
initCtx := context.Background()
85+
86+
// Set up Observability.
87+
if otelExporterEndpoint := os.Getenv(telemetry.OTELExporterOTLPEndpoint); otelExporterEndpoint != "" {
88+
shutdown, err := telemetry.InitOTelSDK(initCtx, true, otelExporterEndpoint)
89+
if err != nil {
90+
log.Errorf("Failed to initialize OTel SDK: %v", err)
91+
return
92+
}
93+
defer func() {
94+
err = errors.Join(err, shutdown(initCtx))
95+
}()
96+
initCtx = telemetry.GetTraceParentContext()
97+
}
98+
99+
clients := cli.ClientSets{}
79100

80-
clients := clients.ClientSets{}
101+
ctx, span := otel.Tracer(telemetry.TracerName).Start(initCtx, "ExecuteExperiment")
102+
defer span.End()
81103

82104
// parse the experiment name
83105
experimentName := flag.String("name", "pod-delete", "name of the chaos experiment")
@@ -93,103 +115,103 @@ func main() {
93115
// invoke the corresponding experiment based on the (-name) flag
94116
switch *experimentName {
95117
case "container-kill":
96-
containerKill.ContainerKill(clients)
118+
containerKill.ContainerKill(ctx, clients)
97119
case "disk-fill":
98-
diskFill.DiskFill(clients)
120+
diskFill.DiskFill(ctx, clients)
99121
case "kafka-broker-pod-failure":
100-
kafkaBrokerPodFailure.KafkaBrokerPodFailure(clients)
122+
kafkaBrokerPodFailure.KafkaBrokerPodFailure(ctx, clients)
101123
case "kubelet-service-kill":
102-
kubeletServiceKill.KubeletServiceKill(clients)
124+
kubeletServiceKill.KubeletServiceKill(ctx, clients)
103125
case "docker-service-kill":
104-
dockerServiceKill.DockerServiceKill(clients)
126+
dockerServiceKill.DockerServiceKill(ctx, clients)
105127
case "node-cpu-hog":
106-
nodeCPUHog.NodeCPUHog(clients)
128+
nodeCPUHog.NodeCPUHog(ctx, clients)
107129
case "node-drain":
108-
nodeDrain.NodeDrain(clients)
130+
nodeDrain.NodeDrain(ctx, clients)
109131
case "node-io-stress":
110-
nodeIOStress.NodeIOStress(clients)
132+
nodeIOStress.NodeIOStress(ctx, clients)
111133
case "node-memory-hog":
112-
nodeMemoryHog.NodeMemoryHog(clients)
134+
nodeMemoryHog.NodeMemoryHog(ctx, clients)
113135
case "node-taint":
114-
nodeTaint.NodeTaint(clients)
136+
nodeTaint.NodeTaint(ctx, clients)
115137
case "pod-autoscaler":
116-
podAutoscaler.PodAutoscaler(clients)
138+
podAutoscaler.PodAutoscaler(ctx, clients)
117139
case "pod-cpu-hog-exec":
118-
podCPUHogExec.PodCPUHogExec(clients)
140+
podCPUHogExec.PodCPUHogExec(ctx, clients)
119141
case "pod-delete":
120-
podDelete.PodDelete(clients)
142+
podDelete.PodDelete(ctx, clients)
121143
case "pod-io-stress":
122-
podIOStress.PodIOStress(clients)
144+
podIOStress.PodIOStress(ctx, clients)
123145
case "pod-memory-hog-exec":
124-
podMemoryHogExec.PodMemoryHogExec(clients)
146+
podMemoryHogExec.PodMemoryHogExec(ctx, clients)
125147
case "pod-network-corruption":
126-
podNetworkCorruption.PodNetworkCorruption(clients)
148+
podNetworkCorruption.PodNetworkCorruption(ctx, clients)
127149
case "pod-network-duplication":
128-
podNetworkDuplication.PodNetworkDuplication(clients)
150+
podNetworkDuplication.PodNetworkDuplication(ctx, clients)
129151
case "pod-network-latency":
130-
podNetworkLatency.PodNetworkLatency(clients)
152+
podNetworkLatency.PodNetworkLatency(ctx, clients)
131153
case "pod-network-loss":
132-
podNetworkLoss.PodNetworkLoss(clients)
154+
podNetworkLoss.PodNetworkLoss(ctx, clients)
133155
case "pod-network-partition":
134-
podNetworkPartition.PodNetworkPartition(clients)
156+
podNetworkPartition.PodNetworkPartition(ctx, clients)
135157
case "pod-memory-hog":
136-
podMemoryHog.PodMemoryHog(clients)
158+
podMemoryHog.PodMemoryHog(ctx, clients)
137159
case "pod-cpu-hog":
138-
podCPUHog.PodCPUHog(clients)
160+
podCPUHog.PodCPUHog(ctx, clients)
139161
case "cassandra-pod-delete":
140-
cassandraPodDelete.CasssandraPodDelete(clients)
162+
cassandraPodDelete.CasssandraPodDelete(ctx, clients)
141163
case "aws-ssm-chaos-by-id":
142-
awsSSMChaosByID.AWSSSMChaosByID(clients)
164+
awsSSMChaosByID.AWSSSMChaosByID(ctx, clients)
143165
case "aws-ssm-chaos-by-tag":
144-
awsSSMChaosByTag.AWSSSMChaosByTag(clients)
166+
awsSSMChaosByTag.AWSSSMChaosByTag(ctx, clients)
145167
case "ec2-terminate-by-id":
146-
ec2TerminateByID.EC2TerminateByID(clients)
168+
ec2TerminateByID.EC2TerminateByID(ctx, clients)
147169
case "ec2-terminate-by-tag":
148-
ec2TerminateByTag.EC2TerminateByTag(clients)
170+
ec2TerminateByTag.EC2TerminateByTag(ctx, clients)
149171
case "ebs-loss-by-id":
150-
ebsLossByID.EBSLossByID(clients)
172+
ebsLossByID.EBSLossByID(ctx, clients)
151173
case "ebs-loss-by-tag":
152-
ebsLossByTag.EBSLossByTag(clients)
153-
case "rds-instance-stop":
174+
ebsLossByTag.EBSLossByTag(ctx, clients)
175+
case "rds-instance-stop":
154176
rdsInstanceStop.RDSInstanceStop(clients)
155177
case "node-restart":
156-
nodeRestart.NodeRestart(clients)
178+
nodeRestart.NodeRestart(ctx, clients)
157179
case "pod-dns-error":
158-
podDNSError.PodDNSError(clients)
180+
podDNSError.PodDNSError(ctx, clients)
159181
case "pod-dns-spoof":
160-
podDNSSpoof.PodDNSSpoof(clients)
182+
podDNSSpoof.PodDNSSpoof(ctx, clients)
161183
case "pod-http-latency":
162-
podHttpLatency.PodHttpLatency(clients)
184+
podHttpLatency.PodHttpLatency(ctx, clients)
163185
case "pod-http-status-code":
164-
podHttpStatusCode.PodHttpStatusCode(clients)
186+
podHttpStatusCode.PodHttpStatusCode(ctx, clients)
165187
case "pod-http-modify-header":
166-
podHttpModifyHeader.PodHttpModifyHeader(clients)
188+
podHttpModifyHeader.PodHttpModifyHeader(ctx, clients)
167189
case "pod-http-modify-body":
168-
podHttpModifyBody.PodHttpModifyBody(clients)
190+
podHttpModifyBody.PodHttpModifyBody(ctx, clients)
169191
case "pod-http-reset-peer":
170-
podHttpResetPeer.PodHttpResetPeer(clients)
192+
podHttpResetPeer.PodHttpResetPeer(ctx, clients)
171193
case "vm-poweroff":
172-
vmpoweroff.VMPoweroff(clients)
194+
vmpoweroff.VMPoweroff(ctx, clients)
173195
case "azure-instance-stop":
174-
azureInstanceStop.AzureInstanceStop(clients)
196+
azureInstanceStop.AzureInstanceStop(ctx, clients)
175197
case "azure-disk-loss":
176-
azureDiskLoss.AzureDiskLoss(clients)
198+
azureDiskLoss.AzureDiskLoss(ctx, clients)
177199
case "gcp-vm-disk-loss":
178-
gcpVMDiskLoss.VMDiskLoss(clients)
200+
gcpVMDiskLoss.VMDiskLoss(ctx, clients)
179201
case "pod-fio-stress":
180-
podFioStress.PodFioStress(clients)
202+
podFioStress.PodFioStress(ctx, clients)
181203
case "gcp-vm-instance-stop":
182-
gcpVMInstanceStop.VMInstanceStop(clients)
204+
gcpVMInstanceStop.VMInstanceStop(ctx, clients)
183205
case "redfish-node-restart":
184-
redfishNodeRestart.NodeRestart(clients)
206+
redfishNodeRestart.NodeRestart(ctx, clients)
185207
case "gcp-vm-instance-stop-by-label":
186-
gcpVMInstanceStopByLabel.GCPVMInstanceStopByLabel(clients)
208+
gcpVMInstanceStopByLabel.GCPVMInstanceStopByLabel(ctx, clients)
187209
case "gcp-vm-disk-loss-by-label":
188-
gcpVMDiskLossByLabel.GCPVMDiskLossByLabel(clients)
210+
gcpVMDiskLossByLabel.GCPVMDiskLossByLabel(ctx, clients)
189211
case "spring-boot-cpu-stress", "spring-boot-memory-stress", "spring-boot-exceptions", "spring-boot-app-kill", "spring-boot-faults", "spring-boot-latency":
190-
springBootFaults.Experiment(clients, *experimentName)
212+
springBootFaults.Experiment(ctx, clients, *experimentName)
191213
case "k6-loadgen":
192-
k6Loadgen.Experiment(clients)
214+
k6Loadgen.Experiment(ctx, clients)
193215
default:
194216
log.Errorf("Unsupported -name %v, please provide the correct value of -name args", *experimentName)
195217
return

bin/helper/helper.go

+30-9
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package main
22

33
import (
4+
"context"
5+
"errors"
46
"flag"
7+
"os"
8+
59
// Uncomment to load all auth plugins
610
// _ "k8s.io/client-go/plugin/pkg/client/auth"
711

@@ -17,10 +21,11 @@ import (
1721
networkChaos "github.com/litmuschaos/litmus-go/chaoslib/litmus/network-chaos/helper"
1822
dnsChaos "github.com/litmuschaos/litmus-go/chaoslib/litmus/pod-dns-chaos/helper"
1923
stressChaos "github.com/litmuschaos/litmus-go/chaoslib/litmus/stress-chaos/helper"
20-
21-
"github.com/litmuschaos/litmus-go/pkg/clients"
24+
cli "github.com/litmuschaos/litmus-go/pkg/clients"
2225
"github.com/litmuschaos/litmus-go/pkg/log"
26+
"github.com/litmuschaos/litmus-go/pkg/telemetry"
2327
"github.com/sirupsen/logrus"
28+
"go.opentelemetry.io/otel"
2429
)
2530

2631
func init() {
@@ -33,8 +38,24 @@ func init() {
3338
}
3439

3540
func main() {
41+
ctx := context.Background()
42+
// Set up Observability.
43+
if otelExporterEndpoint := os.Getenv(telemetry.OTELExporterOTLPEndpoint); otelExporterEndpoint != "" {
44+
shutdown, err := telemetry.InitOTelSDK(ctx, true, otelExporterEndpoint)
45+
if err != nil {
46+
log.Errorf("Failed to initialize OTel SDK: %v", err)
47+
return
48+
}
49+
defer func() {
50+
err = errors.Join(err, shutdown(ctx))
51+
}()
52+
ctx = telemetry.GetTraceParentContext()
53+
}
54+
55+
clients := cli.ClientSets{}
3656

37-
clients := clients.ClientSets{}
57+
ctx, span := otel.Tracer(telemetry.TracerName).Start(ctx, "ExecuteExperimentHelper")
58+
defer span.End()
3859

3960
// parse the helper name
4061
helperName := flag.String("name", "", "name of the helper pod")
@@ -50,17 +71,17 @@ func main() {
5071
// invoke the corresponding helper based on the the (-name) flag
5172
switch *helperName {
5273
case "container-kill":
53-
containerKill.Helper(clients)
74+
containerKill.Helper(ctx, clients)
5475
case "disk-fill":
55-
diskFill.Helper(clients)
76+
diskFill.Helper(ctx, clients)
5677
case "dns-chaos":
57-
dnsChaos.Helper(clients)
78+
dnsChaos.Helper(ctx, clients)
5879
case "stress-chaos":
59-
stressChaos.Helper(clients)
80+
stressChaos.Helper(ctx, clients)
6081
case "network-chaos":
61-
networkChaos.Helper(clients)
82+
networkChaos.Helper(ctx, clients)
6283
case "http-chaos":
63-
httpChaos.Helper(clients)
84+
httpChaos.Helper(ctx, clients)
6485

6586
default:
6687
log.Errorf("Unsupported -name %v, please provide the correct value of -name args", *helperName)

0 commit comments

Comments
 (0)