api

package
v0.16.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 11, 2020 License: Apache-2.0 Imports: 49 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ListenerAddrKey is the environment variable for the Octant listener address.
	ListenerAddrKey  = "listener-addr"
	AcceptedHostsKey = "accepted-hosts"
	// PathPrefix is a string for the api path prefix.
	PathPrefix = "/api/v1"
)
View Source
const (
	RequestPodLogsSubscribe   = "action.octant.dev/podLogs/subscribe"
	RequestPodLogsUnsubscribe = "action.octant.dev/podLogs/unsubscribe"
	DefaultSinceSeconds       = 300
)
View Source
const (
	RequestAddFilter    = "action.octant.dev/addFilter"
	RequestClearFilters = "action.octant.dev/clearFilters"
	RequestRemoveFilter = "action.octant.dev/removeFilter"
)
View Source
const (
	UploadKubeConfig = "action.octant.dev/uploadKubeConfig"
	CheckLoading     = "action.octant.dev/loading"
)
View Source
const (
	RequestTerminalCommand = "action.octant.dev/sendTerminalCommand"
	RequestTerminalResize  = "action.octant.dev/sendTerminalResize"
	RequestActiveTerminal  = "action.octant.dev/setActiveTerminal"
)
View Source
const (
	RequestPerformAction = "action.octant.dev/performAction"
)
View Source
const (
	RequestSetContentPath = "action.octant.dev/setContentPath"
)
View Source
const (
	RequestSetContext = "action.octant.dev/setContext"
)

Variables

This section is empty.

Functions

func CreateAlertUpdate

func CreateAlertUpdate(alert action.Alert) event.Event

CreateAlertUpdate creates an alert update event.

func CreateContentEvent

func CreateContentEvent(contentResponse component.ContentResponse, namespace, contentPath string, queryParams map[string][]string) oevent.Event

CreateContentEvent creates a content event.

func CreateFiltersUpdate

func CreateFiltersUpdate(filters []octant.Filter) event.Event

CreateFiltersUpdate creates a filters update event.

func CreateNamespacesEvent

func CreateNamespacesEvent(namespaces []string) oevent.Event

CreateNamespacesEvent creates a namespaces event.

func CreateNavigationEvent

func CreateNavigationEvent(sections []navigation.Navigation, defaultPath string) oevent.Event

CreateNavigationEvent creates a navigation event.

func FilterFromPayload

func FilterFromPayload(in action.Payload) (octant.Filter, bool)

FilterFromPayload creates a filter from a payload. Returns false if the payload is invalid.

func FiltersFromQueryParams

func FiltersFromQueryParams(in interface{}) ([]octant.Filter, error)

FiltersFromQueryParams converts query params to filters. Can handle one or multiple query params.

func FiltersToLabelSet

func FiltersToLabelSet(filters []octant.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 OCTANT_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 octant.State, config NavigationManagerConfig) ([]navigation.Navigation, error)

NavigationGenerator generates a navigation tree given a set of modules and a namespace.

func NewPodLogsStateManager added in v0.12.0

func NewPodLogsStateManager(dashConfig config.Dash) *podLogsStateManager

NewPodLogsStateManager returns a terminal state manager.

func ParseFilterQueryParam

func ParseFilterQueryParam(in string) (octant.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, websocketClientManager *WebsocketClientManager, 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) (http.Handler, 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 octant.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)
	Clients() []*WebsocketClient
	ClientFromRequest(dashConfig config.Dash, w http.ResponseWriter, r *http.Request) (*WebsocketClient, error)
	TemporaryClientFromLoadingRequest(w http.ResponseWriter, r *http.Request) (*WebsocketClient, error)
	Get(id string) event.WSEventSender
}

ClientManager is an interface for managing clients.

type Content added in v0.11.0

type Content struct {
	// Response is a content response.
	Response component.ContentResponse
	// Path is the path of the content.
	Path string
}

Content is a content to be sent to clients.

func (*Content) Checksum added in v0.16.0

func (c *Content) Checksum() string

Checksum return's the content's checksum.

type ContentGenerateFunc

type ContentGenerateFunc func(ctx context.Context, state octant.State) (Content, 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() []octant.ClientRequestHandler

Handlers returns a slice of client request handlers.

func (*ContentManager) Loaded added in v0.15.0

func (cm *ContentManager) Loaded(state octant.State, payload action.Payload) error

Loaded is no-op once content is serving

func (*ContentManager) SetContentPath

func (cm *ContentManager) SetContentPath(state octant.State, payload action.Payload) error

SetContentPath sets the current content path.

func (*ContentManager) SetNamespace

func (cm *ContentManager) SetNamespace(state octant.State, payload action.Payload) error

SetNamespace sets the current namespace.

func (*ContentManager) SetQueryParams

func (cm *ContentManager) SetQueryParams(state octant.State, payload action.Payload) error

SetQueryParams sets the current query params.

func (*ContentManager) Start

func (cm *ContentManager) Start(ctx context.Context, state octant.State, s OctantClient)

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 octant.State) (oevent.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() []octant.ClientRequestHandler

Handlers returns a slice of handlers.

func (*ContextManager) SetContext

func (c *ContextManager) SetContext(state octant.State, payload action.Payload) error

SetContext sets the current context.

func (*ContextManager) Start

func (c *ContextManager) Start(ctx context.Context, state octant.State, s OctantClient)

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 octant.State, payload action.Payload) error

AddFilter adds a filter.

func (*FilterManager) ClearFilters

func (fm *FilterManager) ClearFilters(state octant.State, payload action.Payload) error

ClearFilters clears all filters.

func (*FilterManager) Handlers

func (fm *FilterManager) Handlers() []octant.ClientRequestHandler

Handlers returns a slice of handlers.

func (*FilterManager) RemoveFilter

func (fm *FilterManager) RemoveFilter(state octant.State, payload action.Payload) error

RemoveFilters removes a filter.

func (*FilterManager) Start

func (fm *FilterManager) Start(ctx context.Context, state octant.State, s OctantClient)

Start starts the manager. Current is a no-op.

type HelperGenerateFunc added in v0.13.0

type HelperGenerateFunc func(ctx context.Context, state octant.State) (oevent.Event, error)

HelperGenerateFunc is a function which generates a helper event

type HelperStateManager added in v0.13.0

type HelperStateManager struct {
	// contains filtered or unexported fields
}

HelperStateManager manages buildInfo

func NewHelperStateManager added in v0.13.0

func NewHelperStateManager(dashConfig config.Dash, options ...HelperStateManagerOption) *HelperStateManager

NewHelperStateManager creates an instance of HelperStateManager

func (*HelperStateManager) Handlers added in v0.13.0

Handlers returns a slice of handlers

func (*HelperStateManager) Start added in v0.13.0

func (h *HelperStateManager) Start(ctx context.Context, state octant.State, client OctantClient)

Start starts the manager

type HelperStateManagerOption added in v0.13.0

type HelperStateManagerOption func(manager *HelperStateManager)

HelperStateManagerOption is an option for configuration HelperManager

func WithHelperGenerator added in v0.13.0

func WithHelperGenerator(fn HelperGenerateFunc) HelperStateManagerOption

WithHelperGenerator sets the helper generator

func WithHelperGeneratorPoll added in v0.13.0

func WithHelperGeneratorPoll(poller Poller) HelperStateManagerOption

WithHelperGeneratorPoll generates the poller

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 (a *InterruptiblePoller) Run(ctx context.Context, ch <-chan struct{}, action PollerFunc, resetDuration time.Duration)

Run runs the poller.

type LoadingAPI added in v0.14.0

type LoadingAPI struct {
	// contains filtered or unexported fields
}

LoadingAPI is an API for startup modules to run

func NewLoadingAPI added in v0.14.0

func NewLoadingAPI(ctx context.Context, prefix string, actionDispatcher ActionDispatcher, websocketClientManager *WebsocketClientManager, logger log.Logger) *LoadingAPI

NewLoadingAPI creates an instance of LoadingAPI

func (*LoadingAPI) ForceUpdate added in v0.14.0

func (l *LoadingAPI) ForceUpdate() error

func (*LoadingAPI) Handler added in v0.14.0

func (l *LoadingAPI) Handler(ctx context.Context) (http.Handler, error)

Handler contains a list of handlers

type LoadingManager added in v0.14.0

type LoadingManager struct {
	// contains filtered or unexported fields
}

func NewLoadingManager added in v0.14.0

func NewLoadingManager() *LoadingManager

func (*LoadingManager) CheckLoading added in v0.14.0

func (l *LoadingManager) CheckLoading(state octant.State, payload action.Payload) error

func (*LoadingManager) Handlers added in v0.14.0

func (l *LoadingManager) Handlers() []octant.ClientRequestHandler

func (*LoadingManager) Start added in v0.14.0

func (l *LoadingManager) Start(ctx context.Context, state octant.State, client OctantClient)

func (*LoadingManager) UploadKubeConfig added in v0.14.0

func (l *LoadingManager) UploadKubeConfig(state octant.State, payload action.Payload) error

func (*LoadingManager) WatchConfig added in v0.14.0

func (l *LoadingManager) WatchConfig(path chan string, client OctantClient, fs afero.Fs)

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

func (n *NamespacesManager) Start(ctx context.Context, state octant.State, s OctantClient)

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 octant.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.

func (n *NavigationManager) Start(ctx context.Context, state octant.State, s OctantClient)

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 OctantClient

type OctantClient interface {
	Send(event event.Event)
	ID() string
	StopCh() <-chan struct{}
}

OctantClient is an OctantClient.

type Poller

type Poller interface {
	// Run runs `action` and delays `resetDuration` before starting again. If a message
	// is sent to `ch`, it will cancel current work and restart `action`.
	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) (http.Handler, 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, _ <-chan struct{}, action PollerFunc, resetDuration time.Duration)

Run runs the poller.

type StateManager

type StateManager interface {
	Handlers() []octant.ClientRequestHandler
	Start(ctx context.Context, state octant.State, s OctantClient)
}

StateManager manages states for WebsocketState.

func NewTerminalStateManager added in v0.10.0

func NewTerminalStateManager(dashConfig config.Dash) StateManager

NewTerminalStateManager returns a terminal state manager.

type WebsocketClient

type WebsocketClient struct {
	// contains filtered or unexported fields
}

WebsocketClient manages websocket clients.

func NewTemporaryWebsocketClient added in v0.14.0

func NewTemporaryWebsocketClient(ctx context.Context, conn *websocket.Conn, manager *WebsocketClientManager, actionDispatcher ActionDispatcher, id uuid.UUID) *WebsocketClient

NewTemporaryWebsocketClient creates an instance of WebsocketClient

func NewWebsocketClient

func NewWebsocketClient(ctx context.Context, conn *websocket.Conn, manager *WebsocketClientManager, 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 octant.ClientRequestHandler)

func (*WebsocketClient) Send

func (c *WebsocketClient) Send(ev event.Event)

func (*WebsocketClient) StopCh added in v0.16.0

func (c *WebsocketClient) StopCh() <-chan struct{}

StopCh returns the client's stop channel. It will be closed when the WebsocketClient is closed.

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) Clients added in v0.10.0

func (m *WebsocketClientManager) Clients() []*WebsocketClient

func (*WebsocketClientManager) Get added in v0.16.0

func (*WebsocketClientManager) Run

Run runs the manager. It manages multiple websocket clients.

func (*WebsocketClientManager) TemporaryClientFromLoadingRequest added in v0.14.0

func (m *WebsocketClientManager) TemporaryClientFromLoadingRequest(w http.ResponseWriter, r *http.Request) (*WebsocketClient, error)

type WebsocketState

type WebsocketState struct {
	// contains filtered or unexported fields
}

WebsocketState manages state for a websocket client.

func NewTemporaryWebsocketState added in v0.14.0

func NewTemporaryWebsocketState(actionDispatcher ActionDispatcher, wsClient OctantClient, options ...WebsocketStateOption) *WebsocketState

func NewWebsocketState

func NewWebsocketState(dashConfig config.Dash, actionDispatcher ActionDispatcher, wsClient OctantClient, options ...WebsocketStateOption) *WebsocketState

NewWebsocketState creates an instance of WebsocketState.

func (*WebsocketState) AddFilter

func (c *WebsocketState) AddFilter(filter octant.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) GetClientID added in v0.16.0

func (c *WebsocketState) GetClientID() string

func (*WebsocketState) GetContentPath

func (c *WebsocketState) GetContentPath() string

GetContentPath returns the content path.

func (*WebsocketState) GetFilters

func (c *WebsocketState) GetFilters() []octant.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() []octant.ClientRequestHandler

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 octant.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 []octant.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.

Directories

Path Synopsis
Package fake is a generated GoMock package.
Package fake is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL