Documentation ¶
Index ¶
- Constants
- Variables
- func NewEventBroadcaster(erConfig *Config) (record.EventBroadcaster, func(), error)
- func ProvideDataBuilder(config *Config, logger logr.Logger) (common.DataBuilder, error)
- func ProvideUploader(us u.Uploaders) (u.Uploader, error)
- func ProvideUploaders(ctx context.Context, client client.Client, log logr.Logger, ...) (u.Uploaders, error)
- func ProvideWriter(config *Config, MktConfig *marketplacev1alpha1.MarketplaceConfig, ...) (common.ReportWriter, error)
- func Tar(src string, writers ...io.Writer) error
- func TargzFolder(srcFolder, destFileName string) error
- type Config
- type MarketplaceReporter
- func (r *MarketplaceReporter) CollectMetrics(ctxIn context.Context) (map[string]common.SchemaMetricBuilder, []error, []error, error)
- func (r *MarketplaceReporter) Process(ctx context.Context, inPromModels <-chan meterDefPromModel, ...)
- func (r *MarketplaceReporter) ProduceMeterDefinitions(meterDefinitions MeterDefinitionReferences, ...) error
- func (r *MarketplaceReporter) Query(ctx context.Context, startTime, endTime time.Time, ...)
- func (r *MarketplaceReporter) WriteReport(reportID uuid.UUID, metrics map[string]common.SchemaMetricBuilder) ([]string, error)
- type MeterDefKey
- type MeterDefinitionReferences
- type Name
- type Namespace
- type PrometheusService
- type ReconcileTask
- func (r *ReconcileTask) CanRunGenericUpload(ctx context.Context) (bool, ReportSkipReason)
- func (r *ReconcileTask) CanRunReportTask(ctx context.Context, report marketplacev1alpha1.MeterReport) bool
- func (r *ReconcileTask) CanRunUploadReportTask(ctx context.Context, report marketplacev1alpha1.MeterReport) (ReportSkipReason, bool)
- func (r *ReconcileTask) ReportTask(ctx context.Context, report *marketplacev1alpha1.MeterReport) error
- func (r *ReconcileTask) Run(ctx context.Context) error
- type ReportName
- type ReportOutputDir
- type ReportSkipReason
- type Task
- type TaskRun
- type UploadRun
- type UploadTask
Constants ¶
View Source
const ( ErrNoMeterDefinitionsFound = errors.Sentinel("no meterDefinitions found") WarningDuplicateData = errors.Sentinel("duplicate data") WarningPrintTemplate = errors.Sentinel("template error") )
View Source
const ( MktplProductionURL = "https://marketplace.redhat.com" MktplStageURL = "https://sandbox.marketplace.redhat.com" )
Variables ¶
View Source
var ReporterSet = wire.NewSet( NewMarketplaceReporter, uploaders.NewRedHatInsightsUploader, )
Functions ¶
func NewEventBroadcaster ¶
func NewEventBroadcaster(erConfig *Config) (record.EventBroadcaster, func(), error)
func ProvideDataBuilder ¶
func ProvideUploaders ¶
func ProvideWriter ¶
func ProvideWriter( config *Config, MktConfig *marketplacev1alpha1.MarketplaceConfig, logger logr.Logger, ) (common.ReportWriter, error)
func Tar ¶
Tar takes a source and variable writers and walks 'source' writing each file found to the tar writer; the purpose for accepting multiple writers is to allow for multiple outputs (for example a file, or md5 hash)
func TargzFolder ¶
Types ¶
type Config ¶
type Config struct { OutputDirectory string MetricsPerFile *int MaxRoutines *int Retry *int CaFile string TokenFile string DataServiceTokenFile string DataServiceCertFile string DeployedNamespace string Local bool Upload bool IsDisconnected bool PrometheusService string PrometheusNamespace string PrometheusPort string uploaders.UploaderTargets ReporterSchema string CipherSuites []uint16 MinVersion uint16 K8sRestConfig *rest.Config }
Top level config
func (*Config) SetDefaults ¶
type MarketplaceReporter ¶
type MarketplaceReporter struct { PrometheusAPI MktConfig *marketplacev1alpha1.MarketplaceConfig *Config // contains filtered or unexported fields }
Goals of the reporter: Get current meters to query
Build a report for hourly since last reprot ¶
Query all the meters ¶
Break up reports into manageable chunks ¶
Upload to insights ¶
Update the CR status for each report and queue
func NewMarketplaceReporter ¶
func NewMarketplaceReporter( config *Config, report *marketplacev1alpha1.MeterReport, MktConfig *marketplacev1alpha1.MarketplaceConfig, api *PrometheusAPI, meterDefinitions MeterDefinitionReferences, schemaDataBuilder common.DataBuilder, reportWriter common.ReportWriter, ) (*MarketplaceReporter, error)
func NewReporter ¶
func NewReporter(ctx context.Context, task *Task) (*MarketplaceReporter, error)
func (*MarketplaceReporter) CollectMetrics ¶
func (r *MarketplaceReporter) CollectMetrics(ctxIn context.Context) (map[string]common.SchemaMetricBuilder, []error, []error, error)
func (*MarketplaceReporter) Process ¶
func (r *MarketplaceReporter) Process( ctx context.Context, inPromModels <-chan meterDefPromModel, results map[string]common.SchemaMetricBuilder, mutex sync.Locker, done chan bool, errorsch chan error, )
func (*MarketplaceReporter) ProduceMeterDefinitions ¶
func (r *MarketplaceReporter) ProduceMeterDefinitions( meterDefinitions MeterDefinitionReferences, meterDefsChan chan *meterDefPromQuery, ) error
func (*MarketplaceReporter) WriteReport ¶
func (r *MarketplaceReporter) WriteReport( reportID uuid.UUID, metrics map[string]common.SchemaMetricBuilder, ) ([]string, error)
type MeterDefKey ¶
type MeterDefKey struct {
Name, Namespace string
}
type MeterDefinitionReferences ¶
type MeterDefinitionReferences = []marketplacev1beta1.MeterDefinitionReference
type Name ¶
type Name types.NamespacedName
type PrometheusService ¶
type ReconcileTask ¶
type ReconcileTask struct { K8SClient client.Client Config *Config K8SScheme *runtime.Scheme Namespace NewTask func(ctx context.Context, reportName ReportName, taskConfig *Config) (TaskRun, error) NewUpload func(ctx context.Context, config *Config, namespace Namespace) (UploadRun, error) // contains filtered or unexported fields }
func NewReconcileTask ¶
func NewReconcileTask(ctx context.Context, config *Config, broadcaster record.EventBroadcaster, namespace Namespace, newReportTask func(ctx context.Context, reportName ReportName, taskConfig *Config) (TaskRun, error), newUploadTask func(ctx context.Context, config *Config, namespace Namespace) (UploadRun, error)) (*ReconcileTask, error)
func (*ReconcileTask) CanRunGenericUpload ¶
func (r *ReconcileTask) CanRunGenericUpload(ctx context.Context) (bool, ReportSkipReason)
func (*ReconcileTask) CanRunReportTask ¶
func (r *ReconcileTask) CanRunReportTask(ctx context.Context, report marketplacev1alpha1.MeterReport) bool
func (*ReconcileTask) CanRunUploadReportTask ¶
func (r *ReconcileTask) CanRunUploadReportTask(ctx context.Context, report marketplacev1alpha1.MeterReport) (ReportSkipReason, bool)
IsDisconnected defaults to false
func (*ReconcileTask) ReportTask ¶
func (r *ReconcileTask) ReportTask(ctx context.Context, report *marketplacev1alpha1.MeterReport) error
type ReportName ¶
type ReportName types.NamespacedName
type ReportOutputDir ¶
type ReportOutputDir string
type ReportSkipReason ¶
type ReportSkipReason string
const ( SkipNotReady ReportSkipReason = "NotReady" SkipDisconnected ReportSkipReason = "Disconn" SkipNoData ReportSkipReason = "NoData" SkipNoFileID ReportSkipReason = "NoFileID" SkipDone ReportSkipReason = "Done" SkipMaxAttempts ReportSkipReason = "OutOfRetry" SkipComplete ReportSkipReason = "Complete" SkipEmpty ReportSkipReason = "" )
type Task ¶
type Task struct { ReportName ReportName K8SClient rhmclient.SimpleClient Config *Config uploaders.Uploader }
type UploadRun ¶
type UploadRun interface { RunGeneric(ctx context.Context) error RunReport(ctx context.Context, report *marketplacev1alpha1.MeterReport) error }
type UploadTask ¶
type UploadTask struct {
// contains filtered or unexported fields
}
Task to upload the reports from dataservice to redhat-insights
func (*UploadTask) RunGeneric ¶
func (r *UploadTask) RunGeneric(ctx context.Context) error
Run checks for just files in DataService and sends them if it can.
func (*UploadTask) RunReport ¶
func (r *UploadTask) RunReport(ctx context.Context, report *marketplacev1alpha1.MeterReport) error
RunReport uses status fields on the Report to get identifiers for the file
Source Files ¶
Click to show internal directories.
Click to hide internal directories.