[VOL-3622] Stop and restart gRPC server
Change-Id: I443e7ed75f79dd90782a1a4342c8e4d3a7294488
diff --git a/internal/bbsimctl/commands/olt.go b/internal/bbsimctl/commands/olt.go
index 5f6747e..bed3733 100644
--- a/internal/bbsimctl/commands/olt.go
+++ b/internal/bbsimctl/commands/olt.go
@@ -49,6 +49,15 @@
type OltReboot struct{}
+type StopGrpcServer struct{}
+
+type StartGrpcServer struct{}
+type RestartGrpcServer struct {
+ Args struct {
+ Delay uint32
+ } `positional-args:"yes" required:"yes"`
+}
+
type OltFlows struct{}
type OltPoweronAllOnus struct{}
@@ -66,6 +75,9 @@
Flows OltFlows `command:"flows"`
PoweronAllOnus OltPoweronAllOnus `command:"poweronAllONUs"`
ShutdownAllOnus OltShutdownAllOnus `command:"shutdownAllONUs"`
+ StopServer StopGrpcServer `command:"stopServer"`
+ StartServer StartGrpcServer `command:"startServer"`
+ RestartServer RestartGrpcServer `command:"restartServer"`
}
func RegisterOltCommands(parser *flags.Parser) {
@@ -184,6 +196,63 @@
return nil
}
+func (o *StopGrpcServer) Execute(args []string) error {
+ client, conn := connect()
+ defer conn.Close()
+
+ ctx, cancel := context.WithTimeout(context.Background(), config.GlobalConfig.Grpc.Timeout)
+ defer cancel()
+
+ res, err := client.StopgRPCServer(ctx, &pb.Empty{})
+
+ if err != nil {
+ log.Fatalf("Cannot stop Openolt server: %v", err)
+ return err
+ }
+
+ fmt.Println(fmt.Sprintf("[Status: %d] %s", res.StatusCode, res.Message))
+ return nil
+}
+
+func (o *StartGrpcServer) Execute(args []string) error {
+ client, conn := connect()
+ defer conn.Close()
+
+ ctx, cancel := context.WithTimeout(context.Background(), config.GlobalConfig.Grpc.Timeout)
+ defer cancel()
+
+ res, err := client.StartgRPCServer(ctx, &pb.Empty{})
+
+ if err != nil {
+ log.Fatalf("Cannot start Openolt server: %v", err)
+ return err
+ }
+
+ fmt.Println(fmt.Sprintf("[Status: %d] %s", res.StatusCode, res.Message))
+ return nil
+}
+
+func (o *RestartGrpcServer) Execute(args []string) error {
+ req := &pb.Timeout{
+ Delay: o.Args.Delay,
+ }
+ client, conn := connect()
+ defer conn.Close()
+
+ ctx, cancel := context.WithTimeout(context.Background(), config.GlobalConfig.Grpc.Timeout)
+ defer cancel()
+
+ res, err := client.RestartgRPCServer(ctx, req)
+
+ if err != nil {
+ log.Fatalf("Cannot restart Openolt server: %v", err)
+ return err
+ }
+
+ fmt.Println(fmt.Sprintf("[Status: %d] %s", res.StatusCode, res.Message))
+ return nil
+}
+
func (o *OltFlows) Execute(args []string) error {
client, conn := connect()
defer conn.Close()