Repository navigation
Expand file tree
/
Copy pathrollout_event.go
More file actions
121 lines (97 loc) · 3.86 KB
/
Copy pathrollout_event.go
File metadata and controls
121 lines (97 loc) · 3.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package webhooks
// RolloutEvent is the interface implemented by all rollout-related events.
type RolloutEvent interface {
GetRollout() *Rollout
GetEnv() *Environment
GetApp() *Application
}
// RolloutCreatedEvent describes the "rollout.created" webhook event.
type RolloutCreatedEvent struct {
// Rollout describes the current rollout state.
// It's always non-nil.
Rollout *Rollout `json:"rollout"`
// Env is the environment the rollout is targeting.
// It's always non-nil.
Env *Environment `json:"env"`
// App is the application the event is for.
// It's always non-nil.
App *Application `json:"app"`
}
func (e *RolloutCreatedEvent) GetRollout() *Rollout { return e.Rollout }
func (e *RolloutCreatedEvent) GetEnv() *Environment { return e.Env }
func (e *RolloutCreatedEvent) GetApp() *Application { return e.App }
// RolloutAwaitingInfraApprovalEvent describes the "rollout.awaiting_infra_approval" webhook event.
type RolloutAwaitingInfraApprovalEvent struct {
// Rollout describes the current rollout state.
// It's always non-nil.
Rollout *Rollout `json:"rollout"`
// Env is the environment the rollout is targeting.
// It's always non-nil.
Env *Environment `json:"env"`
// App is the application the event is for.
// It's always non-nil.
App *Application `json:"app"`
}
func (e *RolloutAwaitingInfraApprovalEvent) GetRollout() *Rollout { return e.Rollout }
func (e *RolloutAwaitingInfraApprovalEvent) GetEnv() *Environment { return e.Env }
func (e *RolloutAwaitingInfraApprovalEvent) GetApp() *Application { return e.App }
// RolloutCompletedEvent describes the "rollout.completed" webhook event.
type RolloutCompletedEvent struct {
// Rollout describes the current rollout state.
// It's always non-nil.
Rollout *Rollout `json:"rollout"`
// Env is the environment the rollout is targeting.
// It's always non-nil.
Env *Environment `json:"env"`
// App is the application the event is for.
// It's always non-nil.
App *Application `json:"app"`
}
// RolloutInfraApprovalResolution describes how an infrastructure approval was resolved.
type RolloutInfraApprovalResolution string
const (
// RolloutInfraApprovalApproved means the infrastructure change was approved.
RolloutInfraApprovalApproved RolloutInfraApprovalResolution = "approved"
// RolloutInfraApprovalRejected means the infrastructure change was rejected.
RolloutInfraApprovalRejected RolloutInfraApprovalResolution = "rejected"
)
// RolloutInfraApprovalResolvedEvent describes the "rollout.infra_approval_resolved" webhook event.
type RolloutInfraApprovalResolvedEvent struct {
// Rollout describes the current rollout state.
// It's always non-nil.
Rollout *Rollout `json:"rollout"`
// Env is the environment the rollout is targeting.
// It's always non-nil.
Env *Environment `json:"env"`
// App is the application the event is for.
// It's always non-nil.
App *Application `json:"app"`
// Resolution is the resolved status of the infrastructure changes.
Resolution RolloutInfraApprovalResolution `json:"resolution"`
}
func (e *RolloutInfraApprovalResolvedEvent) GetRollout() *Rollout {
return e.Rollout
}
func (e *RolloutInfraApprovalResolvedEvent) GetApp() *Application {
return e.App
}
func (e *RolloutInfraApprovalResolvedEvent) GetEnv() *Environment {
return e.Env
}
func (e *RolloutCompletedEvent) GetRollout() *Rollout { return e.Rollout }
func (e *RolloutCompletedEvent) GetEnv() *Environment { return e.Env }
func (e *RolloutCompletedEvent) GetApp() *Application { return e.App }
func parseRolloutEvent(typ string) (any, error) {
switch typ {
case "rollout.created":
return &RolloutCreatedEvent{}, nil
case "rollout.awaiting_infra_approval":
return &RolloutAwaitingInfraApprovalEvent{}, nil
case "rollout.infra_approval_resolved":
return &RolloutInfraApprovalResolvedEvent{}, nil
case "rollout.completed":
return &RolloutCompletedEvent{}, nil
default:
return nil, errUnknownEvent
}
}