X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fcontrol%2Fclient.go;h=11367ed8ca6693476b95ce9808eeb41eaddf8930;hb=4abf18056b1674fb284c4d7d753c35a3ddab37e4;hp=adbe48fab3e30953af1a83f5e7bcdaf135388a10;hpb=0a9f260b43017c2860137cefcaa2e79ad896ab2d;p=ric-plt%2Fsubmgr.git diff --git a/pkg/control/client.go b/pkg/control/client.go index adbe48f..11367ed 100644 --- a/pkg/control/client.go +++ b/pkg/control/client.go @@ -20,64 +20,77 @@ package control import ( - "errors" + "fmt" rtmgrclient "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/rtmgr_client" rtmgrhandle "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/rtmgr_client/handle" "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/rtmgr_models" "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" "strconv" "strings" + "time" ) +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +type SubRouteInfo struct { + EpList xapp.RmrEndpointList + SubID uint16 +} + +func (sri *SubRouteInfo) String() string { + return "routeinfo(" + strconv.FormatUint(uint64(sri.SubID), 10) + "/[" + sri.EpList.String() + "])" +} + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- type RtmgrClient struct { - rtClient *rtmgrclient.RoutingManager - xappHandleParams *rtmgrhandle.ProvideXappSubscriptionHandleParams - xappDeleteParams *rtmgrhandle.DeleteXappSubscriptionHandleParams + rtClient *rtmgrclient.RoutingManager } -func (rc *RtmgrClient) SubscriptionRequestUpdate(subRouteAction SubRouteInfo) error { - xapp.Logger.Debug("SubscriptionRequestUpdate() invoked") +func (rc *RtmgrClient) SubscriptionRequestCreate(subRouteAction SubRouteInfo) error { subID := int32(subRouteAction.SubID) - xapp.Logger.Debug("Subscription action details received. subRouteAction.Command: %v, Address %s, Port %v, subID %v", int16(subRouteAction.Command), subRouteAction.Address, subRouteAction.Port, subID) - xappSubReq := rtmgr_models.XappSubscriptionData{&subRouteAction.Address, &subRouteAction.Port, &subID} - - switch subRouteAction.Command { - case CREATE: - _, postErr := rc.rtClient.Handle.ProvideXappSubscriptionHandle(rc.xappHandleParams.WithXappSubscriptionData(&xappSubReq)) - if postErr != nil && !(strings.Contains(postErr.Error(), "status 200")) { - xapp.Logger.Error("Updating routing manager about subscription id = %d failed with error: %v", subID, postErr) - return postErr - } else { - xapp.Logger.Info("Succesfully updated routing manager about the subscription: %d", subID) - return nil - } - case DELETE: - _, _, deleteErr := rc.rtClient.Handle.DeleteXappSubscriptionHandle(rc.xappDeleteParams.WithXappSubscriptionData(&xappSubReq)) - if deleteErr != nil && !(strings.Contains(deleteErr.Error(), "status 200")) { - xapp.Logger.Error("Deleting subscription id = %d in routing manager, failed with error: %v", subID, deleteErr) - return deleteErr - } else { - xapp.Logger.Info("Succesfully deleted subscription: %d in routing manager.", subID) - return nil - } - default: - xapp.Logger.Debug("Unknown subRouteAction.Command: %v, Address %s, Port %v, subID: %v", subRouteAction.Command, subRouteAction.Address, subRouteAction.Port, subID) - return nil + xapp.Logger.Debug("CREATE %s ongoing", subRouteAction.String()) + createData := rtmgr_models.XappSubscriptionData{&subRouteAction.EpList.Endpoints[0].Addr, &subRouteAction.EpList.Endpoints[0].Port, &subID} + createHandle := rtmgrhandle.NewProvideXappSubscriptionHandleParamsWithTimeout(2 * time.Second) + createHandle.WithXappSubscriptionData(&createData) + _, err := rc.rtClient.Handle.ProvideXappSubscriptionHandle(createHandle) + if err != nil && !(strings.Contains(err.Error(), "status 200")) { + return fmt.Errorf("CREATE %s failed with error: %s", subRouteAction.String(), err.Error()) } + xapp.Logger.Debug("CREATE %s successful", subRouteAction.String()) + return nil } -func (rc *RtmgrClient) SplitSource(src string) (*string, *uint16, error) { - tcpSrc := strings.Split(src, ":") - if len(tcpSrc) != 2 { - err := errors.New("unable to get the source details of the xapp - check the source string received from the rmr") - return nil, nil, err +func (rc *RtmgrClient) SubscriptionRequestUpdate(subRouteAction SubRouteInfo) error { + xapp.Logger.Debug("UPDATE %s ongoing", subRouteAction.String()) + var updateData rtmgr_models.XappList + for i := range subRouteAction.EpList.Endpoints { + updateData = append(updateData, &rtmgr_models.XappElement{Address: &subRouteAction.EpList.Endpoints[i].Addr, Port: &subRouteAction.EpList.Endpoints[i].Port}) + } + updateHandle := rtmgrhandle.NewUpdateXappSubscriptionHandleParamsWithTimeout(2 * time.Second) + updateHandle.WithSubscriptionID(subRouteAction.SubID) + updateHandle.WithXappList(updateData) + _, err := rc.rtClient.Handle.UpdateXappSubscriptionHandle(updateHandle) + if err != nil && !(strings.Contains(err.Error(), "status 200")) { + return fmt.Errorf("UPDATE %s failed with error: %s", subRouteAction.String(), err.Error()) } - srcAddr := tcpSrc[0] - xapp.Logger.Debug("---Debugging Inside splitsource tcpsrc[0] = %s and tcpsrc[1]= %s ", tcpSrc[0], tcpSrc[1]) - srcPort, err := strconv.ParseUint(tcpSrc[1], 10, 16) - if err != nil { - return nil, nil, err + xapp.Logger.Debug("UPDATE %s successful", subRouteAction.String()) + return nil + +} + +func (rc *RtmgrClient) SubscriptionRequestDelete(subRouteAction SubRouteInfo) error { + subID := int32(subRouteAction.SubID) + xapp.Logger.Debug("DELETE %s ongoing", subRouteAction.String()) + deleteData := rtmgr_models.XappSubscriptionData{&subRouteAction.EpList.Endpoints[0].Addr, &subRouteAction.EpList.Endpoints[0].Port, &subID} + deleteHandle := rtmgrhandle.NewDeleteXappSubscriptionHandleParamsWithTimeout(2 * time.Second) + deleteHandle.WithXappSubscriptionData(&deleteData) + _, _, err := rc.rtClient.Handle.DeleteXappSubscriptionHandle(deleteHandle) + if err != nil && !(strings.Contains(err.Error(), "status 200")) { + return fmt.Errorf("DELETE %s failed with error: %s", subRouteAction.String(), err.Error()) } - srcPortInt := uint16(srcPort) - return &srcAddr, &srcPortInt, nil + xapp.Logger.Debug("DELETE %s successful", subRouteAction.String()) + return nil }