checkpoint
parent
d45d3af116
commit
97540ded19
|
|
@ -150,13 +150,9 @@ var Registry = map[string]ResourceMeta{
|
||||||
|
|
||||||
// CRDs...
|
// CRDs...
|
||||||
"apiextensions.k8s.io/v1/customresourcedefinitions": {
|
"apiextensions.k8s.io/v1/customresourcedefinitions": {
|
||||||
// BOZO!!
|
|
||||||
// DAO: &dao.CustomResourceDefinition{},
|
|
||||||
Renderer: &render.CustomResourceDefinition{},
|
Renderer: &render.CustomResourceDefinition{},
|
||||||
},
|
},
|
||||||
"apiextensions.k8s.io/v1beta1/customresourcedefinitions": {
|
"apiextensions.k8s.io/v1beta1/customresourcedefinitions": {
|
||||||
// BOZO!!
|
|
||||||
// DAO: &dao.CustomResourceDefinition{},
|
|
||||||
Renderer: &render.CustomResourceDefinition{},
|
Renderer: &render.CustomResourceDefinition{},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -203,10 +203,6 @@ func (t *Table) refresh(ctx context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Table) list(ctx context.Context, a dao.Accessor) ([]runtime.Object, error) {
|
func (t *Table) list(ctx context.Context, a dao.Accessor) ([]runtime.Object, error) {
|
||||||
defer func(ti time.Time) {
|
|
||||||
log.Debug().Msgf(" LIST %q:%q elapsed %v", t.namespace, t.gvr, time.Since(ti))
|
|
||||||
}(time.Now())
|
|
||||||
|
|
||||||
factory, ok := ctx.Value(internal.KeyFactory).(dao.Factory)
|
factory, ok := ctx.Value(internal.KeyFactory).(dao.Factory)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("expected Factory in context but got %T", ctx.Value(internal.KeyFactory))
|
return nil, fmt.Errorf("expected Factory in context but got %T", ctx.Value(internal.KeyFactory))
|
||||||
|
|
@ -217,10 +213,6 @@ func (t *Table) list(ctx context.Context, a dao.Accessor) ([]runtime.Object, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Table) reconcile(ctx context.Context) error {
|
func (t *Table) reconcile(ctx context.Context) error {
|
||||||
defer func(ti time.Time) {
|
|
||||||
log.Debug().Msgf("RECONCILE %q:%q elapsed %v", t.namespace, t.gvr, time.Since(ti))
|
|
||||||
}(time.Now())
|
|
||||||
|
|
||||||
meta := t.resourceMeta()
|
meta := t.resourceMeta()
|
||||||
var (
|
var (
|
||||||
oo []runtime.Object
|
oo []runtime.Object
|
||||||
|
|
@ -235,7 +227,6 @@ func (t *Table) reconcile(ctx context.Context) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
log.Debug().Msgf(" LIST returned %d rows", len(oo))
|
|
||||||
|
|
||||||
var rows render.Rows
|
var rows render.Rows
|
||||||
ns := client.CleanseNamespace(t.namespace)
|
ns := client.CleanseNamespace(t.namespace)
|
||||||
|
|
@ -244,7 +235,6 @@ func (t *Table) reconcile(ctx context.Context) error {
|
||||||
if !ok {
|
if !ok {
|
||||||
return fmt.Errorf("expecting a meta table but got %T", oo[0])
|
return fmt.Errorf("expecting a meta table but got %T", oo[0])
|
||||||
}
|
}
|
||||||
log.Debug().Msgf("!!!!YO!!!")
|
|
||||||
rows = make(render.Rows, len(table.Rows))
|
rows = make(render.Rows, len(table.Rows))
|
||||||
if err := genericHydrate(ns, table, rows, meta.Renderer); err != nil {
|
if err := genericHydrate(ns, table, rows, meta.Renderer); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
@ -265,7 +255,6 @@ func (t *Table) reconcile(ctx context.Context) error {
|
||||||
}
|
}
|
||||||
t.data.Update(rows)
|
t.data.Update(rows)
|
||||||
t.data.Namespace, t.data.Header = t.namespace, meta.Renderer.Header(t.namespace)
|
t.data.Namespace, t.data.Header = t.namespace, meta.Renderer.Header(t.namespace)
|
||||||
log.Debug().Msgf("TABLE_DATA returns %d rows", len(t.data.RowEvents))
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
@ -313,10 +302,6 @@ func (t *Table) fireTableLoadFailed(err error) {
|
||||||
// Helpers...
|
// Helpers...
|
||||||
|
|
||||||
func hydrate(ns string, oo []runtime.Object, rr render.Rows, re Renderer) error {
|
func hydrate(ns string, oo []runtime.Object, rr render.Rows, re Renderer) error {
|
||||||
defer func(t time.Time) {
|
|
||||||
log.Debug().Msgf(" HYDRATE elapsed %v", time.Since(t))
|
|
||||||
}(time.Now())
|
|
||||||
|
|
||||||
for i, o := range oo {
|
for i, o := range oo {
|
||||||
if err := re.Render(o, ns, &rr[i]); err != nil {
|
if err := re.Render(o, ns, &rr[i]); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
||||||
|
|
@ -155,7 +155,7 @@ func (t *Tree) ToYAML(ctx context.Context, gvr, path string) (string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Tree) updater(ctx context.Context) {
|
func (t *Tree) updater(ctx context.Context) {
|
||||||
defer log.Debug().Msgf("Model canceled -- %q", t.gvr)
|
defer log.Debug().Msgf("Tree-model canceled -- %q", t.gvr)
|
||||||
|
|
||||||
rate := iniRefreshRate
|
rate := iniRefreshRate
|
||||||
for {
|
for {
|
||||||
|
|
@ -185,10 +185,6 @@ func (t *Tree) refresh(ctx context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Tree) list(ctx context.Context, a dao.Accessor) ([]runtime.Object, error) {
|
func (t *Tree) list(ctx context.Context, a dao.Accessor) ([]runtime.Object, error) {
|
||||||
defer func(ti time.Time) {
|
|
||||||
log.Debug().Msgf(" TREE-LIST %q:%q elapsed %v", t.namespace, t.gvr, time.Since(ti))
|
|
||||||
}(time.Now())
|
|
||||||
|
|
||||||
factory, ok := ctx.Value(internal.KeyFactory).(dao.Factory)
|
factory, ok := ctx.Value(internal.KeyFactory).(dao.Factory)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("expected Factory in context but got %T", ctx.Value(internal.KeyFactory))
|
return nil, fmt.Errorf("expected Factory in context but got %T", ctx.Value(internal.KeyFactory))
|
||||||
|
|
@ -199,16 +195,11 @@ func (t *Tree) list(ctx context.Context, a dao.Accessor) ([]runtime.Object, erro
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Tree) reconcile(ctx context.Context) error {
|
func (t *Tree) reconcile(ctx context.Context) error {
|
||||||
defer func(ti time.Time) {
|
|
||||||
log.Debug().Msgf("TREE-RECONCILE %q:%q elapsed %v", t.namespace, t.gvr, time.Since(ti))
|
|
||||||
}(time.Now())
|
|
||||||
|
|
||||||
meta := t.resourceMeta()
|
meta := t.resourceMeta()
|
||||||
oo, err := t.list(ctx, meta.DAO)
|
oo, err := t.list(ctx, meta.DAO)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
log.Debug().Msgf(" TREE returned %d rows", len(oo))
|
|
||||||
|
|
||||||
ns := client.CleanseNamespace(t.namespace)
|
ns := client.CleanseNamespace(t.namespace)
|
||||||
root := xray.NewTreeNode("root", client.NewGVR(t.gvr).ToR())
|
root := xray.NewTreeNode("root", client.NewGVR(t.gvr).ToR())
|
||||||
|
|
@ -232,7 +223,6 @@ func (t *Tree) reconcile(ctx context.Context) error {
|
||||||
t.root = root.Filter(t.query, rxFilter)
|
t.root = root.Filter(t.query, rxFilter)
|
||||||
}
|
}
|
||||||
if t.root == nil || t.root.Diff(root) {
|
if t.root == nil || t.root.Diff(root) {
|
||||||
log.Debug().Msgf(">>>> DIFFERENCE!!!!")
|
|
||||||
t.root = root
|
t.root = root
|
||||||
t.fireTreeTreeChanged(t.root)
|
t.fireTreeTreeChanged(t.root)
|
||||||
}
|
}
|
||||||
|
|
@ -297,10 +287,6 @@ func rxFilter(q, path string) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func treeHydrate(ctx context.Context, ns string, oo []runtime.Object, re TreeRenderer) error {
|
func treeHydrate(ctx context.Context, ns string, oo []runtime.Object, re TreeRenderer) error {
|
||||||
defer func(t time.Time) {
|
|
||||||
log.Debug().Msgf(" TREE-HYDRATE elapsed %v", time.Since(t))
|
|
||||||
}(time.Now())
|
|
||||||
|
|
||||||
for _, o := range oo {
|
for _, o := range oo {
|
||||||
if err := re.Render(ctx, ns, o); err != nil {
|
if err := re.Render(ctx, ns, o); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
||||||
|
|
@ -115,6 +115,7 @@ func (x *Xray) Hints() model.MenuHints {
|
||||||
|
|
||||||
func (x *Xray) bindKeys() {
|
func (x *Xray) bindKeys() {
|
||||||
x.Actions().Add(ui.KeyActions{
|
x.Actions().Add(ui.KeyActions{
|
||||||
|
tcell.KeyEnter: ui.NewKeyAction("Goto", x.gotoCmd, true),
|
||||||
ui.KeySpace: ui.NewKeyAction("Expand/Collapse", x.noopCmd, true),
|
ui.KeySpace: ui.NewKeyAction("Expand/Collapse", x.noopCmd, true),
|
||||||
ui.KeyX: ui.NewKeyAction("Expand/Collapse All", x.toggleCollapseCmd, true),
|
ui.KeyX: ui.NewKeyAction("Expand/Collapse All", x.toggleCollapseCmd, true),
|
||||||
ui.KeySlash: ui.NewSharedKeyAction("Filter Mode", x.activateCmd, false),
|
ui.KeySlash: ui.NewSharedKeyAction("Filter Mode", x.activateCmd, false),
|
||||||
|
|
@ -179,9 +180,6 @@ func (x *Xray) refreshActions() {
|
||||||
if client.Can(x.meta.Verbs, "delete") {
|
if client.Can(x.meta.Verbs, "delete") {
|
||||||
aa[tcell.KeyCtrlD] = ui.NewKeyAction("Delete", x.deleteCmd, true)
|
aa[tcell.KeyCtrlD] = ui.NewKeyAction("Delete", x.deleteCmd, true)
|
||||||
}
|
}
|
||||||
if client.Can(x.meta.Verbs, "view") {
|
|
||||||
aa[tcell.KeyEnter] = ui.NewKeyAction("Goto", x.gotoCmd, true)
|
|
||||||
}
|
|
||||||
if !dao.IsK9sMeta(x.meta) {
|
if !dao.IsK9sMeta(x.meta) {
|
||||||
aa[ui.KeyY] = ui.NewKeyAction("YAML", x.viewCmd, true)
|
aa[ui.KeyY] = ui.NewKeyAction("YAML", x.viewCmd, true)
|
||||||
aa[ui.KeyD] = ui.NewKeyAction("Describe", x.describeCmd, true)
|
aa[ui.KeyD] = ui.NewKeyAction("Describe", x.describeCmd, true)
|
||||||
|
|
@ -439,25 +437,22 @@ func (x *Xray) gotoCmd(evt *tcell.EventKey) *tcell.EventKey {
|
||||||
x.Start()
|
x.Start()
|
||||||
}
|
}
|
||||||
x.cmdBuff.SetActive(false)
|
x.cmdBuff.SetActive(false)
|
||||||
return nil
|
x.GetRoot().ExpandAll()
|
||||||
}
|
|
||||||
n := x.GetCurrentNode()
|
|
||||||
if n == nil {
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
ref, ok := n.GetReference().(xray.NodeSpec)
|
ref := x.selectedSpec()
|
||||||
if !ok {
|
if ref == nil {
|
||||||
log.Error().Msgf("Expecting a NodeSpec!")
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if len(strings.Split(ref.Path, "/")) == 1 {
|
if len(strings.Split(ref.Path, "/")) == 1 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.app.viewResource(client.NewGVR(ref.GVR).ToR(), ref.Path, false); err != nil {
|
if err := x.app.viewResource(client.NewGVR(ref.GVR).ToR(), ref.Path, false); err != nil {
|
||||||
x.app.Flash().Err(err)
|
x.app.Flash().Err(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -528,7 +523,7 @@ func (x *Xray) update(node *xray.TreeNode) {
|
||||||
root.Walk(func(node, parent *tview.TreeNode) bool {
|
root.Walk(func(node, parent *tview.TreeNode) bool {
|
||||||
ref, ok := node.GetReference().(xray.NodeSpec)
|
ref, ok := node.GetReference().(xray.NodeSpec)
|
||||||
if !ok {
|
if !ok {
|
||||||
log.Error().Msgf("Expeting a NodeSpec but got %T", node.GetReference())
|
log.Error().Msgf("Expecting a NodeSpec but got %T", node.GetReference())
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
// BOZO!! Figure this out expand/collapse but the root
|
// BOZO!! Figure this out expand/collapse but the root
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue