X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2Fclients%2Frouting_manager_client.go;h=2625612eea3109fddae1a08f971abf469a6d0ed3;hb=011bb9161ca8e7ad0d0cf282b818672a88a5dfbf;hp=5257d0437125cb6a22d0a5e2b27468055c7bdee0;hpb=1f62f4c6e2746153275b6c3b1e24a705e25b90c0;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/clients/routing_manager_client.go b/E2Manager/clients/routing_manager_client.go index 5257d04..2625612 100644 --- a/E2Manager/clients/routing_manager_client.go +++ b/E2Manager/clients/routing_manager_client.go @@ -33,21 +33,24 @@ const ( AddE2TInstanceApiSuffix = "e2t" AssociateRanToE2TInstanceApiSuffix = "associate-ran-to-e2t" DissociateRanE2TInstanceApiSuffix = "dissociate-ran" + DeleteE2TInstanceApiSuffix = "e2t" ) type RoutingManagerClient struct { logger *logger.Logger config *configuration.Configuration - httpClient HttpClient + httpClient IHttpClient } type IRoutingManagerClient interface { AddE2TInstance(e2tAddress string) error AssociateRanToE2TInstance(e2tAddress string, ranName string) error DissociateRanE2TInstance(e2tAddress string, ranName string) error + DissociateAllRans(e2tAddresses []string) error + DeleteE2TInstance(e2tAddress string, ransToBeDissociated []string) error } -func NewRoutingManagerClient(logger *logger.Logger, config *configuration.Configuration, httpClient HttpClient) *RoutingManagerClient { +func NewRoutingManagerClient(logger *logger.Logger, config *configuration.Configuration, httpClient IHttpClient) *RoutingManagerClient { return &RoutingManagerClient{ logger: logger, config: config, @@ -60,7 +63,7 @@ func (c *RoutingManagerClient) AddE2TInstance(e2tAddress string) error { data := models.NewRoutingManagerE2TData(e2tAddress) url := c.config.RoutingManager.BaseUrl + AddE2TInstanceApiSuffix - return c.PostMessage(data, url) + return c.PostMessage(url, data) } func (c *RoutingManagerClient) AssociateRanToE2TInstance(e2tAddress string, ranName string) error { @@ -68,7 +71,7 @@ func (c *RoutingManagerClient) AssociateRanToE2TInstance(e2tAddress string, ranN data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(e2tAddress, ranName)} url := c.config.RoutingManager.BaseUrl + AssociateRanToE2TInstanceApiSuffix - return c.PostMessage(data, url) + return c.PostMessage(url, data) } func (c *RoutingManagerClient) DissociateRanE2TInstance(e2tAddress string, ranName string) error { @@ -76,7 +79,7 @@ func (c *RoutingManagerClient) DissociateRanE2TInstance(e2tAddress string, ranNa data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(e2tAddress, ranName)} url := c.config.RoutingManager.BaseUrl + DissociateRanE2TInstanceApiSuffix - return c.PostMessage(data, url) + return c.PostMessage(url, data) } func (c *RoutingManagerClient) DissociateAllRans(e2tAddresses []string) error { @@ -84,10 +87,16 @@ func (c *RoutingManagerClient) DissociateAllRans(e2tAddresses []string) error { data := mapE2TAddressesToE2DataList(e2tAddresses) url := c.config.RoutingManager.BaseUrl + DissociateRanE2TInstanceApiSuffix - return c.PostMessage(data, url) + return c.PostMessage(url, data) } -func (c *RoutingManagerClient) PostMessage(data interface{}, url string) error { +func (c *RoutingManagerClient) DeleteE2TInstance(e2tAddress string, ransTobeDissociated []string) error { + data := models.NewRoutingManagerDeleteRequestModel(e2tAddress, ransTobeDissociated, nil) + url := c.config.RoutingManager.BaseUrl + DeleteE2TInstanceApiSuffix + return c.DeleteMessage(url, data) +} + +func (c *RoutingManagerClient) sendMessage(method string, url string, data interface{}) error { marshaled, err := json.Marshal(data) if err != nil { @@ -95,26 +104,40 @@ func (c *RoutingManagerClient) PostMessage(data interface{}, url string) error { } body := bytes.NewBuffer(marshaled) - c.logger.Infof("[E2 Manager -> Routing Manager] #RoutingManagerClient.PostMessage - url: %s, request body: %+v", url, body) + c.logger.Infof("[E2 Manager -> Routing Manager] #RoutingManagerClient.sendMessage - %s url: %s, request body: %+v", method, url, body) - resp, err := c.httpClient.Post(url, "application/json", body) + var resp *http.Response + + if method == http.MethodPost { + resp, err = c.httpClient.Post(url, "application/json", body) + } else if method == http.MethodDelete { + resp, err = c.httpClient.Delete(url, "application/json", body) + } if err != nil { - c.logger.Errorf("#RoutingManagerClient.PostMessage - failed sending request. error: %s", err) + c.logger.Errorf("#RoutingManagerClient.sendMessage - failed sending request. error: %s", err) return e2managererrors.NewRoutingManagerError() } defer resp.Body.Close() if resp.StatusCode >= http.StatusOK && resp.StatusCode < http.StatusMultipleChoices { - c.logger.Infof("[Routing Manager -> E2 Manager] #RoutingManagerClient.PostMessage - success. http status code: %d", resp.StatusCode) + c.logger.Infof("[Routing Manager -> E2 Manager] #RoutingManagerClient.sendMessage - success. http status code: %d", resp.StatusCode) return nil } - c.logger.Errorf("[Routing Manager -> E2 Manager] #RoutingManagerClient.PostMessage - failure. http status code: %d", resp.StatusCode) + c.logger.Errorf("[Routing Manager -> E2 Manager] #RoutingManagerClient.sendMessage - failure. http status code: %d", resp.StatusCode) return e2managererrors.NewRoutingManagerError() } +func (c *RoutingManagerClient) DeleteMessage(url string, data interface{}) error { + return c.sendMessage(http.MethodDelete, url, data) +} + +func (c *RoutingManagerClient) PostMessage(url string, data interface{}) error { + return c.sendMessage(http.MethodPost, url, data) +} + func mapE2TAddressesToE2DataList(e2tAddresses []string) models.RoutingManagerE2TDataList { e2tDataList := make(models.RoutingManagerE2TDataList, len(e2tAddresses)) @@ -124,3 +147,14 @@ func mapE2TAddressesToE2DataList(e2tAddresses []string) models.RoutingManagerE2T return e2tDataList } + +func convertE2TToRansAssociationsMapToE2TDataList(e2tToRansAssociations map[string][]string) models.RoutingManagerE2TDataList { + e2tDataList := make(models.RoutingManagerE2TDataList, len(e2tToRansAssociations)) + i := 0 + for k, v := range e2tToRansAssociations { + e2tDataList[i] = models.NewRoutingManagerE2TData(k, v...) + i++ + } + + return e2tDataList +}