Documentation
¶
Index ¶
- func Handle(mux *http.ServeMux, prefix string, handler Handler)
- func HandleAnnotations(mux *http.ServeMux, prefix string, handler AnnotationsHandler)
- func HandleQuery(mux *http.ServeMux, prefix string, handler QueryHandler)
- func HandleSearch(mux *http.ServeMux, prefix string, handler SearchHandler)
- func NewAnnotationsHandler(handler AnnotationsHandler) http.Handler
- func NewHandler(prefix string, handler Handler) http.Handler
- func NewQueryHandler(handler QueryHandler) http.Handler
- func NewSearchHandler(handler SearchHandler) http.Handler
- type Annotation
- type AnnotationsHandler
- type AnnotationsHandlerFunc
- type AnnotationsRequest
- type AnnotationsResponse
- type Column
- type ColumnType
- type Handler
- type QueryHandler
- type QueryHandlerFunc
- type QueryRequest
- type QueryResponse
- type SearchHandler
- type SearchHandlerFunc
- type SearchRequest
- type SearchResponse
- type TableWriter
- type Target
- type TargetType
- type TimeserieWriter
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Handle ¶
Handle installs a handler implementing the simple-json-datasource API on mux.
The function adds three routes to mux, for /annotations, /query, and /search.
func HandleAnnotations ¶
func HandleAnnotations(mux *http.ServeMux, prefix string, handler AnnotationsHandler)
HandleAnnotations installs a handler on /annotations.
func HandleQuery ¶
func HandleQuery(mux *http.ServeMux, prefix string, handler QueryHandler)
HandleQuery installs a handler on /query.
func HandleSearch ¶
func HandleSearch(mux *http.ServeMux, prefix string, handler SearchHandler)
HandleSearch installs a handler on /search.
func NewAnnotationsHandler ¶
func NewAnnotationsHandler(handler AnnotationsHandler) http.Handler
NewAnnotationsHandler returns a new http.Handler which delegates /annotations API calls to the given annotations handler.
func NewHandler ¶
NewHandler returns a new http.Handler that implements the simple-json-datasource API.
func NewQueryHandler ¶
func NewQueryHandler(handler QueryHandler) http.Handler
NewQueryHandler returns a new http.Handler which delegates /query API calls to the given query handler.
func NewSearchHandler ¶
func NewSearchHandler(handler SearchHandler) http.Handler
NewSearchHandler returns a new http.Handler which delegates /search API calls to the given search handler.
Types ¶
type Annotation ¶
type Annotation struct {
Time time.Time
Title string
Text string
Enabled bool
ShowLine bool
Tags []string
}
Annotation represents a single Grafana annotation.
type AnnotationsHandler ¶
type AnnotationsHandler interface {
// ServeAnnotations
ServeAnnotations(ctx context.Context, res AnnotationsResponse, req *AnnotationsRequest) error
}
AnnotationsHandler is the handler for the /annotations endpoint in the simple-json-datasource API.
type AnnotationsHandlerFunc ¶
type AnnotationsHandlerFunc func(context.Context, AnnotationsResponse, *AnnotationsRequest) error
AnnotationsHandlerFunc makes it possible to use regular function types as annotations handlers.
func (AnnotationsHandlerFunc) ServeAnnotations ¶
func (f AnnotationsHandlerFunc) ServeAnnotations(ctx context.Context, res AnnotationsResponse, req *AnnotationsRequest) error
ServeAnnotations calls f, satisfies the AnnotationsHandler interface.
type AnnotationsRequest ¶
type AnnotationsRequest struct {
From time.Time
To time.Time
Name string
Datasource string
IconColor string
Query string
Enable bool
}
AnnotationsRequest represents a request received on the /annotations endpoint.
Note: It's not really clear if this request is intended to add a new annotation into the data source, neither how the name and datasource fields are supposed to be used. It seems to work to treat it as a read-only request for annotations on the given time range and query.
type AnnotationsResponse ¶
type AnnotationsResponse interface {
// WriteAnnotation writes an annotation to the response. The method may be
// called multiple times.
WriteAnnotation(Annotation)
}
AnnotationsResponse is an interface used to an annotations request.
type Column ¶
type Column struct {
Text string `json:"text"`
Type ColumnType `json:"type,omitempty"`
Sort bool `json:"sort,omitempty"`
Desc bool `json:"desc,omitempty"`
}
Column is a data structure representing a table column.
func AscCol ¶
func AscCol(text string, colType ColumnType) Column
AscCol constructs a ne Column value from a text a column type, which is configured as a sorted column in ascending order.
func Col ¶
func Col(text string, colType ColumnType) Column
Col constructs a new Column value from a text and column type.
func DescCol ¶
func DescCol(text string, colType ColumnType) Column
DescCol constructs a ne Column value from a text a column type, which is configured as a sorted column in descending order.
type ColumnType ¶
type ColumnType string
ColumnType is an enumeration of the various column types supported by Grafana.
const ( Untyped ColumnType = "" String ColumnType = "string" Time ColumnType = "time" Number ColumnType = "number" )
type Handler ¶
type Handler interface {
AnnotationsHandler
QueryHandler
SearchHandler
}
Handler is an interface that must be implemented by types that intend to act as a grafana data source using the simple-json-datasource plugin.
See https://github.com/grafana/simple-json-datasource for more details about the implementation.
type QueryHandler ¶
type QueryHandler interface {
// ServeQuery is expected to reply with a list of data points for the given
// "target" and time range (or a set of rows for table requests).
//
// Note: my understanding is that "target" is some kind of identifier that
// describes some data set in the source (like a SQL query for example), but
// it's treated as an opaque blob of data by Grafana itself.
ServeQuery(ctx context.Context, res QueryResponse, req *QueryRequest) error
}
QueryHandler is the handler for the /query endpoint in the simple-json-datasource API.
type QueryHandlerFunc ¶
type QueryHandlerFunc func(context.Context, QueryResponse, *QueryRequest) error
QueryHandlerFunc makes it possible to use regular function types as query handlers.
func (QueryHandlerFunc) ServeQuery ¶
func (f QueryHandlerFunc) ServeQuery(ctx context.Context, res QueryResponse, req *QueryRequest) error
ServeQuery calls f, satisfies the QueryHandler interface.
type QueryRequest ¶
type QueryRequest struct {
From time.Time
To time.Time
Interval time.Duration
Targets []Target
MaxDataPoints int
}
QueryRequest represents a request received on the /query endpoint.
type QueryResponse ¶
type QueryResponse interface {
// Timeserie returns a TimeserieWriter which can be used to output the
// datapoint in response to a timeserie request.
Timeserie(target string) TimeserieWriter
// Table returns a TableWriter which can be used to output the rows in
// response to a table request.
Table(columns ...Column) TableWriter
}
QueryResponse is an interface used to respond to a search request.
type SearchHandler ¶
type SearchHandler interface {
// ServeSearch is expected to implement the search functionality of a
// Grafana data source.
//
// Note: It's not really clear how search is implemented, I think the
// "target" field in the request is some kind of prefix or keyword to
// use to return a list of potential matches that can be used in a /query
// request.
ServeSearch(ctx context.Context, res SearchResponse, req *SearchRequest) error
}
SearchHandler is the handler for the /search endpoint in the simple-json-datasource API.
type SearchHandlerFunc ¶
type SearchHandlerFunc func(context.Context, SearchResponse, *SearchRequest) error
SearchHandlerFunc makes it possible to use regular function types as search handlers.
func (SearchHandlerFunc) ServeSearch ¶
func (f SearchHandlerFunc) ServeSearch(ctx context.Context, res SearchResponse, req *SearchRequest) error
ServeSearch calls f, satisfies the SearchHandler interface.
type SearchRequest ¶
type SearchRequest struct {
Target string
}
SearhRequest represents a request received on the /search endpoint.
type SearchResponse ¶
type SearchResponse interface {
// WriteTarget writes target in the response, the method may be called
// multiple times.
WriteTarget(target string)
// WriteTargetValue writes the pair of target and value in the response,
// the method may be called multiple times.
WriteTargetValue(target string, value interface{})
}
SearchResponse is an interface used to respond to a search request.
type TableWriter ¶
type TableWriter interface {
WriteRow(values ...interface{})
}
TableWriter is an interface used to write timeserie data in response to a query.
type Target ¶
type Target struct {
Query string `json:"target"`
RefID string `json:"refId"`
Type TargetType `json:"type"`
}
Target is a data structure representing the target of a query.
type TargetType ¶
type TargetType string
TargetType is an enumeration of the various target types supported by Grafana.
const ( Timeserie TargetType = "timeserie" Table TargetType = "table" )
Source Files
¶
- annotations.go
- handler.go
- query.go
- search.go