types

package
v0.0.0-...-6dcdff4 Latest Latest
Warning

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

Go to latest
Published: Jul 31, 2024 License: AGPL-3.0 Imports: 12 Imported by: 7

Documentation

Index

Constants

View Source
const (
	DefaultTimeout         = 10 * time.Second
	DefaultMaxRetries      = 3
	DefaultBackoffInterval = 1 * time.Second
)
View Source
const (
	ConnectionDefaultExpiryTime = time.Hour * 24
)

Variables

View Source
var AllConnectionStatusCodes = []struct {
	Value  ConnectionStatusCode
	TSName string
}{
	{ConnectionStatusUnknown, "UNKNOWN"},
	{ConnectionStatusConnected, "CONNECTED"},
	{ConnectionStatusDisconnected, "DISCONNECTED"},
	{ConnectionStatusPending, "PENDING"},
	{ConnectionStatusFailed, "FAILED"},
	{ConnectionStatusError, "ERROR"},
	{ConnectionStatusUnauthorized, "UNAUTHORIZED"},
	{ConnectionStatusForbidden, "FORBIDDEN"},
	{ConnectionStatusBadRequest, "BAD_REQUEST"},
	{ConnectionStatusNotFound, "NOT_FOUND"},
	{ConnectionStatusTimeout, "TIMEOUT"},
	{ConnectionStatusUnavailable, "UNAVAILABLE"},
	{ConnectionStatusRequestEntityTooLarge, "REQUEST_ENTITY_TOO_LARGE"},
}

AllConnectionStatusCodes is a list of all setting types. Necessary for Wails to bind the enums.

Functions

func LoadPluginMarkdown

func LoadPluginMarkdown(path string) (string, error)

LoadPluginMarkdown loads the plugin markdown from the filesystem.

func LoadPluginMetadata

func LoadPluginMetadata(path string) (config.PluginMeta, error)

LoadPluginMetadata loads the metadata for a plugin from the given path.

func SerializePluginContext

func SerializePluginContext(pc *PluginContext) (string, error)

SerializePluginContext serializes the PluginContext into a JSON string. Used to pass the context between the IDE and the plugin.

func WithConnection

func WithConnection(ctx context.Context, c *Connection) context.Context

func WithPluginContext

func WithPluginContext(ctx context.Context, pluginContext *PluginContext) context.Context

Types

type Connection

type Connection struct {
	// LastRefresh is the time when the auth context was last refreshed
	// +optional
	LastRefresh time.Time `json:"last_refresh"`

	// Data is an optional map of arbitrary data that can be used to store additional information about the connection,
	// such as credential file locations, etc.
	//
	// This data is exposed to the user in the UI under the settings panel for the namespace. If the data is sensitive,
	// it should be stored in the SensitiveData field.
	// +optional
	Data map[string]interface{} `json:"data"`

	// Labels is a map of arbitrary key-value pairs that can be used to store additional information about the connection.
	// Users will likely use and modify these labels to help organize and categorize their connections.
	Labels map[string]interface{} `json:"labels"`

	// ID is the unique identifier for the connection that makes sense to the plugin implementation.
	// +required
	ID string `json:"id"`

	// UID is an autogenerated unique identifier for the connection that the IDE will use to identify and track.
	UID string `json:"uid"`

	// Name is the readable name of the connection. Editable by the user.
	// +required
	Name string `json:"name"`

	// Description is an optional description of the connection. This is primarily for the user to customize
	// the visual representation of the connection.
	// +optional
	Description string `json:"description"`

	// Avatar is an optional image that can be used to represent the connection. This is primarily for the user to customize
	// the visual representation of the connection in the UI.
	// +optional
	Avatar string `json:"avatar"`

	// ExpiryTime is the amount of time before the connection expires.
	// +optional
	ExpiryTime time.Duration `json:"expiry_time"`
	// contains filtered or unexported fields
}

Connection holds the current state (and configuration data) for an connection target for a plugin (e.g. a Kubernetes cluster, a cloud role, etc)

This will be passed within the PluginContext so that it may be used across all requests, and data here not within the sensitiveStore will be exposed to the user in the UI for the plugin.

func ConnectionFromContext

func ConnectionFromContext(ctx context.Context) *Connection

func NewConnection

func NewConnection(opts ConnectionOpts) (*Connection, error)

func (*Connection) GetData

func (c *Connection) GetData() map[string]interface{}

func (*Connection) GetDataKey

func (c *Connection) GetDataKey(key string) (interface{}, bool)

func (*Connection) GetSensitiveData

func (c *Connection) GetSensitiveData() map[string]interface{}

func (*Connection) GetSensitiveDataKey

func (c *Connection) GetSensitiveDataKey(key string) (interface{}, bool)

func (*Connection) IsAuthed

func (c *Connection) IsAuthed() bool

IsAuthed returns whether the auth context is authenticated or not.

func (*Connection) SetData

func (c *Connection) SetData(data map[string]interface{})

func (*Connection) SetDataKey

func (c *Connection) SetDataKey(key string, value interface{})

func (*Connection) SetSensitiveData

func (c *Connection) SetSensitiveData(data map[string]interface{})

func (*Connection) SetSensitiveDataKey

func (c *Connection) SetSensitiveDataKey(key string, value interface{})

type ConnectionContext

type ConnectionContext Connection

type ConnectionOpts

type ConnectionOpts struct {
	// Data is an optional map of arbitrary data that can be used to store additional information about the namespace.
	Data map[string]interface{}

	// SensitiveData is an optional map of arbitrary data that can be used to store additional information about the
	SensitiveData map[string]interface{}

	// Labels is a map of arbitrary key-value pairs that can be used to store additional information about the namespace.
	Labels map[string]interface{}

	// ID is the unique identifier for the authorization context that makes sense to the
	ID string

	// UID is an autogenerated unique identifier for the authorization context that the IDE.
	// will use to identify the authorization context.
	UID string

	// Name is the readable name of the namespace.
	Name string

	// Description is an optional description of the namespace. This is primarily for the user to customize
	Description string

	// Avatar is an optional image that can be used to represent the namespace. This is primarily for the user to customize
	Avatar string

	// ExpiryTime is the amount of time before the auth context expires
	ExpiryTime time.Duration
}

type ConnectionStatus

type ConnectionStatus struct {
	// Connection is the connection that the status is for.
	Connection *Connection `json:"connection"`
	// StatusCode is the status code of the connection status.
	Status ConnectionStatusCode `json:"status"`
	// Error is the error that occurred when checking the connection status.
	Error string `json:"error"`
	// Message is a human readable message that describes the status.
	Details string `json:"details"`
}

type ConnectionStatusCode

type ConnectionStatusCode string
const (
	ConnectionStatusUnknown               ConnectionStatusCode = "UNKNOWN"
	ConnectionStatusConnected             ConnectionStatusCode = "CONNECTED"
	ConnectionStatusDisconnected          ConnectionStatusCode = "DISCONNECTED"
	ConnectionStatusPending               ConnectionStatusCode = "PENDING"
	ConnectionStatusFailed                ConnectionStatusCode = "FAILED"
	ConnectionStatusError                 ConnectionStatusCode = "ERROR"
	ConnectionStatusUnauthorized          ConnectionStatusCode = "UNAUTHORIZED"
	ConnectionStatusForbidden             ConnectionStatusCode = "FORBIDDEN"
	ConnectionStatusBadRequest            ConnectionStatusCode = "BAD_REQUEST"
	ConnectionStatusNotFound              ConnectionStatusCode = "NOT_FOUND"
	ConnectionStatusTimeout               ConnectionStatusCode = "TIMEOUT"
	ConnectionStatusUnavailable           ConnectionStatusCode = "UNAVAILABLE"
	ConnectionStatusRequestEntityTooLarge ConnectionStatusCode = "REQUEST_ENTITY_TOO_LARGE"
)

type Plugin

type Plugin struct {
	ID           string                `json:"id"`
	Metadata     config.PluginMeta     `json:"metadata"`
	Config       config.PluginConfig   `json:"config"`
	Enabled      bool                  `json:"enabled"`
	Running      bool                  `json:"running"`
	DevMode      bool                  `json:"devMode"`
	DevPath      string                `json:"devPath"`
	Loading      bool                  `json:"loading"`
	LoadError    string                `json:"loadError"`
	Capabilities []PluginType          `json:"capabilities"`
	RPCClient    plugin.ClientProtocol `json:"-"`
	PluginClient *plugin.Client        `json:"-"`
}

Plugin represents a plugin that is installed and managed by the plugin manager.

func (*Plugin) GetRPCClient

func (p *Plugin) GetRPCClient() interface{}

func (*Plugin) HasCapability

func (p *Plugin) HasCapability(capability PluginType) bool

func (*Plugin) IsRunning

func (p *Plugin) IsRunning() bool

func (*Plugin) SetDisabled

func (p *Plugin) SetDisabled()

func (*Plugin) SetEnabled

func (p *Plugin) SetEnabled()

func (*Plugin) String

func (p *Plugin) String() string

type PluginContext

type PluginContext struct {
	// Current context
	Context context.Context `json:"-"`

	// RequestOptions are the options that were set for the request.
	RequestOptions *RequestOptions `json:"request_options"`

	// Connection holds the identifier of the auth context for the plugin.
	Connection *Connection `json:"connection"`

	// The resource context for the request, if available
	ResourceContext *ResourceContext `json:"resource_context"`

	// The plugin settings for the request
	PluginConfig settings.Provider `json:"-"`

	// GlobalSettings are settings that are accessible to all plugins, taken
	// from the global settings in the IDE section
	GlobalConfig *config.GlobalConfig `json:"global_config"`

	// Unique ID for the request
	RequestID string `json:"request_id"`

	// The ID of the requester
	RequesterID string `json:"requester_id"`
}

PluginContext holds contextual data for requests made to a plugin.

func DeserializePluginContext

func DeserializePluginContext(data string) (*PluginContext, error)

DeserializePluginContext deserializes the JSON string back into a PluginContext. Used to pass the context between the IDE and the plugin.

func NewPluginContext

func NewPluginContext(
	ctx context.Context,
	requester string,
	pluginConfig settings.Provider,
	globalConfig *config.GlobalConfig,
	resourceContext *ResourceContext,
) *PluginContext

Construct a new plugin context with the given requester, resource key, and resource context.

func NewPluginContextFromCtx

func NewPluginContextFromCtx(ctx context.Context) *PluginContext

func NewPluginContextWithConnection

func NewPluginContextWithConnection(
	ctx context.Context,
	requester string,
	pluginConfig settings.Provider,
	globalConfig *config.GlobalConfig,
	connection *Connection,
) *PluginContext

Construct a new plugin context with a valid connection.

func PluginContextFromContext

func PluginContextFromContext(ctx context.Context) *PluginContext

func (*PluginContext) IsAuthenticated

func (c *PluginContext) IsAuthenticated() bool

func (*PluginContext) SetConnection

func (c *PluginContext) SetConnection(authContext *Connection)

func (*PluginContext) SetResourceContext

func (c *PluginContext) SetResourceContext(resourceContext *ResourceContext)

func (*PluginContext) SetSettingsProvider

func (c *PluginContext) SetSettingsProvider(provider settings.Provider)

type PluginType

type PluginType int
const (
	ExecutorPlugin PluginType = iota
	FilesystemPlugin
	LogPlugin
	MetricPlugin
	ReporterPlugin
	ResourcePlugin
	SettingsPlugin // Special plugin capabity that allow for settings to be defined
	NetworkerPlugin
)

func (PluginType) MarshalText

func (pt PluginType) MarshalText() ([]byte, error)

func (PluginType) String

func (pt PluginType) String() string

type RequestOptions

type RequestOptions struct {
	// The timeout for the request
	Timeout time.Duration `json:"timeout"`

	// The maximum number of retries for the request, if set
	MaxRetries int `json:"max_retries"`

	// The backoff interval for the request
	BackoffInterval time.Duration `json:"backoff_interval"`
}

RequestOptions are the options that were set for the request.

func NewDefaultRequestOptions

func NewDefaultRequestOptions() *RequestOptions

type ResourceContext

type ResourceContext struct {
	// Key identifies the resource type being requested
	Key string `json:"key"`
}

ResourceContext holds the context of the resource that the request is for, if the request is for a resource.

type VisualComponentList

type VisualComponentList struct {
	Resource []VisualResourceComponent `json:"resource"`
}

VisualComponentList is a list of visual components that can be used to visualize resources in the IDE.

type VisualResourceComponent

type VisualResourceComponent struct {
	ID        string   `json:"id"`
	Plugin    string   `json:"plugin"`
	Type      string   `json:"type"`
	Resources []string `json:"resources"`
}

VisualResourceComponent is a component that can be used to visualize a resource in one of the injectable areas in the IDE.

Jump to

Keyboard shortcuts

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