...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package gcpchaos
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/gcpchaos/diskloss"
24 "github.com/chaos-mesh/chaos-mesh/controllers/chaosimpl/gcpchaos/nodereset"
25 "github.com/chaos-mesh/chaos-mesh/controllers/chaosimpl/gcpchaos/nodestop"
26 impltypes "github.com/chaos-mesh/chaos-mesh/controllers/chaosimpl/types"
27 )
28
29 type Impl struct {
30 fx.In
31
32 DiskLoss *diskloss.Impl `action:"disk-loss"`
33 NodeReset *nodereset.Impl `action:"node-reset"`
34 NodeStop *nodestop.Impl `action:"node-stop"`
35 }
36
37 func NewImpl(impl Impl) *impltypes.ChaosImplPair {
38 delegate := action.NewMultiplexer(&impl)
39 return &impltypes.ChaosImplPair{
40 Name: "gcpchaos",
41 Object: &v1alpha1.GCPChaos{},
42 Impl: &delegate,
43 }
44 }
45
46 var Module = fx.Provide(
47 fx.Annotated{
48 Group: "impl",
49 Target: NewImpl,
50 },
51 diskloss.NewImpl,
52 nodereset.NewImpl,
53 nodestop.NewImpl)
54