diff --git a/internal/k8s/api.go b/internal/k8s/api.go index d9d919e1..b4cf2927 100644 --- a/internal/k8s/api.go +++ b/internal/k8s/api.go @@ -68,13 +68,18 @@ type ( CheckListNSAccess() error } + k8sClient struct { + client kubernetes.Interface + dClient dynamic.Interface + nsClient dynamic.NamespaceableResourceInterface + mxsClient *versioned.Clientset + } + // APIClient represents a Kubernetes api client. APIClient struct { + k8sClient + config *Config - client kubernetes.Interface - dClient dynamic.Interface - nsClient dynamic.NamespaceableResourceInterface - mxsClient *versioned.Clientset useMetricServer bool log zerolog.Logger mx sync.Mutex diff --git a/internal/views/master_detail.go b/internal/views/master_detail.go index e4e9de96..1b818abe 100644 --- a/internal/views/master_detail.go +++ b/internal/views/master_detail.go @@ -8,24 +8,37 @@ import ( "github.com/derailed/tview" ) -type masterDetail struct { - *tview.Pages +type ( + pageView struct { + *tview.Pages - app *appView - actions keyActions - currentNS string - selectedItem string - selectedRow int - selectedFn func() string - enterFn enterFn - extraActionsFn func(keyActions) + app *appView + actions keyActions + } + + masterDetail struct { + *pageView + + currentNS string + selectedItem string + selectedRow int + selectedFn func() string + enterFn enterFn + extraActionsFn func(keyActions) + } +) + +func newPageView(app *appView) *pageView { + return &pageView{ + Pages: tview.NewPages(), + app: app, + actions: make(keyActions), + } } func newMasterDetail(title string, app *appView, ns string) *masterDetail { v := masterDetail{ - Pages: tview.NewPages(), - app: app, - actions: make(keyActions), + pageView: newPageView(app), currentNS: ns, } diff --git a/internal/views/registrar.go b/internal/views/registrar.go index ec6d03f1..3762c2be 100644 --- a/internal/views/registrar.go +++ b/internal/views/registrar.go @@ -15,12 +15,17 @@ type ( enterFn func(app *appView, ns, resource, selection string) decorateFn func(resource.TableData) resource.TableData + crdCmd struct { + version string + plural string + singular string + } + resCmd struct { - title string + crdCmd + api string - version string - plural string - singular string + title string viewFn viewFn listFn listFn enterFn enterFn @@ -50,7 +55,13 @@ func allCRDs(c k8s.Connection, m map[string]resCmd) { Version: ff["version"].(string), } - res := resCmd{title: grp.Kind, api: grp.Group, version: grp.Version} + res := resCmd{ + title: grp.Kind, + api: grp.Group, + crdCmd: crdCmd{ + version: grp.Version, + }, + } if p, ok := ff["plural"].(string); ok { res.plural = p m[p] = res