X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=ric-plt%2Fresource-status-manager.git;a=blobdiff_plain;f=RSM%2Fhandlers%2Frmrmsghandlers%2Fresource_status_response_handler.go;fp=RSM%2Fhandlers%2Frmrmsghandlers%2Fresource_status_response_handler.go;h=5f32d580dab0f0d6328de52899d7e6a99e21e5f4;hp=04c4dc7e8e48b59e70745411028713763e05eede;hb=60652d98d51ee23c1eaca2e8bc2bf19c74c57658;hpb=b8d3ff3abf409da49ecab244cd6d2c2124dbce7c diff --git a/RSM/handlers/rmrmsghandlers/resource_status_response_handler.go b/RSM/handlers/rmrmsghandlers/resource_status_response_handler.go index 04c4dc7..5f32d58 100644 --- a/RSM/handlers/rmrmsghandlers/resource_status_response_handler.go +++ b/RSM/handlers/rmrmsghandlers/resource_status_response_handler.go @@ -20,28 +20,71 @@ package rmrmsghandlers - import ( -// "rsm/converters" -// "rsm/e2pdus" + "rsm/converters" + "rsm/e2pdus" "rsm/logger" "rsm/models" + "rsm/services" ) type ResourceStatusResponseHandler struct { - logger *logger.Logger + logger *logger.Logger + rnibDataService services.RNibDataService + converter converters.IResourceStatusResponseConverter } -func NewResourceStatusResponseHandler(logger *logger.Logger) ResourceStatusResponseHandler { +func NewResourceStatusResponseHandler(logger *logger.Logger, converter converters.IResourceStatusResponseConverter, rnibDataService services.RNibDataService) ResourceStatusResponseHandler { return ResourceStatusResponseHandler{ - logger:logger, + logger: logger, + converter: converter, + rnibDataService: rnibDataService, } } func (h ResourceStatusResponseHandler) Handle(request *models.RmrRequest) { h.logger.Infof("#ResourceStatusResponseHandler.Handle - RAN name: %s - Received resource status response notification", request.RanName) - //_, err := converters.UnpackX2apPduAsString(h.logger, request.Len, request.Payload, e2pdus.MaxAsn1CodecMessageBufferSize) - //if err != nil { - // logger.Errorf("#ResourceStatusResponseHandler.Handle - unpack failed. Error: %v", err) - //} + + if h.logger.DebugEnabled() { + pduAsString, err := h.converter.UnpackX2apPduAsString(request.Payload, e2pdus.MaxAsn1CodecMessageBufferSize) + if err != nil { + h.logger.Errorf("#ResourceStatusResponseHandler.Handle - RAN name: %s - unpack failed. Error: %v", request.RanName, err) + return + } + h.logger.Debugf("#ResourceStatusResponseHandler.Handle - RAN name: %s - pdu: %s", request.RanName, pduAsString) + } + + response, err := h.converter.Convert(request.Payload) + + if err != nil { + h.logger.Errorf("#ResourceStatusResponseHandler.Handle - RAN name: %s - unpack failed. Error: %v", request.RanName, err) + return + } + + if response.ENB2_Measurement_ID == 0 { + h.logger.Errorf("#ResourceStatusResponseHandler.Handle - RAN name: %s - ignoring response without ENB2_Measurement_ID", request.RanName) + return + } + + h.logger.Infof("#ResourceStatusResponseHandler.Handle - RAN name: %s - (success) ENB1_Measurement_ID: %d, ENB2_Measurement_ID: %d", + request.RanName, + response.ENB1_Measurement_ID, + response.ENB2_Measurement_ID) + + rsmRanInfo, err := h.rnibDataService.GetRsmRanInfo(request.RanName) + + if err != nil { + return + } + + rsmRanInfo.Enb2MeasurementId = response.ENB2_Measurement_ID + rsmRanInfo.ActionStatus = true + + err = h.rnibDataService.SaveRsmRanInfo(rsmRanInfo) + + if err != nil { + return + } + + h.logger.Infof("#ResourceStatusResponseHandler.Handle - RAN name: %s - Successfully updated RsmRanInfo", request.RanName) }