...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package awschaos
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/awschaos/detachvolume"
24 "github.com/chaos-mesh/chaos-mesh/controllers/chaosimpl/awschaos/ec2restart"
25 "github.com/chaos-mesh/chaos-mesh/controllers/chaosimpl/awschaos/ec2stop"
26 "github.com/chaos-mesh/chaos-mesh/controllers/chaosimpl/types"
27 )
28
29 type Impl struct {
30 fx.In
31
32 DetachVolume *detachvolume.Impl `action:"detach-volume"`
33 Ec2Restart *ec2restart.Impl `action:"ec2-restart"`
34 Ec2Stop *ec2stop.Impl `action:"ec2-stop"`
35 }
36
37 func NewImpl(impl Impl) *types.ChaosImplPair {
38 delegate := action.NewMultiplexer(&impl)
39 return &types.ChaosImplPair{
40 Name: "awschaos",
41 Object: &v1alpha1.AWSChaos{},
42 Impl: &delegate,
43 }
44 }
45
46 var Module = fx.Provide(
47 fx.Annotated{
48 Group: "impl",
49 Target: NewImpl,
50 },
51 detachvolume.NewImpl,
52 ec2restart.NewImpl,
53 ec2stop.NewImpl)
54