X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fcharts%2Fchart_manager.go;h=e78238dbabb5477f7a23b9d5d36a261fb5326919;hb=b0e549aa3da1398ee8fa0967926b361768e12542;hp=252b2dc35ec65aa46fa60d8463cd713ea8d5f574;hpb=6e8d970e6ec582bd4473c3fbb6772906658608ca;p=ric-plt%2Fricdms.git diff --git a/pkg/charts/chart_manager.go b/pkg/charts/chart_manager.go index 252b2dc..e78238d 100644 --- a/pkg/charts/chart_manager.go +++ b/pkg/charts/chart_manager.go @@ -21,6 +21,9 @@ package charts import ( + "encoding/json" + "fmt" + "io" "io/ioutil" "net/http" @@ -31,20 +34,23 @@ type ChartMgr struct { } type IChartMgr interface { - GetCharts() (string, error) + GetCharts() (map[string]interface{}, error) + DownloadChart(chartName string, version string) (io.ReadCloser, error) + GetChartsByName(name string) ([]map[string]interface{}, error) + GetChartsByNameAndVersion(name, version string) (map[string]interface{}, error) } func NewChartmgr() IChartMgr { return &ChartMgr{} } -func (c *ChartMgr) GetCharts() (string, error) { +func (c *ChartMgr) GetCharts() (map[string]interface{}, error) { ricdms.Logger.Debug("GetCharts invoked") resp, err := http.Get(ricdms.Config.GetChartsURL) if err != nil { ricdms.Logger.Debug("Error in getting charts : %+v", err) - return "", err + return make(map[string]interface{}, 0), err } defer resp.Body.Close() @@ -52,9 +58,94 @@ func (c *ChartMgr) GetCharts() (string, error) { if err != nil { ricdms.Logger.Debug("error in response: %+v", respByte) - return "", err + return make(map[string]interface{}, 0), err } ricdms.Logger.Debug("response : %+v", string(respByte)) - return string(respByte), nil + + v := make(map[string]interface{}, 0) + json.Unmarshal(respByte, &v) + return v, nil +} + +func (c *ChartMgr) DownloadChart(chartName string, version string) (io.ReadCloser, error) { + ricdms.Logger.Debug("Download Charts invoked") + + if chartName == "" || version == "" { + return nil, fmt.Errorf("chartname or version is empty") + } + + ChartURL := fmt.Sprintf(ricdms.Config.DownloadChartURLFormat, chartName, version) + + resp, err := http.Get(ChartURL) + if err != nil { + return nil, err + } + + return resp.Body, nil +} + +func (c *ChartMgr) GetChartsByName(name string) ([]map[string]interface{}, error) { + ricdms.Logger.Debug("Get Chart by xApp name is invoked") + + if name == "" { + return make([]map[string]interface{}, 0), fmt.Errorf("xAppname is empty") + } + + URL := fmt.Sprintf(ricdms.Config.GetChartsByxAppNameURL, name) + + response, err := http.Get(URL) + if err != nil { + ricdms.Logger.Error("error: %v", err) + return make([]map[string]interface{}, 0), err + } + + defer response.Body.Close() + data, err := ioutil.ReadAll(response.Body) + + if err != nil { + ricdms.Logger.Debug("Reading response failed with err : %v", err) + return make([]map[string]interface{}, 0), err + } + + v := make([]map[string]interface{}, 0) + err = json.Unmarshal(data, &v) + if err != nil { + ricdms.Logger.Debug("Error while parsing res: %v", err) + return make([]map[string]interface{}, 0), err + } + return v, nil +} + +func (c *ChartMgr) GetChartsByNameAndVersion(name, version string) (map[string]interface{}, error) { + ricdms.Logger.Debug("Get Charts by name and version is invoked") + + if name == "" || version == "" { + return make(map[string]interface{}, 0), fmt.Errorf("name or version is not provided") + } + + URL := fmt.Sprintf(ricdms.Config.GetChartsByNameAndVersionURL, name, version) + + response, err := http.Get(URL) + if err != nil { + ricdms.Logger.Debug("error in retrieving chart: %v", err) + return make(map[string]interface{}, 0), err + } + + defer response.Body.Close() + data, err := ioutil.ReadAll(response.Body) + + if err != nil { + ricdms.Logger.Debug("error in reading response: %v", err) + return make(map[string]interface{}, 0), err + } + + v := make(map[string]interface{}, 0) + err = json.Unmarshal(data, &v) + if err != nil { + ricdms.Logger.Debug("error in parsing response: %v", err) + return make(map[string]interface{}, 0), err + } + + return v, nil }