diff --git a/cmd/common_konnect.go b/cmd/common_konnect.go index 0f79e217c..6c33750ef 100644 --- a/cmd/common_konnect.go +++ b/cmd/common_konnect.go @@ -84,9 +84,14 @@ func GetKongClientForKonnectMode( if err != nil { return nil, fmt.Errorf("authenticating with Konnect: %w", err) } - cpID, err := fetchKonnectControlPlaneID(ctx, konnectClient, konnectConfig.ControlPlaneName) - if err != nil { - return nil, err + var cpID string + if konnectControlPlaneID != "" { + cpID = konnectControlPlaneID + } else { + cpID, err = fetchKonnectControlPlaneID(ctx, konnectClient, konnectConfig.ControlPlaneName) + if err != nil { + return nil, err + } } // set the kong control plane ID in the client @@ -140,6 +145,10 @@ func dumpKonnectV2(ctx context.Context) error { konnectControlPlane = defaultControlPlaneName } dumpConfig.KonnectControlPlane = konnectControlPlane + + if konnectControlPlaneID != "" { + dumpConfig.KonnectControlPlaneID = konnectControlPlaneID + } konnectConfig.TLSConfig = rootConfig.TLSConfig client, err := GetKongClientForKonnectMode(ctx, &konnectConfig) if err != nil { @@ -159,6 +168,7 @@ func dumpKonnectV2(ctx context.Context) error { FileFormat: file.Format(strings.ToUpper(dumpCmdStateFormat)), WithID: dumpWithID, ControlPlaneName: konnectControlPlane, + ControlPlaneID: konnectControlPlaneID, KongVersion: fetchKonnectKongVersion(), }) } diff --git a/cmd/root.go b/cmd/root.go index 9b33fe483..c2249ad74 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -35,8 +35,9 @@ var ( disableAnalytics bool konnectConnectionDesired bool - konnectRuntimeGroup string - konnectControlPlane string + konnectRuntimeGroup string + konnectControlPlane string + konnectControlPlaneID string ) // NewRootCmd represents the base command when called without any subcommands @@ -217,12 +218,19 @@ It can be used to export, import, or sync entities to Kong.`, viper.BindPFlag("konnect-runtime-group-name", rootCmd.PersistentFlags().Lookup("konnect-runtime-group-name")) - rootCmd.PersistentFlags().String("konnect-control-plane-name", "", + rootCmd.PersistentFlags().String("konnect-control-plane-name", defaultControlPlaneName, "Konnect Control Plane name.") viper.BindPFlag("konnect-control-plane-name", rootCmd.PersistentFlags().Lookup("konnect-control-plane-name")) + rootCmd.PersistentFlags().String("konnect-control-plane-id", "", + "Konnect Control Plane ID.") + viper.BindPFlag("konnect-control-plane-id", + rootCmd.PersistentFlags().Lookup("konnect-control-plane-id")) + rootCmd.PersistentFlags().MarkHidden("konnect-control-plane-id") + rootCmd.MarkFlagsMutuallyExclusive("konnect-runtime-group-name", "konnect-control-plane-name") + rootCmd.MarkFlagsMutuallyExclusive("konnect-control-plane-id", "konnect-control-plane-name") rootCmd.AddCommand(newVersionCmd()) rootCmd.AddCommand(newCompletionCmd()) @@ -441,6 +449,7 @@ func initKonnectConfig() error { konnectConfig.Headers = extendHeaders(viper.GetStringSlice("headers")) konnectControlPlane = viper.GetString("konnect-control-plane-name") konnectRuntimeGroup = viper.GetString("konnect-runtime-group-name") + konnectControlPlaneID = viper.GetString("konnect-control-plane-id") return nil }