X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=cmd%2Fvesmgr%2Fvesmgr.go;h=c093359bc7f6ccd30ec03621746d493b562933f6;hb=070b3653202d9db994834cbdc175044a80e8278a;hp=aeebb15642c31b2192f35f6c371e96000c080b7b;hpb=fc77ebb24a8627ccfb18edd8b5dbc038da475eab;p=ric-plt%2Fvespamgr.git diff --git a/cmd/vesmgr/vesmgr.go b/cmd/vesmgr/vesmgr.go index aeebb15..c093359 100755 --- a/cmd/vesmgr/vesmgr.go +++ b/cmd/vesmgr/vesmgr.go @@ -13,6 +13,10 @@ * 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 @@ -52,6 +56,13 @@ type subscriptionNotification struct { var logger *mdcloggo.MdcLogger +// Version information, which is filled during compilation +// Version tag of vesmgr container +var Version string + +// Hash of the git commit used in building +var Hash string + const vesmgrXappNotifPort = "8080" const vesmgrXappNotifPath = "/vesmgr_xappnotif/" const timeoutPostXAppSubscriptions = 5 @@ -101,9 +112,11 @@ func (vesmgr *VesMgr) subscribeXAppNotifications() { // Init initializes the vesmgr func (vesmgr *VesMgr) Init(listenPort string) *VesMgr { logger.Info("vesmgrInit") + logger.Info("version: %s (%s)", Version, Hash) + var err error if vesmgr.myIPAddress, err = getMyIP(); err != nil || vesmgr.myIPAddress == "" { - logger.Error("Cannot get myIPAddress: IP %s, err %s", vesmgr.myIPAddress, err.Error()) + logger.Error("Cannot get myIPAddress: IP %s", vesmgr.myIPAddress) panic("Cannot get my IP address") } @@ -125,7 +138,8 @@ func (vesmgr *VesMgr) Init(listenPort string) *VesMgr { vesmgr.httpServer.init(vesmgr.myIPAddress + ":" + listenPort) vesmgr.vesagent = makeRunner("ves-agent", "-i", os.Getenv("VESMGR_HB_INTERVAL"), "-m", os.Getenv("VESMGR_MEAS_INTERVAL"), "--Measurement.Prometheus.Address", - os.Getenv("VESMGR_PROMETHEUS_ADDR")) + os.Getenv("VESMGR_PROMETHEUS_ADDR"), "--AlertManager.Bind", os.Getenv("VESMGR_ALERTMANAGER_BIND_ADDR"), + "--Debug") return vesmgr } @@ -173,9 +187,15 @@ func queryXAppsConfig(appmgrURL string, timeout time.Duration) ([]byte, error) { return emptyConfig, errors.New(resp.Status) } -func queryConf() ([]byte, error) { - return queryXAppsConfig("http://"+appmgrDomain+":"+appmgrPort+appmgrXAppConfigPath, - 10*time.Second) +func queryConf() (appConfig []byte, err error) { + for i := 0; i < 10; i++ { + appConfig, err = queryXAppsConfig("http://"+appmgrDomain+":"+appmgrPort+appmgrXAppConfigPath, 10*time.Second) + if len(appConfig) > 0 { + break + } + time.Sleep(5 * time.Second) + } + return appConfig, err } func (vesmgr *VesMgr) emptyNotificationsChannel() { @@ -236,11 +256,17 @@ func (vesmgr *VesMgr) waitSubscriptionLoop() { // Run the vesmgr process main loop func (vesmgr *VesMgr) Run() { logger.Info("vesmgr main loop ready") + vesmgr.httpServer.start(vesmgrXappNotifPath, vesmgr.chXAppNotifications, vesmgr.chSupervision) + vesmgr.subscribeXAppNotifications() + vesmgr.waitSubscriptionLoop() + xappConfig, _ := queryConf() + createConf(vespaConfigFile, xappConfig) + vesmgr.startVesagent() for { vesmgr.servRequest()