1
1
package api
2
2
3
3
import (
4
+ "context"
4
5
"encoding/json"
5
6
"errors"
6
7
"fmt"
@@ -9,8 +10,10 @@ import (
9
10
merlin "github.com/caraml-dev/merlin/client"
10
11
mlp "github.com/caraml-dev/mlp/api/client"
11
12
13
+ "github.com/caraml-dev/turing/api/turing/log"
12
14
"github.com/caraml-dev/turing/api/turing/models"
13
15
"github.com/caraml-dev/turing/api/turing/service"
16
+ "github.com/caraml-dev/turing/api/turing/webhook"
14
17
"github.com/caraml-dev/turing/engines/experiment/manager"
15
18
)
16
19
@@ -25,6 +28,8 @@ func (c RouterDeploymentController) deployOrRollbackRouter(
25
28
router * models.Router ,
26
29
routerVersion * models.RouterVersion ,
27
30
) error {
31
+ ctx := context .Background ()
32
+
28
33
// Get the router environment
29
34
environment , err := c .MLPService .GetEnvironment (router .EnvironmentName )
30
35
if err != nil {
@@ -48,7 +53,7 @@ func (c RouterDeploymentController) deployOrRollbackRouter(
48
53
"starting deployment for router %s version %d" , router .Name , routerVersion .Version ))
49
54
50
55
// Deploy the given router version
51
- endpoint , err := c .deployRouterVersion (project , environment , routerVersion , eventsCh )
56
+ endpoint , err := c .deployRouterVersion (ctx , project , environment , routerVersion , eventsCh )
52
57
53
58
// Start accumulating non-critical errors
54
59
errorStrings := make ([]string , 0 )
@@ -93,6 +98,16 @@ func (c RouterDeploymentController) deployOrRollbackRouter(
93
98
}
94
99
95
100
err = errors .New (strings .Join (errorStrings , ". " ))
101
+
102
+ // call webhook for router un-deployment event
103
+ if errWebhook := c .webhookClient .TriggerRouterDeploymentEvent (
104
+ ctx , webhook .OnRouterUndeployed , routerVersion , uint (router .ProjectID ),
105
+ ); errWebhook != nil {
106
+ log .Warnf (
107
+ "Error triggering webhook for event %s, router id: %d, router version id: %d, %v" ,
108
+ webhook .OnRouterUndeployed , router .ID , routerVersion .ID , errWebhook ,
109
+ )
110
+ }
96
111
return err
97
112
}
98
113
@@ -110,6 +125,16 @@ func (c RouterDeploymentController) deployOrRollbackRouter(
110
125
eventsCh .Write (models .NewInfoEvent (models .EventStageUndeployingPreviousVersion ,
111
126
"successfully undeployed previously deployed version %d" ,
112
127
router .CurrRouterVersion .Version ))
128
+
129
+ // call webhook for router un-deployment event
130
+ if errWebhook := c .webhookClient .TriggerRouterDeploymentEvent (
131
+ ctx , webhook .OnRouterUndeployed , currVersion , uint (router .ProjectID ),
132
+ ); errWebhook != nil {
133
+ log .Warnf (
134
+ "Error triggering webhook for event %s, router id: %d, router version id: %d, %v" ,
135
+ webhook .OnRouterUndeployed , router .ID , currVersion .ID , errWebhook ,
136
+ )
137
+ }
113
138
}
114
139
}
115
140
@@ -149,6 +174,7 @@ func (c RouterDeploymentController) writeDeploymentEvents(
149
174
// (current version reference, status, endpoint, etc.) are not in the scope of this method.
150
175
// This method returns the new router endpoint (if successful) and any error.
151
176
func (c RouterDeploymentController ) deployRouterVersion (
177
+ ctx context.Context ,
152
178
project * mlp.Project ,
153
179
environment * merlin.Environment ,
154
180
routerVersion * models.RouterVersion ,
@@ -273,6 +299,17 @@ func (c RouterDeploymentController) deployRouterVersion(
273
299
// Deploy succeeded - update version's status to deployed and return endpoint
274
300
routerVersion .Status = models .RouterVersionStatusDeployed
275
301
_ , err = c .RouterVersionsService .Save (routerVersion )
302
+
303
+ // call webhook for router deployment event
304
+ if errWebhook := c .webhookClient .TriggerRouterDeploymentEvent (
305
+ ctx , webhook .OnRouterDeployed , routerVersion , uint (router .ProjectID ),
306
+ ); errWebhook != nil {
307
+ log .Warnf (
308
+ "Error triggering webhook for event %s, router id: %d, router version id: %d, %v" ,
309
+ webhook .OnRouterDeployed , router .ID , routerVersion .ID , errWebhook ,
310
+ )
311
+ }
312
+
276
313
return endpoint , err
277
314
}
278
315
0 commit comments