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

Commit f34aafe

Browse files
authored
Validate hostname, name, and cluster address on wsp create (#277)
* Validate hostname, name, and cluster address on wsp create * fmt * comments
1 parent bc391d9 commit f34aafe

File tree

2 files changed

+31
-6
lines changed

2 files changed

+31
-6
lines changed

coder-sdk/workspace_providers.go

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

44+
// WorkspaceProviderType represents the type of workspace provider.
45+
type WorkspaceProviderType string
46+
47+
// Workspace Provider types.
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
@@ -63,7 +71,10 @@ func (c *DefaultClient) WorkspaceProviders(ctx context.Context) (*WorkspaceProvi
6371

6472
// CreateWorkspaceProviderReq defines the request parameters for creating a new workspace provider entity.
6573
type CreateWorkspaceProviderReq struct {
66-
Name string `json:"name"`
74+
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 & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ package cmd
33
import (
44
"fmt"
55

6+
"cdr.dev/coder-cli/internal/x/xcobra"
7+
68
"github.com/spf13/cobra"
79
"golang.org/x/xerrors"
810

911
"cdr.dev/coder-cli/coder-sdk"
10-
"cdr.dev/coder-cli/internal/x/xcobra"
1112
"cdr.dev/coder-cli/pkg/clog"
1213
"cdr.dev/coder-cli/pkg/tablewriter"
1314
)
@@ -29,13 +30,18 @@ func providersCmd() *cobra.Command {
2930
}
3031

3132
func createProviderCmd() *cobra.Command {
33+
var (
34+
hostname string
35+
clusterAddress string
36+
)
3237
cmd := &cobra.Command{
33-
Use: "create [workspace_provider_name]",
34-
Short: "create a new workspace provider.",
38+
Use: "create [name] --hostname=[hostname] --clusterAddress=[clusterAddress]",
3539
Args: xcobra.ExactArgs(1),
40+
Short: "create a new workspace provider.",
3641
Long: "Create a new Coder workspace provider.",
3742
Example: `# create a new workspace provider in a pending state
38-
coder providers create my-new-workspace-provider`,
43+
44+
coder providers create my-provider --hostname=https://provider.example.com --cluster-address=https://255.255.255.255`,
3945
RunE: func(cmd *cobra.Command, args []string) error {
4046
ctx := cmd.Context()
4147

@@ -46,7 +52,10 @@ coder providers create my-new-workspace-provider`,
4652

4753
// ExactArgs(1) ensures our name value can't panic on an out of bounds.
4854
createReq := &coder.CreateWorkspaceProviderReq{
49-
Name: args[0],
55+
Name: args[0],
56+
Type: coder.WorkspaceProviderKubernetes,
57+
Hostname: hostname,
58+
ClusterAddress: clusterAddress,
5059
}
5160

5261
wp, err := client.CreateWorkspaceProvider(ctx, *createReq)
@@ -63,6 +72,11 @@ coder providers create my-new-workspace-provider`,
6372
return nil
6473
},
6574
}
75+
76+
cmd.Flags().StringVar(&hostname, "hostname", "", "workspace provider hostname")
77+
cmd.Flags().StringVar(&clusterAddress, "cluster-address", "", "kubernetes cluster apiserver endpoint")
78+
_ = cmd.MarkFlagRequired("hostname")
79+
_ = cmd.MarkFlagRequired("cluster-address")
6680
return cmd
6781
}
6882

0 commit comments

Comments
 (0)