diff --git a/cli/list.go b/cli/list.go
index 4b50ba16a7d34..c1771d5db04b7 100644
--- a/cli/list.go
+++ b/cli/list.go
@@ -30,6 +30,7 @@ type workspaceListRow struct {
Outdated bool `json:"-" table:"outdated"`
StartsAt string `json:"-" table:"starts at"`
StopsAfter string `json:"-" table:"stops after"`
+ DailyCost string `json:"-" table:"daily cost"`
}
func workspaceListRowFromWorkspace(now time.Time, usersByID map[uuid.UUID]codersdk.User, workspace codersdk.Workspace) workspaceListRow {
@@ -68,6 +69,7 @@ func workspaceListRowFromWorkspace(now time.Time, usersByID map[uuid.UUID]coders
Outdated: workspace.Outdated,
StartsAt: autostartDisplay,
StopsAfter: autostopDisplay,
+ DailyCost: strconv.Itoa(int(workspace.LatestBuild.DailyCost)),
}
}
@@ -78,7 +80,19 @@ func (r *RootCmd) list() *clibase.Cmd {
searchQuery string
displayWorkspaces []workspaceListRow
formatter = cliui.NewOutputFormatter(
- cliui.TableFormat([]workspaceListRow{}, nil),
+ cliui.TableFormat(
+ []workspaceListRow{},
+ []string{
+ "workspace",
+ "template",
+ "status",
+ "healthy",
+ "last built",
+ "outdated",
+ "starts at",
+ "stops after",
+ },
+ ),
cliui.JSONFormat(),
)
)
diff --git a/cli/testdata/coder_list_--help.golden b/cli/testdata/coder_list_--help.golden
index a9bb8218ba1c0..e4e6f5dd3524a 100644
--- a/cli/testdata/coder_list_--help.golden
+++ b/cli/testdata/coder_list_--help.golden
@@ -11,7 +11,7 @@ Aliases: ls
-c, --column string-array (default: workspace,template,status,healthy,last built,outdated,starts at,stops after)
Columns to display in table output. Available columns: workspace,
template, status, healthy, last built, outdated, starts at, stops
- after.
+ after, daily cost.
-o, --output string (default: table)
Output format. Available formats: table, json.
diff --git a/docs/cli/list.md b/docs/cli/list.md
index 7a1aa0defb052..b840a32acb151 100644
--- a/docs/cli/list.md
+++ b/docs/cli/list.md
@@ -31,7 +31,7 @@ Specifies whether all workspaces will be listed or not.
| Type | string-array
|
| Default | workspace,template,status,healthy,last built,outdated,starts at,stops after
|
-Columns to display in table output. Available columns: workspace, template, status, healthy, last built, outdated, starts at, stops after.
+Columns to display in table output. Available columns: workspace, template, status, healthy, last built, outdated, starts at, stops after, daily cost.
### -o, --output
diff --git a/provisionerd/proto/provisionerd.pb.go b/provisionerd/proto/provisionerd.pb.go
index d7db84d69813e..0a3d897150913 100644
--- a/provisionerd/proto/provisionerd.pb.go
+++ b/provisionerd/proto/provisionerd.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.30.0
-// protoc v4.23.3
+// protoc-gen-go v1.31.0
+// protoc v3.21.12
// source: provisionerd/proto/provisionerd.proto
package proto
diff --git a/provisionerd/proto/provisionerd_drpc.pb.go b/provisionerd/proto/provisionerd_drpc.pb.go
index ed3155fb21eaa..058af595809b8 100644
--- a/provisionerd/proto/provisionerd_drpc.pb.go
+++ b/provisionerd/proto/provisionerd_drpc.pb.go
@@ -1,5 +1,5 @@
// Code generated by protoc-gen-go-drpc. DO NOT EDIT.
-// protoc-gen-go-drpc version: v0.0.33
+// protoc-gen-go-drpc version: (devel)
// source: provisionerd/proto/provisionerd.proto
package proto
diff --git a/provisionerd/provisionerd.go b/provisionerd/provisionerd.go
index 79de066596198..e6c719a4174ba 100644
--- a/provisionerd/provisionerd.go
+++ b/provisionerd/provisionerd.go
@@ -404,7 +404,7 @@ func (p *Server) acquireJob(ctx context.Context) {
runner.Options{
Updater: p,
QuotaCommitter: p,
- Logger: p.opts.Logger,
+ Logger: p.opts.Logger.Named("runner"),
Filesystem: p.opts.Filesystem,
WorkDirectory: p.opts.WorkDirectory,
Provisioner: provisioner,
diff --git a/provisionerd/runner/runner.go b/provisionerd/runner/runner.go
index e074800b03d36..63a629b7e5c2e 100644
--- a/provisionerd/runner/runner.go
+++ b/provisionerd/runner/runner.go
@@ -964,6 +964,9 @@ func (r *Runner) buildWorkspace(ctx context.Context, stage string, req *sdkproto
}
func (r *Runner) commitQuota(ctx context.Context, resources []*sdkproto.Resource) *proto.FailedJob {
+ r.logger.Debug(ctx, "committing quota",
+ slog.F("resources", resources),
+ )
cost := sumDailyCost(resources)
if cost == 0 {
return nil
diff --git a/provisionersdk/proto/provisioner.pb.go b/provisionersdk/proto/provisioner.pb.go
index 24281d4c252db..52f60cede1d51 100644
--- a/provisionersdk/proto/provisioner.pb.go
+++ b/provisionersdk/proto/provisioner.pb.go
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.30.0
-// protoc v4.23.3
+// protoc-gen-go v1.31.0
+// protoc v3.21.12
// source: provisionersdk/proto/provisioner.proto
package proto
diff --git a/provisionersdk/proto/provisioner_drpc.pb.go b/provisionersdk/proto/provisioner_drpc.pb.go
index d8b40060cd376..d307402447c78 100644
--- a/provisionersdk/proto/provisioner_drpc.pb.go
+++ b/provisionersdk/proto/provisioner_drpc.pb.go
@@ -1,5 +1,5 @@
// Code generated by protoc-gen-go-drpc. DO NOT EDIT.
-// protoc-gen-go-drpc version: v0.0.33
+// protoc-gen-go-drpc version: (devel)
// source: provisionersdk/proto/provisioner.proto
package proto
@@ -76,10 +76,6 @@ type drpcProvisioner_ParseClient struct {
drpc.Stream
}
-func (x *drpcProvisioner_ParseClient) GetStream() drpc.Stream {
- return x.Stream
-}
-
func (x *drpcProvisioner_ParseClient) Recv() (*Parse_Response, error) {
m := new(Parse_Response)
if err := x.MsgRecv(m, drpcEncoding_File_provisionersdk_proto_provisioner_proto{}); err != nil {
@@ -111,10 +107,6 @@ type drpcProvisioner_ProvisionClient struct {
drpc.Stream
}
-func (x *drpcProvisioner_ProvisionClient) GetStream() drpc.Stream {
- return x.Stream
-}
-
func (x *drpcProvisioner_ProvisionClient) Send(m *Provision_Request) error {
return x.MsgSend(m, drpcEncoding_File_provisionersdk_proto_provisioner_proto{})
}