MCPcopy Create free account
hub / github.com/chainloop-dev/chainloop / NewGRPCServer

Function NewGRPCServer

app/controlplane/internal/server/grpc.go:114–184  ·  view source on GitHub ↗

NewGRPCServer new a gRPC server.

(opts *Opts)

Source from the content-addressed store, hash-verified

112
113// NewGRPCServer new a gRPC server.
114func NewGRPCServer(opts *Opts) (*grpc.Server, error) {
115 // Opt-in histogram metrics for the interceptor
116 grpc_prometheus.EnableHandlingTimeHistogram()
117
118 // NOTE: kratos middlewares will always be run before plain grpc unary interceptors
119 // If you want to change the behavior, please refer to wrappers.go and the Prometheus wrapper as example
120 var serverOpts = []grpc.ServerOption{
121 grpc.Middleware(craftMiddleware(opts)...),
122 grpc.UnaryInterceptor(
123 protovalidateMiddleware.UnaryServerInterceptor(opts.Validator),
124 ),
125 grpc.Options(grpcLib.StatsHandler(otelgrpc.NewServerHandler())),
126 }
127
128 if v := opts.ServerConfig.Grpc.Network; v != "" {
129 serverOpts = append(serverOpts, grpc.Network(v))
130 }
131 if v := opts.ServerConfig.Grpc.Addr; v != "" {
132 serverOpts = append(serverOpts, grpc.Address(v))
133 }
134 if v := opts.ServerConfig.Grpc.Timeout; v != nil {
135 serverOpts = append(serverOpts, grpc.Timeout(v.AsDuration()))
136 }
137 if tlsConf := opts.ServerConfig.Grpc.GetTlsConfig(); tlsConf != nil {
138 cert := tlsConf.GetCertificate()
139 privKey := tlsConf.GetPrivateKey()
140 if cert != "" && privKey != "" {
141 cert, err := tls.LoadX509KeyPair(cert, privKey)
142 if err != nil {
143 return nil, fmt.Errorf("loading gRPC server TLS certificate: %w", err)
144 }
145 serverOpts = append(serverOpts, grpc.TLSConfig(&tls.Config{
146 Certificates: []tls.Certificate{cert},
147 MinVersion: tls.VersionTLS12, // gosec complains about insecure minimum version we use default value
148 }))
149 }
150 }
151
152 if v := opts.ServerConfig.Grpc.GetMaxRecvMsgSize(); v > 0 {
153 serverOpts = append(serverOpts, grpc.Options(grpcLib.MaxRecvMsgSize(int(v))))
154 }
155
156 srv := grpc.NewServer(serverOpts...)
157 v1.RegisterWorkflowServiceServer(srv, opts.WorkflowSvc)
158 v1.RegisterStatusServiceServer(srv, service.NewStatusService(opts.AuthSvc.AuthURLs.Login, Version, opts.CASClientUseCase, opts.BootstrapConfig))
159 v1.RegisterRobotAccountServiceServer(srv, opts.RobotAccountSvc)
160 v1.RegisterWorkflowRunServiceServer(srv, opts.WorkflowRunSvc)
161 v1.RegisterAttestationServiceServer(srv, opts.AttestationSvc)
162 v1.RegisterWorkflowContractServiceServer(srv, opts.WorkflowContractSvc)
163 v1.RegisterCASCredentialsServiceServer(srv, opts.CASCredsSvc)
164 v1.RegisterContextServiceServer(srv, opts.ContextSvc)
165 v1.RegisterOrgMetricsServiceServer(srv, opts.OrgMetricsSvc)
166 v1.RegisterIntegrationsServiceServer(srv, opts.IntegrationsSvc)
167 v1.RegisterOrganizationServiceServer(srv, opts.OrganizationSvc)
168 v1.RegisterAuthServiceServer(srv, opts.AuthSvc)
169 v1.RegisterCASBackendServiceServer(srv, opts.CASBackendSvc)
170 v1.RegisterCASRedirectServiceServer(srv, opts.CASRedirectSvc)
171 v1.RegisterOrgInvitationServiceServer(srv, opts.OrgInvitationSvc)

Callers 1

wireAppFunction · 0.92

Calls 7

NewStatusServiceFunction · 0.92
craftMiddlewareFunction · 0.85
GetMaxRecvMsgSizeMethod · 0.80
RegisterMethod · 0.65
GetTlsConfigMethod · 0.45
GetCertificateMethod · 0.45
GetPrivateKeyMethod · 0.45

Tested by

no test coverage detected