github.com/argoproj/argo-events@v1.9.1/eventsources/cmd/start.go (about)

     1  package cmd
     2  
     3  import (
     4  	"encoding/base64"
     5  	"encoding/json"
     6  	"fmt"
     7  	"os"
     8  
     9  	"go.uber.org/zap"
    10  	"sigs.k8s.io/controller-runtime/pkg/manager/signals"
    11  
    12  	argoevents "github.com/argoproj/argo-events"
    13  	"github.com/argoproj/argo-events/common"
    14  	"github.com/argoproj/argo-events/common/logging"
    15  	"github.com/argoproj/argo-events/eventsources"
    16  	"github.com/argoproj/argo-events/metrics"
    17  	eventbusv1alpha1 "github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1"
    18  	v1alpha1 "github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1"
    19  )
    20  
    21  func Start() {
    22  	logger := logging.NewArgoEventsLogger().Named("eventsource")
    23  	encodedEventSourceSpec, defined := os.LookupEnv(common.EnvVarEventSourceObject)
    24  	if !defined {
    25  		logger.Fatalf("required environment variable '%s' not defined", common.EnvVarEventSourceObject)
    26  	}
    27  	eventSourceSpec, err := base64.StdEncoding.DecodeString(encodedEventSourceSpec)
    28  	if err != nil {
    29  		logger.Fatalw("failed to decode eventsource string", zap.Error(err))
    30  	}
    31  	eventSource := &v1alpha1.EventSource{}
    32  	if err = json.Unmarshal(eventSourceSpec, eventSource); err != nil {
    33  		logger.Fatalw("failed to unmarshal eventsource object", zap.Error(err))
    34  	}
    35  
    36  	busConfig := &eventbusv1alpha1.BusConfig{}
    37  	encodedBusConfigSpec := os.Getenv(common.EnvVarEventBusConfig)
    38  	if len(encodedBusConfigSpec) > 0 {
    39  		busConfigSpec, err := base64.StdEncoding.DecodeString(encodedBusConfigSpec)
    40  		if err != nil {
    41  			logger.Fatalw("failed to decode bus config string", zap.Error(err))
    42  		}
    43  		if err = json.Unmarshal(busConfigSpec, busConfig); err != nil {
    44  			logger.Fatalw("failed to unmarshal bus config object", zap.Error(err))
    45  		}
    46  	}
    47  
    48  	ebSubject, defined := os.LookupEnv(common.EnvVarEventBusSubject)
    49  	if !defined {
    50  		logger.Fatalf("required environment variable '%s' not defined", common.EnvVarEventBusSubject)
    51  	}
    52  
    53  	hostname, defined := os.LookupEnv("POD_NAME")
    54  	if !defined {
    55  		logger.Fatal("required environment variable 'POD_NAME' not defined")
    56  	}
    57  
    58  	logger = logger.With(logging.LabelEventSourceName, eventSource.Name)
    59  	ctx := logging.WithLogger(signals.SetupSignalHandler(), logger)
    60  	m := metrics.NewMetrics(eventSource.Namespace)
    61  	go m.Run(ctx, fmt.Sprintf(":%d", common.EventSourceMetricsPort))
    62  
    63  	logger.Infow("starting eventsource server", "version", argoevents.GetVersion())
    64  	adaptor := eventsources.NewEventSourceAdaptor(eventSource, busConfig, ebSubject, hostname, m)
    65  
    66  	if err := adaptor.Start(ctx); err != nil {
    67  		logger.Fatalw("failed to start eventsource server", zap.Error(err))
    68  	}
    69  }