func main() { quitChannel := make(chan struct{}, 0) defer glog.Flush() flag.Var(&argSources, "source", "source(s) to read events from") flag.Var(&argSinks, "sink", "external sink(s) that receive events") flag.Parse() setMaxProcs() glog.Infof(strings.Join(os.Args, " ")) glog.Infof("Eventer version %v", version.HeapsterVersion) if err := validateFlags(); err != nil { glog.Fatal(err) } // sources if len(argSources) != 1 { glog.Fatal("Wrong number of sources specified") } sourceFactory := sources.NewSourceFactory() sources, err := sourceFactory.BuildAll(argSources) if err != nil { glog.Fatalf("Failed to create sources: %v", err) } if len(sources) != 1 { glog.Fatal("Requires exactly 1 source") } // sinks sinksFactory := sinks.NewSinkFactory() sinkList := sinksFactory.BuildAll(argSinks) for _, sink := range sinkList { glog.Infof("Starting with %s sink", sink.Name()) } sinkManager, err := sinks.NewEventSinkManager(sinkList, sinks.DefaultSinkExportEventsTimeout, sinks.DefaultSinkStopTimeout) if err != nil { glog.Fatalf("Failed to create sink manager: %v", err) } // main manager manager, err := manager.NewManager(sources[0], sinkManager, *argFrequency) if err != nil { glog.Fatalf("Failed to create main manager: %v", err) } manager.Start() glog.Infof("Starting eventer") <-quitChannel }
func main() { quitChannel := make(chan struct{}, 0) flag.Var(&argSources, "source", "source(s) to read events from") flag.Var(&argSinks, "sink", "external sink(s) that receive events") flag.BoolVar(&argVersion, "version", false, "print version info and exit") flag.Parse() if argVersion { fmt.Println(version.VersionInfo()) os.Exit(0) } logs.InitLogs() defer logs.FlushLogs() setMaxProcs() glog.Infof(strings.Join(os.Args, " ")) glog.Infof("Eventer version %v", version.HeapsterVersion) if err := validateFlags(); err != nil { glog.Fatal(err) } // sources if len(argSources) != 1 { glog.Fatal("Wrong number of sources specified") } sourceFactory := sources.NewSourceFactory() sources, err := sourceFactory.BuildAll(argSources) if err != nil { glog.Fatalf("Failed to create sources: %v", err) } if len(sources) != 1 { glog.Fatal("Requires exactly 1 source") } // sinks sinksFactory := sinks.NewSinkFactory() sinkList := sinksFactory.BuildAll(argSinks) if len([]flags.Uri(argSinks)) != 0 && len(sinkList) == 0 { glog.Fatal("No available sink to use") } for _, sink := range sinkList { glog.Infof("Starting with %s sink", sink.Name()) } sinkManager, err := sinks.NewEventSinkManager(sinkList, sinks.DefaultSinkExportEventsTimeout, sinks.DefaultSinkStopTimeout) if err != nil { glog.Fatalf("Failed to create sink manager: %v", err) } // main manager manager, err := manager.NewManager(sources[0], sinkManager, *argFrequency) if err != nil { glog.Fatalf("Failed to create main manager: %v", err) } manager.Start() glog.Infof("Starting eventer") <-quitChannel }