checkpoint

mine
derailed 2019-11-15 19:39:19 -07:00
parent ef0aab3f4c
commit 85970d8525
2 changed files with 189 additions and 84 deletions

28
.codebeatsettings Normal file
View File

@ -0,0 +1,28 @@
{
"GOLANG": {
"TOO_MANY_IVARS": [
8,
10,
14,
20
],
"LOC": [
50,
60,
80,
100
],
"TOTAL_LOC": [
300,
400,
600,
1000
],
"TOO_MANY_FUNCTIONS": [
30,
40,
50,
60
]
}
}

View File

@ -17,11 +17,7 @@ type (
enterFn func(app *App, ns, resource, selection string) enterFn func(app *App, ns, resource, selection string)
decorateFn func(resource.TableData) resource.TableData decorateFn func(resource.TableData) resource.TableData
viewer struct { viewerCapability struct {
gvr string
kind string
namespaced bool
verbs metav1.Verbs
viewFn viewFn viewFn viewFn
listFn listFn listFn listFn
enterFn enterFn enterFn enterFn
@ -29,6 +25,15 @@ type (
decorateFn decorateFn decorateFn decorateFn
} }
viewer struct {
viewerCapability
gvr string
kind string
namespaced bool
verbs metav1.Verbs
}
viewers map[string]viewer viewers map[string]viewer
) )
@ -71,8 +76,10 @@ func allCRDs(c k8s.Connection, vv viewers) {
vv[gvrs] = viewer{ vv[gvrs] = viewer{
gvr: gvrs, gvr: gvrs,
kind: meta.Kind, kind: meta.Kind,
viewerCapability: viewerCapability{
viewFn: listFunc(resource.NewCustomList(c, meta.Namespaced, "", gvrs)), viewFn: listFunc(resource.NewCustomList(c, meta.Namespaced, "", gvrs)),
colorerFn: ui.DefaultColorer, colorerFn: ui.DefaultColorer,
},
} }
} }
} }
@ -170,172 +177,242 @@ func resourceViews(c k8s.Connection, m viewers) {
func coreRes(vv viewers) { func coreRes(vv viewers) {
vv["v1/nodes"] = viewer{ vv["v1/nodes"] = viewer{
viewerCapability: viewerCapability{
viewFn: NewNode, viewFn: NewNode,
listFn: resource.NewNodeList, listFn: resource.NewNodeList,
colorerFn: nsColorer, colorerFn: nsColorer,
},
} }
vv["v1/namespaces"] = viewer{ vv["v1/namespaces"] = viewer{
viewerCapability: viewerCapability{
viewFn: NewNamespace, viewFn: NewNamespace,
listFn: resource.NewNamespaceList, listFn: resource.NewNamespaceList,
colorerFn: nsColorer, colorerFn: nsColorer,
},
} }
vv["v1/pods"] = viewer{ vv["v1/pods"] = viewer{
viewerCapability: viewerCapability{
viewFn: NewPod, viewFn: NewPod,
listFn: resource.NewPodList, listFn: resource.NewPodList,
colorerFn: podColorer, colorerFn: podColorer,
},
} }
vv["v1/serviceaccounts"] = viewer{ vv["v1/serviceaccounts"] = viewer{
viewerCapability: viewerCapability{
listFn: resource.NewServiceAccountList, listFn: resource.NewServiceAccountList,
enterFn: showSAPolicy, enterFn: showSAPolicy,
},
} }
vv["v1/services"] = viewer{ vv["v1/services"] = viewer{
viewerCapability: viewerCapability{
viewFn: NewService, viewFn: NewService,
listFn: resource.NewServiceList, listFn: resource.NewServiceList,
},
} }
vv["v1/configmaps"] = viewer{ vv["v1/configmaps"] = viewer{
viewerCapability: viewerCapability{
listFn: resource.NewConfigMapList, listFn: resource.NewConfigMapList,
},
} }
vv["v1/persistentvolumes"] = viewer{ vv["v1/persistentvolumes"] = viewer{
viewerCapability: viewerCapability{
listFn: resource.NewPersistentVolumeList, listFn: resource.NewPersistentVolumeList,
colorerFn: pvColorer, colorerFn: pvColorer,
},
} }
vv["v1/persistentvolumeclaims"] = viewer{ vv["v1/persistentvolumeclaims"] = viewer{
viewerCapability: viewerCapability{
listFn: resource.NewPersistentVolumeClaimList, listFn: resource.NewPersistentVolumeClaimList,
colorerFn: pvcColorer, colorerFn: pvcColorer,
},
} }
vv["v1/secrets"] = viewer{ vv["v1/secrets"] = viewer{
viewerCapability: viewerCapability{
viewFn: NewSecret, viewFn: NewSecret,
listFn: resource.NewSecretList, listFn: resource.NewSecretList,
},
} }
vv["v1/endpoints"] = viewer{ vv["v1/endpoints"] = viewer{
viewerCapability: viewerCapability{
listFn: resource.NewEndpointsList, listFn: resource.NewEndpointsList,
},
} }
vv["v1/events"] = viewer{ vv["v1/events"] = viewer{
viewerCapability: viewerCapability{
listFn: resource.NewEventList, listFn: resource.NewEventList,
colorerFn: evColorer, colorerFn: evColorer,
},
} }
vv["v1/replicationcontrollers"] = viewer{ vv["v1/replicationcontrollers"] = viewer{
viewerCapability: viewerCapability{
viewFn: NewScalableResource, viewFn: NewScalableResource,
listFn: resource.NewReplicationControllerList, listFn: resource.NewReplicationControllerList,
colorerFn: rsColorer, colorerFn: rsColorer,
},
} }
} }
func miscRes(vv viewers) { func miscRes(vv viewers) {
vv["storage.k8s.io/v1/storageclasses"] = viewer{ vv["storage.k8s.io/v1/storageclasses"] = viewer{
viewerCapability: viewerCapability{
listFn: resource.NewStorageClassList, listFn: resource.NewStorageClassList,
},
} }
vv["contexts"] = viewer{ vv["contexts"] = viewer{
gvr: "contexts", gvr: "contexts",
kind: "Contexts", kind: "Contexts",
viewerCapability: viewerCapability{
viewFn: NewContext, viewFn: NewContext,
listFn: resource.NewContextList, listFn: resource.NewContextList,
colorerFn: ctxColorer, colorerFn: ctxColorer,
},
} }
vv["users"] = viewer{ vv["users"] = viewer{
gvr: "users", gvr: "users",
viewerCapability: viewerCapability{
viewFn: NewSubject, viewFn: NewSubject,
},
} }
vv["groups"] = viewer{ vv["groups"] = viewer{
gvr: "groups", gvr: "groups",
viewerCapability: viewerCapability{
viewFn: NewSubject, viewFn: NewSubject,
},
} }
vv["portforwards"] = viewer{ vv["portforwards"] = viewer{
gvr: "portforwards", gvr: "portforwards",
viewerCapability: viewerCapability{
viewFn: NewPortForward, viewFn: NewPortForward,
},
} }
vv["benchmarks"] = viewer{ vv["benchmarks"] = viewer{
gvr: "benchmarks", gvr: "benchmarks",
viewerCapability: viewerCapability{
viewFn: NewBench, viewFn: NewBench,
},
} }
vv["screendumps"] = viewer{ vv["screendumps"] = viewer{
gvr: "screendumps", gvr: "screendumps",
viewerCapability: viewerCapability{
viewFn: NewScreenDump, viewFn: NewScreenDump,
},
} }
} }
func appsRes(vv viewers) { func appsRes(vv viewers) {
vv["apps/v1/deployments"] = viewer{ vv["apps/v1/deployments"] = viewer{
viewerCapability: viewerCapability{
viewFn: NewDeploy, viewFn: NewDeploy,
listFn: resource.NewDeploymentList, listFn: resource.NewDeploymentList,
colorerFn: dpColorer, colorerFn: dpColorer,
},
} }
vv["apps/v1/replicasets"] = viewer{ vv["apps/v1/replicasets"] = viewer{
viewerCapability: viewerCapability{
viewFn: NewReplicaSet, viewFn: NewReplicaSet,
listFn: resource.NewReplicaSetList, listFn: resource.NewReplicaSetList,
colorerFn: rsColorer, colorerFn: rsColorer,
},
} }
vv["apps/v1/statefulsets"] = viewer{ vv["apps/v1/statefulsets"] = viewer{
viewerCapability: viewerCapability{
viewFn: NewStatefulSet, viewFn: NewStatefulSet,
listFn: resource.NewStatefulSetList, listFn: resource.NewStatefulSetList,
colorerFn: stsColorer, colorerFn: stsColorer,
},
} }
vv["apps/v1/daemonsets"] = viewer{ vv["apps/v1/daemonsets"] = viewer{
viewerCapability: viewerCapability{
viewFn: NewDaemonSet, viewFn: NewDaemonSet,
listFn: resource.NewDaemonSetList, listFn: resource.NewDaemonSetList,
colorerFn: dpColorer, colorerFn: dpColorer,
},
} }
} }
func authRes(vv viewers) { func authRes(vv viewers) {
vv["rbac.authorization.k8s.io/v1/clusterroles"] = viewer{ vv["rbac.authorization.k8s.io/v1/clusterroles"] = viewer{
viewerCapability: viewerCapability{
listFn: resource.NewClusterRoleList, listFn: resource.NewClusterRoleList,
enterFn: showRBAC, enterFn: showRBAC,
},
} }
vv["rbac.authorization.k8s.io/v1/clusterrolebindings"] = viewer{ vv["rbac.authorization.k8s.io/v1/clusterrolebindings"] = viewer{
viewerCapability: viewerCapability{
listFn: resource.NewClusterRoleBindingList, listFn: resource.NewClusterRoleBindingList,
enterFn: showClusterRole, enterFn: showClusterRole,
},
} }
vv["rbac.authorization.k8s.io/v1/rolebindings"] = viewer{ vv["rbac.authorization.k8s.io/v1/rolebindings"] = viewer{
viewerCapability: viewerCapability{
listFn: resource.NewRoleBindingList, listFn: resource.NewRoleBindingList,
enterFn: showRole, enterFn: showRole,
},
} }
vv["rbac.authorization.k8s.io/v1/roles"] = viewer{ vv["rbac.authorization.k8s.io/v1/roles"] = viewer{
viewerCapability: viewerCapability{
listFn: resource.NewRoleList, listFn: resource.NewRoleList,
enterFn: showRBAC, enterFn: showRBAC,
},
} }
} }
func extRes(vv viewers) { func extRes(vv viewers) {
vv["apiextensions.k8s.io/v1/customresourcedefinitions"] = viewer{ vv["apiextensions.k8s.io/v1/customresourcedefinitions"] = viewer{
viewerCapability: viewerCapability{
listFn: resource.NewCustomResourceDefinitionList, listFn: resource.NewCustomResourceDefinitionList,
enterFn: showCRD, enterFn: showCRD,
},
} }
vv["apiextensions.k8s.io/v1beta1/customresourcedefinitions"] = viewer{ vv["apiextensions.k8s.io/v1beta1/customresourcedefinitions"] = viewer{
viewerCapability: viewerCapability{
listFn: resource.NewCustomResourceDefinitionList, listFn: resource.NewCustomResourceDefinitionList,
enterFn: showCRD, enterFn: showCRD,
},
} }
} }
func netRes(vv viewers) { func netRes(vv viewers) {
vv["networking.k8s.io/v1/networkpolicies"] = viewer{ vv["networking.k8s.io/v1/networkpolicies"] = viewer{
viewerCapability: viewerCapability{
listFn: resource.NewNetworkPolicyList, listFn: resource.NewNetworkPolicyList,
},
} }
vv["extensions/v1beta1/ingresses"] = viewer{ vv["extensions/v1beta1/ingresses"] = viewer{
viewerCapability: viewerCapability{
listFn: resource.NewIngressList, listFn: resource.NewIngressList,
},
} }
} }
func batchRes(vv viewers) { func batchRes(vv viewers) {
vv["batch/v1beta1/cronjobs"] = viewer{ vv["batch/v1beta1/cronjobs"] = viewer{
viewerCapability: viewerCapability{
viewFn: NewCronJob, viewFn: NewCronJob,
listFn: resource.NewCronJobList, listFn: resource.NewCronJobList,
},
} }
vv["batch/v1/jobs"] = viewer{ vv["batch/v1/jobs"] = viewer{
viewerCapability: viewerCapability{
viewFn: NewJob, viewFn: NewJob,
listFn: resource.NewJobList, listFn: resource.NewJobList,
},
} }
} }
func policyRes(vv viewers) { func policyRes(vv viewers) {
vv["policy/v1beta1/poddisruptionbudgets"] = viewer{ vv["policy/v1beta1/poddisruptionbudgets"] = viewer{
viewerCapability: viewerCapability{
listFn: resource.NewPDBList, listFn: resource.NewPDBList,
colorerFn: pdbColorer, colorerFn: pdbColorer,
},
} }
} }
func hpaRes(vv viewers) { func hpaRes(vv viewers) {
vv["autoscaling/v1/horizontalpodautoscalers"] = viewer{ vv["autoscaling/v1/horizontalpodautoscalers"] = viewer{
viewerCapability: viewerCapability{
listFn: resource.NewHorizontalPodAutoscalerV1List, listFn: resource.NewHorizontalPodAutoscalerV1List,
},
} }
} }