Pārlūkot izejas kodu

Use config dir for serving API

Signed-off-by: Christopher Crone <[email protected]>
Christopher Crone 5 gadi atpakaļ
vecāks
revīzija
ebe3fbc180
2 mainītis faili ar 28 papildinājumiem un 35 dzēšanām
  1. 3 8
      cli/cmd/serve.go
  2. 25 27
      server/server.go

+ 3 - 8
cli/cmd/serve.go

@@ -21,6 +21,7 @@ type serveOpts struct {
 
 // ServeCommand returns the command to serve the API
 func ServeCommand() *cobra.Command {
+	// FIXME(chris-crone): Should warn that specified context is ignored
 	var opts serveOpts
 	cmd := &cobra.Command{
 		Use:   "serve",
@@ -36,14 +37,12 @@ func ServeCommand() *cobra.Command {
 }
 
 func runServe(ctx context.Context, opts serveOpts) error {
-	s := server.New()
+	s := server.New(ctx)
 
 	listener, err := server.CreateListener(opts.address)
-
 	if err != nil {
 		return errors.Wrap(err, "listen address "+opts.address)
 	}
-
 	// nolint errcheck
 	defer listener.Close()
 
@@ -71,11 +70,7 @@ type cliServer struct {
 }
 
 func (cs *cliServer) Contexts(ctx context.Context, request *cliv1.ContextsRequest) (*cliv1.ContextsResponse, error) {
-	s, err := store.New()
-	if err != nil {
-		logrus.Error(err)
-		return &cliv1.ContextsResponse{}, err
-	}
+	s := store.ContextStore(ctx)
 	contexts, err := s.List()
 	if err != nil {
 		logrus.Error(err)

+ 25 - 27
server/server.go

@@ -45,10 +45,10 @@ import (
 )
 
 // New returns a new GRPC server.
-func New() *grpc.Server {
+func New(ctx context.Context) *grpc.Server {
 	s := grpc.NewServer(
 		grpc.ChainUnaryInterceptor(
-			unaryMeta,
+			unaryMeta(ctx),
 			unary,
 		),
 		grpc.StreamInterceptor(stream),
@@ -74,36 +74,34 @@ func stream(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo,
 	return grpc_prometheus.StreamServerInterceptor(srv, ss, info, handler)
 }
 
-func unaryMeta(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
-	md, ok := metadata.FromIncomingContext(ctx)
-	if !ok {
-		return handler(ctx, req)
-	}
-
-	key, ok := md[apicontext.Key]
-	if !ok {
-		return handler(ctx, req)
-	}
+func unaryMeta(clictx context.Context) func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
+	return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
+		md, ok := metadata.FromIncomingContext(ctx)
+		if !ok {
+			return handler(ctx, req)
+		}
 
-	if len(key) == 1 {
-		s, err := store.New()
-		if err != nil {
-			return nil, err
+		key, ok := md[apicontext.Key]
+		if !ok {
+			return handler(ctx, req)
 		}
 
-		ctx = store.WithContextStore(ctx, s)
-		ctx = apicontext.WithCurrentContext(ctx, key[0])
+		if len(key) == 1 {
+			s := store.ContextStore(clictx)
+			ctx = store.WithContextStore(ctx, s)
+			ctx = apicontext.WithCurrentContext(ctx, key[0])
 
-		c, err := client.New(ctx)
-		if err != nil {
-			return nil, err
-		}
+			c, err := client.New(ctx)
+			if err != nil {
+				return nil, err
+			}
 
-		ctx, err = proxy.WithClient(ctx, c)
-		if err != nil {
-			return nil, err
+			ctx, err = proxy.WithClient(ctx, c)
+			if err != nil {
+				return nil, err
+			}
 		}
-	}
 
-	return handler(ctx, req)
+		return handler(ctx, req)
+	}
 }