You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

main.go 2.4 kB

3 years ago
3 years ago
3 years ago
3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package main
  2. import (
  3. "context"
  4. "flag"
  5. "gitlink.org.cn/JCCE/PCM/common/server"
  6. "gitlink.org.cn/JCCE/PCM/common/tenanter"
  7. "gitlink.org.cn/JCCE/PCM/lan_trans/idl/demo"
  8. "gitlink.org.cn/JCCE/PCM/lan_trans/idl/pbecs"
  9. "gitlink.org.cn/JCCE/PCM/lan_trans/idl/pbpod"
  10. "net"
  11. "net/http"
  12. "github.com/golang/glog"
  13. "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
  14. "github.com/pkg/errors"
  15. "google.golang.org/grpc"
  16. )
  17. var (
  18. // command-line options:
  19. // gRPC server endpoint
  20. grpcServerEndpoint = flag.String("grpc-server-endpoint", ":9090", ":8081")
  21. )
  22. func run() error {
  23. ctx, cancel := context.WithCancel(context.Background())
  24. defer cancel()
  25. // Register gRPC server endpoint
  26. // Note: Make sure the gRPC server is running properly and accessible
  27. mux := runtime.NewServeMux()
  28. opts := []grpc.DialOption{grpc.WithInsecure()}
  29. if err := demo.RegisterDemoServiceHandlerFromEndpoint(ctx, mux, *grpcServerEndpoint, opts); err != nil {
  30. return errors.Wrap(err, "RegisterDemoServiceHandlerFromEndpoint error")
  31. } else if err = pbecs.RegisterEcsServiceHandlerFromEndpoint(ctx, mux, *grpcServerEndpoint, opts); err != nil {
  32. return errors.Wrap(err, "RegisterEcsServiceHandlerFromEndpoint error")
  33. } else if err = pbpod.RegisterPodServiceHandlerFromEndpoint(ctx, mux, *grpcServerEndpoint, opts); err != nil {
  34. return errors.Wrap(err, "RegisterPodServiceHandlerFromEndpoint error")
  35. }
  36. // Start HTTP server (and proxy calls to gRPC server endpoint)
  37. return http.ListenAndServe(":8081", mux)
  38. }
  39. func main() {
  40. var configFile string
  41. flag.StringVar(&configFile, "conf", "configs/config.yaml", "config.yaml")
  42. flag.Parse()
  43. defer glog.Flush()
  44. if err := tenanter.LoadCloudConfigsFromFile(configFile); err != nil {
  45. if !errors.Is(err, tenanter.ErrLoadTenanterFileEmpty) {
  46. glog.Fatalf("LoadCloudConfigsFromFile error %+v", err)
  47. }
  48. glog.Warningf("LoadCloudConfigsFromFile empty file path %s", configFile)
  49. }
  50. glog.Infof("load tenant from file finished")
  51. go func() {
  52. lis, err := net.Listen("tcp", ":9090")
  53. if err != nil {
  54. glog.Fatalf("failed to listen: %v", err)
  55. }
  56. s := grpc.NewServer()
  57. demo.RegisterDemoServiceServer(s, &server.Server{})
  58. pbecs.RegisterEcsServiceServer(s, &server.Server{})
  59. pbpod.RegisterPodServiceServer(s, &server.Server{})
  60. if err = s.Serve(lis); err != nil {
  61. glog.Fatalf("failed to serve: %v", err)
  62. }
  63. }()
  64. if err := run(); err != nil {
  65. glog.Fatal(err)
  66. }
  67. }

PCM is positioned as Software stack over Cloud, aiming to build the standards and ecology of heterogeneous cloud collaboration for JCC in a non intrusive and autonomous peer-to-peer manner.