From: naman.gupta Date: Tue, 9 May 2023 11:54:05 +0000 (+0530) Subject: Make subscription unavailable when under reset X-Git-Tag: 0.9.6~1 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=7dbc4adf49cd8f07f45c2412c47eb2829b8161f9;p=ric-plt%2Fsubmgr.git Make subscription unavailable when under reset Make subscription unavailable when under reset Signed-off-by: naman.gupta Change-Id: I98ace9baf042586c1f00bcfce66d5d912671c98c --- diff --git a/pkg/control/control.go b/pkg/control/control.go index 3dacc59..227eb0c 100755 --- a/pkg/control/control.go +++ b/pkg/control/control.go @@ -450,8 +450,12 @@ func (c *Control) RESTSubscriptionHandler(params interface{}) (*models.Subscript c.PrintRESTSubscriptionRequest(p) } - if c.e2IfState.IsE2ConnectionUp(p.Meid) == false { - xapp.Logger.Error("No E2 connection for ranName %v", *p.Meid) + if c.e2IfState.IsE2ConnectionUp(p.Meid) == false || c.e2IfState.IsE2ConnectionUnderReset(p.Meid) == true { + if c.e2IfState.IsE2ConnectionUp(p.Meid) == false { + xapp.Logger.Error("No E2 connection for ranName %v", *p.Meid) + } else if c.e2IfState.IsE2ConnectionUnderReset(p.Meid) == true { + xapp.Logger.Error("E2 Node for ranName %v UNDER RESET", *p.Meid) + } c.UpdateCounter(cRestReqRejDueE2Down) return nil, common.SubscribeServiceUnavailableCode } diff --git a/pkg/control/e2if_state.go b/pkg/control/e2if_state.go index 5f7eb35..e8ceef2 100644 --- a/pkg/control/e2if_state.go +++ b/pkg/control/e2if_state.go @@ -49,14 +49,16 @@ func CreateXappRnibIfInstance() XappRnibInterface { } type E2IfState struct { - mutex sync.Mutex - control *Control - NbIdMap map[string]string + mutex sync.Mutex + control *Control + NbIdMap map[string]string + NbIdStatusMap map[string]string } func (e *E2IfState) Init(c *Control) { e.control = c e.NbIdMap = make(map[string]string, 0) + e.NbIdStatusMap = make(map[string]string, 0) e.ReadE2ConfigurationFromRnib() err := e.SubscribeChannels() if err != nil { @@ -106,6 +108,7 @@ func (e *E2IfState) NotificationCb(ch string, events ...string) { } xapp.Logger.Debug("E2 CONNECTED. NbId=%s", nbId) e.NbIdMap[nbId] = nbId + e.NbIdStatusMap[nbId] = "CONNECTED" } else if strings.Contains(events[0], "_DISCONNECTED") { e.control.UpdateCounter(cE2StateChangedToDown) nbId, err := ExtractNbiIdFromString(events[0]) @@ -115,6 +118,7 @@ func (e *E2IfState) NotificationCb(ch string, events ...string) { } xapp.Logger.Debug("E2 DISCONNECTED. NbId=%s", nbId) if _, ok := e.NbIdMap[nbId]; ok { + e.NbIdStatusMap[nbId] = "DISCONNECTED" delete(e.NbIdMap, nbId) e.control.registry.DeleteAllE2Subscriptions(nbId, e.control) } @@ -126,6 +130,7 @@ func (e *E2IfState) NotificationCb(ch string, events ...string) { xapp.Logger.Error("NotificationCb _UNDER_RESET %v ", err) return } + e.NbIdStatusMap[nbId] = "UNDER_RESET" xapp.Logger.Debug("E2 Under Reset. NbId=%s", nbId) if _, ok := e.NbIdMap[nbId]; ok { e.control.registry.DeleteAllE2Subscriptions(nbId, e.control) @@ -195,6 +200,15 @@ func (e *E2IfState) IsE2ConnectionUp(nbId *string) bool { } } +func (e *E2IfState) IsE2ConnectionUnderReset(nbId *string) bool { + + if status := e.NbIdStatusMap[*nbId]; status == "UNDER_RESET" { + return true + } else { + return false + } +} + func ExtractNbiIdFromString(s string) (string, error) { // Expected string formats are below