initialising

pull/2/head
Karolis Rusenas 2017-06-11 00:25:36 +01:00
parent e511514ae2
commit f7aab9fc42
1 changed files with 63 additions and 4 deletions

67
main.go
View File

@ -5,25 +5,45 @@ import (
"os/signal"
"time"
"golang.org/x/net/context"
"github.com/rusenask/keel/provider"
"github.com/rusenask/keel/provider/kubernetes"
"github.com/rusenask/keel/trigger/pubsub"
"github.com/rusenask/keel/trigger/webhook"
"github.com/rusenask/keel/types"
log "github.com/Sirupsen/logrus"
)
// gcloud pubsub related config
const (
EnvTriggerPubSub = "PUBSUB" // set to 1 or something to enable pub/sub trigger
EnvProjectID = "PROJECT_ID"
EnvSubscriptionID = "SUBSCRIPTION_ID"
EnvTopic = "TOPIC"
)
// kubernetes config, if empty - will default to InCluster
const (
EnvKubernetesConfig = "KUBERNETES_CONFIG"
)
func main() {
// getting k8s provider
k8sProvider, err := kubernetes.NewProvider(&kubernetes.Opts{InCluster: true})
k8sCfg := &kubernetes.Opts{}
if os.Getenv(EnvKubernetesConfig) != "" {
k8sCfg.ConfigPath = os.Getenv(EnvKubernetesConfig)
} else {
k8sCfg.InCluster = true
}
k8sProvider, err := kubernetes.NewProvider(k8sCfg)
if err != nil {
log.WithFields(log.Fields{
"error": err,
}).Fatal("main: failed to create kubernetes provider")
return
}
go k8sProvider.Start()
providers := make(map[string]provider.Provider)
@ -36,6 +56,45 @@ func main() {
go whs.Start()
if os.Getenv(EnvTriggerPubSub) != "" {
projectID := os.Getenv(EnvProjectID)
if projectID == "" {
log.Fatalf("main: project ID env variable not set")
return
}
subscriptionID := os.Getenv(EnvSubscriptionID)
if subscriptionID == "" {
log.Fatalf("main: subscription ID env variable not set")
return
}
topic := os.Getenv(EnvTopic)
if topic == "" {
log.Fatalf("main: top env variable not set")
return
}
ps, err := pubsub.NewSubscriber(&pubsub.Opts{
Project: projectID,
Subscription: subscriptionID,
Topic: topic,
Providers: providers,
})
if err != nil {
log.WithFields(log.Fields{
"error": err,
}).Fatal("main: failed to create gcloud pubsub subscriber")
return
}
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
go ps.Subscribe(ctx)
log.WithFields(log.Fields{
"project": projectID,
"subscription": subscriptionID,
"topic": topic,
}).Info("main: gcloud pubsub trigger for gcr enabled")
}
signalChan := make(chan os.Signal, 1)
cleanupDone := make(chan bool)
signal.Notify(signalChan, os.Interrupt)
@ -55,7 +114,7 @@ func main() {
}()
k8sProvider.Stop()
whs.Stop()
// whs.Stop()
cleanupDone <- true
}
}()