* 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
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
// 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")
}
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
}
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() {
// 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()