k9s/internal/view/registrar.go

162 lines
3.7 KiB
Go

package view
import (
"strings"
"github.com/derailed/k9s/internal/client"
"github.com/derailed/k9s/internal/ui"
)
func loadCustomViewers() MetaViewers {
m := make(MetaViewers, 30)
coreViewers(m)
miscViewers(m)
appsViewers(m)
rbacViewers(m)
batchViewers(m)
extViewers(m)
helmViewers(m)
return m
}
func helmViewers(vv MetaViewers) {
vv[client.NewGVR("helm")] = MetaViewer{
viewerFn: NewHelm,
}
}
func coreViewers(vv MetaViewers) {
vv[client.NewGVR("v1/namespaces")] = MetaViewer{
viewerFn: NewNamespace,
}
vv[client.NewGVR("v1/events")] = MetaViewer{
viewerFn: NewEvent,
}
vv[client.NewGVR("v1/pods")] = MetaViewer{
viewerFn: NewPod,
}
vv[client.NewGVR("v1/services")] = MetaViewer{
viewerFn: NewService,
}
vv[client.NewGVR("v1/nodes")] = MetaViewer{
viewerFn: NewNode,
}
vv[client.NewGVR("v1/secrets")] = MetaViewer{
viewerFn: NewSecret,
}
vv[client.NewGVR("v1/configmaps")] = MetaViewer{
viewerFn: NewConfigMap,
}
vv[client.NewGVR("v1/serviceaccounts")] = MetaViewer{
viewerFn: NewServiceAccount,
}
vv[client.NewGVR("v1/persistentvolumeclaims")] = MetaViewer{
viewerFn: NewPersistentVolumeClaim,
}
}
func miscViewers(vv MetaViewers) {
vv[client.NewGVR("contexts")] = MetaViewer{
viewerFn: NewContext,
}
vv[client.NewGVR("openfaas")] = MetaViewer{
viewerFn: NewOpenFaas,
}
vv[client.NewGVR("containers")] = MetaViewer{
viewerFn: NewContainer,
}
vv[client.NewGVR("portforwards")] = MetaViewer{
viewerFn: NewPortForward,
}
vv[client.NewGVR("screendumps")] = MetaViewer{
viewerFn: NewScreenDump,
}
vv[client.NewGVR("benchmarks")] = MetaViewer{
viewerFn: NewBenchmark,
}
vv[client.NewGVR("aliases")] = MetaViewer{
viewerFn: NewAlias,
}
vv[client.NewGVR("references")] = MetaViewer{
viewerFn: NewReference,
}
vv[client.NewGVR("pulses")] = MetaViewer{
viewerFn: NewPulse,
}
vv[client.NewGVR("popeye")] = MetaViewer{
viewerFn: NewPopeye,
}
vv[client.NewGVR("sanitizer")] = MetaViewer{
viewerFn: NewSanitizer,
}
}
func appsViewers(vv MetaViewers) {
vv[client.NewGVR("apps/v1/deployments")] = MetaViewer{
viewerFn: NewDeploy,
}
vv[client.NewGVR("apps/v1/replicasets")] = MetaViewer{
viewerFn: NewReplicaSet,
}
vv[client.NewGVR("apps/v1/statefulsets")] = MetaViewer{
viewerFn: NewStatefulSet,
}
vv[client.NewGVR("apps/v1/daemonsets")] = MetaViewer{
viewerFn: NewDaemonSet,
}
vv[client.NewGVR("apps/v1/daemonsets")] = MetaViewer{
viewerFn: NewDaemonSet,
}
}
func rbacViewers(vv MetaViewers) {
vv[client.NewGVR("rbac")] = MetaViewer{
enterFn: showRules,
}
vv[client.NewGVR("users")] = MetaViewer{
viewerFn: NewUser,
}
vv[client.NewGVR("groups")] = MetaViewer{
viewerFn: NewGroup,
}
vv[client.NewGVR("rbac.authorization.k8s.io/v1/clusterroles")] = MetaViewer{
enterFn: showRules,
}
vv[client.NewGVR("rbac.authorization.k8s.io/v1/roles")] = MetaViewer{
enterFn: showRules,
}
vv[client.NewGVR("rbac.authorization.k8s.io/v1/clusterrolebindings")] = MetaViewer{
enterFn: showRules,
}
vv[client.NewGVR("rbac.authorization.k8s.io/v1/rolebindings")] = MetaViewer{
enterFn: showRules,
}
}
func batchViewers(vv MetaViewers) {
vv[client.NewGVR("batch/v1beta1/cronjobs")] = MetaViewer{
viewerFn: NewCronJob,
}
vv[client.NewGVR("batch/v1/jobs")] = MetaViewer{
viewerFn: NewJob,
}
}
func extViewers(vv MetaViewers) {
vv[client.NewGVR("apiextensions.k8s.io/v1/customresourcedefinitions")] = MetaViewer{
enterFn: showCRD,
}
vv[client.NewGVR("apiextensions.k8s.io/v1/customresourcedefinitions")] = MetaViewer{
enterFn: showCRD,
}
}
func showCRD(app *App, _ ui.Tabular, _, path string) {
_, crdGVR := client.Namespaced(path)
tokens := strings.Split(crdGVR, ".")
if err := app.gotoResource(tokens[0], "", false); err != nil {
app.Flash().Err(err)
}
}