Skip to content

Commit 8e7f7b5

Browse files
committed
fix: add --me option to allow only showing jobs owned by me
1 parent 9a7d94f commit 8e7f7b5

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

Diff for: plugins/plugin-codeflare-dashboard/src/controller/dashboard/options.ts

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export default Options
3636
export const flags = {
3737
boolean: [
3838
// TODO these are top-specific
39+
"me",
3940
"redact",
4041

4142
// generic?

Diff for: plugins/plugin-codeflare-dashboard/src/controller/dashboard/top.ts

+10-2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ export type MyOptions = Options & {
2626
/** Don't show job names in the UI */
2727
redact: boolean
2828

29+
/** Show just my jobs */
30+
m: boolean
31+
me: boolean
32+
2933
/** Show jobs for one namespace */
3034
n: string
3135
namespace: string
@@ -127,7 +131,7 @@ export default async function jobsController(args: Arguments<MyOptions>) {
127131
"bash",
128132
[
129133
"-c",
130-
`"while true; do kubectl get pod ${ns} --no-headers -o=custom-columns=NAME:.metadata.name,JOB:'.metadata.labels.app\\.kubernetes\\.io/instance',HOST:.status.hostIP,CPU:'.spec.containers[0].resources.requests.cpu',CPUL:'.spec.containers[0].resources.limits.cpu',MEM:'.spec.containers[0].resources.requests.memory',MEML:'.spec.containers[0].resources.limits.memory',GPU:.spec.containers[0].resources.requests.'nvidia\\.com/gpu',GPUL:.spec.containers[0].resources.limits.'nvidia\\.com/gpu',JOB2:'.metadata.labels.appwrapper\\.mcad\\.ibm\\.com',CTIME:.metadata.creationTimestamp; echo '${recordSeparator}'; sleep 2; done"`,
134+
`"while true; do kubectl get pod ${ns} --no-headers -o=custom-columns=NAME:.metadata.name,JOB:'.metadata.labels.app\\.kubernetes\\.io/instance',HOST:.status.hostIP,CPU:'.spec.containers[0].resources.requests.cpu',CPUL:'.spec.containers[0].resources.limits.cpu',MEM:'.spec.containers[0].resources.requests.memory',MEML:'.spec.containers[0].resources.limits.memory',GPU:.spec.containers[0].resources.requests.'nvidia\\.com/gpu',GPUL:.spec.containers[0].resources.limits.'nvidia\\.com/gpu',JOB2:'.metadata.labels.appwrapper\\.mcad\\.ibm\\.com',CTIME:.metadata.creationTimestamp,USER:'.metadata.labels.app\\.kubernetes\\.io/owner'; echo '${recordSeparator}'; sleep 2; done"`,
131135
],
132136
{ shell: "/bin/bash", stdio: ["ignore", "pipe", "inherit"] }
133137
)
@@ -167,6 +171,8 @@ export default async function jobsController(args: Arguments<MyOptions>) {
167171
}
168172

169173
const initWatcher = (cb: OnData) => {
174+
const me = process.env.USER || "NOUSER"
175+
170176
child.on("error", (err) => console.error(err))
171177

172178
let leftover = ""
@@ -191,11 +197,13 @@ export default async function jobsController(args: Arguments<MyOptions>) {
191197
job: A[1] === "<none>" ? A[9] : A[1],
192198
host: A[2],
193199
ctime: A[10] === "<none>" ? Date.now() : new Date(A[10]).getTime(),
200+
owner: A[11],
194201
cpu: { request: parseCpu(A[3]), limit: parseCpu(A[4]) },
195202
mem: { request: parseMem(A[5]), limit: parseMem(A[6]) },
196203
gpu: { request: parseGpu(A[7]), limit: parseGpu(A[8]) },
197204
}))
198-
.filter((_) => _.job && _.job !== "<none>")
205+
.filter((_) => _.job && _.job !== "<none>") // exclude pods not associated with a job
206+
.filter((_) => !args.parsedOptions.me || _.owner === me) // exclude pods not owned by me?
199207
.map((rec) =>
200208
Object.assign(rec, {
201209
jobIdx: jobIdxFor(rec.job),

0 commit comments

Comments
 (0)