130 lines
2.5 KiB
Go
130 lines
2.5 KiB
Go
package view
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/derailed/k9s/internal/client"
|
|
"github.com/rs/zerolog/log"
|
|
)
|
|
|
|
func loadCustomViewers() MetaViewers {
|
|
m := make(MetaViewers, 30)
|
|
coreRes(m)
|
|
miscRes(m)
|
|
appsRes(m)
|
|
rbacRes(m)
|
|
batchRes(m)
|
|
extRes(m)
|
|
|
|
return m
|
|
}
|
|
|
|
func coreRes(vv MetaViewers) {
|
|
vv["v1/namespaces"] = MetaViewer{
|
|
viewerFn: NewNamespace,
|
|
}
|
|
vv["v1/pods"] = MetaViewer{
|
|
viewerFn: NewPod,
|
|
}
|
|
vv["v1/services"] = MetaViewer{
|
|
viewerFn: NewService,
|
|
}
|
|
vv["v1/nodes"] = MetaViewer{
|
|
viewerFn: NewNode,
|
|
}
|
|
vv["v1/secrets"] = MetaViewer{
|
|
viewerFn: NewSecret,
|
|
}
|
|
}
|
|
|
|
func miscRes(vv MetaViewers) {
|
|
vv["contexts"] = MetaViewer{
|
|
viewerFn: NewContext,
|
|
}
|
|
vv["containers"] = MetaViewer{
|
|
viewerFn: NewContainer,
|
|
}
|
|
vv["portforwards"] = MetaViewer{
|
|
viewerFn: NewPortForward,
|
|
}
|
|
vv["screendumps"] = MetaViewer{
|
|
viewerFn: NewScreenDump,
|
|
}
|
|
vv["benchmarks"] = MetaViewer{
|
|
viewerFn: NewBenchmark,
|
|
}
|
|
vv["aliases"] = MetaViewer{
|
|
viewerFn: NewAlias,
|
|
}
|
|
}
|
|
|
|
func appsRes(vv MetaViewers) {
|
|
vv["apps/v1/deployments"] = MetaViewer{
|
|
viewerFn: NewDeploy,
|
|
}
|
|
vv["apps/v1/replicasets"] = MetaViewer{
|
|
viewerFn: NewReplicaSet,
|
|
}
|
|
vv["apps/v1/statefulsets"] = MetaViewer{
|
|
viewerFn: NewStatefulSet,
|
|
}
|
|
vv["apps/v1/daemonsets"] = MetaViewer{
|
|
viewerFn: NewDaemonSet,
|
|
}
|
|
vv["extensions/v1beta1/daemonsets"] = MetaViewer{
|
|
viewerFn: NewDaemonSet,
|
|
}
|
|
}
|
|
|
|
func rbacRes(vv MetaViewers) {
|
|
vv["rbac"] = MetaViewer{
|
|
enterFn: showRules,
|
|
}
|
|
vv["users"] = MetaViewer{
|
|
viewerFn: NewUser,
|
|
}
|
|
vv["groups"] = MetaViewer{
|
|
viewerFn: NewGroup,
|
|
}
|
|
vv["rbac.authorization.k8s.io/v1/clusterroles"] = MetaViewer{
|
|
enterFn: showRules,
|
|
}
|
|
vv["rbac.authorization.k8s.io/v1/roles"] = MetaViewer{
|
|
enterFn: showRules,
|
|
}
|
|
vv["rbac.authorization.k8s.io/v1/clusterrolebindings"] = MetaViewer{
|
|
enterFn: showRules,
|
|
}
|
|
vv["rbac.authorization.k8s.io/v1/rolebindings"] = MetaViewer{
|
|
enterFn: showRules,
|
|
}
|
|
}
|
|
|
|
func batchRes(vv MetaViewers) {
|
|
vv["batch/v1beta1/cronjobs"] = MetaViewer{
|
|
viewerFn: NewCronJob,
|
|
}
|
|
vv["batch/v1/jobs"] = MetaViewer{
|
|
viewerFn: NewJob,
|
|
}
|
|
}
|
|
|
|
func extRes(vv MetaViewers) {
|
|
vv["apiextensions.k8s.io/v1/customresourcedefinitions"] = MetaViewer{
|
|
enterFn: showCRD,
|
|
}
|
|
vv["apiextensions.k8s.io/v1beta1/customresourcedefinitions"] = MetaViewer{
|
|
enterFn: showCRD,
|
|
}
|
|
}
|
|
|
|
func showCRD(app *App, ns, gvr, path string) {
|
|
log.Debug().Msgf(">>> CRD View %q -- %q -- %q", ns, gvr, path)
|
|
_, crdGVR := client.Namespaced(path)
|
|
log.Debug().Msgf("CRD %q", crdGVR)
|
|
tokens := strings.Split(crdGVR, ".")
|
|
if err := app.gotoResource(tokens[0]); err != nil {
|
|
app.Flash().Err(err)
|
|
}
|
|
}
|