...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package v1alpha1
17
18 import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
19
20
21
22
23
24
25
26 type BlockChaos struct {
27 metav1.TypeMeta `json:",inline"`
28 metav1.ObjectMeta `json:"metadata,omitempty"`
29
30 Spec BlockChaosSpec `json:"spec"`
31 Status BlockChaosStatus `json:"status,omitempty"`
32 }
33
34 type BlockChaosAction string
35
36 const (
37 BlockDelay BlockChaosAction = "delay"
38 )
39
40
41 type BlockChaosSpec struct {
42
43
44
45 Action BlockChaosAction `json:"action"`
46
47
48
49 Delay *BlockDelaySpec `json:"delay,omitempty"`
50
51 ContainerNodeVolumePathSelector `json:",inline"`
52
53
54
55 Duration *string `json:"duration,omitempty" webhook:"Duration"`
56
57
58
59 RemoteCluster string `json:"remoteCluster,omitempty"`
60 }
61
62
63 type BlockDelaySpec struct {
64
65 Latency string `json:"latency,omitempty" webhook:"Duration"`
66
67
68 Correlation string `json:"correlation,omitempty" default:"0" webhook:"FloatStr"`
69
70
71 Jitter string `json:"jitter,omitempty" default:"0ms" webhook:"Duration"`
72 }
73
74
75 type ContainerNodeVolumePathSelector struct {
76 ContainerSelector `json:",inline"`
77
78 VolumeName string `json:"volumeName"`
79 }
80
81
82 type BlockChaosStatus struct {
83 ChaosStatus `json:",inline"`
84
85
86
87 InjectionIds map[string]int `json:"ids,omitempty"`
88 }
89
90 func (obj *BlockChaos) GetSelectorSpecs() map[string]interface{} {
91 return map[string]interface{}{
92 ".": &obj.Spec.ContainerNodeVolumePathSelector,
93 }
94 }
95
96 func (obj *BlockChaos) GetCustomStatus() interface{} {
97 return &obj.Status.InjectionIds
98 }
99