in cmd/servicebroker/main.go [65:141]
func runWithContext(ctx context.Context) error {
if flag.Arg(0) == "version" {
fmt.Printf("%s/%s\n", path.Base(os.Args[0]), "0.1.0")
return nil
}
if (options.TLSCert != "" || options.TLSKey != "") &&
(options.TLSCert == "" || options.TLSKey == "") {
fmt.Println("To use TLS with specified cert or key data, both --tlsCert and --tlsKey must be used")
return nil
}
matched, _ := regexp.MatchString("^[[:alnum:]]*$", options.BrokerID)
if !matched {
glog.Fatalln("brokerId can only contain letters and numbers")
}
addr := ":" + strconv.Itoa(options.Port)
clients := broker.AwsClients{
NewCfn: broker.AwsCfnClientGetter,
NewS3: broker.AwsS3ClientGetter,
NewSsm: broker.AwsSsmClientGetter,
NewSts: broker.AwsStsClientGetter,
NewDdb: broker.AwsDdbClientGetter,
NewIam: broker.AwsIamClientGetter,
NewLambda: broker.AwsLambdaClientGetter,
}
// Prom. metrics
reg := prom.NewRegistry()
osbMetrics := metrics.New()
reg.MustRegister(osbMetrics)
// Technically the MetricsCollector could be used to gather
// the same summary data as the osbMetrics but, as they
// necessarily have different names, the osbMetrics are
// retained for backwards compatibility
awssbMetrics := broker.NewMetricsCollector()
reg.MustRegister(awssbMetrics)
awsBroker, err := broker.NewAWSBroker(options.Options, broker.AwsSessionGetter, clients, broker.GetCallerId, broker.UpdateCatalog, broker.PollUpdate, awssbMetrics)
if err != nil {
glog.Fatalln(err)
}
api, err := rest.NewAPISurface(awsBroker, osbMetrics)
if err != nil {
return err
}
if options.BasicAuthUser == "" {
options.BasicAuthUser = os.Getenv("SECURITY_USER_NAME")
}
if options.BasicAuthPassword == "" {
options.BasicAuthPassword = os.Getenv("SECURITY_USER_PASSWORD")
}
auth := server.BasicAuth{User: options.BasicAuthUser, Pass: options.BasicAuthPassword}
s := server.New(api, reg, options.EnableBasicAuth, auth.Secret)
glog.Infof("Starting broker!")
if options.Insecure {
err = s.Run(ctx, addr)
} else {
if options.TLSCert != "" && options.TLSKey != "" {
glog.V(4).Infof("Starting secure broker with TLS cert and key data")
err = s.RunTLS(ctx, addr, options.TLSCert, options.TLSKey)
} else {
if options.TLSCertFile == "" || options.TLSKeyFile == "" {
glog.Error("unable to run securely without TLS Certificate and Key. Please review options and if running with TLS, specify --tls-cert-file and --tls-private-key-file or --tlsCert and --tlsKey.")
return nil
}
glog.V(4).Infof("Starting secure broker with file based TLS cert and key")
err = s.RunTLSWithTLSFiles(ctx, addr, options.TLSCertFile, options.TLSKeyFile)
}
}
return err
}