influxdb/source/query.go

40 lines
1.4 KiB
Go

package source
import (
"fmt"
platform "github.com/influxdata/influxdb/v2"
"github.com/influxdata/influxdb/v2/http"
"github.com/influxdata/influxdb/v2/http/influxdb"
"github.com/influxdata/influxdb/v2/query"
)
// NewQueryService creates a bucket service from a source.
func NewQueryService(s *platform.Source) (query.ProxyQueryService, error) {
switch s.Type {
case platform.SelfSourceType:
// TODO(fntlnz): this is supposed to call a query service directly locally,
// we are letting it err for now since we have some refactoring to do on
// how services are instantiated
return nil, fmt.Errorf("self source type not implemented")
case platform.V2SourceType:
// This is an influxd that calls another influxd, the query path is /v1/query - in future /v2/query
// it basically is the same as Self but on an external influxd.
return &http.SourceProxyQueryService{
InsecureSkipVerify: s.InsecureSkipVerify,
Addr: s.URL,
SourceFields: s.SourceFields,
}, nil
case platform.V1SourceType:
// This is an InfluxDB 1.7 source, which supports both InfluxQL and Flux queries
return &influxdb.SourceProxyQueryService{
InsecureSkipVerify: s.InsecureSkipVerify,
URL: s.URL,
SourceFields: s.SourceFields,
V1SourceFields: s.V1SourceFields,
OrganizationID: s.OrganizationID,
}, nil
}
return nil, fmt.Errorf("unsupported source type %s", s.Type)
}