receiver/splunkenterprisereceiver/factory.go (63 lines of code) (raw):
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package splunkenterprisereceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/splunkenterprisereceiver"
import (
"context"
"time"
"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/config/confighttp"
"go.opentelemetry.io/collector/config/configopaque"
"go.opentelemetry.io/collector/consumer"
"go.opentelemetry.io/collector/receiver"
"go.opentelemetry.io/collector/scraper"
"go.opentelemetry.io/collector/scraper/scraperhelper"
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/splunkenterprisereceiver/internal/metadata"
)
const (
defaultInterval = 10 * time.Minute
defaultMaxSearchWaitTime = 60 * time.Second
)
func createDefaultConfig() component.Config {
// Default HttpClient settings
httpCfg := confighttp.NewDefaultClientConfig()
httpCfg.Headers = map[string]configopaque.String{
"Content-Type": "application/x-www-form-urlencoded",
}
httpCfg.Timeout = defaultMaxSearchWaitTime
// Default ScraperController settings
scfg := scraperhelper.NewDefaultControllerConfig()
scfg.CollectionInterval = defaultInterval
scfg.Timeout = defaultMaxSearchWaitTime
return &Config{
IdxEndpoint: httpCfg,
SHEndpoint: httpCfg,
CMEndpoint: httpCfg,
ControllerConfig: scfg,
MetricsBuilderConfig: metadata.DefaultMetricsBuilderConfig(),
VersionInfo: false,
}
}
func NewFactory() receiver.Factory {
return receiver.NewFactory(
metadata.Type,
createDefaultConfig,
receiver.WithMetrics(createMetricsReceiver, metadata.MetricsStability),
)
}
func createMetricsReceiver(
_ context.Context,
params receiver.Settings,
baseCfg component.Config,
consumer consumer.Metrics,
) (receiver.Metrics, error) {
cfg := baseCfg.(*Config)
splunkScraper := newSplunkMetricsScraper(params, cfg)
s, err := scraper.NewMetrics(
splunkScraper.scrape,
scraper.WithStart(splunkScraper.start))
if err != nil {
return nil, err
}
return scraperhelper.NewMetricsController(
&cfg.ControllerConfig,
params,
consumer,
scraperhelper.AddScraper(metadata.Type, s),
)
}