Skip to content
This repository was archived by the owner on Aug 30, 2024. It is now read-only.

Commit 38cb952

Browse files
committed
Validate hostname, name, and cluster address on wsp create
1 parent 4706c84 commit 38cb952

File tree

2 files changed

+30
-6
lines changed

2 files changed

+30
-6
lines changed

coder-sdk/workspace_providers.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,14 @@ const (
4141
WorkspaceProviderReady WorkspaceProviderStatus = "ready"
4242
)
4343

44+
// WorkspaceProviderStatus represents the configuration state of a workspace provider.
45+
type WorkspaceProviderType string
46+
47+
// Workspace Provider statuses.
48+
const (
49+
WorkspaceProviderKubernetes WorkspaceProviderType = "kubernetes"
50+
)
51+
4452
// WorkspaceProviderByID fetches a workspace provider entity by its unique ID.
4553
func (c *DefaultClient) WorkspaceProviderByID(ctx context.Context, id string) (*KubernetesProvider, error) {
4654
var wp KubernetesProvider
@@ -64,6 +72,9 @@ func (c *DefaultClient) WorkspaceProviders(ctx context.Context) (*WorkspaceProvi
6472
// CreateWorkspaceProviderReq defines the request parameters for creating a new workspace provider entity.
6573
type CreateWorkspaceProviderReq struct {
6674
Name string `json:"name"`
75+
Type WorkspaceProviderType `json:"type"`
76+
Hostname string `json:"hostname"`
77+
ClusterAddress string `json:"cluster_address"`
6778
}
6879

6980
// CreateWorkspaceProviderRes defines the response from creating a new workspace provider entity.

internal/cmd/providers.go

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"golang.org/x/xerrors"
88

99
"cdr.dev/coder-cli/coder-sdk"
10-
"cdr.dev/coder-cli/internal/x/xcobra"
1110
"cdr.dev/coder-cli/pkg/clog"
1211
"cdr.dev/coder-cli/pkg/tablewriter"
1312
)
@@ -29,13 +28,18 @@ func providersCmd() *cobra.Command {
2928
}
3029

3130
func createProviderCmd() *cobra.Command {
31+
var (
32+
name string
33+
hostname string
34+
clusterAddress string
35+
)
3236
cmd := &cobra.Command{
33-
Use: "create [workspace_provider_name]",
37+
Use: "create --name=[name] --hostname=[hostname] --clusterAddress=[clusterAddress]",
3438
Short: "create a new workspace provider.",
35-
Args: xcobra.ExactArgs(1),
3639
Long: "Create a new Coder workspace provider.",
3740
Example: `# create a new workspace provider in a pending state
38-
coder providers create my-new-workspace-provider`,
41+
42+
coder providers create --name=my-provider --hostname=provider.example.com --clusterAddress=255.255.255.255`,
3943
RunE: func(cmd *cobra.Command, args []string) error {
4044
ctx := cmd.Context()
4145

@@ -44,9 +48,11 @@ coder providers create my-new-workspace-provider`,
4448
return err
4549
}
4650

47-
// ExactArgs(1) ensures our name value can't panic on an out of bounds.
4851
createReq := &coder.CreateWorkspaceProviderReq{
49-
Name: args[0],
52+
Name: name,
53+
Type: coder.WorkspaceProviderKubernetes,
54+
Hostname: hostname,
55+
ClusterAddress: clusterAddress,
5056
}
5157

5258
wp, err := client.CreateWorkspaceProvider(ctx, *createReq)
@@ -63,6 +69,13 @@ coder providers create my-new-workspace-provider`,
6369
return nil
6470
},
6571
}
72+
73+
cmd.Flags().StringVar(&name, "name", "", "workspace provider name")
74+
cmd.Flags().StringVar(&hostname, "hostname", "", "workspace provider hostname")
75+
cmd.Flags().StringVar(&clusterAddress, "clusterAddress", "", "kubernetes cluster apiserver endpoint")
76+
_ = cmd.MarkFlagRequired("name")
77+
_ = cmd.MarkFlagRequired("hostname")
78+
_ = cmd.MarkFlagRequired("clusterAdress")
6679
return cmd
6780
}
6881

0 commit comments

Comments
 (0)