Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch flag definitions to be on pflag instead of flag in package go/vt/vtctl #11304

Closed
ajm188 opened this issue Sep 21, 2022 · 5 comments · Fixed by #11320
Closed

Switch flag definitions to be on pflag instead of flag in package go/vt/vtctl #11304

ajm188 opened this issue Sep 21, 2022 · 5 comments · Fixed by #11320
Assignees
Labels
Component: CLI Component: vtctl Type: Enhancement Logical improvement (somewhere between a bug and feature) Type: Internal Cleanup

Comments

@ajm188
Copy link
Contributor

ajm188 commented Sep 21, 2022

Part of #10697.

Current flags:

$ git grep -E "\bflag\.[A-Z]" -- go/vt/vtctl/*.go
go/vt/vtctl/backup.go:func commandBackup(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/backup.go:func commandBackupShard(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/backup.go:func commandListBackups(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/backup.go:func commandRemoveBackup(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/backup.go:func commandRestoreFromBackup(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/cell_info.go:func commandAddCellInfo(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/cell_info.go:func commandUpdateCellInfo(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/cell_info.go:func commandDeleteCellInfo(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/cell_info.go:func commandGetCellInfoNames(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/cell_info.go:func commandGetCellInfo(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/cells_aliases.go:func commandAddCellsAlias(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/cells_aliases.go:func commandUpdateCellsAlias(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/cells_aliases.go:func commandDeleteCellsAlias(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/cells_aliases.go:func commandGetCellsAliases(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/reparent.go:func commandReparentTablet(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/reparent.go:func commandInitShardPrimary(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/reparent.go:func commandPlannedReparentShard(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/reparent.go:func commandEmergencyReparentShard(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/reparent.go:func commandTabletExternallyReparented(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/topo.go:func commandTopoCat(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/topo.go:func commandTopoCp(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vdiff2.go:func commandVDiff2(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:   HealthCheckTopologyRefresh = flag.Duration("vtctl_healthcheck_topology_refresh", 30*time.Second, "refresh interval for re-reading the topology")
go/vt/vtctl/vtctl.go:   HealthcheckRetryDelay      = flag.Duration("vtctl_healthcheck_retry_delay", 5*time.Second, "delay before retrying a failed healthcheck")
go/vt/vtctl/vtctl.go:   HealthCheckTimeout         = flag.Duration("vtctl_healthcheck_timeout", time.Minute, "the health check timeout period")
go/vt/vtctl/vtctl.go:   method func(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error
go/vt/vtctl/vtctl.go:                           method: func(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:                           method: func(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandInitTablet(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandGetTablet(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandUpdateTabletAddrs(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandDeleteTablet(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandSetReadOnly(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandSetReadWrite(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandStartReplication(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandStopReplication(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandChangeTabletType(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandPing(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandRefreshState(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandRefreshStateByShard(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandRunHealthCheck(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandIgnoreHealthError(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandSleep(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandExecuteFetchAsApp(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandExecuteFetchAsDba(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandVReplicationExec(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandExecuteHook(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandCreateShard(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandGetShard(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandValidateShard(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandShardReplicationPositions(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandListShardTablets(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandSetShardIsPrimaryServing(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandUpdateSrvKeyspacePartition(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandSetShardTabletControl(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandSourceShardDelete(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandSourceShardAdd(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandShardReplicationAdd(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandShardReplicationRemove(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandShardReplicationFix(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandWaitForFilteredReplication(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandRemoveShardCell(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandDeleteShard(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandCreateKeyspace(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandDeleteKeyspace(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandRemoveKeyspaceCell(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandGetKeyspace(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandGetKeyspaces(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandRebuildKeyspaceGraph(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandValidateKeyspace(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandReshard(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandMoveTables(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandMigrate(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandVRWorkflow(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string,
go/vt/vtctl/vtctl.go:func commandCreateLookupVindex(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandExternalizeVindex(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandMaterialize(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandVDiff(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandDropSources(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandSwitchReads(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandSwitchWrites(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandFindAllShardsInKeyspace(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandValidate(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandListAllTablets(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandListTablets(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandGetSchema(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandReloadSchema(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandReloadSchemaShard(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandReloadSchemaKeyspace(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandValidateSchemaShard(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandValidateSchemaKeyspace(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandApplySchema(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandOnlineDDL(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandCopySchemaShard(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandValidateVersionShard(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandValidateVersionKeyspace(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandGetPermissions(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandValidatePermissionsShard(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandValidatePermissionsKeyspace(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandGetVSchema(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandGetRoutingRules(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandRebuildVSchemaGraph(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandApplyVSchema(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandApplyRoutingRules(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandGetSrvKeyspaceNames(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandGetSrvKeyspace(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandGetSrvVSchema(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandDeleteSrvVSchema(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandGetShardReplication(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandHelp(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandVExec(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandWorkflow(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandMount(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandGenerateShardRanges(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:func commandPanic(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/vtctl.go:                           subFlags := flag.NewFlagSet(action, flag.ContinueOnError)
go/vt/vtctl/vtctl.go:func userPassedFlag(flags *flag.FlagSet, name string) bool {
go/vt/vtctl/vtctl.go:   flags.Visit(func(f *flag.Flag) {
go/vt/vtctl/workflow.go:func commandWorkflowCreate(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/workflow.go:func commandWorkflowStart(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/workflow.go:func commandWorkflowStop(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/workflow.go:func commandWorkflowDelete(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/workflow.go:func commandWorkflowWait(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/workflow.go:func commandWorkflowTree(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
go/vt/vtctl/workflow.go:func commandWorkflowAction(ctx context.Context, wr *wrangler.Wrangler, subFlags *flag.FlagSet, args []string) error {
@ajm188
Copy link
Contributor Author

ajm188 commented Sep 21, 2022

I will do one subcommand in what I think is a good approach, but I'm leaving this one for volunteers.

@GuptaManan100
Copy link
Member

I took a look today, but didn't you end up doing them all? The referenced commit seems to be doing it for all the flags

@ajm188
Copy link
Contributor Author

ajm188 commented Sep 22, 2022

yeah, i realized it was simpler than to have two different ways to pass a flagset (since if i did just one command then i need two different method functions, one that takes a pflag.FlagSet and another that takes a goflag.FlagSet)

@GuptaManan100
Copy link
Member

@ajm188 Is this complete or is it outstanding?

@ajm188
Copy link
Contributor Author

ajm188 commented Sep 28, 2022

Outstanding. I'm working on it (see the linked PR), any ideas on the tests are welcome

ajm188 pushed a commit to planetscale/vitess that referenced this issue Oct 1, 2022
deepthi added a commit that referenced this issue Oct 3, 2022
* [cli] [vtctl] Migrate all vtctl commands to `pflag`

Closes #11304.

Signed-off-by: Andrew Mason <[email protected]>

* fix test flags

Signed-off-by: Andrew Mason <[email protected]>

* Handle subflag argument parsing without fully moving to cobra (yet!)

Signed-off-by: Andrew Mason <[email protected]>

* update examples

Signed-off-by: Andrew Mason <[email protected]>

* strip off double-dash

Signed-off-by: Andrew Mason <[email protected]>

* Fix pflag getting tripped on shard 0 bounded shard names

Signed-off-by: Andrew Mason <[email protected]>

* remove commented-out code

Signed-off-by: Andrew Mason <[email protected]>

* update release notes

Signed-off-by: Andrew Mason <[email protected]>

* fix ExecuteHook, which takes no flags

Signed-off-by: Andrew Mason <[email protected]>

* add deprecation notice around interspersal

Signed-off-by: Andrew Mason <[email protected]>

* fix flags for vtctld2 web calls

Signed-off-by: Andrew Mason <[email protected]>

* Run make web_build

Signed-off-by: notfelineit <[email protected]>

* test: fix vtctld_web_test

Signed-off-by: deepthi <[email protected]>

* update test assertions

Signed-off-by: Andrew Mason <[email protected]>

* just double-dash everything

Signed-off-by: Andrew Mason <[email protected]>

* Run make web_build

Signed-off-by: notfelineit <[email protected]>

Signed-off-by: Andrew Mason <[email protected]>
Signed-off-by: notfelineit <[email protected]>
Signed-off-by: deepthi <[email protected]>
Co-authored-by: notfelineit <[email protected]>
Co-authored-by: deepthi <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component: CLI Component: vtctl Type: Enhancement Logical improvement (somewhere between a bug and feature) Type: Internal Cleanup
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants