Basic server setup complete for usermgmt

This commit is contained in:
Abin Simon
2022-01-03 10:52:25 +05:30
parent fc372512c2
commit 1f7774edf9
4 changed files with 107 additions and 3 deletions

View File

@@ -6,7 +6,6 @@ require (
github.com/RafaySystems/rcloud-base/components/adminsrv v0.0.0-unpublished
github.com/RafaySystems/rcloud-base/components/common v0.0.0-unpublished
github.com/gogo/protobuf v1.3.2
github.com/grpc-ecosystem/grpc-gateway v1.16.0
github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.2
github.com/spf13/viper v1.10.1
google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa

View File

@@ -336,6 +336,7 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U=
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
@@ -484,6 +485,7 @@ github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/speps/go-hashids v2.0.0+incompatible h1:kSfxGfESueJKTx0mpER9Y/1XHl+FVQjtCqRyYcviFbw=
github.com/speps/go-hashids v2.0.0+incompatible/go.mod h1:P7hqPzMdnZOfyIk+xrlG1QaSMw+gCBdHKsBDnhpaZvc=
github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=

View File

@@ -3,18 +3,25 @@ package main
import (
"context"
"fmt"
"net"
"net/http"
"sync"
"time"
"github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
"github.com/spf13/viper"
"sigs.k8s.io/controller-runtime/pkg/manager/signals"
"github.com/RafaySystems/rcloud-base/components/common/pkg/auth/interceptors"
authv3 "github.com/RafaySystems/rcloud-base/components/common/pkg/auth/v3"
"github.com/RafaySystems/rcloud-base/components/common/pkg/gateway"
logv2 "github.com/RafaySystems/rcloud-base/components/common/pkg/log/v2"
configrpc "github.com/RafaySystems/rcloud-base/components/common/proto/rpc/config"
"github.com/RafaySystems/rcloud-base/components/usermgmt/pkg/service"
pbrpcv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/rpc/v3"
rpcv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/rpc/v3"
"google.golang.org/grpc"
_grpc "google.golang.org/grpc"
)
const (
@@ -78,8 +85,8 @@ func run() {
wg.Add(1)
go runAPI(&wg, ctx)
// go runRPC(&wg, ctx)
// go runDebug(&wg, ctx)
go runRPC(&wg, ctx)
go runDebug(&wg, ctx)
<-ctx.Done()
wg.Wait()
@@ -120,6 +127,72 @@ func runAPI(wg *sync.WaitGroup, ctx context.Context) {
}
}
func runRPC(wg *sync.WaitGroup, ctx context.Context) {
defer wg.Done()
// defer configPool.Close()
// userServer := rpcv3.NewUserServer(service.NewUserServer())
l, err := net.Listen("tcp", fmt.Sprintf(":%d", rpcPort))
if err != nil {
_log.Fatalw("unable to start rpc listener", "error", err)
}
var opts []_grpc.ServerOption
if !dev {
opts = append(opts, _grpc.UnaryInterceptor(
interceptors.NewAuthInterceptorWithOptions(
interceptors.WithLogRequest(),
interceptors.WithAuthPool(authPool),
interceptors.WithExclude("POST", "/v2/sentry/bootstrap/:templateToken/register"),
),
))
defer authPool.Close()
} else {
opts = append(opts, _grpc.UnaryInterceptor(
interceptors.NewAuthInterceptorWithOptions(interceptors.WithDummy())),
)
}
s := grpc.NewServer(opts...)
if err != nil {
_log.Fatalw("unable to create grpc server", "error", err)
}
go func() {
defer s.GracefulStop()
<-ctx.Done()
_log.Infow("context done")
}()
rpcv3.RegisterUserServer(s, service.NewUserServer())
_log.Infow("starting rpc server", "port", rpcPort)
err = s.Serve(l)
if err != nil {
_log.Fatalw("unable to start rpc server", "error", err)
}
}
func runDebug(wg *sync.WaitGroup, ctx context.Context) {
defer wg.Done()
s := http.Server{
Addr: fmt.Sprintf(":%d", debugPort),
}
_log.Infow("starting debug server", "port", debugPort)
go func() {
err := s.ListenAndServe()
if err != nil {
_log.Fatalw("unable to start debug server", "error", err)
}
}()
<-ctx.Done()
ctx, cancel := context.WithTimeout(ctx, time.Second*10)
defer cancel()
s.Shutdown(ctx)
}
func main() {
setup()
run()

View File

@@ -0,0 +1,30 @@
package service
import (
"context"
"fmt"
userv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/types/userpb/v3"
userrpcv3 "github.com/RafaySystems/rcloud-base/components/usermgmt/proto/rpc/v3"
)
type server struct{}
func (s *server) CreateUser(context.Context, *userv3.User) (*userv3.User, error) {
fmt.Println("Called create user")
return nil, nil
}
func (s *server) GetUsers(context.Context, *userrpcv3.GetUsersRequest) (*userrpcv3.GetUsersResponse, error) {
return nil, nil
}
func (s *server) GetUser(context.Context, *userrpcv3.GetUserRequest) (*userv3.User, error) { return nil, nil }
func (s *server) UpdateUser(context.Context, *userrpcv3.PutUserRequest) (*userrpcv3.UserResponse, error) {
return nil, nil
}
func (s *server) DeleteUser(context.Context, *userrpcv3.DeleteUserRequest) (*userrpcv3.UserResponse, error) {
return nil, nil
}
func NewUserServer() userrpcv3.UserServer {
return &server{}
}