in server/cmd/harp-server/internal/cmd/vault.go [60:121]
func runVaultServer(ctx context.Context, params *vaultParams) {
ctx, cancel := context.WithCancel(ctx)
defer cancel()
// Initialize config
initConfig()
// Starting banner
log.For(ctx).Info("Starting harp Vault bundle server ...")
// Start goroutine group
errServe := platform.Serve(ctx, &platform.Server{
Debug: conf.Debug.Enable,
Name: "harp-server-vault",
Version: version.Version,
Revision: version.Commit,
Instrumentation: conf.Instrumentation,
Network: conf.Vault.Network,
Address: conf.Vault.Listen,
Builder: func(ln net.Listener, group *run.Group) {
// Check requirements
if len(params.Namespaces) == 0 && len(params.Transformers) == 0 {
log.For(ctx).Fatal("namespaces and/or transformers must be specified")
}
// Override config
if err := overrideBackendConfig(conf, params.Namespaces); err != nil {
log.For(ctx).Fatal("Unable to parse backend mapping", zap.Error(err))
}
if err := overrideTransformerConfig(conf, params.Transformers); err != nil {
log.For(ctx).Fatal("Unable to parse transformer mapping", zap.Error(err))
}
server, err := vault.New(ctx, conf)
if err != nil {
log.For(ctx).Fatal("Unable to start Vault API server", zap.Error(err))
}
group.Add(
func() error {
if conf.Vault.UseTLS {
log.For(ctx).Info("Starting Vault API HTTPS server", zap.Stringer("address", ln.Addr()))
return server.ServeTLS(ln, conf.Vault.TLS.CertificatePath, conf.Vault.TLS.PrivateKeyPath)
}
log.For(ctx).Info("Starting Vault API HTTP server", zap.Stringer("address", ln.Addr()))
return server.Serve(ln)
},
func(e error) {
log.For(ctx).Info("Shutting Vault API server down")
shutdownCtx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
if err := server.Shutdown(shutdownCtx); err != nil {
log.For(ctx).Fatal("Server Shutdown Failed", zap.Error(err))
}
},
)
},
})
log.CheckErrCtx(ctx, "Unable to run application", errServe)
}