Skip to content

Commit b207e5f

Browse files
committed
modify event webhook for deploy and undeploy router
1 parent 80e7ac5 commit b207e5f

File tree

9 files changed

+124
-44
lines changed

9 files changed

+124
-44
lines changed

api/go.mod

+3-5
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ require (
88
github.com/GoogleCloudPlatform/spark-on-k8s-operator v0.0.0-20221025152940-c261df66a006
99
github.com/antihax/optional v1.0.0
1010
github.com/caraml-dev/merlin v0.0.0
11-
github.com/caraml-dev/mlp v1.13.2
11+
github.com/caraml-dev/mlp v1.12.0
1212
github.com/caraml-dev/turing/engines/experiment v0.0.0
1313
github.com/caraml-dev/turing/engines/router v0.0.0
1414
github.com/caraml-dev/universal-prediction-interface v0.3.6
@@ -33,7 +33,7 @@ require (
3333
github.com/pkg/errors v0.9.1
3434
github.com/rs/cors v1.8.2
3535
github.com/spf13/viper v1.13.0
36-
github.com/stretchr/testify v1.9.0
36+
github.com/stretchr/testify v1.8.4
3737
github.com/xanzy/go-gitlab v0.32.0
3838
go.uber.org/zap v1.26.0
3939
golang.org/x/oauth2 v0.18.0
@@ -66,7 +66,6 @@ require (
6666
github.com/VividCortex/ewma v1.2.0 // indirect
6767
github.com/ajg/form v1.5.1 // indirect
6868
github.com/andybalholm/brotli v1.0.5 // indirect
69-
github.com/avast/retry-go/v4 v4.6.0 // indirect
7069
github.com/beorn7/perks v1.0.1 // indirect
7170
github.com/blendle/zapdriver v1.3.1 // indirect
7271
github.com/buger/jsonparser v1.1.1 // indirect
@@ -186,7 +185,7 @@ require (
186185
github.com/spf13/cobra v1.8.0 // indirect
187186
github.com/spf13/jwalterweatherman v1.1.0 // indirect
188187
github.com/spf13/pflag v1.0.5 // indirect
189-
github.com/stretchr/objx v0.5.2 // indirect
188+
github.com/stretchr/objx v0.5.0 // indirect
190189
github.com/subosito/gotenv v1.4.1 // indirect
191190
github.com/uber/jaeger-client-go v2.25.0+incompatible // indirect
192191
github.com/uber/jaeger-lib v2.4.0+incompatible // indirect
@@ -252,7 +251,6 @@ replace (
252251

253252
github.com/caraml-dev/turing/engines/experiment => ../engines/experiment
254253
github.com/caraml-dev/turing/engines/router => ../engines/router
255-
github.com/go-gota/gota => github.com/gojekfarm/gota v0.12.1-0.20230221101638-6cd9260bd598
256254

257255
k8s.io/klog/v2 => k8s.io/klog/v2 v2.120.1
258256
knative.dev/pkg => knative.dev/pkg v0.0.0-20240116073220-b488e7be5902

api/go.sum

+5-8
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,6 @@ github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwc
7272
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
7373
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
7474
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
75-
github.com/avast/retry-go/v4 v4.6.0 h1:K9xNA+KeB8HHc2aWFuLb25Offp+0iVRXEvFx8IinRJA=
76-
github.com/avast/retry-go/v4 v4.6.0/go.mod h1:gvWlPhBVsvBbLkVGDg/KwvBv0bEkCOLRRSHKIr2PyOE=
7775
github.com/aws/aws-sdk-go v1.17.7/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
7876
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
7977
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
@@ -86,8 +84,8 @@ github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMU
8684
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
8785
github.com/caraml-dev/merlin/api v0.0.0-20240313065547-6778bd14c119 h1:8zt/6B7ySOokLa7WDpjaybBOL8x5C35nbMIrKFMsZcg=
8886
github.com/caraml-dev/merlin/api v0.0.0-20240313065547-6778bd14c119/go.mod h1:b2MbvZaVUSJQaoF0AuEgwTVVYK8lPHCIvnYpfvnjkQY=
89-
github.com/caraml-dev/mlp v1.13.2-rc2 h1:Zmyoy3OTPv2fU+42rxMwUt9erS9J6QA0nlZQy/xCPtk=
90-
github.com/caraml-dev/mlp v1.13.2-rc2/go.mod h1:jKfnUEpCcARv/aJF6qH7vT7VMKICDVOq/pDFvj6V3vQ=
87+
github.com/caraml-dev/mlp v1.12.0 h1:yb/EgMh+83oKj0C1AhH3R6xt0eSd9GX+incZEOwM7oo=
88+
github.com/caraml-dev/mlp v1.12.0/go.mod h1:Zdz4bALO9WOHXhOgsoLmCjMCJnDVEZEnQFg8rk+u2cE=
9189
github.com/caraml-dev/universal-prediction-interface v0.3.6 h1:G/D4aukfjLECl8armJqFy/R2+0u/f4AiurSFqAo33uQ=
9290
github.com/caraml-dev/universal-prediction-interface v0.3.6/go.mod h1:e0qmFOXQxx8HFg5ObYyQO3WVnrqsr5v5JApFmeF7eJo=
9391
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
@@ -694,9 +692,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
694692
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
695693
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
696694
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
695+
github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
697696
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
698-
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
699-
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
700697
github.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
701698
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
702699
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
@@ -708,8 +705,8 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
708705
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
709706
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
710707
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
711-
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
712-
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
708+
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
709+
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
713710
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
714711
github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs=
715712
github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0=

api/turing/api/deployment_controller.go

+38-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package api
22

33
import (
4+
"context"
45
"encoding/json"
56
"errors"
67
"fmt"
@@ -9,8 +10,10 @@ import (
910
merlin "github.com/caraml-dev/merlin/client"
1011
mlp "github.com/caraml-dev/mlp/api/client"
1112

13+
"github.com/caraml-dev/turing/api/turing/log"
1214
"github.com/caraml-dev/turing/api/turing/models"
1315
"github.com/caraml-dev/turing/api/turing/service"
16+
"github.com/caraml-dev/turing/api/turing/webhook"
1417
"github.com/caraml-dev/turing/engines/experiment/manager"
1518
)
1619

@@ -25,6 +28,8 @@ func (c RouterDeploymentController) deployOrRollbackRouter(
2528
router *models.Router,
2629
routerVersion *models.RouterVersion,
2730
) error {
31+
ctx := context.Background()
32+
2833
// Get the router environment
2934
environment, err := c.MLPService.GetEnvironment(router.EnvironmentName)
3035
if err != nil {
@@ -48,7 +53,7 @@ func (c RouterDeploymentController) deployOrRollbackRouter(
4853
"starting deployment for router %s version %d", router.Name, routerVersion.Version))
4954

5055
// Deploy the given router version
51-
endpoint, err := c.deployRouterVersion(project, environment, routerVersion, eventsCh)
56+
endpoint, err := c.deployRouterVersion(ctx, project, environment, routerVersion, eventsCh)
5257

5358
// Start accumulating non-critical errors
5459
errorStrings := make([]string, 0)
@@ -93,6 +98,16 @@ func (c RouterDeploymentController) deployOrRollbackRouter(
9398
}
9499

95100
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+
}
96111
return err
97112
}
98113

@@ -110,6 +125,16 @@ func (c RouterDeploymentController) deployOrRollbackRouter(
110125
eventsCh.Write(models.NewInfoEvent(models.EventStageUndeployingPreviousVersion,
111126
"successfully undeployed previously deployed version %d",
112127
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+
}
113138
}
114139
}
115140

@@ -149,6 +174,7 @@ func (c RouterDeploymentController) writeDeploymentEvents(
149174
// (current version reference, status, endpoint, etc.) are not in the scope of this method.
150175
// This method returns the new router endpoint (if successful) and any error.
151176
func (c RouterDeploymentController) deployRouterVersion(
177+
ctx context.Context,
152178
project *mlp.Project,
153179
environment *merlin.Environment,
154180
routerVersion *models.RouterVersion,
@@ -273,6 +299,17 @@ func (c RouterDeploymentController) deployRouterVersion(
273299
// Deploy succeeded - update version's status to deployed and return endpoint
274300
routerVersion.Status = models.RouterVersionStatusDeployed
275301
_, 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+
276313
return endpoint, err
277314
}
278315

api/turing/api/deployment_controller_test.go

+24-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package api
22

33
import (
4+
"context"
45
"database/sql"
56
"encoding/json"
67
"errors"
@@ -13,6 +14,9 @@ import (
1314
"github.com/stretchr/testify/mock"
1415
"github.com/stretchr/testify/require"
1516

17+
"github.com/caraml-dev/turing/api/turing/webhook"
18+
webhookMock "github.com/caraml-dev/turing/api/turing/webhook/mocks"
19+
1620
"github.com/caraml-dev/turing/api/turing/config"
1721
"github.com/caraml-dev/turing/api/turing/models"
1822
"github.com/caraml-dev/turing/api/turing/service"
@@ -21,6 +25,8 @@ import (
2125
)
2226

2327
func TestDeployVersionSuccess(t *testing.T) {
28+
ctx := context.TODO()
29+
2430
testEnv := "test-env"
2531
environment := &merlin.Environment{Name: testEnv}
2632
project := &mlp.Project{ID: 1, Name: "test-project"}
@@ -144,6 +150,12 @@ func TestDeployVersionSuccess(t *testing.T) {
144150
cs := &mocks.CryptoService{}
145151
cs.On("Decrypt", testPassKey).Return(testDecPassKey, nil)
146152

153+
// Mock webhook service
154+
webhookSvc := &webhookMock.Client{}
155+
webhookSvc.On(
156+
"TriggerRouterDeploymentEvent", mock.Anything, webhook.OnRouterDeployed, mock.Anything, mock.Anything,
157+
).Return(nil)
158+
147159
// Run tests and validate
148160
for name, data := range tests {
149161
t.Run(name, func(t *testing.T) {
@@ -186,12 +198,13 @@ func TestDeployVersionSuccess(t *testing.T) {
186198
CryptoService: cs,
187199
ExperimentsService: exps,
188200
},
201+
webhookClient: webhookSvc,
189202
},
190203
}
191204

192205
// Run deploy and test that the router version's status is deployed and the endpoint
193206
// returned by deploy version is expected.
194-
endpoint, err := ctrl.deployRouterVersion(project, environment, data.routerVersion, eventsCh)
207+
endpoint, err := ctrl.deployRouterVersion(ctx, project, environment, data.routerVersion, eventsCh)
195208
assert.NoError(t, err)
196209
assert.Equal(t, models.RouterVersionStatusDeployed, data.routerVersion.Status)
197210
assert.Equal(t, "test-url", endpoint)
@@ -295,6 +308,15 @@ func TestRollbackVersionSuccess(t *testing.T) {
295308
exps := &mocks.ExperimentsService{}
296309
exps.On("IsClientSelectionEnabled", "nop").Return(false, nil)
297310

311+
// Mock webhook service
312+
webhookSvc := &webhookMock.Client{}
313+
webhookSvc.On(
314+
"TriggerRouterDeploymentEvent", mock.Anything, webhook.OnRouterDeployed, mock.Anything, mock.Anything,
315+
).Return(nil)
316+
webhookSvc.On(
317+
"TriggerRouterDeploymentEvent", mock.Anything, webhook.OnRouterUndeployed, mock.Anything, mock.Anything,
318+
).Return(nil)
319+
298320
// Create test controller
299321
ctrl := RouterDeploymentController{
300322
BaseController{
@@ -306,6 +328,7 @@ func TestRollbackVersionSuccess(t *testing.T) {
306328
EventService: es,
307329
ExperimentsService: exps,
308330
},
331+
webhookClient: webhookSvc,
309332
},
310333
}
311334

api/turing/api/routers_api.go

+2-26
Original file line numberDiff line numberDiff line change
@@ -136,14 +136,6 @@ func (c RoutersController) CreateRouter(
136136
log.Errorf("Error deploying router %s:%s:%d: %v",
137137
project.Name, router.Name, routerVersion.Version, err)
138138
}
139-
140-
// call webhook for router deployment event
141-
if errWebhook := c.webhookClient.TriggerRouterEvent(ctx, webhook.OnRouterDeployed, router); errWebhook != nil {
142-
log.Warnf(
143-
"Error triggering webhook for event %s, router id: %d, %v",
144-
webhook.OnRouterDeployed, router.ID, errWebhook,
145-
)
146-
}
147139
}()
148140

149141
return Ok(router)
@@ -217,14 +209,6 @@ func (c RoutersController) UpdateRouter(req *http.Request, vars RequestVars, bod
217209
log.Errorf("Error deploying router %s:%s:%d: %v",
218210
project.Name, router.Name, routerVersion.Version, err)
219211
}
220-
221-
// call webhook for router deployment event
222-
if errWebhook := c.webhookClient.TriggerRouterEvent(ctx, webhook.OnRouterDeployed, router); errWebhook != nil {
223-
log.Warnf(
224-
"Error triggering webhook for event %s, router id: %d, %v",
225-
webhook.OnRouterDeployed, router.ID, errWebhook,
226-
)
227-
}
228212
}()
229213

230214
return Ok(router)
@@ -286,11 +270,11 @@ func (c RoutersController) DeployRouter(
286270
) *Response {
287271
// Parse request vars
288272
var (
289-
ctx = req.Context()
290273
errResp *Response
291274
project *mlp.Project
292275
router *models.Router
293276
)
277+
294278
if project, errResp = c.getProjectFromRequestVars(vars); errResp != nil {
295279
return errResp
296280
}
@@ -326,14 +310,6 @@ func (c RoutersController) DeployRouter(
326310
log.Errorf("Error deploying router version %s:%s:%d: %v",
327311
project.Name, router.Name, routerVersion.Version, err)
328312
}
329-
330-
// call webhook for router deployment event
331-
if errWebhook := c.webhookClient.TriggerRouterEvent(ctx, webhook.OnRouterDeployed, router); errWebhook != nil {
332-
log.Warnf(
333-
"Error triggering webhook for event %s, router id: %d, %v",
334-
webhook.OnRouterDeployed, router.ID, errWebhook,
335-
)
336-
}
337313
}()
338314

339315
return Accepted(map[string]int{
@@ -369,7 +345,7 @@ func (c RoutersController) UndeployRouter(
369345
return InternalServerError("unable to undeploy router", err.Error())
370346
}
371347

372-
// call webhook for router undeployment event
348+
// call webhook for router un-deployment event
373349
if errWebhook := c.webhookClient.TriggerRouterEvent(ctx, webhook.OnRouterUndeployed, router); errWebhook != nil {
374350
log.Warnf(
375351
"Error triggering webhook for event %s, router id: %d, %v",

api/turing/webhook/constant.go

+7-3
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,13 @@ var (
2121
var (
2222
// event list for router event
2323
eventListRouter = map[webhooks.EventType]bool{
24-
OnRouterCreated: true,
25-
OnRouterUpdated: true,
26-
OnRouterDeleted: true,
24+
OnRouterCreated: true,
25+
OnRouterUpdated: true,
26+
OnRouterDeleted: true,
27+
}
28+
29+
// event list for router deployment event
30+
eventListRouterDeployment = map[webhooks.EventType]bool{
2731
OnRouterDeployed: true,
2832
OnRouterUndeployed: true,
2933
}

api/turing/webhook/mocks/webhook.go

+14
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/turing/webhook/request.go

+6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ type routerRequest struct {
1111
Router *models.Router `json:"router"`
1212
}
1313

14+
type routerDeploymentRequest struct {
15+
EventType webhooks.EventType `json:"event_type"`
16+
ProjectID uint `json:"project_id"`
17+
RouterVersion *models.RouterVersion `json:"router_version"`
18+
}
19+
1420
type ensemblerRequest struct {
1521
EventType webhooks.EventType `json:"event_type"`
1622
Ensembler models.EnsemblerLike `json:"ensembler"`

0 commit comments

Comments
 (0)