func runVaultServer()

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)
}