2020-04-27 22:26:15 +00:00
|
|
|
package cmd
|
|
|
|
|
|
|
|
import (
|
2020-12-26 13:11:49 +00:00
|
|
|
"strings"
|
|
|
|
|
2020-04-27 22:26:15 +00:00
|
|
|
"github.com/spf13/cobra"
|
2020-12-26 13:11:49 +00:00
|
|
|
"gitlab.com/inetmock/inetmock/internal/rpc"
|
|
|
|
"gitlab.com/inetmock/inetmock/pkg/config"
|
2020-04-27 22:26:15 +00:00
|
|
|
"go.uber.org/zap"
|
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
2020-12-26 13:11:49 +00:00
|
|
|
serveCmd = &cobra.Command{
|
2020-04-27 22:26:15 +00:00
|
|
|
Use: "serve",
|
|
|
|
Short: "Starts the INetMock server",
|
|
|
|
Long: ``,
|
|
|
|
Run: startINetMock,
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
func startINetMock(_ *cobra.Command, _ []string) {
|
2020-12-26 13:11:49 +00:00
|
|
|
rpcAPI := rpc.NewINetMockAPI(server)
|
|
|
|
logger := server.Logger().Named("inetmock").With(zap.String("command", "serve"))
|
2020-05-03 08:18:28 +00:00
|
|
|
|
2020-12-26 13:11:49 +00:00
|
|
|
for endpointName, endpointHandler := range server.Config().EndpointConfigs() {
|
|
|
|
handlerSubConfig := server.Config().Viper().Sub(strings.Join([]string{config.EndpointsKey, endpointName, config.OptionsKey}, "."))
|
2020-04-27 22:26:15 +00:00
|
|
|
endpointHandler.Options = handlerSubConfig
|
2020-12-26 13:11:49 +00:00
|
|
|
if err := server.EndpointManager().CreateEndpoint(endpointName, endpointHandler); err != nil {
|
2020-04-27 22:26:15 +00:00
|
|
|
logger.Warn(
|
|
|
|
"error occurred while creating endpoint",
|
|
|
|
zap.String("endpointName", endpointName),
|
|
|
|
zap.String("handlerName", endpointHandler.Handler),
|
|
|
|
zap.Error(err),
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-12-26 13:11:49 +00:00
|
|
|
server.EndpointManager().StartEndpoints()
|
2020-05-03 08:18:28 +00:00
|
|
|
if err := rpcAPI.StartServer(); err != nil {
|
|
|
|
logger.Error(
|
|
|
|
"failed to start gRPC API",
|
|
|
|
zap.Error(err),
|
|
|
|
)
|
|
|
|
}
|
2020-04-27 22:26:15 +00:00
|
|
|
|
2020-12-26 13:11:49 +00:00
|
|
|
<-server.Context().Done()
|
2020-04-27 22:26:15 +00:00
|
|
|
|
|
|
|
logger.Info(
|
2020-12-26 13:11:49 +00:00
|
|
|
"App context canceled - shutting down",
|
2020-04-27 22:26:15 +00:00
|
|
|
)
|
|
|
|
|
2020-05-03 08:18:28 +00:00
|
|
|
rpcAPI.StopServer()
|
2020-12-26 13:11:49 +00:00
|
|
|
server.EndpointManager().ShutdownEndpoints()
|
2020-04-27 22:26:15 +00:00
|
|
|
}
|