X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2Fclients%2Frouting_manager_client.go;h=318b7cff4f119273d1b27858d365f3a80ebabb2e;hb=refs%2Fchanges%2F73%2F2173%2F1;hp=7679ccaa1099caf8cde450d0159f5047939af062;hpb=f846c5987cd35da745534e26ac3a22bdcf8b030a;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/clients/routing_manager_client.go b/E2Manager/clients/routing_manager_client.go index 7679cca..318b7cf 100644 --- a/E2Manager/clients/routing_manager_client.go +++ b/E2Manager/clients/routing_manager_client.go @@ -33,12 +33,13 @@ 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 { @@ -49,7 +50,7 @@ type IRoutingManagerClient interface { DeleteE2TInstance(e2tAddress string, ransToBeDissociated []string, e2tToRansAssociations map[string][]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, @@ -62,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 { @@ -70,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 { @@ -78,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 { @@ -86,15 +87,17 @@ 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) DeleteE2TInstance(e2tAddress string, ransToBeDissociated []string, e2tToRansAssociations map[string][]string) error { - //TODO - here should be the call to routing-manager... - return nil +func (c *RoutingManagerClient) DeleteE2TInstance(e2tAddress string, ransTobeDissociated []string, e2tToRansAssociations map[string][]string) error { + e2tDataList := convertE2TToRansAssociationsMapToE2TDataList(e2tToRansAssociations) + data := models.NewRoutingManagerDeleteRequestModel(e2tAddress, ransTobeDissociated, e2tDataList) + url := c.config.RoutingManager.BaseUrl + DeleteE2TInstanceApiSuffix + return c.DeleteMessage(url, data) } -func (c *RoutingManagerClient) PostMessage(data interface{}, url string) error { +func (c *RoutingManagerClient) sendMessage(method string, url string, data interface{}) error { marshaled, err := json.Marshal(data) if err != nil { @@ -102,26 +105,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)) @@ -131,3 +148,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 +}