Include version for release
[ric-plt/ricdms.git] / pkg / charts / chart_manager.go
index 0f6f7af..e78238d 100644 (file)
@@ -34,22 +34,23 @@ type ChartMgr struct {
 }
 
 type IChartMgr interface {
-       GetCharts() (string, error)
-       DownloadChart(string, string) (io.ReadCloser, 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()
@@ -57,11 +58,14 @@ 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) {
@@ -78,7 +82,7 @@ func (c *ChartMgr) DownloadChart(chartName string, version string) (io.ReadClose
                return nil, err
        }
 
-       return resp.Request.Body, nil
+       return resp.Body, nil
 }
 
 func (c *ChartMgr) GetChartsByName(name string) ([]map[string]interface{}, error) {
@@ -112,3 +116,36 @@ func (c *ChartMgr) GetChartsByName(name string) ([]map[string]interface{}, error
        }
        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
+}