var rmrcallid = 1
var rmrdynamiccallid = 201
var addendpointct = 1
-
+var count int
var conn sync.Mutex
type RmrPush struct {
}
func (c *RmrPush) AddEndpoint(ep *rtmgr.Endpoint) error {
- count := addendpointct + 1
+ addendpointct = addendpointct + 1
+ count := addendpointct
xapp.Logger.Debug("Invoked sbi.AddEndpoint for %s with count = %d", ep.Ip, count)
endpoint := ep.Ip + ":" + strconv.Itoa(DefaultRmrPipelineSocketNumber)
ep.Whid = int(xapp.Rmr.Openwh(endpoint))
time.Sleep(time.Duration(10) * time.Second)
ep.Whid = int(xapp.Rmr.Openwh(endpoint))
if ep.Whid < 0 {
- return errors.New("can't open warmhole connection for endpoint:" + ep.Uuid + " due to invalid Wormhole ID: " + string(ep.Whid) + " count: " + strconv.Itoa(count))
+ return errors.New("cannot open wormhole connection for endpoint:" + ep.Uuid + " due to invalid Wormhole ID: " + string(ep.Whid) + " count: " + strconv.Itoa(count))
}
} else {
xapp.Logger.Debug("Wormhole ID is %v and EP is %v", ep.Whid, endpoint)
if result[i].status == true {
count++
} else {
- xapp.Logger.Error("RMR send failed for endpoint %v", result[i].endpoint)
+ xapp.Logger.Error("RMR sent failed for endpoint %v", result[i].endpoint)
}
}
xapp.Logger.Debug("Push policy to endpoint: " + ep.Uuid)
ret := c.send_data(ep, policies, call_id)
- xapp.Logger.Debug("return value is %v", ret)
+ for count = 0; count <= 2 && ret == false; count++ {
+ time.Sleep(time.Second)
+ ret := c.send_data(ep, policies, call_id)
+ if ret == true {
+ break
+ }
+ xapp.Logger.Error("Invoked send_data to try again due to return value : %v", ret)
+ }
+
conn.Lock()
rtmgr.RMRConnStatus[ep.Uuid] = ret
conn.Unlock()