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