From dbb88b9d7b2cfcffd017c44ddc234c5cd364fa6f Mon Sep 17 00:00:00 2001 From: zkoczka Date: Thu, 17 Oct 2019 10:34:38 +0200 Subject: [PATCH] Startup enhancement: routing manager is more resilient to missing components Signed-off-by: zkoczka Change-Id: Ib39b74085983b00cf2517247f52bf59be3e964d9 Signed-off-by: zkoczka --- RELNOTES | 4 +++ container-tag.yaml | 2 +- pkg/rpe/rpe.go | 31 +++++++++++++++-------- pkg/rtmgr/rtmgr.go | 73 ++++++++++++++++++++++++++++-------------------------- 4 files changed, 63 insertions(+), 47 deletions(-) diff --git a/RELNOTES b/RELNOTES index 1c5d539..4fc0f83 100644 --- a/RELNOTES +++ b/RELNOTES @@ -1,3 +1,7 @@ +### v0.3.6 +* Routing Manager is more resilient to missing components +* Put in order the message types + ### v0.3.5 * Added platform route to send RIC_SCTP_CLEAR_ALL message to implement big red button. * Added E2_TERM_INIT and RIC_SCTP_CONNECTION_FAILURE message type routes. diff --git a/container-tag.yaml b/container-tag.yaml index 5c8ace1..bd068bd 100644 --- a/container-tag.yaml +++ b/container-tag.yaml @@ -2,4 +2,4 @@ # By default this file is in the docker build directory, # but the location can configured in the JJB template. --- -tag: 0.3.5 +tag: 0.3.6 diff --git a/pkg/rpe/rpe.go b/pkg/rpe/rpe.go index fcda8fe..ef04791 100644 --- a/pkg/rpe/rpe.go +++ b/pkg/rpe/rpe.go @@ -29,6 +29,7 @@ import ( "routing-manager/pkg/rtmgr" "routing-manager/pkg/sbi" "strconv" + "runtime" ) var ( @@ -79,17 +80,25 @@ func getEndpointByUuid(uuid string) *rtmgr.Endpoint { } func (r *Rpe) addRoute(messageType string, tx *rtmgr.Endpoint, rx *rtmgr.Endpoint, routeTable *rtmgr.RouteTable, subId int32) { - txList := rtmgr.EndpointList{*tx} - rxList := []rtmgr.EndpointList{[]rtmgr.Endpoint{*rx}} - messageId := rtmgr.MessageTypes[messageType] - route := rtmgr.RouteTableEntry{ - MessageType: messageId, - TxList: txList, - RxGroups: rxList, - SubID: subId} - *routeTable = append(*routeTable, route) - rtmgr.Logger.Debug("Route added: MessageTyp: %v, Tx: %v, Rx: %v, SubId: %v", messageId, tx.Uuid, rx.Uuid, subId) - rtmgr.Logger.Trace("Route added: MessageTyp: %v, Tx: %v, Rx: %v, SubId: %v", messageId, tx, rx, subId) + if tx != nil && rx != nil { + txList := rtmgr.EndpointList{*tx} + rxList := []rtmgr.EndpointList{[]rtmgr.Endpoint{*rx}} + messageId := rtmgr.MessageTypes[messageType] + route := rtmgr.RouteTableEntry{ + MessageType: messageId, + TxList: txList, + RxGroups: rxList, + SubID: subId} + *routeTable = append(*routeTable, route) + rtmgr.Logger.Debug("Route added: MessageTyp: %v, Tx: %v, Rx: %v, SubId: %v", messageId, tx.Uuid, rx.Uuid, subId) + rtmgr.Logger.Trace("Route added: MessageTyp: %v, Tx: %v, Rx: %v, SubId: %v", messageId, tx, rx, subId) + } else { + pc,_,_,ok := runtime.Caller(1) + details := runtime.FuncForPC(pc) + if ok && details != nil { + rtmgr.Logger.Error("Route addition skipped: Either TX or RX endpoint not present. Caller function is %s", details.Name()) + } + } } func (r *Rpe) generateXappRoutes(xAppEp *rtmgr.Endpoint, e2TermEp *rtmgr.Endpoint, subManEp *rtmgr.Endpoint, routeTable *rtmgr.RouteTable) { diff --git a/pkg/rtmgr/rtmgr.go b/pkg/rtmgr/rtmgr.go index 3189043..1a27e40 100644 --- a/pkg/rtmgr/rtmgr.go +++ b/pkg/rtmgr/rtmgr.go @@ -46,9 +46,9 @@ var ( "UEContextRelease": "5", "X2Setup": "6", "Reset": "7", - "RIC_SCTP_CONNECTION_FAILURE": "1080", - "RIC_SCTP_CLEAR_ALL": "1090", "E2_TERM_INIT": "1100", + "RIC_SCTP_CLEAR_ALL": "1090", + "RIC_SCTP_CONNECTION_FAILURE": "1080", "RIC_X2_SETUP": "10000", "RIC_X2_RESPONSE": "10001", "RIC_X2_RESOURCE_STATUS_REQUEST": "10002", @@ -58,41 +58,44 @@ var ( "RIC_E2_TERMINATION_HC_RESPONSE": "10006", "RIC_E2_MANAGER_HC_REQUEST": "10007", "RIC_E2_MANAGER_HC_RESPONSE": "10008", - "RIC_ENB_LOAD_INFORMATION": "10020", - "RIC_ERROR_INDICATION": "10030", - "RIC_X2_SETUP_REQ": "10060", - "RIC_X2_SETUP_RESP": "10061", - "RIC_X2_SETUP_FAILURE": "10062", - "RIC_X2_RESET": "10070", - "RIC_X2_RESET_RESP": "10071", - "RIC_ENB_CONF_UPDATE": "10080", - "RIC_ENB_CONF_UPDATE_ACK": "10081", - "RIC_ENB_CONF_UPDATE_FAILURE": "10082", - "RIC_RES_STATUS_REQ": "10090", - "RIC_RES_STATUS_RESP": "10091", - "RIC_RES_STATUS_FAILURE": "10092", - "RIC_RESOURCE_STATUS_UPDATE": "10100", - "RIC_ENDC_X2_SETUP_REQ": "10360", - "RIC_ENDC_X2_SETUP_RESP": "10361", - "RIC_ENDC_X2_SETUP_FAILURE": "10362", - "RIC_ENDC_CONF_UPDATE": "10370", - "RIC_ENDC_CONF_UPDATE_ACK": "10371", - "RIC_ENDC_CONF_UPDATE_FAILURE": "10372", - "RIC_GNB_STATUS_INDICATION": "10450", - "RIC_SUB_REQ": "12010", - "RIC_SUB_RESP": "12011", - "RIC_SUB_FAILURE": "12012", - "RIC_SUB_DEL_REQ": "12020", - "RIC_SUB_DEL_RESP": "12021", - "RIC_SUB_DEL_FAILURE": "12022", - "RIC_CONTROL_REQ": "12040", - "RIC_CONTROL_ACK": "12041", - "RIC_CONTROL_FAILURE": "12042", - "RIC_INDICATION": "12050", - "DC_ADM_INT_CONTROL": "20000", - "DC_ADM_INT_CONTROL_ACK": "20001", "RIC_CONTROL_XAPP_CONFIG_REQUEST": "100000", "RIC_CONTROL_XAPP_CONFIG_RESPONSE": "100001", + + "RIC_X2_SETUP_REQ": "10060", + "RIC_X2_SETUP_RESP": "10061", + "RIC_X2_SETUP_FAILURE": "10062", + "RIC_X2_RESET": "10070", + "RIC_X2_RESET_RESP": "10071", + + "RIC_SUB_REQ": "12010", + "RIC_SUB_RESP": "12011", + "RIC_SUB_FAILURE": "12012", + "RIC_SUB_DEL_REQ": "12020", + "RIC_SUB_DEL_RESP": "12021", + "RIC_SUB_DEL_FAILURE": "12022", + + "RIC_CONTROL_REQ": "12040", + "RIC_CONTROL_ACK": "12041", + "RIC_CONTROL_FAILURE": "12042", + "RIC_INDICATION": "12050", + "RIC_ENDC_X2_SETUP_REQ": "10360", + "RIC_ENDC_X2_SETUP_RESP": "10361", + "RIC_ENDC_X2_SETUP_FAILURE": "10362", + "RIC_ENDC_CONF_UPDATE": "10370", + "RIC_ENDC_CONF_UPDATE_ACK": "10371", + "RIC_ENDC_CONF_UPDATE_FAILURE": "10372", + "RIC_RES_STATUS_REQ": "10090", + "RIC_RES_STATUS_RESP": "10091", + "RIC_RES_STATUS_FAILURE": "10092", + "RIC_ENB_CONF_UPDATE": "10080", + "RIC_ENB_CONF_UPDATE_ACK": "10081", + "RIC_ENB_CONF_UPDATE_FAILURE": "10082", + "RIC_ENB_LOAD_INFORMATION": "10020", + "RIC_GNB_STATUS_INDICATION": "10450", + "RIC_RESOURCE_STATUS_UPDATE": "10100", + "RIC_ERROR_INDICATION": "10030", + "DC_ADM_INT_CONTROL": "20000", + "DC_ADM_INT_CONTROL_ACK": "20001", } // Messagetype mappings for the platform components. -- 2.16.6