...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package podchaos
17
18 import (
19 "go.uber.org/fx"
20
21 "github.com/chaos-mesh/chaos-mesh/api/v1alpha1"
22 "github.com/chaos-mesh/chaos-mesh/controllers/action"
23 "github.com/chaos-mesh/chaos-mesh/controllers/chaosimpl/podchaos/containerkill"
24 "github.com/chaos-mesh/chaos-mesh/controllers/chaosimpl/podchaos/podfailure"
25 "github.com/chaos-mesh/chaos-mesh/controllers/chaosimpl/podchaos/podkill"
26 impltypes "github.com/chaos-mesh/chaos-mesh/controllers/chaosimpl/types"
27 )
28
29 type Impl struct {
30 fx.In
31
32 PodKill *podkill.Impl `action:"pod-kill"`
33 PodFailure *podfailure.Impl `action:"pod-failure"`
34 ContainerKill *containerkill.Impl `action:"container-kill"`
35 }
36
37 func NewImpl(impl Impl) *impltypes.ChaosImplPair {
38 delegate := action.NewMultiplexer(&impl)
39 return &impltypes.ChaosImplPair{
40 Name: "podchaos",
41 Object: &v1alpha1.PodChaos{},
42 Impl: &delegate,
43 }
44 }
45
46 var Module = fx.Provide(
47 fx.Annotated{
48 Group: "impl",
49 Target: NewImpl,
50 },
51 podkill.NewImpl,
52 podfailure.NewImpl,
53 containerkill.NewImpl,
54 )
55