X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2Fapp%2Fmain.go;h=dc2ff87caf183b8ce71ecb41e245f757eea1503f;hb=0249b5fc410b6c6814906b185dfdf25b27621148;hp=5dd1922a7a05a3b1deb5b112311ed36d527429ae;hpb=ab8f039d2f4288ceba5d0ce6c95172210fe60776;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/app/main.go b/E2Manager/app/main.go index 5dd1922..dc2ff87 100644 --- a/E2Manager/app/main.go +++ b/E2Manager/app/main.go @@ -34,44 +34,140 @@ import ( "e2mgr/services" "e2mgr/services/rmrreceiver" "e2mgr/services/rmrsender" - "fmt" + //"fmt" + "flag" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" - "gerrit.o-ran-sc.org/r/ric-plt/sdlgo" + "gerrit.o-ran-sc.org/r/ric-plt/sdlgo" + "github.com/spf13/viper" + "github.com/fsnotify/fsnotify" "os" "strconv" ) +const GeneralKeyDefaultValue = "{\"enableRic\":true}" +const DEFAULT_CONFIG_FILE = "../resources/configuration.yaml" +const DEFAULT_PORT = "8080" +var Log *logger.Logger + +func initKeys(logger *logger.Logger, sdl *sdlgo.SyncStorage) error { + ok, err := sdl.SetIfNotExists(common.GetRNibNamespace(), common.BuildGeneralConfigurationKey(), GeneralKeyDefaultValue) + + if err != nil { + logger.Errorf("#app.main - Failed setting GENERAL key") + return err + } + + if ok { + logger.Infof("#app.main - Successfully set GENERAL key") + } else { + logger.Infof("#app.main - GENERAL key exists, no need to set") + } + + return nil + +} +/**Dynamic log-level changes **/ + +func loadConfig() { + viper.SetConfigFile(parseCmd()) + if err := viper.ReadInConfig(); err != nil { + Log.Errorf("Error reading config file, %s", err) + } + Log.Infof("Using config file: %s\n", viper.ConfigFileUsed()) + // Watch for config file changes and re-read data ... + watch() +} +func parseCmd() string { + var fileName *string + fileName = flag.String("f", DEFAULT_CONFIG_FILE, "Specify the configuration file.") + flag.String("port", DEFAULT_PORT, "Specify the port file.") + flag.Parse() + + return *fileName +} + +func watch() { + viper.WatchConfig() + viper.OnConfigChange(func(e fsnotify.Event) { + Log.Infof("config file changed %s", e.Name) + setLoglevel() + }) +} + +/*********MDC LOG CHNAGES ********/ +func setLoglevel() { + var loglevel int + if err := viper.UnmarshalKey("loglevel", &loglevel); err != nil { + Log.Errorf("Unmarshalling failed while reading %d", loglevel) + } + + switch loglevel { + case 1: + Log.Infof("LOGLEVEL is set to ERROR\n") + case 2: + Log.Infof("LOGLEVEL is set to WARNING\n") + case 3: + Log.Infof("LOGLEVEL is set to INFO\n") + case 4: + Log.Infof("LOGLEVEL is set to DEBUG\n") + } + Log.SetLevel(loglevel) +} + + func main() { config := configuration.ParseConfiguration() - logLevel, _ := logger.LogLevelTokenToLevel(config.Logging.LogLevel) - logger, err := logger.InitLogger(logLevel) - if err != nil { + level := int8(4) + Log, _ = logger.InitLogger(level) + Log.SetFormat(0) + Log.SetMdc("e2mgr", "0.2.2") + /*if err != nil { fmt.Printf("#app.main - failed to initialize logger, error: %s", err) os.Exit(1) + }*/ + Log.Infof("#app.main - Configuration %s", config) + loadConfig() + + setLoglevel() + sdl := sdlgo.NewSyncStorage() + err := initKeys(Log, sdl) + + if err != nil { + os.Exit(1) } - logger.Infof("#app.main - Configuration %s", config) - db := sdlgo.NewDatabase() - sdl := sdlgo.NewSdlInstance("e2Manager", db) + defer sdl.Close() - rnibDataService := services.NewRnibDataService(logger, config, reader.GetRNibReader(sdl), rNibWriter.GetRNibWriter(sdl)) + rnibDataService := services.NewRnibDataService(Log, config, reader.GetNewRNibReader(sdl), rNibWriter.GetRNibWriter(sdl, config.RnibWriter)) + + ranListManager := managers.NewRanListManager(Log, rnibDataService) + RicServiceUpdateManager := managers.NewRicServiceUpdateManager(Log, rnibDataService) + + err = ranListManager.InitNbIdentityMap() + + if err != nil { + Log.Errorf("#app.main - quit") + os.Exit(1) + } + var msgImpl *rmrCgo.Context - rmrMessenger := msgImpl.Init("tcp:"+strconv.Itoa(config.Rmr.Port), config.Rmr.MaxMsgSize, 0, logger) - rmrSender := rmrsender.NewRmrSender(logger, rmrMessenger) - kubernetes := managers.NewKubernetesManager(logger, config) - ranSetupManager := managers.NewRanSetupManager(logger, rmrSender, rnibDataService) - e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, logger) - routingManagerClient := clients.NewRoutingManagerClient(logger, config, clients.NewHttpClient()) - ranListManager := managers.NewRanListManager(logger) - ranAlarmService := services.NewRanAlarmService(logger, config) - ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(logger, rnibDataService,ranListManager, ranAlarmService) - e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManager, routingManagerClient, ranConnectStatusChangeManager) - e2tShutdownManager := managers.NewE2TShutdownManager(logger, config, rnibDataService, e2tInstancesManager, e2tAssociationManager, kubernetes) - e2tKeepAliveWorker := managers.NewE2TKeepAliveWorker(logger, rmrSender, e2tInstancesManager, e2tShutdownManager, config) + rmrMessenger := msgImpl.Init("tcp:"+strconv.Itoa(config.Rmr.Port), config.Rmr.MaxMsgSize, 0, Log) + rmrSender := rmrsender.NewRmrSender(Log, rmrMessenger) + e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, Log) + routingManagerClient := clients.NewRoutingManagerClient(Log, config, clients.NewHttpClient()) + ranAlarmService := services.NewRanAlarmService(Log, config) + ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(Log, rnibDataService, ranListManager, ranAlarmService) + e2tAssociationManager := managers.NewE2TAssociationManager(Log, rnibDataService, e2tInstancesManager, routingManagerClient, ranConnectStatusChangeManager) + e2tShutdownManager := managers.NewE2TShutdownManager(Log, config, rnibDataService, e2tInstancesManager, e2tAssociationManager, ranConnectStatusChangeManager) + e2tKeepAliveWorker := managers.NewE2TKeepAliveWorker(Log, rmrSender, e2tInstancesManager, e2tShutdownManager, config) rmrNotificationHandlerProvider := rmrmsghandlerprovider.NewNotificationHandlerProvider() - rmrNotificationHandlerProvider.Init(logger, config, rnibDataService, rmrSender, e2tInstancesManager, routingManagerClient, e2tAssociationManager, ranConnectStatusChangeManager) + rmrNotificationHandlerProvider.Init(Log, config, rnibDataService, rmrSender, e2tInstancesManager, routingManagerClient, e2tAssociationManager, ranConnectStatusChangeManager, ranListManager, RicServiceUpdateManager) - notificationManager := notificationmanager.NewNotificationManager(logger, rmrNotificationHandlerProvider) - rmrReceiver := rmrreceiver.NewRmrReceiver(logger, rmrMessenger, notificationManager) + notificationManager := notificationmanager.NewNotificationManager(Log, rmrNotificationHandlerProvider) + rmrReceiver := rmrreceiver.NewRmrReceiver(Log, rmrMessenger, notificationManager) + nodebValidator := managers.NewNodebValidator() + updateEnbManager := managers.NewUpdateEnbManager(Log, rnibDataService, nodebValidator) + updateGnbManager := managers.NewUpdateGnbManager(Log, rnibDataService, nodebValidator) e2tInstancesManager.ResetKeepAliveTimestampsForAllE2TInstances() @@ -80,9 +176,14 @@ func main() { go rmrReceiver.ListenAndHandle() go e2tKeepAliveWorker.Execute() - httpMsgHandlerProvider := httpmsghandlerprovider.NewIncomingRequestHandlerProvider(logger, rmrSender, config, rnibDataService, ranSetupManager, e2tInstancesManager, e2tAssociationManager, routingManagerClient) + httpMsgHandlerProvider := httpmsghandlerprovider.NewIncomingRequestHandlerProvider(Log, rmrSender, config, rnibDataService, e2tInstancesManager, routingManagerClient, ranConnectStatusChangeManager, nodebValidator, updateEnbManager, updateGnbManager, ranListManager) rootController := controllers.NewRootController(rnibDataService) - nodebController := controllers.NewNodebController(logger, httpMsgHandlerProvider) - e2tController := controllers.NewE2TController(logger, httpMsgHandlerProvider) - _ = httpserver.Run(logger, config.Http.Port, rootController, nodebController, e2tController) + nodebController := controllers.NewNodebController(Log, httpMsgHandlerProvider) + e2tController := controllers.NewE2TController(Log, httpMsgHandlerProvider) + symptomController := controllers.NewSymptomdataController(Log, httpMsgHandlerProvider, rnibDataService, ranListManager) + //fmt.Println("loadconfig called at last") + //loadConfig() + _ = httpserver.Run(Log, config.Http.Port, rootController, nodebController, e2tController, symptomController) + //fmt.Println("loadconfig called at last") + //loadConfig() }