Files
atlantis/server/events/instrumented_pull_closed_executor.go
Fabiano Soares Honorato 6a7f79e749 Metrics initialization (#2767)
* Add builder metrics initialization

* Add pull_closed metrics initialization

* Add builder metrics initialization

* use InitCounter from metrics package to initialize prometheus counters
2022-12-16 22:22:06 -06:00

59 lines
1.4 KiB
Go

package events
import (
"strconv"
"github.com/runatlantis/atlantis/server/events/models"
"github.com/runatlantis/atlantis/server/logging"
"github.com/runatlantis/atlantis/server/metrics"
"github.com/uber-go/tally"
)
type InstrumentedPullClosedExecutor struct {
scope tally.Scope
log logging.SimpleLogging
cleaner PullCleaner
}
func NewInstrumentedPullClosedExecutor(
scope tally.Scope, log logging.SimpleLogging, cleaner PullCleaner,
) PullCleaner {
scope = scope.SubScope("pullclosed_cleanup")
for _, m := range []string{metrics.ExecutionSuccessMetric, metrics.ExecutionErrorMetric} {
metrics.InitCounter(scope, m)
}
return &InstrumentedPullClosedExecutor{
scope: scope,
log: log,
cleaner: cleaner,
}
}
func (e *InstrumentedPullClosedExecutor) CleanUpPull(repo models.Repo, pull models.PullRequest) error {
log := e.log.With(
"repository", repo.FullName,
"pull-num", strconv.Itoa(pull.Num),
)
executionSuccess := e.scope.Counter(metrics.ExecutionSuccessMetric)
executionError := e.scope.Counter(metrics.ExecutionErrorMetric)
executionTime := e.scope.Timer(metrics.ExecutionTimeMetric).Start()
defer executionTime.Stop()
log.Info("Initiating cleanup of pull data.")
err := e.cleaner.CleanUpPull(repo, pull)
if err != nil {
executionError.Inc(1)
log.Err("error during cleanup of pull data", err)
return err
}
executionSuccess.Inc(1)
return nil
}