Documentation

Index

Constants

View Source
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"
)
View Source
const (
	RequestSetContentPath = "setContentPath"
	RequestSetNamespace   = "setNamespace"
)
View Source
const (
	RequestAddFilter    = "addFilter"
	RequestClearFilters = "clearFilters"
	RequestRemoveFilter = "removeFilter"
)
View Source
const (
	RequestPerformAction = "performAction"
)
View Source
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(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

func RespondWithError(w http.ResponseWriter, code int, message string, logger log.Logger)

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

func (a *API) ForceUpdate() error

func (*API) Handler

func (a *API) Handler(ctx context.Context) (*mux.Router, error)

Handler returns a HTTP handler for the service.

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

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

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

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

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

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

Handlers returns nil.

func (*NamespacesManager) Start

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 func(ctx context.Context, state controllers.State, config NavigationManagerConfig) ([]navigation.Navigation, error)

NavigationGeneratorFunc is a function that generates a navigation tree.

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.

Handlers returns nil.

Start starts the manager. It periodically generates navigation updates.

type NavigationManagerConfig interface {
	ModuleManager() module.ManagerInterface
}

NavigationManagerConfig is configuration of NavigationManager.

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.

func (*NotFoundError) Path

func (e *NotFoundError) Path() string

Path is the path of the 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

type PollerFunc func(context.Context) bool

PollerFunc is a function run by the poller.

type Service

type Service interface {
	Handler(ctx context.Context) (*mux.Router, error)
	ForceUpdate() error
}

Service is an API service.

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

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

Handlers returns all the handlers for WebsocketState.

func (*WebsocketState) OnContentPathUpdate

OnContentPathUpdate registers a function that will be called when the content path changes.

func (*WebsocketState) OnNamespaceUpdate

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.