Skip to content

Commit 09a62c0

Browse files
authored
chore(sidecar): adding sidecar to the experiment pod (#190)
* chore(sidecar): adding sidecar to the experiment pod Signed-off-by: Shubham Chaudhary <[email protected]> * updating go mod Signed-off-by: Shubham Chaudhary <[email protected]> * chore(sidecar): adding env and envFrom fields Signed-off-by: Shubham Chaudhary <[email protected]> Signed-off-by: Shubham Chaudhary <[email protected]>
1 parent 8357b15 commit 09a62c0

7 files changed

Lines changed: 221 additions & 49 deletions

File tree

bin/runner.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,13 @@ func main() {
7272
engineDetails.ExperimentSkippedPatchEngine(&experiment, clients)
7373
continue
7474
}
75+
// derive the sidecar details from chaosengine
76+
if err := experiment.SetSideCarDetails(engineDetails.Name, clients); err != nil {
77+
log.Errorf("unable to get sidecar details, error: %v", err)
78+
experiment.ExperimentSkipped(utils.ExperimentSideCarPatchErrorReason, engineDetails, clients)
79+
engineDetails.ExperimentSkippedPatchEngine(&experiment, clients)
80+
continue
81+
}
7582

7683
log.Infof("Preparing to run Chaos Experiment: %v", experiment.Name)
7784

go.mod

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,24 @@ go 1.18
44

55
require (
66
github.com/jpillora/go-ogle-analytics v0.0.0-20161213085824-14b04e0594ef
7-
github.com/litmuschaos/chaos-operator v0.0.0-20221121155030-e5b440b5cd82
8-
github.com/litmuschaos/elves v0.0.0-20210325101625-5620f93aed51
7+
github.com/litmuschaos/chaos-operator v0.0.0-20230109130222-de7c74a937a9
8+
github.com/litmuschaos/elves v0.0.0-20230109130230-d8c7345dd5ba
99
github.com/litmuschaos/litmus-go v0.0.0-20221116073419-e9a880ac55c9
1010
github.com/onsi/ginkgo v1.16.5
1111
github.com/onsi/gomega v1.15.0
1212
github.com/pkg/errors v0.9.1
1313
github.com/sirupsen/logrus v1.7.0
1414
github.com/stretchr/testify v1.7.0
15-
k8s.io/api v0.22.2
16-
k8s.io/apimachinery v0.22.2
15+
k8s.io/api v0.26.0
16+
k8s.io/apimachinery v0.26.0
1717
k8s.io/client-go v12.0.0+incompatible
1818
)
1919

2020
require (
2121
github.com/davecgh/go-spew v1.1.1 // indirect
2222
github.com/evanphx/json-patch v4.11.0+incompatible // indirect
2323
github.com/fsnotify/fsnotify v1.4.9 // indirect
24-
github.com/go-logr/logr v0.4.0 // indirect
24+
github.com/go-logr/logr v1.2.3 // indirect
2525
github.com/gogo/protobuf v1.3.2 // indirect
2626
github.com/golang/protobuf v1.5.2 // indirect
2727
github.com/google/go-cmp v0.5.6 // indirect
@@ -35,23 +35,23 @@ require (
3535
github.com/nxadm/tail v1.4.8 // indirect
3636
github.com/pmezard/go-difflib v1.0.0 // indirect
3737
github.com/spf13/pflag v1.0.5 // indirect
38-
golang.org/x/net v0.0.0-20220906165146-f3363e06e74c // indirect
38+
golang.org/x/net v0.3.1-0.20221206200815-1e63c2f08a10 // indirect
3939
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c // indirect
40-
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 // indirect
41-
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
42-
golang.org/x/text v0.3.8 // indirect
40+
golang.org/x/sys v0.3.0 // indirect
41+
golang.org/x/term v0.3.0 // indirect
42+
golang.org/x/text v0.5.0 // indirect
4343
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect
4444
google.golang.org/appengine v1.6.7 // indirect
4545
google.golang.org/protobuf v1.26.0 // indirect
4646
gopkg.in/inf.v0 v0.9.1 // indirect
4747
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
4848
gopkg.in/yaml.v2 v2.4.0 // indirect
4949
gopkg.in/yaml.v3 v3.0.1 // indirect
50-
k8s.io/klog/v2 v2.9.0 // indirect
50+
k8s.io/klog/v2 v2.80.1 // indirect
5151
k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e // indirect
52-
k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a // indirect
52+
k8s.io/utils v0.0.0-20221107191617-1a15be271d1d // indirect
5353
sigs.k8s.io/controller-runtime v0.10.0 // indirect
54-
sigs.k8s.io/structured-merge-diff/v4 v4.1.2 // indirect
54+
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
5555
sigs.k8s.io/yaml v1.2.0 // indirect
5656
)
5757

go.sum

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,10 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V
121121
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
122122
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
123123
github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
124-
github.com/go-logr/logr v0.4.0 h1:K7/B1jt6fIBQVd4Owv2MqGQClcgf0R266+7C/QjRcLc=
125124
github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
125+
github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
126+
github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
127+
github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
126128
github.com/go-logr/zapr v0.4.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk=
127129
github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg=
128130
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
@@ -269,10 +271,10 @@ github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
269271
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
270272
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
271273
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
272-
github.com/litmuschaos/chaos-operator v0.0.0-20221121155030-e5b440b5cd82 h1:+9bva8qc3SGBMuKzsggUOvNgqQKE7ttFgnnkO19y9Ug=
273-
github.com/litmuschaos/chaos-operator v0.0.0-20221121155030-e5b440b5cd82/go.mod h1:CJGiHqC06PQkIBySk/JroB7B2zFebDbkhQ1A6ZbYmHA=
274-
github.com/litmuschaos/elves v0.0.0-20210325101625-5620f93aed51 h1:6CpcGjZsVHMRSB/Z8z9+ectmb1KuQUiy+244jISNhBA=
275-
github.com/litmuschaos/elves v0.0.0-20210325101625-5620f93aed51/go.mod h1:DsbHGNUq/78NZozWVVI9Q6eBei4I+JjlkkD5aibJ3MQ=
274+
github.com/litmuschaos/chaos-operator v0.0.0-20230109130222-de7c74a937a9 h1:5VkAw2Zqf6xXEElnmFTVuNiP+YVZqH2Qr2t/yv6eI5g=
275+
github.com/litmuschaos/chaos-operator v0.0.0-20230109130222-de7c74a937a9/go.mod h1:jRA6jKGed6ytLDJ7897yr2Kr2ygg+cuRXJqwvNmE4Bw=
276+
github.com/litmuschaos/elves v0.0.0-20230109130230-d8c7345dd5ba h1:q5EULSiKKOKwPadKNw2o0rF3z0rYbzskzTysx+5N+7s=
277+
github.com/litmuschaos/elves v0.0.0-20230109130230-d8c7345dd5ba/go.mod h1:N4ljNnCRBeKgKw1zThi6wbQGQ2b6tlXb4eCVQRLJIvE=
276278
github.com/litmuschaos/litmus-go v0.0.0-20221116073419-e9a880ac55c9 h1:VNr03EWAFkwvw0lCKL59PZa9gAGa67SUAsdVhcGlZjQ=
277279
github.com/litmuschaos/litmus-go v0.0.0-20221116073419-e9a880ac55c9/go.mod h1:7yx79CsQSP4lS/DYIif0Mp8SQ3g5fi3RZHPh+UiFh80=
278280
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
@@ -502,8 +504,8 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R
502504
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
503505
golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
504506
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
505-
golang.org/x/net v0.0.0-20220906165146-f3363e06e74c h1:yKufUcDwucU5urd+50/Opbt4AYpqthk7wHpHok8f1lo=
506-
golang.org/x/net v0.0.0-20220906165146-f3363e06e74c/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
507+
golang.org/x/net v0.3.1-0.20221206200815-1e63c2f08a10 h1:Frnccbp+ok2GkUS2tC84yAq/U9Vg+0sIO7aRL3T4Xnc=
508+
golang.org/x/net v0.3.1-0.20221206200815-1e63c2f08a10/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
507509
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
508510
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
509511
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -572,22 +574,22 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w
572574
golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
573575
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
574576
golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
575-
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 h1:WIoqL4EROvwiPdUtaip4VcDdpZ4kha7wBWZrbVKCIZg=
576-
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
577+
golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ=
578+
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
577579
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
578580
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
579581
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
580-
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
581-
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
582+
golang.org/x/term v0.3.0 h1:qoo4akIqOcDME5bhc/NgxUdovd6BSS2uMsVjB56q1xI=
583+
golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
582584
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
583585
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
584586
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
585587
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
586588
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
587589
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
588590
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
589-
golang.org/x/text v0.3.8 h1:nAL+RVCQ9uMn3vJZbV+MRnydTJFPf8qqY42YiA6MrqY=
590-
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
591+
golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
592+
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
591593
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
592594
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
593595
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -787,15 +789,15 @@ k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAE
787789
k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
788790
k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
789791
k8s.io/klog/v2 v2.8.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec=
790-
k8s.io/klog/v2 v2.9.0 h1:D7HV+n1V57XeZ0m6tdRkfknthUaM06VFbWldOFh8kzM=
791-
k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec=
792+
k8s.io/klog/v2 v2.80.1 h1:atnLQ121W371wYYFawwYx1aEY2eUfs4l3J72wtgAwV4=
793+
k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
792794
k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE=
793795
k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e h1:KLHHjkdQFomZy8+06csTWZ0m1343QqxZhR2LJ1OxCYM=
794796
k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw=
795797
k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
796798
k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
797-
k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a h1:8dYfu/Fc9Gz2rNJKB9IQRGgQOh2clmRzNIPPY1xLY5g=
798-
k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
799+
k8s.io/utils v0.0.0-20221107191617-1a15be271d1d h1:0Smp/HP1OH4Rvhe+4B8nWGERtlqAGSftbSbbmm45oFs=
800+
k8s.io/utils v0.0.0-20221107191617-1a15be271d1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
799801
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
800802
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
801803
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
@@ -804,8 +806,8 @@ sigs.k8s.io/controller-runtime v0.10.0 h1:HgyZmMpjUOrtkaFtCnfxsR1bGRuFoAczSNbn2M
804806
sigs.k8s.io/controller-runtime v0.10.0/go.mod h1:GCdh6kqV6IY4LK0JLwX0Zm6g233RtVGdb/f0+KSfprg=
805807
sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
806808
sigs.k8s.io/structured-merge-diff/v4 v4.1.0/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
807-
sigs.k8s.io/structured-merge-diff/v4 v4.1.2 h1:Hr/htKFmJEbtMgS/UD0N+gtgctAqz81t3nu+sPzynno=
808-
sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
809+
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE=
810+
sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E=
809811
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
810812
sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
811813
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=

pkg/utils/builders.go

Lines changed: 78 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package utils
22

33
import (
44
"context"
5+
"github.com/litmuschaos/chaos-operator/api/litmuschaos/v1alpha1"
56
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
67
"reflect"
78

@@ -31,15 +32,11 @@ func buildContainerSpec(experiment *ExperimentDetails, envVars []corev1.EnvVar)
3132
WithEnvsNew(envVars)
3233

3334
if !reflect.DeepEqual(experiment.SecurityContext.ContainerSecurityContext, corev1.SecurityContext{}) {
34-
3535
containerSpec.WithSecurityContext(experiment.SecurityContext.ContainerSecurityContext)
36-
3736
}
3837

3938
if !reflect.DeepEqual(experiment.ResourceRequirements, corev1.ResourceRequirements{}) {
40-
4139
containerSpec.WithResourceRequirements(experiment.ResourceRequirements)
42-
4340
}
4441

4542
if experiment.VolumeOpts.VolumeMounts != nil {
@@ -56,6 +53,45 @@ func buildContainerSpec(experiment *ExperimentDetails, envVars []corev1.EnvVar)
5653

5754
}
5855

56+
// buildSideCarSpec builds a Container with following properties
57+
func buildSideCarSpec(experiment *ExperimentDetails) ([]*container.Builder, error) {
58+
var sidecarContainers []*container.Builder
59+
60+
for _, sidecar := range experiment.SideCars {
61+
var volumeOpts VolumeOpts
62+
63+
if len(sidecar.Secrets) != 0 {
64+
volumeOpts.NewVolumeMounts().BuildVolumeMountsForSecrets(sidecar.Secrets)
65+
}
66+
67+
containerSpec := container.NewBuilder().
68+
WithName(experiment.JobName + "-sidecar-" + RandomString()).
69+
WithImage(sidecar.Image).
70+
WithImagePullPolicy(sidecar.ImagePullPolicy).
71+
WithEnvsNew(sidecar.ENV)
72+
73+
if !reflect.DeepEqual(experiment.ResourceRequirements, corev1.ResourceRequirements{}) {
74+
containerSpec.WithResourceRequirements(experiment.ResourceRequirements)
75+
}
76+
77+
if volumeOpts.VolumeMounts != nil {
78+
containerSpec.WithVolumeMountsNew(volumeOpts.VolumeMounts)
79+
}
80+
81+
if len(sidecar.EnvFrom) != 0 {
82+
containerSpec.WithEnvsFrom(sidecar.EnvFrom)
83+
}
84+
85+
if _, err := containerSpec.Build(); err != nil {
86+
return nil, err
87+
}
88+
89+
sidecarContainers = append(sidecarContainers, containerSpec)
90+
}
91+
92+
return sidecarContainers, err
93+
}
94+
5995
func getEnvFromMap(m map[string]corev1.EnvVar) []corev1.EnvVar {
6096
var envVars []corev1.EnvVar
6197
for _, v := range m {
@@ -86,8 +122,19 @@ func BuildingAndLaunchJob(experiment *ExperimentDetails, clients ClientSets) err
86122
if err != nil {
87123
return errors.Errorf("unable to build Container for Chaos Experiment, error: %v", err)
88124
}
125+
126+
containers := []*container.Builder{containerForPod}
127+
128+
if len(experiment.SideCars) != 0 {
129+
sidecars, err := buildSideCarSpec(experiment)
130+
if err != nil {
131+
return errors.Errorf("unable to build sidecar Container for Chaos Experiment, error: %v", err)
132+
}
133+
containers = append(containers, sidecars...)
134+
}
135+
89136
// Will build a PodSpecTemplate
90-
pod, err := buildPodTemplateSpec(experiment, containerForPod)
137+
pod, err := buildPodTemplateSpec(experiment, containers...)
91138
if err != nil {
92139

93140
return errors.Errorf("unable to build PodTemplateSpec for Chaos Experiment, error: %v", err)
@@ -115,8 +162,8 @@ func (expDetails *ExperimentDetails) launchJob(job *batchv1.Job, clients ClientS
115162
return err
116163
}
117164

118-
// BuildPodTemplateSpec return a PodTempplateSpec
119-
func buildPodTemplateSpec(experiment *ExperimentDetails, containerForPod *container.Builder) (*podtemplatespec.Builder, error) {
165+
// BuildPodTemplateSpec return a PodTemplateSpec
166+
func buildPodTemplateSpec(experiment *ExperimentDetails, containers ...*container.Builder) (*podtemplatespec.Builder, error) {
120167
podtemplate := podtemplatespec.NewBuilder().
121168
WithName(experiment.JobName).
122169
WithNamespace(experiment.Namespace).
@@ -125,7 +172,7 @@ func buildPodTemplateSpec(experiment *ExperimentDetails, containerForPod *contai
125172
WithRestartPolicy(corev1.RestartPolicyNever).
126173
WithVolumeBuilders(experiment.VolumeOpts.VolumeBuilders).
127174
WithAnnotations(experiment.Annotations).
128-
WithContainerBuildersNew(containerForPod)
175+
WithContainerBuildersNew(containers...)
129176

130177
if experiment.TerminationGracePeriodSeconds != 0 {
131178
podtemplate.WithTerminationGracePeriodSeconds(experiment.TerminationGracePeriodSeconds)
@@ -137,6 +184,15 @@ func buildPodTemplateSpec(experiment *ExperimentDetails, containerForPod *contai
137184

138185
}
139186

187+
if len(experiment.SideCars) != 0 {
188+
secrets := setSidecarSecrets(experiment)
189+
if len(secrets) != 0 {
190+
var volumeOpts VolumeOpts
191+
volumeOpts.NewVolumeBuilder().BuildVolumeBuilderForSecrets(secrets)
192+
podtemplate.WithVolumeBuilders(volumeOpts.VolumeBuilders)
193+
}
194+
}
195+
140196
if experiment.HostPID {
141197
podtemplate.WithHostPID(experiment.HostPID)
142198
}
@@ -159,6 +215,20 @@ func buildPodTemplateSpec(experiment *ExperimentDetails, containerForPod *contai
159215
return podtemplate, nil
160216
}
161217

218+
func setSidecarSecrets(experiment *ExperimentDetails) []v1alpha1.Secret {
219+
var secrets []v1alpha1.Secret
220+
secretMap := make(map[string]bool)
221+
for _, sidecar := range experiment.SideCars {
222+
for _, secret := range sidecar.Secrets {
223+
if _, ok := secretMap[secret.Name]; !ok {
224+
secretMap[secret.Name] = true
225+
secrets = append(secrets, secret)
226+
}
227+
}
228+
}
229+
return secrets
230+
}
231+
162232
// BuildJobSpec returns a JobSpec
163233
func buildJobSpec(pod *podtemplatespec.Builder) (*jobspec.Builder, error) {
164234
jobSpecObj := jobspec.NewBuilder().

0 commit comments

Comments
 (0)