Documentation ¶
Index ¶
- Constants
- func CreateAlertUpdate(alert action.Alert) controllers.Event
- func CreateContentEvent(contentResponse component.ContentResponse, namespace, contentPath string, ...) controllers.Event
- func CreateEvent(eventType controllers.EventType, fields action.Payload) controllers.Event
- func CreateFiltersUpdate(filters []controllers.Filter) controllers.Event
- func CreateNamespacesEvent(namespaces []string) controllers.Event
- func CreateNavigationEvent(sections []navigation.Navigation, defaultPath string) controllers.Event
- func FilterFromPayload(in action.Payload) (controllers.Filter, bool)
- func FiltersFromQueryParams(in interface{}) ([]controllers.Filter, error)
- func FiltersToLabelSet(filters []controllers.Filter) *labels.Set
- func ListenerAddr() string
- func NamespacesGenerator(_ context.Context, config NamespaceManagerConfig) ([]string, error)
- func NavigationGenerator(ctx context.Context, state controllers.State, config NavigationManagerConfig) ([]navigation.Navigation, error)
- func ParseFilterQueryParam(in string) (controllers.Filter, error)
- func RespondWithError(w http.ResponseWriter, code int, message string, logger log.Logger)
- type API
- type ActionDispatcher
- type ActionRequestManager
- type ClientManager
- type ContentGenerateFunc
- type ContentManager
- func (cm *ContentManager) Handlers() []controllers.ClientRequestHandler
- func (cm *ContentManager) SetContentPath(state controllers.State, payload action.Payload) error
- func (cm *ContentManager) SetNamespace(state controllers.State, payload action.Payload) error
- func (cm *ContentManager) SetQueryParams(state controllers.State, payload action.Payload) error
- func (cm *ContentManager) Start(ctx context.Context, state controllers.State, s LissioClient)
- type ContentManagerOption
- type ContextGenerateFunc
- type ContextManager
- type ContextManagerOption
- type FilterManager
- func (fm *FilterManager) AddFilter(state controllers.State, payload action.Payload) error
- func (fm *FilterManager) ClearFilters(state controllers.State, payload action.Payload) error
- func (fm *FilterManager) Handlers() []controllers.ClientRequestHandler
- func (fm *FilterManager) RemoveFilter(state controllers.State, payload action.Payload) error
- func (fm *FilterManager) Start(ctx context.Context, state controllers.State, s LissioClient)
- type InterruptiblePoller
- type LissioClient
- type NamespaceManagerConfig
- type NamespacesGenerateFunc
- type NamespacesManager
- type NamespacesManagerOption
- type NavigationGeneratorFunc
- type NavigationManager
- type NavigationManagerConfig
- type NavigationManagerOption
- type NotFoundError
- type Poller
- type PollerFunc
- type Service
- type SingleRunPoller
- type StateManager
- type WebsocketClient
- type WebsocketClientManager
- type WebsocketState
- func (c *WebsocketState) AddFilter(filter controllers.Filter)
- func (c *WebsocketState) Dispatch(ctx context.Context, actionName string, payload action.Payload) error
- func (c *WebsocketState) GetContentPath() string
- func (c *WebsocketState) GetFilters() []controllers.Filter
- func (c *WebsocketState) GetNamespace() string
- func (c *WebsocketState) GetQueryParams() map[string][]string
- func (c *WebsocketState) Handlers() []controllers.ClientRequestHandler
- func (c *WebsocketState) OnContentPathUpdate(fn controllers.ContentPathUpdateFunc) controllers.UpdateCancelFunc
- func (c *WebsocketState) OnNamespaceUpdate(fn controllers.NamespaceUpdateFunc) controllers.UpdateCancelFunc
- func (c *WebsocketState) RemoveFilter(filter controllers.Filter)
- func (c *WebsocketState) SendAlert(alert action.Alert)
- func (c *WebsocketState) SetContentPath(contentPath string)
- func (c *WebsocketState) SetContext(requestedContext string)
- func (c *WebsocketState) SetFilters(filters []controllers.Filter)
- func (c *WebsocketState) SetNamespace(namespace string)
- func (c *WebsocketState) Start(ctx context.Context)
- type WebsocketStateOption
Constants ¶
const ( // ListenerAddrKey is the environment variable for the Lissio listener address. ListenerAddrKey = "LISSIO_LISTENER_ADDR" AcceptedHostsKey = "LISSIO_ACCEPTED_HOSTS" // PathPrefix is a string for the api path prefix. PathPrefix = "/api/v1" )
const ( RequestSetContentPath = "setContentPath" RequestSetNamespace = "setNamespace" )
const ( RequestAddFilter = "addFilter" RequestClearFilters = "clearFilters" RequestRemoveFilter = "removeFilter" )
const (
RequestPerformAction = "performAction"
)
const (
RequestSetContext = "setContext"
)
Variables ¶
This section is empty.
Functions ¶
func CreateAlertUpdate ¶
func CreateAlertUpdate(alert action.Alert) controllers.Event
CreateAlertUpdate creates an alert update event.
func CreateContentEvent ¶
func CreateContentEvent(contentResponse component.ContentResponse, namespace, contentPath string, queryParams map[string][]string) controllers.Event
CreateContentEvent creates a content event.
func CreateEvent ¶
func CreateEvent(eventType controllers.EventType, fields action.Payload) controllers.Event
func CreateFiltersUpdate ¶
func CreateFiltersUpdate(filters []controllers.Filter) controllers.Event
CreateFiltersUpdate creates a filters update event.
func CreateNamespacesEvent ¶
func CreateNamespacesEvent(namespaces []string) controllers.Event
CreateNamespacesEvent creates a namespaces event.
func CreateNavigationEvent ¶
func CreateNavigationEvent(sections []navigation.Navigation, defaultPath string) controllers.Event
CreateNavigationEvent creates a namespaces event.
func FilterFromPayload ¶
func FilterFromPayload(in action.Payload) (controllers.Filter, bool)
FilterFromPayload creates a filter from a payload. Returns false if the payload is invalid.
func FiltersFromQueryParams ¶
func FiltersFromQueryParams(in interface{}) ([]controllers.Filter, error)
FiltersFromQueryParams converts query params to filters. Can handle one or multiple query params.
func FiltersToLabelSet ¶
func FiltersToLabelSet(filters []controllers.Filter) *labels.Set
FiltersToLabelSet converts a slice of filters to a label set.
func ListenerAddr ¶
func ListenerAddr() string
ListenerAddr returns the default listener address if LISSIO_LISTENER_ADDR is not set.
func NamespacesGenerator ¶
func NamespacesGenerator(_ context.Context, config NamespaceManagerConfig) ([]string, error)
NamespacesGenerator generates a list of namespaces.
func NavigationGenerator ¶
func NavigationGenerator(ctx context.Context, state controllers.State, config NavigationManagerConfig) ([]navigation.Navigation, error)
NavigationGenerator generates a navigation tree given a set of modules and a namespace.
func ParseFilterQueryParam ¶
func ParseFilterQueryParam(in string) (controllers.Filter, error)
ParseFilterQueryParam parsers a single filter from a query param in the format `key:value`.
func RespondWithError ¶
RespondWithError responds with an error message.
Types ¶
type API ¶
type API struct {
// contains filtered or unexported fields
}
API is the API for the dashboard client
func New ¶
func New(ctx context.Context, prefix string, actionDispatcher ActionDispatcher, dashConfig config.Dash) *API
New creates an instance of API.
func (*API) ForceUpdate ¶
type ActionDispatcher ¶
type ActionDispatcher interface {
Dispatch(ctx context.Context, alerter action.Alerter, actionName string, payload action.Payload) error
}
ActionDispatcher dispatches actions.
type ActionRequestManager ¶
type ActionRequestManager struct { }
ActionRequestManager manages action requests. Action requests allow a generic interface for supporting dynamic requests from clients.
func NewActionRequestManager ¶
func NewActionRequestManager() *ActionRequestManager
NewActionRequestManager creates an instance of ActionRequestManager.
func (*ActionRequestManager) Handlers ¶
func (a *ActionRequestManager) Handlers() []controllers.ClientRequestHandler
Handlers returns the handlers this manager supports.
func (*ActionRequestManager) PerformAction ¶
func (a *ActionRequestManager) PerformAction(state controllers.State, payload action.Payload) error
PerformAction is a handler than runs an action.
func (ActionRequestManager) Start ¶
func (a ActionRequestManager) Start(ctx context.Context, state controllers.State, s LissioClient)
type ClientManager ¶
type ClientManager interface { Run(ctx context.Context) ClientFromRequest(dashConfig config.Dash, w http.ResponseWriter, r *http.Request) (*WebsocketClient, error) }
ClientManager is an interface for managing clients.
type ContentGenerateFunc ¶
type ContentGenerateFunc func(ctx context.Context, state controllers.State) (component.ContentResponse, bool, error)
ContentGenerateFunc is a function that generates content. It returns `rerun=true` if the action should be be immediately rerun.
type ContentManager ¶
type ContentManager struct {
// contains filtered or unexported fields
}
ContentManager manages content for websockets.
func NewContentManager ¶
func NewContentManager(moduleManager module.ManagerInterface, logger log.Logger, options ...ContentManagerOption) *ContentManager
NewContentManager creates an instance of ContentManager.
func (*ContentManager) Handlers ¶
func (cm *ContentManager) Handlers() []controllers.ClientRequestHandler
Handlers returns a slice of client request handlers.
func (*ContentManager) SetContentPath ¶
func (cm *ContentManager) SetContentPath(state controllers.State, payload action.Payload) error
SetContentPath sets the current content path.
func (*ContentManager) SetNamespace ¶
func (cm *ContentManager) SetNamespace(state controllers.State, payload action.Payload) error
SetNamespace sets the current namespace.
func (*ContentManager) SetQueryParams ¶
func (cm *ContentManager) SetQueryParams(state controllers.State, payload action.Payload) error
SetQueryParams sets the current query params.
func (*ContentManager) Start ¶
func (cm *ContentManager) Start(ctx context.Context, state controllers.State, s LissioClient)
Start starts the manager.
type ContentManagerOption ¶
type ContentManagerOption func(manager *ContentManager)
ContentManagerOption is an option for configuring ContentManager.
func WithContentGenerator ¶
func WithContentGenerator(fn ContentGenerateFunc) ContentManagerOption
WithContentGenerator configures the content generate function.
func WithContentGeneratorPoller ¶
func WithContentGeneratorPoller(poller Poller) ContentManagerOption
WithContentGeneratorPoller configures the poller.
type ContextGenerateFunc ¶
type ContextGenerateFunc func(ctx context.Context, state controllers.State) (controllers.Event, error)
ContextGenerateFunc is a function which generates a context event.
type ContextManager ¶
type ContextManager struct {
// contains filtered or unexported fields
}
ContextManager manages context.
func NewContextManager ¶
func NewContextManager(dashConfig config.Dash, options ...ContextManagerOption) *ContextManager
NewContextManager creates an instances of ContextManager.
func (*ContextManager) Handlers ¶
func (c *ContextManager) Handlers() []controllers.ClientRequestHandler
Handlers returns a slice of handlers.
func (*ContextManager) SetContext ¶
func (c *ContextManager) SetContext(state controllers.State, payload action.Payload) error
SetContext sets the current context.
func (*ContextManager) Start ¶
func (c *ContextManager) Start(ctx context.Context, state controllers.State, s LissioClient)
Start starts the manager.
type ContextManagerOption ¶
type ContextManagerOption func(manager *ContextManager)
ContextManagerOption is an option for configuring ContextManager.
func WithContextGenerator ¶
func WithContextGenerator(fn ContextGenerateFunc) ContextManagerOption
WithContextGenerator sets the context generator.
func WithContextGeneratorPoll ¶
func WithContextGeneratorPoll(poller Poller) ContextManagerOption
WithContextGeneratorPoll generates the poller.
type FilterManager ¶
type FilterManager struct { }
FilterManager manages filters.
func NewFilterManager ¶
func NewFilterManager() *FilterManager
NewFilterManager creates an instance of FilterManager.
func (*FilterManager) AddFilter ¶
func (fm *FilterManager) AddFilter(state controllers.State, payload action.Payload) error
AddFilter adds a filter.
func (*FilterManager) ClearFilters ¶
func (fm *FilterManager) ClearFilters(state controllers.State, payload action.Payload) error
ClearFilters clears all filters.
func (*FilterManager) Handlers ¶
func (fm *FilterManager) Handlers() []controllers.ClientRequestHandler
Handlers returns a slice of handlers.
func (*FilterManager) RemoveFilter ¶
func (fm *FilterManager) RemoveFilter(state controllers.State, payload action.Payload) error
RemoveFilters removes a filter.
func (*FilterManager) Start ¶
func (fm *FilterManager) Start(ctx context.Context, state controllers.State, s LissioClient)
Start starts the manager. Current is a no-op.
type InterruptiblePoller ¶
type InterruptiblePoller struct {
// contains filtered or unexported fields
}
InterruptiblePoller is a poller than runs an action and allows for interrupts.
func NewInterruptiblePoller ¶
func NewInterruptiblePoller(name string) *InterruptiblePoller
NewInterruptiblePoller creates an instance of InterruptiblePoller.
func (*InterruptiblePoller) Run ¶
func (ip *InterruptiblePoller) Run(ctx context.Context, ch <-chan struct{}, action PollerFunc, resetDuration time.Duration)
Run runs the poller.
type LissioClient ¶
type LissioClient interface { Send(event controllers.Event) ID() string }
LissioClient is an LissioClient.
type NamespaceManagerConfig ¶
type NamespaceManagerConfig interface {
ClusterClient() cluster.ClientInterface
}
NamespaceManagerConfig is configuration for NamespacesManager.
type NamespacesGenerateFunc ¶
type NamespacesGenerateFunc func(ctx context.Context, config NamespaceManagerConfig) ([]string, error)
NamespacesGenerateFunc is a function that generates a list of namespaces.
type NamespacesManager ¶
type NamespacesManager struct {
// contains filtered or unexported fields
}
NamespacesManager manages namespaces.
func NewNamespacesManager ¶
func NewNamespacesManager(config NamespaceManagerConfig, options ...NamespacesManagerOption) *NamespacesManager
NewNamespacesManager creates an instance of NamespacesManager.
func (NamespacesManager) Handlers ¶
func (n NamespacesManager) Handlers() []controllers.ClientRequestHandler
Handlers returns nil.
func (*NamespacesManager) Start ¶
func (n *NamespacesManager) Start(ctx context.Context, state controllers.State, s LissioClient)
Start starts the manager. It periodically generates a list of namespaces.
type NamespacesManagerOption ¶
type NamespacesManagerOption func(n *NamespacesManager)
NamespacesManagerOption is an option for configuring NamespacesManager.
func WithNamespacesGenerator ¶
func WithNamespacesGenerator(fn NamespacesGenerateFunc) NamespacesManagerOption
WithNamespacesGenerator configures the namespaces generator function.
func WithNamespacesGeneratorPoller ¶
func WithNamespacesGeneratorPoller(poller Poller) NamespacesManagerOption
WithNamespacesGeneratorPoller configures the poller.
type NavigationGeneratorFunc ¶
type NavigationGeneratorFunc func(ctx context.Context, state controllers.State, config NavigationManagerConfig) ([]navigation.Navigation, error)
NavigationGeneratorFunc is a function that generates a navigation tree.
type NavigationManager ¶
type NavigationManager struct {
// contains filtered or unexported fields
}
NavigationManager manages the navigation tree.
func NewNavigationManager ¶
func NewNavigationManager(config NavigationManagerConfig, options ...NavigationManagerOption) *NavigationManager
NewNavigationManager creates an instance of NavigationManager.
func (NavigationManager) Handlers ¶
func (n NavigationManager) Handlers() []controllers.ClientRequestHandler
Handlers returns nil.
func (*NavigationManager) Start ¶
func (n *NavigationManager) Start(ctx context.Context, state controllers.State, s LissioClient)
Start starts the manager. It periodically generates navigation updates.
type NavigationManagerConfig ¶
type NavigationManagerConfig interface {
}NavigationManagerConfig is configuration of NavigationManager.
type NavigationManagerOption ¶
type NavigationManagerOption func(n *NavigationManager)
NavigationManagerConfig is an option for configuration NavigationManager.
func WithNavigationGenerator ¶
func WithNavigationGenerator(fn NavigationGeneratorFunc) NavigationManagerOption
WithNavigationGenerator configures the navigation generator function.
func WithNavigationGeneratorPoller ¶
func WithNavigationGeneratorPoller(poller Poller) NavigationManagerOption
WithNavigationGeneratorPoller configures the poller.
type NotFoundError ¶
type NotFoundError struct {
// contains filtered or unexported fields
}
NotFoundError is a not found error.
func NewNotFoundError ¶
func NewNotFoundError(path string) *NotFoundError
NewNotFoundError creates an instance of NotFoundError
func (*NotFoundError) Error ¶
func (e *NotFoundError) Error() string
Error returns the error string.
func (*NotFoundError) NotFound ¶
func (e *NotFoundError) NotFound() bool
NotFound returns true to signify this is a not found error.
type Poller ¶
type Poller interface {
Run(ctx context.Context, ch <-chan struct{}, action PollerFunc, resetDuration time.Duration)
}
Poller is a poller. It runs an action.
type PollerFunc ¶
PollerFunc is a function run by the poller.
type SingleRunPoller ¶
type SingleRunPoller struct{}
SingleRunPoller is a a poller runs the supplied action once. It is useful for testing.
func NewSingleRunPoller ¶
func NewSingleRunPoller() *SingleRunPoller
NewSingleRunPoller creates an instance of SingleRunPoller.
func (SingleRunPoller) Run ¶
func (a SingleRunPoller) Run(ctx context.Context, ch <-chan struct{}, action PollerFunc, resetDuration time.Duration)
Run runs the poller.
type StateManager ¶
type StateManager interface { Handlers() []controllers.ClientRequestHandler Start(ctx context.Context, state controllers.State, s LissioClient) }
StateManager manages states for WebsocketState.
type WebsocketClient ¶
type WebsocketClient struct {
// contains filtered or unexported fields
}
WebsocketClient manages websocket clients.
func NewWebsocketClient ¶
func NewWebsocketClient(ctx context.Context, conn *websocket.Conn, dashConfig config.Dash, actionDispatcher ActionDispatcher, id uuid.UUID) *WebsocketClient
NewWebsocketClient creates an instance of WebsocketClient.
func (*WebsocketClient) ID ¶
func (c *WebsocketClient) ID() string
ID returns the ID of the websocket client.
func (*WebsocketClient) RegisterHandler ¶
func (c *WebsocketClient) RegisterHandler(handler controllers.ClientRequestHandler)
func (*WebsocketClient) Send ¶
func (c *WebsocketClient) Send(ev controllers.Event)
type WebsocketClientManager ¶
type WebsocketClientManager struct {
// contains filtered or unexported fields
}
WebsocketClientManager is a client manager for websockets.
func NewWebsocketClientManager ¶
func NewWebsocketClientManager(ctx context.Context, dispatcher ActionDispatcher) *WebsocketClientManager
NewWebsocketClientManager creates an instance of WebsocketClientManager.
func (*WebsocketClientManager) ClientFromRequest ¶
func (m *WebsocketClientManager) ClientFromRequest(dashConfig config.Dash, w http.ResponseWriter, r *http.Request) (*WebsocketClient, error)
ClientFromRequest creates a websocket client from a http request.
func (*WebsocketClientManager) Run ¶
func (m *WebsocketClientManager) Run(ctx context.Context)
Run runs the manager. It manages multiple websocket clients.
type WebsocketState ¶
type WebsocketState struct {
// contains filtered or unexported fields
}
WebsocketState manages state for a websocket client.
func NewWebsocketState ¶
func NewWebsocketState(dashConfig config.Dash, actionDispatcher ActionDispatcher, wsClient LissioClient, options ...WebsocketStateOption) *WebsocketState
NewWebsocketState creates an instance of WebsocketState.
func (*WebsocketState) AddFilter ¶
func (c *WebsocketState) AddFilter(filter controllers.Filter)
AddFilter adds a content filter.
func (*WebsocketState) Dispatch ¶
func (c *WebsocketState) Dispatch(ctx context.Context, actionName string, payload action.Payload) error
Dispatch dispatches a message.
func (*WebsocketState) GetContentPath ¶
func (c *WebsocketState) GetContentPath() string
GetContentPath returns the content path.
func (*WebsocketState) GetFilters ¶
func (c *WebsocketState) GetFilters() []controllers.Filter
GetFilters returns all filters.
func (*WebsocketState) GetNamespace ¶
func (c *WebsocketState) GetNamespace() string
GetNamespace gets the namespace.
func (*WebsocketState) GetQueryParams ¶
func (c *WebsocketState) GetQueryParams() map[string][]string
func (*WebsocketState) Handlers ¶
func (c *WebsocketState) Handlers() []controllers.ClientRequestHandler
Handlers returns all the handlers for WebsocketState.
func (*WebsocketState) OnContentPathUpdate ¶
func (c *WebsocketState) OnContentPathUpdate(fn controllers.ContentPathUpdateFunc) controllers.UpdateCancelFunc
OnContentPathUpdate registers a function that will be called when the content path changes.
func (*WebsocketState) OnNamespaceUpdate ¶
func (c *WebsocketState) OnNamespaceUpdate(fn controllers.NamespaceUpdateFunc) controllers.UpdateCancelFunc
OnNamespaceUpdate registers a function that will be run when the namespace changes.
func (*WebsocketState) RemoveFilter ¶
func (c *WebsocketState) RemoveFilter(filter controllers.Filter)
RemoveFilter removes a content filter.
func (*WebsocketState) SendAlert ¶
func (c *WebsocketState) SendAlert(alert action.Alert)
SendAlert sends an alert to the websocket client.
func (*WebsocketState) SetContentPath ¶
func (c *WebsocketState) SetContentPath(contentPath string)
SetContentPath sets the content path.
func (*WebsocketState) SetContext ¶
func (c *WebsocketState) SetContext(requestedContext string)
SetContext sets the Kubernetes context.
func (*WebsocketState) SetFilters ¶
func (c *WebsocketState) SetFilters(filters []controllers.Filter)
func (*WebsocketState) SetNamespace ¶
func (c *WebsocketState) SetNamespace(namespace string)
SetNamespace sets the namespace.
func (*WebsocketState) Start ¶
func (c *WebsocketState) Start(ctx context.Context)
Start starts WebsocketState by starting all associated StateManagers.
type WebsocketStateOption ¶
type WebsocketStateOption func(w *WebsocketState)
WebsocketStateOption is an option for configuring WebsocketState.
func WebsocketStateManagers ¶
func WebsocketStateManagers(managers []StateManager) WebsocketStateOption
WebsocketStateManagers configures WebsocketState's state managers.