package charts
import (
+ "encoding/json"
+ "fmt"
+ "io"
"io/ioutil"
"net/http"
}
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()
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
}