X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2Fclients%2Frouting_manager_client.go;h=c584f5bac9c00527324d3b7ab5afb5ba1dd0c4eb;hb=refs%2Fchanges%2F92%2F2092%2F1;hp=af31cdf1141f58434d93abf0c597c41edacd61d6;hpb=219c5386a3ad46c4646bd5a4f45389a42db065c0;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/clients/routing_manager_client.go b/E2Manager/clients/routing_manager_client.go index af31cdf..c584f5b 100644 --- a/E2Manager/clients/routing_manager_client.go +++ b/E2Manager/clients/routing_manager_client.go @@ -17,7 +17,6 @@ // This source code is part of the near-RT RIC (RAN Intelligent Controller) // platform project (RICP). - package clients import ( @@ -27,13 +26,13 @@ import ( "e2mgr/logger" "e2mgr/models" "encoding/json" - "fmt" - "io/ioutil" "net/http" ) const ( - AddE2TInstanceApiSuffix = "e2t" + AddE2TInstanceApiSuffix = "e2t" + AssociateRanToE2TInstanceApiSuffix = "associate-ran-to-e2t" + DissociateRanE2TInstanceApiSuffix = "dissociate-ran" ) type RoutingManagerClient struct { @@ -44,6 +43,8 @@ type RoutingManagerClient struct { type IRoutingManagerClient interface { AddE2TInstance(e2tAddress string) error + AssociateRanToE2TInstance(e2tAddress string, ranName string) error + DissociateRanE2TInstance(e2tAddress string, ranName string) error } func NewRoutingManagerClient(logger *logger.Logger, config *configuration.Configuration, httpClient HttpClient) *RoutingManagerClient { @@ -55,37 +56,53 @@ func NewRoutingManagerClient(logger *logger.Logger, config *configuration.Config } func (c *RoutingManagerClient) AddE2TInstance(e2tAddress string) error { + data := models.NewRoutingManagerE2TData(e2tAddress) + url := c.config.RoutingManager.BaseUrl + AddE2TInstanceApiSuffix + + return c.PostMessage(data, url) +} + +func (c *RoutingManagerClient) AssociateRanToE2TInstance(e2tAddress string, ranName string) error { + + data := models.NewRoutingManagerE2TData(e2tAddress, ranName) + url := c.config.RoutingManager.BaseUrl + AssociateRanToE2TInstanceApiSuffix + + return c.PostMessage(data, url) +} + +func (c *RoutingManagerClient) DissociateRanE2TInstance(e2tAddress string, ranName string) error { + data := models.NewRoutingManagerE2TData(e2tAddress, ranName) + url := c.config.RoutingManager.BaseUrl + DissociateRanE2TInstanceApiSuffix + + return c.PostMessage(data, url) +} + +func (c *RoutingManagerClient) PostMessage(data *models.RoutingManagerE2TData, url string) error { marshaled, err := json.Marshal(data) if err != nil { - return e2managererrors.NewRoutingManagerError(err) + return e2managererrors.NewRoutingManagerError() } body := bytes.NewBuffer(marshaled) - c.logger.Infof("[E2M -> Routing Manager] #RoutingManagerClient.AddE2TInstance - request body: %+v", body) + c.logger.Infof("[E2M -> Routing Manager] #RoutingManagerClient.PostMessage - url: %s, request body: %+v", url, body) - url := c.config.RoutingManagerBaseUrl + AddE2TInstanceApiSuffix resp, err := c.httpClient.Post(url, "application/json", body) if err != nil { - return e2managererrors.NewRoutingManagerError(err) + c.logger.Errorf("#RoutingManagerClient.PostMessage - failed sending request. error: %s", err) + return e2managererrors.NewRoutingManagerError() } defer resp.Body.Close() - respBody, err := ioutil.ReadAll(resp.Body) - - if err != nil { - return e2managererrors.NewRoutingManagerError(err) - } - - if resp.StatusCode != http.StatusOK { // TODO: shall we check for != 201? - c.logger.Errorf("[Routing Manager -> E2M] #RoutingManagerClient.AddE2TInstance - failure. http status code: %d, response body: %s", resp.StatusCode, string(respBody)) - return e2managererrors.NewRoutingManagerError(fmt.Errorf("Invalid data")) // TODO: which error shall we return? + if resp.StatusCode >= http.StatusOK && resp.StatusCode < http.StatusMultipleChoices { + c.logger.Infof("[Routing Manager -> E2M] #RoutingManagerClient.PostMessage - success. http status code: %d", resp.StatusCode) + return nil } - c.logger.Infof("[Routing Manager -> E2M] #RoutingManagerClient.AddE2TInstance - success. http status code: %d, response body: %s", resp.StatusCode, string(respBody)) - return nil -} + c.logger.Errorf("[Routing Manager -> E2M] #RoutingManagerClient.PostMessage - failure. http status code: %d", resp.StatusCode) + return e2managererrors.NewRoutingManagerError() +} \ No newline at end of file