88 lines
2.0 KiB
Go
88 lines
2.0 KiB
Go
// SPDX-License-Identifier: Apache-2.0
|
|
// Copyright Authors of K9s
|
|
|
|
package ui
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/derailed/k9s/internal/config"
|
|
"github.com/derailed/k9s/internal/dao"
|
|
"github.com/derailed/k9s/internal/model"
|
|
"github.com/derailed/k9s/internal/model1"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
)
|
|
|
|
const (
|
|
unlockedIC = "✍️ "
|
|
lockedIC = "🔒"
|
|
)
|
|
|
|
// Namespaceable tracks namespaces.
|
|
type Namespaceable interface {
|
|
// ClusterWide returns true if the model represents resource in all namespaces.
|
|
ClusterWide() bool
|
|
|
|
// GetNamespace returns the model namespace.
|
|
GetNamespace() string
|
|
|
|
// SetNamespace changes the model namespace.
|
|
SetNamespace(string)
|
|
|
|
// InNamespace check if current namespace matches models.
|
|
InNamespace(string) bool
|
|
}
|
|
|
|
// Lister tracks resource getter.
|
|
type Lister interface {
|
|
// Get returns a resource instance.
|
|
Get(ctx context.Context, path string) (runtime.Object, error)
|
|
}
|
|
|
|
// Tabular represents a tabular model.
|
|
type Tabular interface {
|
|
Namespaceable
|
|
Lister
|
|
|
|
// SetInstance sets parent resource path.
|
|
SetInstance(string)
|
|
|
|
// SetLabelFilter sets the label filter.
|
|
SetLabelFilter(string)
|
|
|
|
// GetLabelFilter fetch the label filter.
|
|
GetLabelFilter() string
|
|
|
|
// Empty returns true if model has no data.
|
|
Empty() bool
|
|
|
|
// RowCount returns the model data count.
|
|
RowCount() int
|
|
|
|
// Peek returns current model data.
|
|
Peek() *model1.TableData
|
|
|
|
// Watch watches a given resource for changes.
|
|
Watch(context.Context) error
|
|
|
|
// Refresh forces a new refresh.
|
|
Refresh(context.Context) error
|
|
|
|
// SetRefreshRate sets the model watch loop rate.
|
|
SetRefreshRate(time.Duration)
|
|
|
|
// AddListener registers a model listener.
|
|
AddListener(model.TableListener)
|
|
|
|
// RemoveListener unregister a model listener.
|
|
RemoveListener(model.TableListener)
|
|
|
|
// Delete a resource.
|
|
Delete(context.Context, string, *metav1.DeletionPropagation, dao.Grace) error
|
|
|
|
// SetViewSetting injects custom cols specification.
|
|
SetViewSetting(context.Context, *config.ViewSetting)
|
|
}
|