github.com/argoproj/argo-events@v1.9.1/sensors/triggers/log/log.go (about)

     1  package log
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"time"
     7  
     8  	"go.uber.org/zap"
     9  
    10  	"github.com/argoproj/argo-events/common/logging"
    11  	apicommon "github.com/argoproj/argo-events/pkg/apis/common"
    12  	"github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1"
    13  )
    14  
    15  type LogTrigger struct {
    16  	Sensor      *v1alpha1.Sensor
    17  	Trigger     *v1alpha1.Trigger
    18  	Logger      *zap.SugaredLogger
    19  	LastLogTime time.Time
    20  }
    21  
    22  func NewLogTrigger(sensor *v1alpha1.Sensor, trigger *v1alpha1.Trigger, logger *zap.SugaredLogger) (*LogTrigger, error) {
    23  	return &LogTrigger{Sensor: sensor, Trigger: trigger, Logger: logger.With(logging.LabelTriggerType, apicommon.LogTrigger)}, nil
    24  }
    25  
    26  // GetTriggerType returns the type of the trigger
    27  func (t *LogTrigger) GetTriggerType() apicommon.TriggerType {
    28  	return apicommon.LogTrigger
    29  }
    30  
    31  func (t *LogTrigger) FetchResource(ctx context.Context) (interface{}, error) {
    32  	return t.Trigger.Template.Log, nil
    33  }
    34  
    35  func (t *LogTrigger) ApplyResourceParameters(_ map[string]*v1alpha1.Event, resource interface{}) (interface{}, error) {
    36  	return resource, nil
    37  }
    38  
    39  func (t *LogTrigger) Execute(ctx context.Context, events map[string]*v1alpha1.Event, resource interface{}) (interface{}, error) {
    40  	log, ok := resource.(*v1alpha1.LogTrigger)
    41  	if !ok {
    42  		return nil, fmt.Errorf("failed to interpret the fetched trigger resource")
    43  	}
    44  	if t.shouldLog(log) {
    45  		for dependencyName, event := range events {
    46  			t.Logger.Infow(
    47  				event.DataString(),
    48  				zap.String("dependencyName", dependencyName),
    49  				zap.Any("eventContext", event.Context),
    50  			)
    51  		}
    52  		t.LastLogTime = time.Now()
    53  	}
    54  	return nil, nil
    55  }
    56  
    57  func (t *LogTrigger) shouldLog(log *v1alpha1.LogTrigger) bool {
    58  	return time.Now().After(t.LastLogTime.Add(log.GetInterval()))
    59  }
    60  
    61  func (t *LogTrigger) ApplyPolicy(context.Context, interface{}) error {
    62  	return nil
    63  }