Skip to content

Commit 3d7f194

Browse files
committed
add workspace in FillIDs
1 parent 9f88889 commit 3d7f194

File tree

10 files changed

+21
-13
lines changed

10 files changed

+21
-13
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,9 @@ Adding a new version? You'll need three changes:
149149
- Allow configuring a GRPCRoute without hostnames and matches that catch all
150150
requests.
151151
[#5303](https://github.com/Kong/kubernetes-ingress-controller/pull/5303)
152+
- Add a `workspace ` paramater in filling IDs of Kong entities to avoid
153+
duplicate IDs cross different workspaces.
154+
[#5401](https://github.com/Kong/kubernetes-ingress-controller/pull/5401)
152155

153156
### Changed
154157

go.mod

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ require (
3030
github.com/google/uuid v1.5.0
3131
github.com/jpillora/backoff v1.0.0
3232
github.com/kong/go-database-reconciler v1.1.0
33-
github.com/kong/go-kong v0.49.0
33+
// TODO: update to the latest release after go-kong releases.
34+
github.com/kong/go-kong v0.49.1-0.20240105061447-3888dc3e1697
3435
github.com/kong/kubernetes-telemetry v0.1.3
3536
github.com/kong/kubernetes-testing-framework v0.43.0
3637
github.com/lithammer/dedent v1.1.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,8 +255,8 @@ github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJw
255255
github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
256256
github.com/kong/go-database-reconciler v1.1.0 h1:USCdsAj/7eh9sOOfbnvsOe4jw5k4+FSTD3okcTLIVqQ=
257257
github.com/kong/go-database-reconciler v1.1.0/go.mod h1:p8NvafqBSuMR9YNCOZ24aIeeajc145+biXpAaMExvpI=
258-
github.com/kong/go-kong v0.49.0 h1:QtO0TtVPYQXjBJ/MNptvyodRNwubbtIkoNhQkh17Q1g=
259-
github.com/kong/go-kong v0.49.0/go.mod h1:xDf1RfkaE/rAwNE1fS3XniFj/d2JmkEER2S9NDY12Yw=
258+
github.com/kong/go-kong v0.49.1-0.20240105061447-3888dc3e1697 h1:AXba428ALMi6AFtoGeLEMxWsxg6DSubIYwZcny6uYPI=
259+
github.com/kong/go-kong v0.49.1-0.20240105061447-3888dc3e1697/go.mod h1:xDf1RfkaE/rAwNE1fS3XniFj/d2JmkEER2S9NDY12Yw=
260260
github.com/kong/kubernetes-telemetry v0.1.3 h1:Hz2tkHGIIUqbn1x46QRDmmNjbEtJyxyOvHSPne3uPto=
261261
github.com/kong/kubernetes-telemetry v0.1.3/go.mod h1:wB7o8dOKa5R396CyiU0sPa8am/g3c5DKd/qrn/Vmb+k=
262262
github.com/kong/kubernetes-testing-framework v0.43.0 h1:Pjh4NMlwApFqi9RPW5NPHD3mOCA62pHKLLX4pWnHGXw=

internal/dataplane/configfetcher/config_fetcher.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ func (cf *DefaultKongLastGoodConfigFetcher) TryFetchingValidConfigFromGateways(
9494
}
9595
if goodKongState != nil {
9696
if cf.fillIDs {
97-
goodKongState.FillIDs(logger)
97+
goodKongState.FillIDs(logger, "")
9898
}
9999
cf.lastValidState = goodKongState
100100
logger.V(util.DebugLevel).Info("Last good configuration fetched from Kong node", "url", clientUsed.BaseRootURL())

internal/dataplane/kongstate/kongstate.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -455,16 +455,16 @@ func (ks *KongState) FillPlugins(
455455
// that supports the FillID method (these are Service, Route, Consumer and Consumer
456456
// Group). It makes their IDs deterministic, enabling their correct identification
457457
// in external systems (e.g. Konnect Analytics).
458-
func (ks *KongState) FillIDs(logger logr.Logger) {
458+
func (ks *KongState) FillIDs(logger logr.Logger, workspace string) {
459459
for svcIndex, svc := range ks.Services {
460-
if err := svc.FillID(); err != nil {
460+
if err := svc.FillID(workspace); err != nil {
461461
logger.Error(err, "Failed to fill ID for service", "service_name", *svc.Name)
462462
} else {
463463
ks.Services[svcIndex] = svc
464464
}
465465

466466
for routeIndex, route := range svc.Routes {
467-
if err := route.FillID(); err != nil {
467+
if err := route.FillID(workspace); err != nil {
468468
logger.Error(err, "Failed to fill ID for route", "route_name", *route.Name)
469469
} else {
470470
ks.Services[svcIndex].Routes[routeIndex] = route
@@ -473,15 +473,15 @@ func (ks *KongState) FillIDs(logger logr.Logger) {
473473
}
474474

475475
for consumerIndex, consumer := range ks.Consumers {
476-
if err := consumer.FillID(); err != nil {
476+
if err := consumer.FillID(workspace); err != nil {
477477
logger.Error(err, "Failed to fill ID for consumer", "consumer_name", consumer.FriendlyName())
478478
} else {
479479
ks.Consumers[consumerIndex] = consumer
480480
}
481481
}
482482

483483
for consumerGroupIndex, consumerGroup := range ks.ConsumerGroups {
484-
if err := consumerGroup.FillID(); err != nil {
484+
if err := consumerGroup.FillID(workspace); err != nil {
485485
logger.Error(err, "Failed to fill ID for consumer group", "consumer_group_name", *consumerGroup.Name)
486486
} else {
487487
ks.ConsumerGroups[consumerGroupIndex] = consumerGroup

internal/dataplane/kongstate/kongstate_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -913,7 +913,7 @@ func TestKongState_FillIDs(t *testing.T) {
913913

914914
for _, tc := range testCases {
915915
t.Run(tc.name, func(t *testing.T) {
916-
tc.state.FillIDs(zapr.NewLogger(zap.NewNop()))
916+
tc.state.FillIDs(zapr.NewLogger(zap.NewNop()), "")
917917
tc.expect(t, tc.state)
918918
})
919919
}

internal/dataplane/translator/golden_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ func runTranslatorGoldenTest(t *testing.T, tc translatorGoldenTestCase) {
223223

224224
// Create the translator.
225225
s := store.New(cacheStores, "kong", logger)
226-
p, err := translator.NewTranslator(logger, s, tc.featureFlags)
226+
p, err := translator.NewTranslator(logger, s, "", tc.featureFlags)
227227
require.NoError(t, err, "failed creating translator")
228228

229229
// Build the Kong configuration.

internal/dataplane/translator/translator.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ type LicenseGetter interface {
8888
type Translator struct {
8989
logger logr.Logger
9090
storer store.Storer
91+
workspace string
9192
licenseGetter LicenseGetter
9293
featureFlags FeatureFlags
9394

@@ -100,6 +101,7 @@ type Translator struct {
100101
func NewTranslator(
101102
logger logr.Logger,
102103
storer store.Storer,
104+
workspace string,
103105
featureFlags FeatureFlags,
104106
) (*Translator, error) {
105107
failuresCollector := failures.NewResourceFailuresCollector(logger)
@@ -113,6 +115,7 @@ func NewTranslator(
113115
return &Translator{
114116
logger: logger,
115117
storer: storer,
118+
workspace: workspace,
116119
featureFlags: featureFlags,
117120
failuresCollector: failuresCollector,
118121
translatedObjectsCollector: translatedObjectsCollector,
@@ -210,7 +213,7 @@ func (t *Translator) BuildKongConfig() KongConfigBuildingResult {
210213

211214
if t.featureFlags.FillIDs {
212215
// generate IDs for Kong entities
213-
result.FillIDs(t.logger)
216+
result.FillIDs(t.logger, t.workspace)
214217
}
215218

216219
return KongConfigBuildingResult{

internal/dataplane/translator/translator_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4907,7 +4907,7 @@ func TestTranslator_ConfiguredKubernetesObjects(t *testing.T) {
49074907
}
49084908

49094909
func mustNewTranslator(t *testing.T, storer store.Storer) *Translator {
4910-
p, err := NewTranslator(zapr.NewLogger(zap.NewNop()), storer,
4910+
p, err := NewTranslator(zapr.NewLogger(zap.NewNop()), storer, "",
49114911
FeatureFlags{
49124912
// We'll assume these are true for all tests.
49134913
FillIDs: true,

internal/manager/run.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ func Run(
181181
configTranslator, err := translator.NewTranslator(
182182
logger,
183183
storer,
184+
c.KongWorkspace,
184185
translatorFeatureFlags,
185186
)
186187
if err != nil {

0 commit comments

Comments
 (0)