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 }