From 6a309430b18cf40b8de461b7268fe38f360be65a Mon Sep 17 00:00:00 2001 From: Prashansa Kulshrestha Date: Wed, 5 Feb 2025 11:59:08 +0530 Subject: [PATCH] feat: ading consumer-group policy overrides support in deck --- cmd/common.go | 14 ++++++++++++++ cmd/gateway_dump.go | 28 ++++++++++++++++------------ cmd/gateway_sync.go | 2 ++ 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/cmd/common.go b/cmd/common.go index 1a4d1ef26..bda498573 100644 --- a/cmd/common.go +++ b/cmd/common.go @@ -258,6 +258,8 @@ func syncMain(ctx context.Context, filenames []string, dry bool, parallelism, } } + dumpConfig.IsConsumerGroupPolicyOverrideSet = determinePolicyOverride(*targetContent, dumpConfig) + dumpConfig.SelectorTags, err = determineSelectorTag(*targetContent, dumpConfig) if err != nil { return err @@ -421,6 +423,18 @@ func syncMain(ctx context.Context, filenames []string, dry bool, parallelism, return nil } +func determinePolicyOverride(targetContent file.Content, config dump.Config) bool { + if config.IsConsumerGroupPolicyOverrideSet { + return true + } + + if targetContent.Info != nil && targetContent.Info.ConsumerGroupPolicyOverrides { + return targetContent.Info.ConsumerGroupPolicyOverrides + } + + return false +} + func determineLookUpSelectorTagsConsumerGroups(targetContent file.Content) ([]string, error) { if targetContent.Info != nil && targetContent.Info.LookUpSelectorTags != nil && diff --git a/cmd/gateway_dump.go b/cmd/gateway_dump.go index 952afaebe..9e79ad4f9 100644 --- a/cmd/gateway_dump.go +++ b/cmd/gateway_dump.go @@ -93,12 +93,13 @@ func executeDump(cmd *cobra.Command, _ []string) error { } if err := file.KongStateToFile(ks, file.WriteConfig{ - SelectTags: dumpConfig.SelectorTags, - Workspace: workspace, - Filename: workspace, - FileFormat: format, - WithID: dumpWithID, - KongVersion: kongVersion, + SelectTags: dumpConfig.SelectorTags, + Workspace: workspace, + Filename: workspace, + FileFormat: format, + WithID: dumpWithID, + KongVersion: kongVersion, + IsConsumerGroupPolicyOverrideSet: dumpConfig.IsConsumerGroupPolicyOverrideSet, }); err != nil { return err } @@ -132,12 +133,13 @@ func executeDump(cmd *cobra.Command, _ []string) error { return fmt.Errorf("building state: %w", err) } return file.KongStateToFile(ks, file.WriteConfig{ - SelectTags: dumpConfig.SelectorTags, - Workspace: dumpWorkspace, - Filename: dumpCmdKongStateFile, - FileFormat: format, - WithID: dumpWithID, - KongVersion: kongVersion, + SelectTags: dumpConfig.SelectorTags, + Workspace: dumpWorkspace, + Filename: dumpCmdKongStateFile, + FileFormat: format, + WithID: dumpWithID, + KongVersion: kongVersion, + IsConsumerGroupPolicyOverrideSet: dumpConfig.IsConsumerGroupPolicyOverrideSet, }) } @@ -197,6 +199,8 @@ configure Kong.`, false, "do not show the association between consumer and consumer-group.\n"+ "If set to true, deck skips listing consumers with consumer-groups,\n"+ "thus gaining some performance with large configs. This flag is not valid with Konnect.") + dumpCmd.Flags().BoolVar(&dumpConfig.IsConsumerGroupPolicyOverrideSet, "consumer-group-policy-overrides", + false, "allow deck to dump consumer-group policy overrides.") if deprecated { dumpCmd.Flags().StringVarP(&dumpCmdKongStateFileDeprecated, "output-file", "o", fileOutDefault, "file to which to write Kong's configuration."+ diff --git a/cmd/gateway_sync.go b/cmd/gateway_sync.go index b436b3229..2336fa460 100644 --- a/cmd/gateway_sync.go +++ b/cmd/gateway_sync.go @@ -96,6 +96,8 @@ to get Kong's state in sync with the input state.`, "See `db_update_propagation` in kong.conf.") syncCmd.Flags().BoolVar(&dumpConfig.SkipCACerts, "skip-ca-certificates", false, "do not sync CA certificates.") + syncCmd.Flags().BoolVar(&dumpConfig.IsConsumerGroupPolicyOverrideSet, "consumer-group-policy-overrides", + false, "allow deck to sync consumer-group policy overrides.") syncCmd.Flags().BoolVar(&syncJSONOutput, "json-output", false, "generate command execution report in a JSON format") addSilenceEventsFlag(syncCmd.Flags())