1 //==================================================================================
2 // Copyright (c) 2022 Samsung
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://www.apache.org/licenses/LICENSE-2.0
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
16 // This source code is part of the near-RT RIC (RAN Intelligent Controller)
17 // platform project (RICP).
18 //==================================================================================
30 "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/ricdms"
33 type ChartMgr struct {
36 type IChartMgr interface {
37 GetCharts() (string, error)
38 DownloadChart(string, string) (io.ReadCloser, error)
39 GetChartsByName(name string) ([]map[string]interface{}, error)
40 GetChartsByNameAndVersion(name, version string) (map[string]interface{}, error)
43 func NewChartmgr() IChartMgr {
47 func (c *ChartMgr) GetCharts() (string, error) {
48 ricdms.Logger.Debug("GetCharts invoked")
50 resp, err := http.Get(ricdms.Config.GetChartsURL)
52 ricdms.Logger.Debug("Error in getting charts : %+v", err)
56 defer resp.Body.Close()
57 respByte, err := ioutil.ReadAll(resp.Body)
60 ricdms.Logger.Debug("error in response: %+v", respByte)
64 ricdms.Logger.Debug("response : %+v", string(respByte))
65 return string(respByte), nil
68 func (c *ChartMgr) DownloadChart(chartName string, version string) (io.ReadCloser, error) {
69 ricdms.Logger.Debug("Download Charts invoked")
71 if chartName == "" || version == "" {
72 return nil, fmt.Errorf("chartname or version is empty")
75 ChartURL := fmt.Sprintf(ricdms.Config.DownloadChartURLFormat, chartName, version)
77 resp, err := http.Get(ChartURL)
82 return resp.Request.Body, nil
85 func (c *ChartMgr) GetChartsByName(name string) ([]map[string]interface{}, error) {
86 ricdms.Logger.Debug("Get Chart by xApp name is invoked")
89 return make([]map[string]interface{}, 0), fmt.Errorf("xAppname is empty")
92 URL := fmt.Sprintf(ricdms.Config.GetChartsByxAppNameURL, name)
94 response, err := http.Get(URL)
96 ricdms.Logger.Error("error: %v", err)
97 return make([]map[string]interface{}, 0), err
100 defer response.Body.Close()
101 data, err := ioutil.ReadAll(response.Body)
104 ricdms.Logger.Debug("Reading response failed with err : %v", err)
105 return make([]map[string]interface{}, 0), err
108 v := make([]map[string]interface{}, 0)
109 err = json.Unmarshal(data, &v)
111 ricdms.Logger.Debug("Error while parsing res: %v", err)
112 return make([]map[string]interface{}, 0), err
117 func (c *ChartMgr) GetChartsByNameAndVersion(name, version string) (map[string]interface{}, error) {
118 ricdms.Logger.Debug("Get Charts by name and version is invoked")
120 if name == "" || version == "" {
121 return make(map[string]interface{}, 0), fmt.Errorf("name or version is not provided")
124 URL := fmt.Sprintf(ricdms.Config.GetChartsByNameAndVersionURL, name, version)
126 response, err := http.Get(URL)
128 ricdms.Logger.Debug("error in retrieving chart: %v", err)
129 return make(map[string]interface{}, 0), err
132 defer response.Body.Close()
133 data, err := ioutil.ReadAll(response.Body)
136 ricdms.Logger.Debug("error in reading response: %v", err)
137 return make(map[string]interface{}, 0), err
140 v := make(map[string]interface{}, 0)
141 err = json.Unmarshal(data, &v)
143 ricdms.Logger.Debug("error in parsing response: %v", err)
144 return make(map[string]interface{}, 0), err