Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Aug 30, 2024. It is now read-only.
/coder-v1-cliPublic archive

Commitdfc4252

Browse files
committed
Add resource sorting by CPU
1 parent1969750 commitdfc4252

File tree

2 files changed

+72
-48
lines changed

2 files changed

+72
-48
lines changed

‎internal/cmd/cmd.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ import (
77
"github.com/spf13/cobra/doc"
88
)
99

10+
// verbose is a global flag for specifying that a command should give verbose output
11+
varverbosebool=false
12+
1013
// Make constructs the "coder" root command
1114
funcMake()*cobra.Command {
1215
app:=&cobra.Command{
@@ -28,6 +31,7 @@ func Make() *cobra.Command {
2831
completionCmd,
2932
genDocs(app),
3033
)
34+
app.PersistentFlags().BoolVarP(&verbose,"verbose","v",false,"show verbose output")
3135
returnapp
3236
}
3337

‎internal/cmd/resourcemanager.go

Lines changed: 68 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package cmd
33
import (
44
"fmt"
55
"os"
6+
"sort"
67
"text/tabwriter"
78

89
"cdr.dev/coder-cli/coder-sdk"
@@ -14,60 +15,79 @@ func makeResourceCmd() *cobra.Command {
1415
Use:"resources",
1516
Short:"manager Coder resources with platform-level context (users, organizations, environments)",
1617
}
17-
cmd.AddCommand(resourceTop)
18+
cmd.AddCommand(resourceTop())
1819
returncmd
1920
}
2021

21-
varresourceTop=&cobra.Command{
22-
Use:"top",
23-
RunE:func(cmd*cobra.Command,args []string)error {
24-
ctx:=cmd.Context()
25-
26-
client,err:=newClient()
27-
iferr!=nil {
28-
returnerr
29-
}
30-
31-
envs,err:=client.ListEnvironments(ctx)
32-
iferr!=nil {
33-
returnerr
34-
}
35-
36-
userEnvs:=make(map[string][]coder.Environment)
37-
for_,e:=rangeenvs {
38-
userEnvs[e.UserID]=append(userEnvs[e.UserID],e)
39-
}
40-
41-
users,err:=client.Users(ctx)
42-
iferr!=nil {
43-
returnerr
44-
}
45-
46-
orgs:=make(map[string]coder.Organization)
47-
orglist,err:=client.Organizations(ctx)
48-
iferr!=nil {
49-
returnerr
50-
}
51-
for_,o:=rangeorglist {
52-
orgs[o.ID]=o
53-
}
54-
55-
tabwriter:=tabwriter.NewWriter(os.Stdout,0,0,4,' ',0)
56-
for_,u:=rangeusers {
57-
_,_=fmt.Fprintf(tabwriter,"%s\t(%s)\t%s",u.Name,u.Email,aggregateEnvResources(userEnvs[u.ID]))
58-
iflen(userEnvs[u.ID])>0 {
59-
_,_=fmt.Fprintf(tabwriter,"\f")
22+
funcresourceTop()*cobra.Command {
23+
cmd:=&cobra.Command{
24+
Use:"top",
25+
RunE:func(cmd*cobra.Command,args []string)error {
26+
ctx:=cmd.Context()
27+
28+
client,err:=newClient()
29+
iferr!=nil {
30+
returnerr
31+
}
32+
33+
envs,err:=client.ListEnvironments(ctx)
34+
iferr!=nil {
35+
returnerr
36+
}
37+
38+
userEnvs:=make(map[string][]coder.Environment)
39+
for_,e:=rangeenvs {
40+
userEnvs[e.UserID]=append(userEnvs[e.UserID],e)
41+
}
42+
43+
users,err:=client.Users(ctx)
44+
iferr!=nil {
45+
returnerr
46+
}
47+
48+
orgs:=make(map[string]coder.Organization)
49+
orglist,err:=client.Organizations(ctx)
50+
iferr!=nil {
51+
returnerr
52+
}
53+
for_,o:=rangeorglist {
54+
orgs[o.ID]=o
6055
}
61-
for_,env:=rangeuserEnvs[u.ID] {
62-
_,_=fmt.Fprintf(tabwriter,"\t")
63-
_,_=fmt.Fprintln(tabwriter,fmtEnvResources(env,orgs))
56+
57+
tabwriter:=tabwriter.NewWriter(os.Stdout,0,0,4,' ',0)
58+
varuserResources []aggregatedUser
59+
for_,u:=rangeusers {
60+
userResources=append(userResources,aggregatedUser{User:u,resources:aggregateEnvResources(userEnvs[u.ID])})
6461
}
65-
fmt.Fprint(tabwriter,"\n")
66-
}
67-
_=tabwriter.Flush()
62+
sort.Slice(userResources,func(i,jint)bool {
63+
returnuserResources[i].cpuAllocation>userResources[j].cpuAllocation
64+
})
65+
66+
for_,u:=rangeuserResources {
67+
_,_=fmt.Fprintf(tabwriter,"%s\t(%s)\t%s",u.Name,u.Email,u.resources)
68+
ifverbose {
69+
iflen(userEnvs[u.ID])>0 {
70+
_,_=fmt.Fprintf(tabwriter,"\f")
71+
}
72+
for_,env:=rangeuserEnvs[u.ID] {
73+
_,_=fmt.Fprintf(tabwriter,"\t")
74+
_,_=fmt.Fprintln(tabwriter,fmtEnvResources(env,orgs))
75+
}
76+
}
77+
fmt.Fprint(tabwriter,"\n")
78+
}
79+
_=tabwriter.Flush()
80+
81+
returnnil
82+
},
83+
}
84+
85+
returncmd
86+
}
6887

69-
returnnil
70-
},
88+
typeaggregatedUserstruct {
89+
coder.User
90+
resources
7191
}
7292

7393
funcresourcesFromEnv(env coder.Environment)resources {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp