Moving BBSim entrypoint in the cmd folder, building bbsimctl in the container
Change-Id: I4823578ed17c40b13c1c9a561e7aa7e6640f7f19
diff --git a/internal/bbsim/grpc_api_server.go b/internal/bbsim/api/grpc_api_server.go
similarity index 99%
rename from internal/bbsim/grpc_api_server.go
rename to internal/bbsim/api/grpc_api_server.go
index 20b6164..27b0ce5 100644
--- a/internal/bbsim/grpc_api_server.go
+++ b/internal/bbsim/api/grpc_api_server.go
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package main
+package api
import (
"context"
diff --git a/internal/bbsim/bbsim.go b/internal/bbsim/bbsim.go
deleted file mode 100644
index 7c47e91..0000000
--- a/internal/bbsim/bbsim.go
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright 2018-present Open Networking Foundation
-
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
-
- * http://www.apache.org/licenses/LICENSE-2.0
-
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package main
-
-import (
- "flag"
- "github.com/opencord/bbsim/api/bbsim"
- "github.com/opencord/bbsim/internal/bbsim/devices"
- log "github.com/sirupsen/logrus"
- "google.golang.org/grpc"
- "google.golang.org/grpc/reflection"
- "net"
- "os"
- "runtime/pprof"
- "sync"
-)
-
-func getOpts() *CliOptions {
-
- olt_id := flag.Int("olt_id", 0, "Number of OLT devices to be emulated (default is 1)")
- nni := flag.Int("nni", 1, "Number of NNI ports per OLT device to be emulated (default is 1)")
- pon := flag.Int("pon", 1, "Number of PON ports per OLT device to be emulated (default is 1)")
- onu := flag.Int("onu", 1, "Number of ONU devices per PON port to be emulated (default is 1)")
- s_tag := flag.Int("s_tag", 900, "S-Tag value (default is 900)")
- c_tag_init := flag.Int("c_tag", 900, "C-Tag starting value (default is 900), each ONU will get a sequentail one (targeting 1024 ONUs per BBSim instance the range is bug enough)")
- profileCpu := flag.String("cpuprofile", "", "write cpu profile to file")
-
- flag.Parse()
-
- o := new(CliOptions)
-
- o.OltID = int(*olt_id)
- o.NumNniPerOlt = int(*nni)
- o.NumPonPerOlt = int(*pon)
- o.NumOnuPerPon = int(*onu)
- o.STag = int(*s_tag)
- o.CTagInit = int(*c_tag_init)
- o.profileCpu = profileCpu
-
- return o
-}
-
-func startApiServer(channel chan bool, group *sync.WaitGroup) {
- // TODO make configurable
- address := "0.0.0.0:50070"
- log.Debugf("APIServer Listening on: %v", address)
- lis, err := net.Listen("tcp", address)
- if err != nil {
- log.Fatalf("APIServer failed to listen: %v", err)
- }
- grpcServer := grpc.NewServer()
- bbsim.RegisterBBSimServer(grpcServer, BBSimServer{})
-
- reflection.Register(grpcServer)
-
- wg := sync.WaitGroup{}
- wg.Add(1)
-
- go grpcServer.Serve(lis)
-
- for {
- _, ok := <-channel
- if !ok {
- // if the olt channel is closed, stop the gRPC server
- log.Warnf("Stopping API gRPC server")
- grpcServer.Stop()
- wg.Done()
- break
- }
- }
-
- wg.Wait()
- group.Done()
- return
-}
-
-func init() {
- // TODO make configurable both via CLI and via ENV (for the tests)
- log.SetLevel(log.DebugLevel)
- //log.SetLevel(log.TraceLevel)
- //log.SetReportCaller(true)
-}
-
-func main() {
- options := getOpts()
-
- if *options.profileCpu != "" {
- // start profiling
- log.Infof("Creating profile file at: %s", *options.profileCpu)
- f, err := os.Create(*options.profileCpu)
- if err != nil {
- log.Fatal(err)
- }
- pprof.StartCPUProfile(f)
- }
-
- log.WithFields(log.Fields{
- "OltID": options.OltID,
- "NumNniPerOlt": options.NumNniPerOlt,
- "NumPonPerOlt": options.NumPonPerOlt,
- "NumOnuPerPon": options.NumOnuPerPon,
- }).Info("BroadBand Simulator is on")
-
- // control channels, they are only closed when the goroutine needs to be terminated
- oltDoneChannel := make(chan bool)
- apiDoneChannel := make(chan bool)
-
- wg := sync.WaitGroup{}
- wg.Add(2)
-
- go devices.CreateOLT(options.OltID, options.NumNniPerOlt, options.NumPonPerOlt, options.NumOnuPerPon, options.STag, options.CTagInit, &oltDoneChannel, &apiDoneChannel, &wg)
- log.Debugf("Created OLT with id: %d", options.OltID)
- go startApiServer(apiDoneChannel, &wg)
- log.Debugf("Started APIService")
-
- wg.Wait()
-
- defer func() {
- log.Info("BroadBand Simulator is off")
- if *options.profileCpu != "" {
- log.Info("Stopping profiler")
- pprof.StopCPUProfile()
- }
- }()
-}
diff --git a/internal/bbsim/types.go b/internal/bbsim/types.go
deleted file mode 100644
index 76c23cd..0000000
--- a/internal/bbsim/types.go
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2018-present Open Networking Foundation
-
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
-
- * http://www.apache.org/licenses/LICENSE-2.0
-
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package main
-
-// General
-
-type CliOptions struct {
- OltID int
- NumNniPerOlt int
- NumPonPerOlt int
- NumOnuPerPon int
- STag int
- CTagInit int
- profileCpu *string
-}