New submgr for testing. Tagged as ric-plt-submgr:r3-test-v2. Tested that submgr can...
[ric-plt/submgr.git] / pkg / control / client.go
index 598c7ef..d377d8e 100644 (file)
 package control
 
 import (
+       "errors"
        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"
-       "strings"
-       "strconv"
-       "errors"
        "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
+       "strconv"
+       "strings"
 )
 
 type RtmgrClient struct {
        rtClient         *rtmgrclient.RoutingManager
        xappHandleParams *rtmgrhandle.ProvideXappSubscriptionHandleParams
+       xappDeleteParams *rtmgrhandle.DeleteXappSubscriptionHandleParams
 }
 
-func (rc *RtmgrClient) SubscriptionRequestUpdate() error {
+func (rc *RtmgrClient) SubscriptionRequestUpdate(subRouteAction SubRouteInfo) error {
        xapp.Logger.Debug("SubscriptionRequestUpdate() invoked")
-       subRouteAction := <-SubscriptionReqChan
-       // Routing manager handles subscription id as int32 to accomodate -1 and uint16 values
        subID := int32(subRouteAction.SubID)
-
-       xapp.Logger.Debug("Subscription action details received: ", subRouteAction)
-
+       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"))  {
+               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, subID: %v", subRouteAction.Command, subRouteAction.Address, subRouteAction.Port, subID)
                return nil
        }
 }
@@ -62,11 +69,11 @@ func (rc *RtmgrClient) SubscriptionRequestUpdate() error {
 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.")
+               err := errors.New("unable to get the source details of the xapp - check the source string received from the rmr")
                return nil, nil, err
        }
        srcAddr := tcpSrc[0]
-       xapp.Logger.Info("---Debugging Inside splitsource tcpsrc[0] = %s and tcpsrc[1]= %s ", tcpSrc[0], tcpSrc[1])
+       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