Skip to content

Commit

Permalink
add workspace in FillIDs
Browse files Browse the repository at this point in the history
  • Loading branch information
randmonkey committed Jan 5, 2024
1 parent 9f88889 commit 3d7f194
Show file tree
Hide file tree
Showing 10 changed files with 21 additions and 13 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,9 @@ Adding a new version? You'll need three changes:
- Allow configuring a GRPCRoute without hostnames and matches that catch all
requests.
[#5303](https://github.com/Kong/kubernetes-ingress-controller/pull/5303)
- Add a `workspace ` paramater in filling IDs of Kong entities to avoid
duplicate IDs cross different workspaces.
[#5401](https://github.com/Kong/kubernetes-ingress-controller/pull/5401)

### Changed

Expand Down
3 changes: 2 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ require (
github.com/google/uuid v1.5.0
github.com/jpillora/backoff v1.0.0
github.com/kong/go-database-reconciler v1.1.0
github.com/kong/go-kong v0.49.0
// TODO: update to the latest release after go-kong releases.
github.com/kong/go-kong v0.49.1-0.20240105061447-3888dc3e1697
github.com/kong/kubernetes-telemetry v0.1.3
github.com/kong/kubernetes-testing-framework v0.43.0
github.com/lithammer/dedent v1.1.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -255,8 +255,8 @@ github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJw
github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
github.com/kong/go-database-reconciler v1.1.0 h1:USCdsAj/7eh9sOOfbnvsOe4jw5k4+FSTD3okcTLIVqQ=
github.com/kong/go-database-reconciler v1.1.0/go.mod h1:p8NvafqBSuMR9YNCOZ24aIeeajc145+biXpAaMExvpI=
github.com/kong/go-kong v0.49.0 h1:QtO0TtVPYQXjBJ/MNptvyodRNwubbtIkoNhQkh17Q1g=
github.com/kong/go-kong v0.49.0/go.mod h1:xDf1RfkaE/rAwNE1fS3XniFj/d2JmkEER2S9NDY12Yw=
github.com/kong/go-kong v0.49.1-0.20240105061447-3888dc3e1697 h1:AXba428ALMi6AFtoGeLEMxWsxg6DSubIYwZcny6uYPI=
github.com/kong/go-kong v0.49.1-0.20240105061447-3888dc3e1697/go.mod h1:xDf1RfkaE/rAwNE1fS3XniFj/d2JmkEER2S9NDY12Yw=
github.com/kong/kubernetes-telemetry v0.1.3 h1:Hz2tkHGIIUqbn1x46QRDmmNjbEtJyxyOvHSPne3uPto=
github.com/kong/kubernetes-telemetry v0.1.3/go.mod h1:wB7o8dOKa5R396CyiU0sPa8am/g3c5DKd/qrn/Vmb+k=
github.com/kong/kubernetes-testing-framework v0.43.0 h1:Pjh4NMlwApFqi9RPW5NPHD3mOCA62pHKLLX4pWnHGXw=
Expand Down
2 changes: 1 addition & 1 deletion internal/dataplane/configfetcher/config_fetcher.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ func (cf *DefaultKongLastGoodConfigFetcher) TryFetchingValidConfigFromGateways(
}
if goodKongState != nil {
if cf.fillIDs {
goodKongState.FillIDs(logger)
goodKongState.FillIDs(logger, "")
}
cf.lastValidState = goodKongState
logger.V(util.DebugLevel).Info("Last good configuration fetched from Kong node", "url", clientUsed.BaseRootURL())
Expand Down
10 changes: 5 additions & 5 deletions internal/dataplane/kongstate/kongstate.go
Original file line number Diff line number Diff line change
Expand Up @@ -455,16 +455,16 @@ func (ks *KongState) FillPlugins(
// that supports the FillID method (these are Service, Route, Consumer and Consumer
// Group). It makes their IDs deterministic, enabling their correct identification
// in external systems (e.g. Konnect Analytics).
func (ks *KongState) FillIDs(logger logr.Logger) {
func (ks *KongState) FillIDs(logger logr.Logger, workspace string) {
for svcIndex, svc := range ks.Services {
if err := svc.FillID(); err != nil {
if err := svc.FillID(workspace); err != nil {
logger.Error(err, "Failed to fill ID for service", "service_name", *svc.Name)
} else {
ks.Services[svcIndex] = svc
}

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

for consumerIndex, consumer := range ks.Consumers {
if err := consumer.FillID(); err != nil {
if err := consumer.FillID(workspace); err != nil {
logger.Error(err, "Failed to fill ID for consumer", "consumer_name", consumer.FriendlyName())
} else {
ks.Consumers[consumerIndex] = consumer
}
}

for consumerGroupIndex, consumerGroup := range ks.ConsumerGroups {
if err := consumerGroup.FillID(); err != nil {
if err := consumerGroup.FillID(workspace); err != nil {
logger.Error(err, "Failed to fill ID for consumer group", "consumer_group_name", *consumerGroup.Name)
} else {
ks.ConsumerGroups[consumerGroupIndex] = consumerGroup
Expand Down
2 changes: 1 addition & 1 deletion internal/dataplane/kongstate/kongstate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -913,7 +913,7 @@ func TestKongState_FillIDs(t *testing.T) {

for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
tc.state.FillIDs(zapr.NewLogger(zap.NewNop()))
tc.state.FillIDs(zapr.NewLogger(zap.NewNop()), "")
tc.expect(t, tc.state)
})
}
Expand Down
2 changes: 1 addition & 1 deletion internal/dataplane/translator/golden_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ func runTranslatorGoldenTest(t *testing.T, tc translatorGoldenTestCase) {

// Create the translator.
s := store.New(cacheStores, "kong", logger)
p, err := translator.NewTranslator(logger, s, tc.featureFlags)
p, err := translator.NewTranslator(logger, s, "", tc.featureFlags)
require.NoError(t, err, "failed creating translator")

// Build the Kong configuration.
Expand Down
5 changes: 4 additions & 1 deletion internal/dataplane/translator/translator.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ type LicenseGetter interface {
type Translator struct {
logger logr.Logger
storer store.Storer
workspace string
licenseGetter LicenseGetter
featureFlags FeatureFlags

Expand All @@ -100,6 +101,7 @@ type Translator struct {
func NewTranslator(
logger logr.Logger,
storer store.Storer,
workspace string,
featureFlags FeatureFlags,
) (*Translator, error) {
failuresCollector := failures.NewResourceFailuresCollector(logger)
Expand All @@ -113,6 +115,7 @@ func NewTranslator(
return &Translator{
logger: logger,
storer: storer,
workspace: workspace,
featureFlags: featureFlags,
failuresCollector: failuresCollector,
translatedObjectsCollector: translatedObjectsCollector,
Expand Down Expand Up @@ -210,7 +213,7 @@ func (t *Translator) BuildKongConfig() KongConfigBuildingResult {

if t.featureFlags.FillIDs {
// generate IDs for Kong entities
result.FillIDs(t.logger)
result.FillIDs(t.logger, t.workspace)
}

return KongConfigBuildingResult{
Expand Down
2 changes: 1 addition & 1 deletion internal/dataplane/translator/translator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4907,7 +4907,7 @@ func TestTranslator_ConfiguredKubernetesObjects(t *testing.T) {
}

func mustNewTranslator(t *testing.T, storer store.Storer) *Translator {
p, err := NewTranslator(zapr.NewLogger(zap.NewNop()), storer,
p, err := NewTranslator(zapr.NewLogger(zap.NewNop()), storer, "",
FeatureFlags{
// We'll assume these are true for all tests.
FillIDs: true,
Expand Down
1 change: 1 addition & 0 deletions internal/manager/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,7 @@ func Run(
configTranslator, err := translator.NewTranslator(
logger,
storer,
c.KongWorkspace,
translatorFeatureFlags,
)
if err != nil {
Expand Down

0 comments on commit 3d7f194

Please sign in to comment.