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

Commit 46775b2

Browse files
authored
chore: provide resource pool id and namespace in env create (#258)
1 parent da1cf07 commit 46775b2

File tree

3 files changed

+48
-20
lines changed

3 files changed

+48
-20
lines changed

coder-sdk/env.go

+17-18
Original file line numberDiff line numberDiff line change
@@ -75,16 +75,17 @@ const (
7575

7676
// CreateEnvironmentRequest is used to configure a new environment.
7777
type CreateEnvironmentRequest struct {
78-
Name string `json:"name"`
79-
ImageID string `json:"image_id"`
80-
OrgID string `json:"org_id"`
81-
ImageTag string `json:"image_tag"`
82-
CPUCores float32 `json:"cpu_cores"`
83-
MemoryGB float32 `json:"memory_gb"`
84-
DiskGB int `json:"disk_gb"`
85-
GPUs int `json:"gpus"`
86-
Services []string `json:"services"`
87-
UseContainerVM bool `json:"use_container_vm"`
78+
Name string `json:"name"`
79+
ImageID string `json:"image_id"`
80+
OrgID string `json:"org_id"`
81+
ImageTag string `json:"image_tag"`
82+
CPUCores float32 `json:"cpu_cores"`
83+
MemoryGB float32 `json:"memory_gb"`
84+
DiskGB int `json:"disk_gb"`
85+
GPUs int `json:"gpus"`
86+
UseContainerVM bool `json:"use_container_vm"`
87+
ResourcePoolID string `json:"resource_pool_id"`
88+
Namespace string `json:"namespace"`
8889

8990
// Template comes from the parse template route on cemanager.
9091
// This field should never be manually populated
@@ -189,14 +190,12 @@ func (c *DefaultClient) StopEnvironment(ctx context.Context, envID string) error
189190
// UpdateEnvironmentReq defines the update operation, only setting
190191
// nil-fields.
191192
type UpdateEnvironmentReq struct {
192-
ImageID *string `json:"image_id"`
193-
ImageTag *string `json:"image_tag"`
194-
CPUCores *float32 `json:"cpu_cores"`
195-
MemoryGB *float32 `json:"memory_gb"`
196-
DiskGB *int `json:"disk_gb"`
197-
GPUs *int `json:"gpus"`
198-
Services *[]string `json:"services"`
199-
CodeServerReleaseURL *string `json:"code_server_release_url"`
193+
ImageID *string `json:"image_id"`
194+
ImageTag *string `json:"image_tag"`
195+
CPUCores *float32 `json:"cpu_cores"`
196+
MemoryGB *float32 `json:"memory_gb"`
197+
DiskGB *int `json:"disk_gb"`
198+
GPUs *int `json:"gpus"`
200199
}
201200

202201
// RebuildEnvironment requests that the given envID is rebuilt with no changes to its specification.

internal/cmd/envs.go

+17-2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"os"
1212

1313
"cdr.dev/coder-cli/coder-sdk"
14+
"cdr.dev/coder-cli/internal/coderutil"
1415
"cdr.dev/coder-cli/internal/x/xcobra"
1516
"cdr.dev/coder-cli/pkg/clog"
1617
"cdr.dev/coder-cli/pkg/tablewriter"
@@ -198,6 +199,11 @@ coder envs create my-new-powerful-env --cpu 12 --disk 100 --memory 16 --image ub
198199
return err
199200
}
200201

202+
provider, err := coderutil.DefaultWorkspaceProvider(ctx, client)
203+
if err != nil {
204+
return xerrors.Errorf("default workspace provider: %w", err)
205+
}
206+
201207
// ExactArgs(1) ensures our name value can't panic on an out of bounds.
202208
createReq := &coder.CreateEnvironmentRequest{
203209
Name: args[0],
@@ -209,6 +215,8 @@ coder envs create my-new-powerful-env --cpu 12 --disk 100 --memory 16 --image ub
209215
DiskGB: disk,
210216
GPUs: gpus,
211217
UseContainerVM: useCVM,
218+
ResourcePoolID: provider.ID,
219+
Namespace: provider.DefaultNamespace,
212220
}
213221

214222
// if any of these defaulted to their zero value we provision
@@ -339,9 +347,16 @@ coder envs create-from-repo -f coder.yaml`,
339347
return xerrors.Errorf("parse environment template config: %w", err)
340348
}
341349

350+
provider, err := coderutil.DefaultWorkspaceProvider(ctx, client)
351+
if err != nil {
352+
return xerrors.Errorf("default workspace provider: %w", err)
353+
}
354+
342355
env, err := client.CreateEnvironment(ctx, coder.CreateEnvironmentRequest{
343-
OrgID: userOrg.ID,
344-
Template: tpl,
356+
OrgID: userOrg.ID,
357+
Template: tpl,
358+
ResourcePoolID: provider.ID,
359+
Namespace: provider.DefaultNamespace,
345360
})
346361
if err != nil {
347362
return xerrors.Errorf("create environment: %w", err)

internal/coderutil/env.go

+14
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,17 @@ func EnvsWithProvider(ctx context.Context, client coder.Client, envs []coder.Env
5858
}
5959
return pooledEnvs, nil
6060
}
61+
62+
// DefaultWorkspaceProvider returns the default provider with which to create environments.
63+
func DefaultWorkspaceProvider(ctx context.Context, c coder.Client) (*coder.WorkspaceProvider, error) {
64+
provider, err := c.WorkspaceProviders(ctx)
65+
if err != nil {
66+
return nil, err
67+
}
68+
for _, p := range provider {
69+
if p.Local {
70+
return &p, nil
71+
}
72+
}
73+
return nil, coder.ErrNotFound
74+
}

0 commit comments

Comments
 (0)