Documentation update
[ric-plt/vespamgr.git] / cmd / vesmgr / vesmgr.go
index dfe9864..5086098 100755 (executable)
@@ -23,6 +23,7 @@ package main
 
 import (
        "errors"
+       "fmt"
        "io/ioutil"
        "net"
        "net/http"
@@ -112,11 +113,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)
+       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 +126,11 @@ func (vesmgr *VesMgr) Init(listenPort string) *VesMgr {
        if ok {
                logger.Info("Using appmgrdomain %s", appmgrDomain)
        } else {
-               appmgrDomain = "service-ricplt-appmgr-http.ricplt.svc.cluster.local"
+               pltnamespace := os.Getenv("PLT_NAMESPACE")
+               if pltnamespace == "" {
+                       pltnamespace = "ricplt"
+               }
+               appmgrDomain = fmt.Sprintf("service-%s-appmgr-http.%s.svc.cluster.local", pltnamespace, pltnamespace)
                logger.Info("Using default appmgrdomain %s", appmgrDomain)
        }
        vesmgr.chXAppSubscriptions = make(chan subscriptionNotification)
@@ -138,7 +143,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
 }
 
@@ -186,9 +192,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() {
@@ -249,11 +261,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()