plugins

package
v0.0.0-...-34898ab Latest Latest
Warning

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

Go to latest
Published: Jan 30, 2024 License: Apache-2.0 Imports: 40 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	PluginTypeApp       = "app"
	PluginTypeDashboard = "dashboard"
)
View Source
var (
	DataSources  map[string]*DataSourcePlugin
	Panels       map[string]*PanelPlugin
	StaticRoutes []*PluginStaticRoute
	Apps         map[string]*AppPlugin
	Plugins      map[string]*PluginBase
	PluginTypes  map[string]interface{}
	Renderer     *RendererPlugin
)

Functions

func ComposePluginStartCommand

func ComposePluginStartCommand(executable string) string

func GetPluginMarkdown

func GetPluginMarkdown(pluginId string, name string) ([]byte, error)

func GetPluginSettings

func GetPluginSettings(orgId int64) (map[string]*models.PluginSettingInfoDTO, error)

func ImportDashboard

func ImportDashboard(cmd *ImportDashboardCommand) error

func IsAppInstalled

func IsAppInstalled(pluginID string) bool

IsAppInstalled checks if an app plugin with provided plugin ID is installed.

Types

type AppPlugin

type AppPlugin struct {
	FrontendPluginBase
	Routes      []*AppPluginRoute `json:"routes"`
	AutoEnabled bool              `json:"autoEnabled"`

	FoundChildPlugins []*PluginInclude `json:"-"`
	Pinned            bool             `json:"-"`

	Executable string `json:"executable,omitempty"`
}

func (*AppPlugin) Load

func (app *AppPlugin) Load(decoder *json.Decoder, base *PluginBase, backendPluginManager backendplugin.Manager) error

type AppPluginRoute

type AppPluginRoute struct {
	Path         string                   `json:"path"`
	Method       string                   `json:"method"`
	ReqRole      models.RoleType          `json:"reqRole"`
	URL          string                   `json:"url"`
	URLParams    []AppPluginRouteURLParam `json:"urlParams"`
	Headers      []AppPluginRouteHeader   `json:"headers"`
	TokenAuth    *JwtTokenAuth            `json:"tokenAuth"`
	JwtTokenAuth *JwtTokenAuth            `json:"jwtTokenAuth"`
}

AppPluginRoute describes a plugin route that is defined in the plugin.json file for a plugin.

type AppPluginRouteHeader

type AppPluginRouteHeader struct {
	Name    string `json:"name"`
	Content string `json:"content"`
}

AppPluginRouteHeader describes an HTTP header that is forwarded with the proxied request for a plugin route

type AppPluginRouteURLParam

type AppPluginRouteURLParam struct {
	Name    string `json:"name"`
	Content string `json:"content"`
}

AppPluginRouteURLParam describes query string parameters for a url in a plugin route

type DashTemplateEvaluator

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

func (*DashTemplateEvaluator) Eval

type DashboardInputMissingError

type DashboardInputMissingError struct {
	VariableName string
}

func (DashboardInputMissingError) Error

type DataSourcePlugin

type DataSourcePlugin struct {
	FrontendPluginBase
	Annotations  bool              `json:"annotations"`
	Metrics      bool              `json:"metrics"`
	Alerting     bool              `json:"alerting"`
	Explore      bool              `json:"explore"`
	Table        bool              `json:"tables"`
	Logs         bool              `json:"logs"`
	Tracing      bool              `json:"tracing"`
	QueryOptions map[string]bool   `json:"queryOptions,omitempty"`
	BuiltIn      bool              `json:"builtIn,omitempty"`
	Mixed        bool              `json:"mixed,omitempty"`
	Routes       []*AppPluginRoute `json:"routes"`
	Streaming    bool              `json:"streaming"`

	Backend    bool   `json:"backend,omitempty"`
	Executable string `json:"executable,omitempty"`
	SDK        bool   `json:"sdk,omitempty"`
}

DataSourcePlugin contains all metadata about a datasource plugin

func (*DataSourcePlugin) Load

func (p *DataSourcePlugin) Load(decoder *json.Decoder, base *PluginBase, backendPluginManager backendplugin.Manager) error

type EnabledPlugins

type EnabledPlugins struct {
	Panels      []*PanelPlugin
	DataSources map[string]*DataSourcePlugin
	Apps        []*AppPlugin
}

func GetEnabledPlugins

func GetEnabledPlugins(orgId int64) (*EnabledPlugins, error)

func NewEnabledPlugins

func NewEnabledPlugins() EnabledPlugins

type ErrorCode

type ErrorCode string

type FrontendPluginBase

type FrontendPluginBase struct {
	PluginBase
}

type GithubLatest

type GithubLatest struct {
	Stable  string `json:"stable"`
	Testing string `json:"testing"`
}

type GrafargNetPlugin

type GrafargNetPlugin struct {
	Slug    string `json:"slug"`
	Version string `json:"version"`
}

type ImportDashboardCommand

type ImportDashboardCommand struct {
	Dashboard *simplejson.Json
	Path      string
	Inputs    []ImportDashboardInput
	Overwrite bool
	FolderId  int64

	OrgId    int64
	User     *models.SignedInUser
	PluginId string
	Result   *PluginDashboardInfoDTO
}

type ImportDashboardInput

type ImportDashboardInput struct {
	Type     string `json:"type"`
	PluginId string `json:"pluginId"`
	Name     string `json:"name"`
	Value    string `json:"value"`
}

type JwtTokenAuth

type JwtTokenAuth struct {
	Url    string            `json:"url"`
	Scopes []string          `json:"scopes"`
	Params map[string]string `json:"params"`
}

JwtTokenAuth struct is both for normal Token Auth and JWT Token Auth with an uploaded JWT file.

type PanelPlugin

type PanelPlugin struct {
	FrontendPluginBase
	SkipDataQuery bool `json:"skipDataQuery"`
}

func (*PanelPlugin) Load

func (p *PanelPlugin) Load(decoder *json.Decoder, base *PluginBase, backendPluginManager backendplugin.Manager) error

type PluginBase

type PluginBase struct {
	Type         string                `json:"type"`
	Name         string                `json:"name"`
	Id           string                `json:"id"`
	Info         PluginInfo            `json:"info"`
	Dependencies PluginDependencies    `json:"dependencies"`
	Includes     []*PluginInclude      `json:"includes"`
	Module       string                `json:"module"`
	BaseUrl      string                `json:"baseUrl"`
	Category     string                `json:"category"`
	HideFromList bool                  `json:"hideFromList,omitempty"`
	Preload      bool                  `json:"preload"`
	State        PluginState           `json:"state,omitempty"`
	Signature    PluginSignatureStatus `json:"signature"`
	Backend      bool                  `json:"backend"`

	IncludedInAppId string              `json:"-"`
	PluginDir       string              `json:"-"`
	DefaultNavUrl   string              `json:"-"`
	IsCorePlugin    bool                `json:"-"`
	Files           []string            `json:"-"`
	SignatureType   PluginSignatureType `json:"-"`
	SignatureOrg    string              `json:"-"`

	GrafargNetVersion   string `json:"-"`
	GrafargNetHasUpdate bool   `json:"-"`

	Root *PluginBase
}

PluginBase is the base plugin type.

type PluginBuildInfo

type PluginBuildInfo struct {
	Time   int64  `json:"time,omitempty"`
	Repo   string `json:"repo,omitempty"`
	Branch string `json:"branch,omitempty"`
	Hash   string `json:"hash,omitempty"`
}

type PluginDashboardInfoDTO

type PluginDashboardInfoDTO struct {
	PluginId         string `json:"pluginId"`
	Title            string `json:"title"`
	Imported         bool   `json:"imported"`
	ImportedUri      string `json:"importedUri"`
	ImportedUrl      string `json:"importedUrl"`
	Slug             string `json:"slug"`
	DashboardId      int64  `json:"dashboardId"`
	FolderId         int64  `json:"folderId"`
	ImportedRevision int64  `json:"importedRevision"`
	Revision         int64  `json:"revision"`
	Description      string `json:"description"`
	Path             string `json:"path"`
	Removed          bool   `json:"removed"`
}

func GetPluginDashboards

func GetPluginDashboards(orgId int64, pluginId string) ([]*PluginDashboardInfoDTO, error)

type PluginDependencies

type PluginDependencies struct {
	GrafargVersion string                 `json:"grafargVersion"`
	Plugins        []PluginDependencyItem `json:"plugins"`
}

type PluginDependencyItem

type PluginDependencyItem struct {
	Type    string `json:"type"`
	Id      string `json:"id"`
	Name    string `json:"name"`
	Version string `json:"version"`
}

type PluginError

type PluginError struct {
	ErrorCode `json:"errorCode"`
	PluginID  string `json:"pluginId,omitempty"`
}

type PluginInclude

type PluginInclude struct {
	Name       string          `json:"name"`
	Path       string          `json:"path"`
	Type       string          `json:"type"`
	Component  string          `json:"component"`
	Role       models.RoleType `json:"role"`
	AddToNav   bool            `json:"addToNav"`
	DefaultNav bool            `json:"defaultNav"`
	Slug       string          `json:"slug"`
	Icon       string          `json:"icon"`

	Id string `json:"-"`
}

type PluginInfo

type PluginInfo struct {
	Author      PluginInfoLink      `json:"author"`
	Description string              `json:"description"`
	Links       []PluginInfoLink    `json:"links"`
	Logos       PluginLogos         `json:"logos"`
	Build       PluginBuildInfo     `json:"build"`
	Screenshots []PluginScreenshots `json:"screenshots"`
	Version     string              `json:"version"`
	Updated     string              `json:"updated"`
}
type PluginInfoLink struct {
	Name string `json:"name"`
	Url  string `json:"url"`
}

type PluginLoader

type PluginLoader interface {
	// Load loads a plugin and registers it with the manager.
	Load(decoder *json.Decoder, base *PluginBase, backendPluginManager backendplugin.Manager) error
}

PluginLoader can load a plugin.

type PluginLogos

type PluginLogos struct {
	Small string `json:"small"`
	Large string `json:"large"`
}

type PluginManager

type PluginManager struct {
	BackendPluginManager backendplugin.Manager `inject:""`
	Cfg                  *setting.Cfg          `inject:""`

	// AllowUnsignedPluginsCondition changes the policy for allowing unsigned plugins. Signature validation only runs when plugins are starting
	// and running plugins will not be terminated if they violate the new policy.
	AllowUnsignedPluginsCondition unsignedPluginConditionFunc
	GrafargLatestVersion          string
	GrafargHasUpdate              bool
	// contains filtered or unexported fields
}

func (*PluginManager) GetDatasource

func (pm *PluginManager) GetDatasource(pluginID string) (*DataSourcePlugin, bool)

GetDatasource returns a datasource based on passed pluginID if it exists

This function fetches the datasource from the global variable DataSources in this package. Rather then refactor all dependencies on the global variable we can use this as an transition.

func (*PluginManager) Init

func (pm *PluginManager) Init() error

func (*PluginManager) Run

func (pm *PluginManager) Run(ctx context.Context) error

func (*PluginManager) ScanningErrors

func (pm *PluginManager) ScanningErrors() []PluginError

ScanningErrors returns plugin scanning errors encountered.

type PluginNotFoundError

type PluginNotFoundError struct {
	PluginID string
}

func (PluginNotFoundError) Error

func (e PluginNotFoundError) Error() string

type PluginScanner

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

func (*PluginScanner) IsBackendOnlyPlugin

func (*PluginScanner) IsBackendOnlyPlugin(pluginType string) bool

type PluginScreenshots

type PluginScreenshots struct {
	Path string `json:"path"`
	Name string `json:"name"`
}

type PluginSignatureState

type PluginSignatureState struct {
	Status     PluginSignatureStatus
	Type       PluginSignatureType
	SigningOrg string
}

type PluginSignatureStatus

type PluginSignatureStatus string

type PluginSignatureType

type PluginSignatureType string

type PluginState

type PluginState string
var (
	PluginStateAlpha PluginState = "alpha"
)

type PluginStaticRoute

type PluginStaticRoute struct {
	Directory string
	PluginId  string
}

type RendererPlugin

type RendererPlugin struct {
	FrontendPluginBase

	Executable   string `json:"executable,omitempty"`
	GrpcPluginV1 pluginModel.RendererPlugin
	GrpcPluginV2 pluginextensionv2.RendererPlugin
	// contains filtered or unexported fields
}

func (*RendererPlugin) Load

func (r *RendererPlugin) Load(decoder *json.Decoder, base *PluginBase, backendPluginManager backendplugin.Manager) error

func (*RendererPlugin) Start

func (r *RendererPlugin) Start(ctx context.Context) error

Directories

Path Synopsis
datasource

Jump to

Keyboard shortcuts

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