update codebeat linter

mine
derailed 2019-11-15 19:55:38 -07:00
parent 85970d8525
commit 64fb916d65
5 changed files with 107 additions and 193 deletions

View File

@ -3,26 +3,26 @@
"TOO_MANY_IVARS": [ "TOO_MANY_IVARS": [
8, 8,
10, 10,
14, 12,
20 15
], ],
"LOC": [ "LOC": [
30,
50, 50,
60,
80, 80,
100 100
], ],
"TOTAL_LOC": [ "TOTAL_LOC": [
300, 200,
400, 400,
600, 500,
1000 600
], ],
"TOO_MANY_FUNCTIONS": [ "TOO_MANY_FUNCTIONS": [
20,
30, 30,
40, 40,
50, 50
60
] ]
} }
} }

View File

@ -65,17 +65,13 @@ type (
CanIAccess(ns, rvg string, verbs []string) (bool, error) CanIAccess(ns, rvg string, verbs []string) (bool, error)
} }
clients struct { // APIClient represents a Kubernetes api client.
APIClient struct {
client kubernetes.Interface client kubernetes.Interface
dClient dynamic.Interface dClient dynamic.Interface
nsClient dynamic.NamespaceableResourceInterface nsClient dynamic.NamespaceableResourceInterface
mxsClient *versioned.Clientset mxsClient *versioned.Clientset
cachedDiscovery *disk.CachedDiscoveryClient cachedDiscovery *disk.CachedDiscoveryClient
}
// APIClient represents a Kubernetes api client.
APIClient struct {
clients
config *Config config *Config
useMetricServer bool useMetricServer bool
mx sync.Mutex mx sync.Mutex

View File

@ -9,31 +9,24 @@ import (
"github.com/gdamore/tcell" "github.com/gdamore/tcell"
) )
type TableExtender struct {
extraActionsFn func(ui.KeyActions)
colorerFn ui.ColorerFunc
decorateFn decorateFn
enterFn enterFn
}
// MasterDetail presents a master-detail viewer. // MasterDetail presents a master-detail viewer.
type MasterDetail struct { type MasterDetail struct {
*PageStack *PageStack
*TableExtender
master *Table master *Table
details *Details details *Details
currentNS string currentNS string
title string title string
extraActionsFn func(ui.KeyActions)
enterFn enterFn
} }
// NewMasterDetail returns a new master-detail viewer. // NewMasterDetail returns a new master-detail viewer.
func NewMasterDetail(title, ns string) *MasterDetail { func NewMasterDetail(title, ns string) *MasterDetail {
return &MasterDetail{ return &MasterDetail{
PageStack: NewPageStack(), PageStack: NewPageStack(),
TableExtender: &TableExtender{}, title: title,
title: title, currentNS: ns,
currentNS: ns,
} }
} }
@ -74,12 +67,12 @@ func (m *MasterDetail) Hints() model.MenuHints {
return nil return nil
} }
// Protocol...
func (m *MasterDetail) setExtraActionsFn(f ActionsFunc) { func (m *MasterDetail) setExtraActionsFn(f ActionsFunc) {
m.extraActionsFn = f m.extraActionsFn = f
} }
// Protocol...
func (m *MasterDetail) setEnterFn(f enterFn) { func (m *MasterDetail) setEnterFn(f enterFn) {
m.enterFn = f m.enterFn = f
} }

View File

@ -17,7 +17,11 @@ 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
viewerCapability struct { viewer struct {
gvr string
kind string
namespaced bool
verbs metav1.Verbs
viewFn viewFn viewFn viewFn
listFn listFn listFn listFn
enterFn enterFn enterFn enterFn
@ -25,15 +29,6 @@ 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
) )
@ -74,12 +69,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,
},
} }
} }
} }
@ -177,242 +170,172 @@ 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,
},
} }
} }

View File

@ -30,6 +30,8 @@ type Resource struct {
path *string path *string
envFn envFn envFn envFn
gvr string gvr string
colorerFn ui.ColorerFunc
decorateFn decorateFn
} }
// NewResource returns a new viewer. // NewResource returns a new viewer.