Skip to content

Commit d9fefb0

Browse files
authored
Create port additionalSubjects not populated in all cases (#308)
* ignore go work files Signed-off-by: Matt Siwiec <[email protected]> * oidc=false Signed-off-by: Matt Siwiec <[email protected]> * ensure additionalSubjects are present in port create when no pool ids associated Signed-off-by: Matt Siwiec <[email protected]> --------- Signed-off-by: Matt Siwiec <[email protected]>
1 parent b4721c0 commit d9fefb0

File tree

4 files changed

+67
-32
lines changed

4 files changed

+67
-32
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ debugConfig.yaml
2424
.devcontainer/nats/resolver.conf
2525
.devcontainer/nsc
2626

27+
# go work
28+
go.work
29+
go.work.sum
30+
2731
# helm test
2832
test-output/
2933

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ generate: background-run .generate kill-running ## Generates code
7575
go-run: ## Runs the app
7676
@echo --- Running binary...
7777
@date --rfc-3339=seconds
78-
@go run main.go serve --dev
78+
@go run main.go serve --dev --oidc=false
7979

8080
background-run: ## Runs in the app in the background
8181
@date --rfc-3339=seconds

internal/manualhooks/hooks.go

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,30 +1007,26 @@ func PortHooks() []ent.Hook {
10071007
}
10081008

10091009
// Ensure we have additional relevant subjects in the event msg
1010-
addSubjPools, err := m.Client().Pool.Query().WithPorts(func(q *generated.PortQuery) {
1011-
q.WithLoadBalancer()
1012-
}).Where(pool.HasPortsWith(port.IDEQ(objID))).All(ctx)
1010+
addSubjPort, err := m.Client().Port.Query().WithPools().WithLoadBalancer().Where(port.IDEQ(objID)).Only(ctx)
10131011
if err == nil {
1014-
for _, pool := range addSubjPools {
1015-
for _, port := range pool.Edges.Ports {
1016-
if !slices.Contains(msg.AdditionalSubjectIDs, port.LoadBalancerID) {
1017-
msg.AdditionalSubjectIDs = append(msg.AdditionalSubjectIDs, port.LoadBalancerID)
1018-
}
1012+
if !slices.Contains(msg.AdditionalSubjectIDs, addSubjPort.LoadBalancerID) {
1013+
msg.AdditionalSubjectIDs = append(msg.AdditionalSubjectIDs, addSubjPort.LoadBalancerID)
1014+
}
10191015

1020-
if !slices.Contains(msg.AdditionalSubjectIDs, port.Edges.LoadBalancer.LocationID) {
1021-
msg.AdditionalSubjectIDs = append(msg.AdditionalSubjectIDs, port.Edges.LoadBalancer.LocationID)
1022-
}
1016+
if !slices.Contains(msg.AdditionalSubjectIDs, addSubjPort.Edges.LoadBalancer.LocationID) {
1017+
msg.AdditionalSubjectIDs = append(msg.AdditionalSubjectIDs, addSubjPort.Edges.LoadBalancer.LocationID)
1018+
}
10231019

1024-
if !slices.Contains(msg.AdditionalSubjectIDs, port.Edges.LoadBalancer.ProviderID) {
1025-
msg.AdditionalSubjectIDs = append(msg.AdditionalSubjectIDs, port.Edges.LoadBalancer.ProviderID)
1026-
}
1020+
if !slices.Contains(msg.AdditionalSubjectIDs, addSubjPort.Edges.LoadBalancer.OwnerID) {
1021+
msg.AdditionalSubjectIDs = append(msg.AdditionalSubjectIDs, addSubjPort.Edges.LoadBalancer.OwnerID)
1022+
}
10271023

1028-
if !slices.Contains(msg.AdditionalSubjectIDs, port.Edges.LoadBalancer.OwnerID) {
1029-
msg.AdditionalSubjectIDs = append(msg.AdditionalSubjectIDs, port.Edges.LoadBalancer.OwnerID)
1030-
}
1031-
}
1024+
if !slices.Contains(msg.AdditionalSubjectIDs, addSubjPort.Edges.LoadBalancer.ProviderID) {
1025+
msg.AdditionalSubjectIDs = append(msg.AdditionalSubjectIDs, addSubjPort.Edges.LoadBalancer.ProviderID)
1026+
}
10321027

1033-
if !slices.Contains(msg.AdditionalSubjectIDs, pool.ID) && objID != pool.ID {
1028+
for _, pool := range addSubjPort.Edges.Pools {
1029+
if !slices.Contains(msg.AdditionalSubjectIDs, pool.ID) {
10341030
msg.AdditionalSubjectIDs = append(msg.AdditionalSubjectIDs, pool.ID)
10351031
}
10361032

internal/manualhooks/hooks_test.go

Lines changed: 47 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -282,23 +282,58 @@ func Test_PortCreateHook(t *testing.T) {
282282
changesChannel, err := testutils.EventsConn.SubscribeChanges(ctx, "create.load-balancer-port")
283283
require.NoError(t, err, "failed to subscribe to changes")
284284

285-
lb := (&testutils.LoadBalancerBuilder{}).MustNew(ctx)
286-
pool := (&testutils.PoolBuilder{}).MustNew(ctx)
287-
288285
testutils.EntClient.Port.Use(manualhooks.PortHooks()...)
289286

290-
// Act
291-
port := (&testutils.PortBuilder{PoolIDs: []gidx.PrefixedID{pool.ID}, LoadBalancerID: lb.ID}).MustNew(ctx)
287+
t.Run("with pool", func(t *testing.T) {
288+
// Act
289+
lb := (&testutils.LoadBalancerBuilder{}).MustNew(ctx)
290+
pool := (&testutils.PoolBuilder{OwnerID: lb.OwnerID}).MustNew(ctx)
291+
port := (&testutils.PortBuilder{PoolIDs: []gidx.PrefixedID{pool.ID}, LoadBalancerID: lb.ID}).MustNew(ctx)
292292

293-
msg := testutils.ChannelReceiveWithTimeout[events.Message[events.ChangeMessage]](t, changesChannel, defaultTimeout)
293+
msg := testutils.ChannelReceiveWithTimeout[events.Message[events.ChangeMessage]](t, changesChannel, defaultTimeout)
294294

295-
// Assert
296-
expectedAdditionalSubjectIDs := []gidx.PrefixedID{pool.ID, pool.OwnerID, lb.ID, lb.LocationID, lb.ProviderID, lb.OwnerID}
297-
actualAdditionalSubjectIDs := msg.Message().AdditionalSubjectIDs
295+
// Assert
296+
expectedAdditionalSubjectIDs := []gidx.PrefixedID{pool.ID, lb.ID, lb.LocationID, lb.ProviderID, lb.OwnerID}
297+
actualAdditionalSubjectIDs := msg.Message().AdditionalSubjectIDs
298298

299-
assert.ElementsMatch(t, expectedAdditionalSubjectIDs, actualAdditionalSubjectIDs)
300-
assert.Equal(t, port.ID, msg.Message().SubjectID)
301-
assert.Equal(t, createEventType, msg.Message().EventType)
299+
assert.ElementsMatch(t, expectedAdditionalSubjectIDs, actualAdditionalSubjectIDs)
300+
assert.Equal(t, port.ID, msg.Message().SubjectID)
301+
assert.Equal(t, createEventType, msg.Message().EventType)
302+
})
303+
304+
t.Run("with multiple pools", func(t *testing.T) {
305+
// Act
306+
lb := (&testutils.LoadBalancerBuilder{}).MustNew(ctx)
307+
pool := (&testutils.PoolBuilder{OwnerID: lb.OwnerID}).MustNew(ctx)
308+
pool2 := (&testutils.PoolBuilder{OwnerID: lb.OwnerID}).MustNew(ctx)
309+
port := (&testutils.PortBuilder{PoolIDs: []gidx.PrefixedID{pool.ID, pool2.ID}, LoadBalancerID: lb.ID}).MustNew(ctx)
310+
311+
msg := testutils.ChannelReceiveWithTimeout[events.Message[events.ChangeMessage]](t, changesChannel, defaultTimeout)
312+
313+
// Assert
314+
expectedAdditionalSubjectIDs := []gidx.PrefixedID{pool.ID, pool2.ID, lb.ID, lb.LocationID, lb.ProviderID, lb.OwnerID}
315+
actualAdditionalSubjectIDs := msg.Message().AdditionalSubjectIDs
316+
317+
assert.ElementsMatch(t, expectedAdditionalSubjectIDs, actualAdditionalSubjectIDs)
318+
assert.Equal(t, port.ID, msg.Message().SubjectID)
319+
assert.Equal(t, createEventType, msg.Message().EventType)
320+
})
321+
322+
t.Run("with no pool", func(t *testing.T) {
323+
// Act
324+
lb := (&testutils.LoadBalancerBuilder{}).MustNew(ctx)
325+
port := (&testutils.PortBuilder{PoolIDs: []gidx.PrefixedID{}, LoadBalancerID: lb.ID}).MustNew(ctx)
326+
327+
msg := testutils.ChannelReceiveWithTimeout[events.Message[events.ChangeMessage]](t, changesChannel, defaultTimeout)
328+
329+
// Assert
330+
expectedAdditionalSubjectIDs := []gidx.PrefixedID{lb.ID, lb.LocationID, lb.ProviderID, lb.OwnerID}
331+
actualAdditionalSubjectIDs := msg.Message().AdditionalSubjectIDs
332+
333+
assert.ElementsMatch(t, expectedAdditionalSubjectIDs, actualAdditionalSubjectIDs)
334+
assert.Equal(t, port.ID, msg.Message().SubjectID)
335+
assert.Equal(t, createEventType, msg.Message().EventType)
336+
})
302337
}
303338

304339
func Test_PortUpdateHook(t *testing.T) {

0 commit comments

Comments
 (0)