k9s/internal/view/job.go

42 lines
832 B
Go

package view
import (
"github.com/derailed/k9s/internal/k8s"
"github.com/derailed/k9s/internal/resource"
"github.com/rs/zerolog/log"
batchv1 "k8s.io/api/batch/v1"
)
// Job represents a job viewer.
type Job struct {
ResourceViewer
}
// NewJob returns a new viewer.
func NewJob(title, gvr string, list resource.List) ResourceViewer {
j := Job{
ResourceViewer: NewLogsExtender(
NewResource(title, gvr, list),
func() string { return "" },
),
}
j.GetTable().SetEnterFn(j.showPods)
return &j
}
func (j *Job) showPods(app *App, _, res, path string) {
ns, n := namespaced(path)
job, err := k8s.NewJob(app.Conn()).Get(ns, n)
if err != nil {
app.Flash().Err(err)
return
}
jo, ok := job.(*batchv1.Job)
if !ok {
log.Fatal().Msg("Expecting a valid job")
}
showPodsFromSelector(app, ns, jo.Spec.Selector)
}