changed xapp framework version
[ric-plt/rtmgr.git] / cmd / rtmgr.go
index e4f76d8..2d3d81e 100644 (file)
    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.
    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.
+
+
+   This source code is part of the near-RT RIC (RAN Intelligent Controller)
+   platform project (RICP).
+
+
 ==================================================================================
 */
 /*
 ==================================================================================
 */
 /*
 */
 package main
 
 */
 package main
 
+//TODO: change flag to pflag (won't need any argument parse)
+
 import (
 import (
-       "flag"
-       "nbi"
+       "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
        "os"
        "os"
-       "rpe"
-       "rtmgr"
-       "sbi"
-       "sdl"
+       "os/signal"
+       "routing-manager/pkg/nbi"
+       //"routing-manager/pkg/rpe"
+       "routing-manager/pkg/rtmgr"
+       //"routing-manager/pkg/sbi"
+       //"routing-manager/pkg/sdl"
+       "syscall"
        "time"
 )
 
 const SERVICENAME = "rtmgr"
        "time"
 )
 
 const SERVICENAME = "rtmgr"
-const INTERVAL time.Duration = 2
 
 
-var (
-       args *map[string]string
-)
+/*type RMRUpdateType int
 
 
-func parseArgs() {
-       a := make(map[string]string)
-       xmgeturl := flag.String("nbi-httpget", "http://localhost:3000/xapps", "xApp Manager URL")
-       nngpubsock := flag.String("sbi-nngsub", "tcp://0.0.0.0:4560", "NNG Subsciption Socket URI")
-       file := flag.String("sdl-file", "/db/rt.json", "Local file store location")
-       rpename := flag.String("rpe", "rmr", "Policy Engine Module name")
-       loglevel := flag.String("loglevel", "INFO", "INFO | WARN | ERROR | DEBUG")
-       flag.Parse()
-       if (*xmgeturl) != "" {
-               a["xmurl"] = (*xmgeturl)
-               a["nbiname"] = "httpGetter"
-       }
-       if (*nngpubsock) != "" {
-               a["socketuri"] = (*nngpubsock)
-               a["sbiname"] = "nngpub"
-       }
-       if (*file) != "" {
-               a["file"] = (*file)
-               a["sdlname"] = "file"
-       }
-       a["rpename"] = (*rpename)
-       a["loglevel"] = (*loglevel)
-       args = &a
-}
+const (
+       XappType = iota
+       SubsType
+       E2Type
+)*/
 
 
-func initRtmgr() (*nbi.NbiEngineConfig, *sbi.SbiEngineConfig, *sdl.SdlEngineConfig, *rpe.RpeEngineConfig, error) {
-       var err error
-       if nbi, err := nbi.GetNbi((*args)["nbiname"]); err == nil && nbi != nil {
-               if sbi, err := sbi.GetSbi((*args)["sbiname"]); err == nil && sbi != nil {
-                       if sdl, err := sdl.GetSdl((*args)["sdlname"]); err == nil && sdl != nil {
-                               if rpe, err := rpe.GetRpe((*args)["rpename"]); err == nil && rpe != nil {
-                                       return nbi, sbi, sdl, rpe, nil
-                               }
-                       }
-               }
-       }
-       return nil, nil, nil, nil, err
-}
-
-func serve(nbi *nbi.NbiEngineConfig, sbi *sbi.SbiEngineConfig, sdl *sdl.SdlEngineConfig, rpe *rpe.RpeEngineConfig) {
-       err := sbi.OpenSocket((*args)["socketuri"])
-       if err != nil {
-               rtmgr.Logger.Info("fail to open pub socket due to: " + err.Error())
-               return
-       }
-       defer sbi.CloseSocket()
-       for {
-               time.Sleep(INTERVAL * time.Second)
-               data, err := nbi.BatchFetch((*args)["xmurl"])
-               if err != nil {
-                       rtmgr.Logger.Error("cannot get data from " + nbi.Engine.Name + " interface dute to: " + err.Error())
-               } else {
-                       sdl.WriteAll((*args)["file"], data)
-               }
-               data, err = sdl.ReadAll((*args)["file"])
-               if err != nil || data == nil {
-                       rtmgr.Logger.Error("cannot get data from " + sdl.Engine.Name + " interface dute to: " + err.Error())
-                       continue
-               }
-               policies := rpe.GeneratePolicies(data)
-               err = sbi.DistributeAll(policies)
-               if err != nil {
-                       rtmgr.Logger.Error("routing rable cannot be published due to: " + err.Error())
-               }
-       }
+func SetupCloseHandler() {
+       c := make(chan os.Signal, 2)
+       signal.Notify(c, os.Interrupt, syscall.SIGTERM)
+       go func() {
+               <-c
+               xapp.Logger.Info("\r- Ctrl+C pressed in Terminal")
+               os.Exit(0)
+       }()
 }
 
 func main() {
 }
 
 func main() {
-       parseArgs()
-       rtmgr.SetLogLevel((*args)["loglevel"])
-       nbi, sbi, sdl, rpe, err := initRtmgr()
-       if err != nil {
-               rtmgr.Logger.Error(err.Error())
-               os.Exit(1)
+
+       SetupCloseHandler()
+
+       xapp.Logger.Info("Start " + SERVICENAME + " service")
+       rtmgr.Eps = make(rtmgr.Endpoints)
+       rtmgr.Mtype = make(rtmgr.MessageTypeList)
+       rtmgr.Rtmgr_ready = false
+       rtmgr.RMRConnStatus = make(map[string]bool)
+
+       // RMR thread is starting port: 4560
+       c := nbi.NewControl()
+       go c.Run()
+
+       // Waiting for RMR to be ready
+       time.Sleep(time.Duration(2) * time.Second)
+       for xapp.Rmr.IsReady() == false {
+               time.Sleep(time.Duration(2) * time.Second)
        }
        }
-       rtmgr.Logger.Info("Start " + SERVICENAME + " service")
-       serve(nbi, sbi, sdl, rpe)
+
+       dummy_whid := int(xapp.Rmr.Openwh("rtmgr:4560"))
+       xapp.Logger.Info("created dummy Wormhole ID for routingmanager and dummy_whid :%d", dummy_whid)
+
+       nbi.Serve()
        os.Exit(0)
 }
        os.Exit(0)
 }