From 0ff2c6bb9f2b694365cb62131befad435e11f53b Mon Sep 17 00:00:00 2001 From: Vedarth Sharma Date: Tue, 26 May 2026 19:03:37 +0530 Subject: [PATCH 1/3] KSQL-14849: add 'confluent ksql cluster update --csu N' command MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds the `confluent ksql cluster update --csu ` command for self-serve CSU alteration of ksqlDB clusters. The command targets the new public-API PATCH /ksqldbcm/v2/clusters/{id} endpoint being added by cc-control-plane-ksql PR #313 (KSQL-14845) and gated server-side by the ksql.self_serve_csu_alteration.enable LD flag. Behavior: - Validates --csu client-side against {4, 8, 12, 16, 20, 24, 28}. The server's validCSUSizes map remains authoritative; the client check exists to fail fast with a clearer error. - CSU > 28 returns a customer-safe support-ticket message rather than the generic "not a valid CSU size" error. - Pre-checks the current CSU via DescribeKsqlCluster: a no-op resize (same CSU) is rejected client-side with "already at N CSUs; no change requested" instead of relying on the server's 400 no-op. A shrink is also rejected client-side, mirroring the server contract. - Prints a clear "rolling restart will be performed asynchronously, cluster keeps serving queries" notice before the PATCH. Files: - internal/ksql/command_cluster_update.go: cobra command + validation - internal/ksql/command_cluster_update_test.go: validation unit tests - internal/ksql/command_cluster.go: wires new subcommand under cluster - pkg/ccloudv2/ksql.go: UpdateKsqlCluster shim SDK dependency (the actual wire call is gated): The ccloud-sdk-go-v2/ksql/v2 SDK at v0.2.0 does not yet expose ClustersKsqldbcmV2Api.UpdateKsqldbcmV2Cluster — that method will be generated once cc-api PR #2507 (KSQL-14844) merges and the SDK is regenerated. Until then, UpdateKsqlCluster returns a clear, customer-safe error explaining the feature is pending. The unblock procedure (one-line SDK call, doc comment in the file) is documented inline. All other command logic (flag parsing, validation, pre-check, no-op detection, output formatting) is fully wired and unit-tested today. Co-Authored-By: Claude Opus 4.7 (1M context) --- internal/ksql/command_cluster.go | 1 + internal/ksql/command_cluster_update.go | 144 +++++++++++++++++++ internal/ksql/command_cluster_update_test.go | 78 ++++++++++ pkg/ccloudv2/ksql.go | 27 ++++ 4 files changed, 250 insertions(+) create mode 100644 internal/ksql/command_cluster_update.go create mode 100644 internal/ksql/command_cluster_update_test.go diff --git a/internal/ksql/command_cluster.go b/internal/ksql/command_cluster.go index 97dd022d6a..af6a0f7e25 100644 --- a/internal/ksql/command_cluster.go +++ b/internal/ksql/command_cluster.go @@ -21,6 +21,7 @@ func newClusterCommand(cfg *config.Config, prerunner pcmd.PreRunner) *cobra.Comm cmd.AddCommand(c.newDeleteCommand()) cmd.AddCommand(c.newDescribeCommand()) cmd.AddCommand(c.newListCommand()) + cmd.AddCommand(c.newUpdateCommand()) } else { c := &ksqlCommand{pcmd.NewAuthenticatedWithMDSCLICommand(cmd, prerunner)} cmd.AddCommand(c.newListCommandOnPrem()) diff --git a/internal/ksql/command_cluster_update.go b/internal/ksql/command_cluster_update.go new file mode 100644 index 0000000000..42929f22af --- /dev/null +++ b/internal/ksql/command_cluster_update.go @@ -0,0 +1,144 @@ +package ksql + +import ( + "fmt" + "sort" + + "github.com/spf13/cobra" + + pcmd "github.com/confluentinc/cli/v4/pkg/cmd" + "github.com/confluentinc/cli/v4/pkg/errors" + "github.com/confluentinc/cli/v4/pkg/examples" + "github.com/confluentinc/cli/v4/pkg/output" +) + +// Valid CSU sizes that customers may target via self-serve cluster update. +// Mirrors the server-side authoritative list in cc-control-plane-ksql: +// internal/service/update_ksql_cluster_resize.go::validCSUSizes. +// Values 1, 2 are legacy and not user-selectable. Values above 28 still +// require a support ticket. +// +//nolint:gochecknoglobals +var validCsuSizes = []int32{4, 8, 12, 16, 20, 24, 28} + +const csuSupportTicketMessage = "CSU values above 28 require a support ticket. " + + "Please contact Confluent Support to request a larger cluster size." + +func (c *ksqlCommand) newUpdateCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "update ", + Short: "Update a ksqlDB cluster.", + Long: buildUpdateLongDescription(), + Args: cobra.ExactArgs(1), + ValidArgsFunction: pcmd.NewValidArgsFunction(c.validArgs), + RunE: c.update, + Example: examples.BuildExampleString( + examples.Example{ + Text: `Resize ksqlDB cluster "lksqlc-12345" to 8 CSUs.`, + Code: "confluent ksql cluster update lksqlc-12345 --csu 8", + }, + ), + } + + cmd.Flags().Int32("csu", 0, fmt.Sprintf( + "Target number of CSUs for the cluster. Valid values: %s.", + formatCsuList(validCsuSizes))) + pcmd.AddContextFlag(cmd, c.CLICommand) + pcmd.AddEnvironmentFlag(cmd, c.AuthenticatedCLICommand) + pcmd.AddOutputFlag(cmd) + + cobra.CheckErr(cmd.MarkFlagRequired("csu")) + + return cmd +} + +func buildUpdateLongDescription() string { + return fmt.Sprintf( + `Update an existing ksqlDB cluster. Currently only the CSU count may be +modified, and only to larger sizes (shrink is not supported). + +Valid CSU values are %s. Larger sizes require a support ticket. +The cluster will undergo a rolling restart to apply the new size; the +command returns once the resize has been accepted by the control plane.`, + formatCsuList(validCsuSizes)) +} + +func (c *ksqlCommand) update(cmd *cobra.Command, args []string) error { + csu, err := cmd.Flags().GetInt32("csu") + if err != nil { + return err + } + if err := validateCsuForUpdate(csu); err != nil { + return err + } + + environmentId, err := c.Context.EnvironmentId() + if err != nil { + return err + } + + clusterId := args[0] + + // Pre-check current CSU so we can short-circuit a no-op locally before + // issuing the PATCH. The server-side validator also rejects no-op resizes + // with 400 ("new CSU size is the same as old CSU size, no-op"), but a + // client-side check produces a clearer message and avoids a wasted API + // round trip. Note: shrink is not supported server-side either. + current, err := c.V2Client.DescribeKsqlCluster(clusterId, environmentId) + if err != nil { + return errors.CatchKSQLNotFoundError(err, clusterId) + } + currentCsu := current.Spec.GetCsu() + if currentCsu == csu { + return fmt.Errorf("ksqlDB cluster %q is already at %d CSUs; no change requested", + clusterId, csu) + } + if csu < currentCsu { + return fmt.Errorf("ksqlDB cluster %q is currently %d CSUs; shrinking is not supported "+ + "(target %d < current %d)", clusterId, currentCsu, csu, currentCsu) + } + + output.ErrPrintf(c.Config.EnableColor, + "Resizing ksqlDB cluster %q from %d to %d CSUs. A rolling restart will be "+ + "performed asynchronously; the cluster will continue serving queries during the resize.\n", + clusterId, currentCsu, csu) + + cluster, err := c.V2Client.UpdateKsqlCluster(clusterId, environmentId, csu) + if err != nil { + return err + } + + table := output.NewTable(cmd) + table.Add(c.formatClusterForDisplayAndList(&cluster)) + return table.Print() +} + +// validateCsuForUpdate returns nil if csu is in validCsuSizes, and a +// customer-safe error otherwise. The server-side check in +// cc-control-plane-ksql is authoritative; this client-side validation exists +// to fail fast with a clearer message before issuing the API call. +func validateCsuForUpdate(csu int32) error { + if csu > 28 { + return fmt.Errorf("%d CSUs: %s", csu, csuSupportTicketMessage) + } + for _, valid := range validCsuSizes { + if csu == valid { + return nil + } + } + return fmt.Errorf("%d is not a valid CSU size for cluster update. Valid sizes are %s", + csu, formatCsuList(validCsuSizes)) +} + +func formatCsuList(sizes []int32) string { + sorted := append([]int32(nil), sizes...) + sort.Slice(sorted, func(i, j int) bool { return sorted[i] < sorted[j] }) + out := "" + for i, s := range sorted { + if i > 0 { + out += ", " + } + out += fmt.Sprintf("%d", s) + } + return out +} diff --git a/internal/ksql/command_cluster_update_test.go b/internal/ksql/command_cluster_update_test.go new file mode 100644 index 0000000000..ab13bae852 --- /dev/null +++ b/internal/ksql/command_cluster_update_test.go @@ -0,0 +1,78 @@ +package ksql + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestValidateCsuForUpdate(t *testing.T) { + tests := []struct { + name string + csu int32 + expectErr bool + errContains string + }{ + {name: "valid 4", csu: 4}, + {name: "valid 8", csu: 8}, + {name: "valid 12", csu: 12}, + {name: "valid 16", csu: 16}, + {name: "valid 20", csu: 20}, + {name: "valid 24", csu: 24}, + {name: "valid 28", csu: 28}, + { + name: "legacy size 1 rejected", + csu: 1, + expectErr: true, + errContains: "not a valid CSU size", + }, + { + name: "legacy size 2 rejected", + csu: 2, + expectErr: true, + errContains: "not a valid CSU size", + }, + { + name: "in-range but non-canonical (5) rejected", + csu: 5, + expectErr: true, + errContains: "not a valid CSU size", + }, + { + name: "in-range but non-canonical (10) rejected", + csu: 10, + expectErr: true, + errContains: "not a valid CSU size", + }, + { + name: "above 28 routes to support-ticket message", + csu: 32, + expectErr: true, + errContains: "support ticket", + }, + { + name: "well above ceiling routes to support-ticket message", + csu: 128, + expectErr: true, + errContains: "support ticket", + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + err := validateCsuForUpdate(tc.csu) + if tc.expectErr { + require.Error(t, err) + require.Contains(t, err.Error(), tc.errContains) + } else { + require.NoError(t, err) + } + }) + } +} + +func TestFormatCsuList(t *testing.T) { + require.Equal(t, "4, 8, 12, 16, 20, 24, 28", formatCsuList(validCsuSizes)) + // Input order should not matter; output is sorted ascending. + require.Equal(t, "4, 8, 16", formatCsuList([]int32{16, 4, 8})) +} diff --git a/pkg/ccloudv2/ksql.go b/pkg/ccloudv2/ksql.go index 2327e25a6e..cef5273867 100644 --- a/pkg/ccloudv2/ksql.go +++ b/pkg/ccloudv2/ksql.go @@ -2,6 +2,7 @@ package ccloudv2 import ( "context" + "fmt" "net/http" ksqlv2 "github.com/confluentinc/ccloud-sdk-go-v2/ksql/v2" @@ -73,3 +74,29 @@ func (c *Client) CreateKsqlCluster(displayName, environmentId, kafkaClusterId, c res, httpResp, err := c.KsqlClient.ClustersKsqldbcmV2Api.CreateKsqldbcmV2Cluster(c.ksqlApiContext()).KsqldbcmV2Cluster(cluster).Execute() return res, errors.CatchCCloudV2Error(err, httpResp) } + +// UpdateKsqlCluster issues PATCH /ksqldbcm/v2/clusters/{id} with {"spec":{"csu": N}} +// to trigger a self-serve cluster resize. +// +// The PATCH operation is not yet available in ccloud-sdk-go-v2/ksql/v2 — it is +// being added in cc-api PR #2507 (KSQL-14844), after which the SDK needs to be +// regenerated and the ksql module dependency in go.mod bumped. Until that +// lands, calling this method returns a clear, customer-safe error rather than +// an HTTP failure. See KSQL-14849 for the work item. +// +// Wiring instructions once the SDK is regenerated: +// +// cluster := ksqlv2.KsqldbcmV2Cluster{Spec: &ksqlv2.KsqldbcmV2ClusterSpec{Csu: &csu}} +// res, httpResp, err := c.KsqlClient.ClustersKsqldbcmV2Api. +// UpdateKsqldbcmV2Cluster(c.ksqlApiContext(), id). +// KsqldbcmV2ClusterUpdate(cluster).Environment(environmentId).Execute() +// return res, errors.CatchCCloudV2Error(err, httpResp) +func (c *Client) UpdateKsqlCluster(id, environmentId string, csu int32) (ksqlv2.KsqldbcmV2Cluster, error) { + _ = id + _ = environmentId + _ = csu + return ksqlv2.KsqldbcmV2Cluster{}, fmt.Errorf( + "ksqlDB cluster update is not yet available in this CLI build; " + + "this command is pending a ccloud-sdk-go-v2/ksql regeneration " + + "after cc-api PR #2507 (KSQL-14844) merges. Track KSQL-14849 for status.") +} From 18d52f46de0b2a4c05633edf75b764061249de25 Mon Sep 17 00:00:00 2001 From: Vedarth Sharma Date: Tue, 2 Jun 2026 20:36:10 +0530 Subject: [PATCH 2/3] KSQL-14849: update golden help fixtures for new 'cluster update' subcommand CI failure on #3368 was two integration-test golden-file mismatches: - test/fixtures/output/ksql/cluster/help.golden was missing the new 'update' line under Available Commands. - test/fixtures/output/ksql/cluster/update-help.golden didn't exist; the new subcommand needs its own --help fixture. help-onprem.golden is unchanged: the update subcommand is registered only on the cloud-login branch in internal/ksql/command_cluster.go, so on-prem builds don't include it. --- test/fixtures/output/ksql/cluster/help.golden | 1 + .../output/ksql/cluster/update-help.golden | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 test/fixtures/output/ksql/cluster/update-help.golden diff --git a/test/fixtures/output/ksql/cluster/help.golden b/test/fixtures/output/ksql/cluster/help.golden index f89c373cdf..29c52e8721 100644 --- a/test/fixtures/output/ksql/cluster/help.golden +++ b/test/fixtures/output/ksql/cluster/help.golden @@ -9,6 +9,7 @@ Available Commands: delete Delete one or more ksqlDB clusters. describe Describe a ksqlDB cluster. list List ksqlDB clusters. + update Update a ksqlDB cluster. Global Flags: -h, --help Show help for this command. diff --git a/test/fixtures/output/ksql/cluster/update-help.golden b/test/fixtures/output/ksql/cluster/update-help.golden new file mode 100644 index 0000000000..19dbc848b8 --- /dev/null +++ b/test/fixtures/output/ksql/cluster/update-help.golden @@ -0,0 +1,25 @@ +Update an existing ksqlDB cluster. Currently only the CSU count may be +modified, and only to larger sizes (shrink is not supported). + +Valid CSU values are 4, 8, 12, 16, 20, 24, 28. Larger sizes require a support ticket. +The cluster will undergo a rolling restart to apply the new size; the +command returns once the resize has been accepted by the control plane. + +Usage: + confluent ksql cluster update [flags] + +Examples: +Resize ksqlDB cluster "lksqlc-12345" to 8 CSUs. + + $ confluent ksql cluster update lksqlc-12345 --csu 8 + +Flags: + --csu int32 REQUIRED: Target number of CSUs for the cluster. Valid values: 4, 8, 12, 16, 20, 24, 28. + --context string CLI context name. + --environment string Environment ID. + -o, --output string Specify the output format as "human", "json", or "yaml". (default "human") + +Global Flags: + -h, --help Show help for this command. + --unsafe-trace Equivalent to -vvvv, but also log HTTP requests and responses which might contain plaintext secrets. + -v, --verbose count Increase verbosity (-v for warn, -vv for info, -vvv for debug, -vvvv for trace). From 9b9eee259726b73da0750622be554dcf022ba544 Mon Sep 17 00:00:00 2001 From: Vedarth Sharma Date: Wed, 3 Jun 2026 11:47:04 +0530 Subject: [PATCH 3/3] KSQL-14849: address Copilot review on #3368 (5 threads) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Hide subcommand while SDK call is shimmed (Copilot:command_cluster.go:24). The 'update' subcommand was wired into the cloud command tree but Client.UpdateKsqlCluster always returned an error, so a released build would expose a permanently failing command to customers. Add Hidden: true on the cobra.Command — the command stays reachable for testing and review, but doesn't appear in 'ksql cluster --help' or discovery. Drop Hidden when the SDK is regenerated. 2. Move rolling-restart notice to AFTER successful PATCH (Copilot:command_cluster_update.go:110). Printing 'Resizing…' before the call was misleading on failure (and is always wrong with the current shim that always fails). Now printed only once UpdateKsqlCluster returns nil error. 3. Fix long-description indentation (Copilot:command_cluster_update.go:63). The raw multi-line string had leading whitespace on wrapped lines that would render with extra leading spaces in --help. Use a concatenated string literal with explicit \n\n paragraph break and no embedded indentation. 4. Derive support-ticket threshold from validCsuSizes (Copilot:command_cluster_update.go:123). The hard-coded '28' in validateCsuForUpdate duplicated knowledge already in the validCsuSizes slice. Added maxSelfServeCSU computed once from the slice; validateCsuForUpdate and csuSupportTicketMessage both use it. If validCsuSizes is extended later, the threshold moves with it. 5. Customer-safe error message in SDK shim (Copilot:ksql.go:101). The shim error referenced cc-api PR #2507 and KSQL-* Jira IDs, which are internal tracking artifacts. Replaced with a generic 'this command is not yet available in this CLI build; please upgrade and retry' message. Internal context stays in the doc comment on UpdateKsqlCluster where reviewers and future maintainers can find it. Golden-file impact: - help.golden: 'update' no longer listed under Available Commands (because Hidden=true). - update-help.golden: deleted; testHelp removes fixtures for !cmd.IsAvailableCommand(), and Hidden makes update unavailable in the parent's listing (own --help still works at runtime). --- internal/ksql/command_cluster_update.go | 60 +++++++++++++------ pkg/ccloudv2/ksql.go | 5 +- test/fixtures/output/ksql/cluster/help.golden | 1 - .../output/ksql/cluster/update-help.golden | 25 -------- 4 files changed, 45 insertions(+), 46 deletions(-) delete mode 100644 test/fixtures/output/ksql/cluster/update-help.golden diff --git a/internal/ksql/command_cluster_update.go b/internal/ksql/command_cluster_update.go index 42929f22af..25d0042f9a 100644 --- a/internal/ksql/command_cluster_update.go +++ b/internal/ksql/command_cluster_update.go @@ -15,14 +15,33 @@ import ( // Valid CSU sizes that customers may target via self-serve cluster update. // Mirrors the server-side authoritative list in cc-control-plane-ksql: // internal/service/update_ksql_cluster_resize.go::validCSUSizes. -// Values 1, 2 are legacy and not user-selectable. Values above 28 still -// require a support ticket. +// Values 1, 2 are legacy and not user-selectable. Values above maxSelfServeCSU +// (the largest entry in this slice) still require a support ticket. // //nolint:gochecknoglobals var validCsuSizes = []int32{4, 8, 12, 16, 20, 24, 28} -const csuSupportTicketMessage = "CSU values above 28 require a support ticket. " + - "Please contact Confluent Support to request a larger cluster size." +// maxSelfServeCSU is derived from validCsuSizes so the support-ticket +// threshold and the "Valid values" listing stay in lockstep — if the +// validCsuSizes slice is extended, the threshold moves with it. +// +//nolint:gochecknoglobals +var maxSelfServeCSU = func() int32 { + max := int32(0) + for _, v := range validCsuSizes { + if v > max { + max = v + } + } + return max +}() + +func csuSupportTicketMessage() string { + return fmt.Sprintf( + "CSU values above %d require a support ticket. "+ + "Please contact Confluent Support to request a larger cluster size.", + maxSelfServeCSU) +} func (c *ksqlCommand) newUpdateCommand() *cobra.Command { cmd := &cobra.Command{ @@ -32,6 +51,10 @@ func (c *ksqlCommand) newUpdateCommand() *cobra.Command { Args: cobra.ExactArgs(1), ValidArgsFunction: pcmd.NewValidArgsFunction(c.validArgs), RunE: c.update, + // Hidden while the SDK call is shimmed (see Client.UpdateKsqlCluster + // in pkg/ccloudv2/ksql.go). Once the SDK is regenerated from cc-api + // PR #2507 and the shim is replaced with the real call, drop Hidden. + Hidden: true, Example: examples.BuildExampleString( examples.Example{ Text: `Resize ksqlDB cluster "lksqlc-12345" to 8 CSUs.`, @@ -54,12 +77,11 @@ func (c *ksqlCommand) newUpdateCommand() *cobra.Command { func buildUpdateLongDescription() string { return fmt.Sprintf( - `Update an existing ksqlDB cluster. Currently only the CSU count may be -modified, and only to larger sizes (shrink is not supported). - -Valid CSU values are %s. Larger sizes require a support ticket. -The cluster will undergo a rolling restart to apply the new size; the -command returns once the resize has been accepted by the control plane.`, + "Update an existing ksqlDB cluster. Currently only the CSU count may be modified, "+ + "and only to larger sizes (shrink is not supported).\n\n"+ + "Valid CSU values are %s. Larger sizes require a support ticket. "+ + "The cluster will undergo a rolling restart to apply the new size; "+ + "the command returns once the resize has been accepted by the control plane.", formatCsuList(validCsuSizes)) } @@ -98,16 +120,20 @@ func (c *ksqlCommand) update(cmd *cobra.Command, args []string) error { "(target %d < current %d)", clusterId, currentCsu, csu, currentCsu) } - output.ErrPrintf(c.Config.EnableColor, - "Resizing ksqlDB cluster %q from %d to %d CSUs. A rolling restart will be "+ - "performed asynchronously; the cluster will continue serving queries during the resize.\n", - clusterId, currentCsu, csu) - cluster, err := c.V2Client.UpdateKsqlCluster(clusterId, environmentId, csu) if err != nil { return err } + // Print the rolling-restart notice only AFTER the PATCH was accepted — + // otherwise a failed call (e.g., a 4xx from the server) would leave the + // customer with a misleading "Resizing…" message even though no resize + // is happening. + output.ErrPrintf(c.Config.EnableColor, + "Resizing ksqlDB cluster %q from %d to %d CSUs. A rolling restart will be "+ + "performed asynchronously; the cluster will continue serving queries during the resize.\n", + clusterId, currentCsu, csu) + table := output.NewTable(cmd) table.Add(c.formatClusterForDisplayAndList(&cluster)) return table.Print() @@ -118,8 +144,8 @@ func (c *ksqlCommand) update(cmd *cobra.Command, args []string) error { // cc-control-plane-ksql is authoritative; this client-side validation exists // to fail fast with a clearer message before issuing the API call. func validateCsuForUpdate(csu int32) error { - if csu > 28 { - return fmt.Errorf("%d CSUs: %s", csu, csuSupportTicketMessage) + if csu > maxSelfServeCSU { + return fmt.Errorf("%d CSUs: %s", csu, csuSupportTicketMessage()) } for _, valid := range validCsuSizes { if csu == valid { diff --git a/pkg/ccloudv2/ksql.go b/pkg/ccloudv2/ksql.go index cef5273867..71cbd28da0 100644 --- a/pkg/ccloudv2/ksql.go +++ b/pkg/ccloudv2/ksql.go @@ -96,7 +96,6 @@ func (c *Client) UpdateKsqlCluster(id, environmentId string, csu int32) (ksqlv2. _ = environmentId _ = csu return ksqlv2.KsqldbcmV2Cluster{}, fmt.Errorf( - "ksqlDB cluster update is not yet available in this CLI build; " + - "this command is pending a ccloud-sdk-go-v2/ksql regeneration " + - "after cc-api PR #2507 (KSQL-14844) merges. Track KSQL-14849 for status.") + "ksqlDB cluster update is not yet available in this CLI build. " + + "Please upgrade to a newer version of the Confluent CLI and retry.") } diff --git a/test/fixtures/output/ksql/cluster/help.golden b/test/fixtures/output/ksql/cluster/help.golden index 29c52e8721..f89c373cdf 100644 --- a/test/fixtures/output/ksql/cluster/help.golden +++ b/test/fixtures/output/ksql/cluster/help.golden @@ -9,7 +9,6 @@ Available Commands: delete Delete one or more ksqlDB clusters. describe Describe a ksqlDB cluster. list List ksqlDB clusters. - update Update a ksqlDB cluster. Global Flags: -h, --help Show help for this command. diff --git a/test/fixtures/output/ksql/cluster/update-help.golden b/test/fixtures/output/ksql/cluster/update-help.golden deleted file mode 100644 index 19dbc848b8..0000000000 --- a/test/fixtures/output/ksql/cluster/update-help.golden +++ /dev/null @@ -1,25 +0,0 @@ -Update an existing ksqlDB cluster. Currently only the CSU count may be -modified, and only to larger sizes (shrink is not supported). - -Valid CSU values are 4, 8, 12, 16, 20, 24, 28. Larger sizes require a support ticket. -The cluster will undergo a rolling restart to apply the new size; the -command returns once the resize has been accepted by the control plane. - -Usage: - confluent ksql cluster update [flags] - -Examples: -Resize ksqlDB cluster "lksqlc-12345" to 8 CSUs. - - $ confluent ksql cluster update lksqlc-12345 --csu 8 - -Flags: - --csu int32 REQUIRED: Target number of CSUs for the cluster. Valid values: 4, 8, 12, 16, 20, 24, 28. - --context string CLI context name. - --environment string Environment ID. - -o, --output string Specify the output format as "human", "json", or "yaml". (default "human") - -Global Flags: - -h, --help Show help for this command. - --unsafe-trace Equivalent to -vvvv, but also log HTTP requests and responses which might contain plaintext secrets. - -v, --verbose count Increase verbosity (-v for warn, -vv for info, -vvv for debug, -vvvv for trace).