From a08968c161b999238cbd61ea2eb9fd597a5b37e6 Mon Sep 17 00:00:00 2001 From: Eric Multanen Date: Thu, 23 Apr 2020 12:48:55 -0700 Subject: Add gRPC servers to ncm service Add a contextupdate grpc server to the ncm service. Issue-ID: MULTICLOUD-1029 Signed-off-by: Eric Multanen Change-Id: I38caa625c028baac06a6202f03b86d0f2bf38126 --- src/ncm/cmd/main.go | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) (limited to 'src/ncm/cmd') diff --git a/src/ncm/cmd/main.go b/src/ncm/cmd/main.go index c4ae423f..49af81ee 100644 --- a/src/ncm/cmd/main.go +++ b/src/ncm/cmd/main.go @@ -15,23 +15,73 @@ package main import ( "context" + "fmt" "log" "math/rand" + "net" "net/http" "os" "os/signal" + "strings" "time" "github.com/gorilla/handlers" "github.com/onap/multicloud-k8s/src/ncm/api" + register "github.com/onap/multicloud-k8s/src/ncm/pkg/grpc" + "github.com/onap/multicloud-k8s/src/ncm/pkg/grpc/contextupdateserver" + updatepb "github.com/onap/multicloud-k8s/src/orchestrator/pkg/grpc/contextupdate" "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/auth" "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/config" contextDb "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/contextdb" "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/db" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials" + "google.golang.org/grpc/testdata" ) -func main() { +func startGrpcServer() error { + var tls bool + + if strings.Contains(config.GetConfiguration().GrpcEnableTLS, "enable") { + tls = true + } else { + tls = false + } + certFile := config.GetConfiguration().GrpcServerCert + keyFile := config.GetConfiguration().GrpcServerKey + + host, port := register.GetServerHostPort() + + lis, err := net.Listen("tcp", fmt.Sprintf("%s:%d", host, port)) + if err != nil { + log.Fatalf("Could not listen to port: %v", err) + } + var opts []grpc.ServerOption + if tls { + if certFile == "" { + certFile = testdata.Path("server.pem") + } + if keyFile == "" { + keyFile = testdata.Path("server.key") + } + creds, err := credentials.NewServerTLSFromFile(certFile, keyFile) + if err != nil { + log.Fatalf("Could not generate credentials %v", err) + } + opts = []grpc.ServerOption{grpc.Creds(creds)} + } + grpcServer := grpc.NewServer(opts...) + updatepb.RegisterContextupdateServer(grpcServer, contextupdateserver.NewContextupdateServer()) + log.Println("Starting Network Configuration Manager gRPC Server") + err = grpcServer.Serve(lis) + if err != nil { + log.Fatalf("ncm grpc server is not serving %v", err) + } + return err +} + +func main() { rand.Seed(time.Now().UnixNano()) err := db.InitializeDatabaseConnection("mco") @@ -56,6 +106,13 @@ func main() { Addr: ":" + config.GetConfiguration().ServicePort, } + go func() { + err := startGrpcServer() + if err != nil { + log.Fatalf("GRPC server failed to start") + } + }() + connectionsClose := make(chan struct{}) go func() { c := make(chan os.Signal, 1) -- cgit 1.2.3-korg