influxdb/http/legacy/backend.go

82 lines
2.0 KiB
Go

package legacy
import (
http2 "net/http"
"github.com/influxdata/influxdb/v2"
"github.com/influxdata/influxdb/v2/http/metric"
"github.com/influxdata/influxdb/v2/influxql"
"github.com/influxdata/influxdb/v2/kit/cli"
"github.com/influxdata/influxdb/v2/kit/platform/errors"
"github.com/influxdata/influxdb/v2/storage"
"github.com/prometheus/client_golang/prometheus"
"go.uber.org/zap"
)
// Handler is a collection of all the service handlers.
type Handler struct {
errors.HTTPErrorHandler
PointsWriterHandler *WriteHandler
PingHandler *PingHandler
InfluxQLHandler *InfluxqlHandler
}
type Backend struct {
errors.HTTPErrorHandler
Logger *zap.Logger
MaxBatchSizeBytes int64
WriteEventRecorder metric.EventRecorder
AuthorizationService influxdb.AuthorizationService
OrganizationService influxdb.OrganizationService
BucketService influxdb.BucketService
PointsWriter storage.PointsWriter
DBRPMappingService influxdb.DBRPMappingService
InfluxqldQueryService influxql.ProxyQueryService
}
// HandlerConfig provides configuration for the legacy handler.
type HandlerConfig struct {
DefaultRoutingKey string
}
func NewHandlerConfig() *HandlerConfig {
return &HandlerConfig{}
}
// Opts returns the CLI options for use with kit/cli.
// Currently set values on c are provided as the defaults.
func (c *HandlerConfig) Opts() []cli.Opt {
return []cli.Opt{
{
DestP: &c.DefaultRoutingKey,
Flag: "influxql-default-routing-key",
Default: "defaultQueue",
Desc: "Default routing key for publishing new query requests",
},
}
}
func (h *Handler) ServeHTTP(w http2.ResponseWriter, r *http2.Request) {
if r.URL.Path == "/write" {
h.PointsWriterHandler.ServeHTTP(w, r)
return
}
if r.URL.Path == "/ping" {
h.PingHandler.ServeHTTP(w, r)
return
}
if r.URL.Path == "/query" {
h.InfluxQLHandler.ServeHTTP(w, r)
return
}
w.WriteHeader(http2.StatusNotFound)
}
func (h *Handler) PrometheusCollectors() []prometheus.Collector {
return h.InfluxQLHandler.PrometheusCollectors()
}