From 8c203ee9c9c60576fdaeaa79a91c42471471ec1a Mon Sep 17 00:00:00 2001 From: Garrett Date: Wed, 21 Apr 2021 14:29:04 +0000 Subject: [PATCH 1/2] Add coder providers rename command --- coder-sdk/interface.go | 3 +++ coder-sdk/workspace_providers.go | 15 +++++++++++++++ internal/cmd/providers.go | 33 ++++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+) diff --git a/coder-sdk/interface.go b/coder-sdk/interface.go index 93043ee7..b5e0c045 100644 --- a/coder-sdk/interface.go +++ b/coder-sdk/interface.go @@ -232,4 +232,7 @@ type Client interface { // UnCordonWorkspaceProvider changes an existing cordoned providers status to 'Ready'; // allowing it to continue creating new workspaces and provisioning resources for them. UnCordonWorkspaceProvider(ctx context.Context, id string) error + + // RenameWorkspaceProvider changes an existing cordoned providers name field. + RenameWorkspaceProvider(ctx context.Context, id string, name string) error } diff --git a/coder-sdk/workspace_providers.go b/coder-sdk/workspace_providers.go index 673dc63e..28710867 100644 --- a/coder-sdk/workspace_providers.go +++ b/coder-sdk/workspace_providers.go @@ -123,3 +123,18 @@ func (c *DefaultClient) UnCordonWorkspaceProvider(ctx context.Context, id string } return nil } + +// RenameWorkspaceProviderReq defines the request parameters for changing a workspace provider name. +type RenameWorkspaceProviderReq struct { + Name string `json:"name"` +} + +// RenameWorkspaceProvider changes an existing cordoned providers name field. +func (c *DefaultClient) RenameWorkspaceProvider(ctx context.Context, id string, name string) error { + req := RenameWorkspaceProviderReq{Name: name} + err := c.requestBody(ctx, http.MethodPatch, "/api/private/resource-pools/"+id, req, nil) + if err != nil { + return err + } + return nil +} diff --git a/internal/cmd/providers.go b/internal/cmd/providers.go index 678327d3..46074933 100644 --- a/internal/cmd/providers.go +++ b/internal/cmd/providers.go @@ -29,6 +29,7 @@ func providersCmd() *cobra.Command { deleteProviderCmd(), cordonProviderCmd(), unCordonProviderCmd(), + renameProviderCmd(), ) return cmd } @@ -284,3 +285,35 @@ coder providers uncordon my-workspace-provider`, } return cmd } + +func renameProviderCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "rename [old_name] [new_name]", + Args: xcobra.ExactArgs(2), + Short: "rename a workspace provider.", + Long: "Changes the name field of an existing workspace provider.", + Example: `# rename a workspace provider from 'built-in' to 'us-east-1' +coder providers rename build-in us-east-1`, + RunE: func(cmd *cobra.Command, args []string) error { + ctx := cmd.Context() + client, err := newClient(ctx) + if err != nil { + return err + } + + oldName := args[0] + newName := args[1] + provider, err := coderutil.ProviderByName(ctx, client, oldName) + if err != nil { + return err + } + + if err := client.RenameWorkspaceProvider(ctx, provider.ID, newName); err != nil { + return err + } + clog.LogSuccess(fmt.Sprintf("provider %s successfully renamed to %s", oldName, newName)) + return nil + }, + } + return cmd +} From 20d4ae2119ccb65fd83925e7618a513eed78f79f Mon Sep 17 00:00:00 2001 From: Garrett Delfosse Date: Wed, 21 Apr 2021 09:37:17 -0500 Subject: [PATCH 2/2] Update interface.go --- coder-sdk/interface.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coder-sdk/interface.go b/coder-sdk/interface.go index b5e0c045..ef9995c1 100644 --- a/coder-sdk/interface.go +++ b/coder-sdk/interface.go @@ -233,6 +233,6 @@ type Client interface { // allowing it to continue creating new workspaces and provisioning resources for them. UnCordonWorkspaceProvider(ctx context.Context, id string) error - // RenameWorkspaceProvider changes an existing cordoned providers name field. + // RenameWorkspaceProvider changes an existing providers name field. RenameWorkspaceProvider(ctx context.Context, id string, name string) error }