blob: 0f6f7aff712307c422e9738c896716256c322462 [file] [log] [blame]
subhash kumar singh6e8d9702022-10-06 13:08:26 +00001//==================================================================================
2// Copyright (c) 2022 Samsung
3//
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
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
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.
15//
16// This source code is part of the near-RT RIC (RAN Intelligent Controller)
17// platform project (RICP).
18//==================================================================================
19//
20
21package charts
22
23import (
subhash kumar singhe3ac46a2022-10-12 11:58:52 +000024 "encoding/json"
subhash kumar singhf8dc81b2022-10-10 18:21:51 +000025 "fmt"
26 "io"
subhash kumar singh6e8d9702022-10-06 13:08:26 +000027 "io/ioutil"
28 "net/http"
29
30 "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/ricdms"
31)
32
33type ChartMgr struct {
34}
35
36type IChartMgr interface {
37 GetCharts() (string, error)
subhash kumar singhf8dc81b2022-10-10 18:21:51 +000038 DownloadChart(string, string) (io.ReadCloser, error)
subhash kumar singhe3ac46a2022-10-12 11:58:52 +000039 GetChartsByName(name string) ([]map[string]interface{}, error)
subhash kumar singh6e8d9702022-10-06 13:08:26 +000040}
41
42func NewChartmgr() IChartMgr {
43 return &ChartMgr{}
44}
45
46func (c *ChartMgr) GetCharts() (string, error) {
47 ricdms.Logger.Debug("GetCharts invoked")
48
49 resp, err := http.Get(ricdms.Config.GetChartsURL)
50 if err != nil {
51 ricdms.Logger.Debug("Error in getting charts : %+v", err)
52 return "", err
53 }
54
55 defer resp.Body.Close()
56 respByte, err := ioutil.ReadAll(resp.Body)
57
58 if err != nil {
59 ricdms.Logger.Debug("error in response: %+v", respByte)
60 return "", err
61 }
62
63 ricdms.Logger.Debug("response : %+v", string(respByte))
64 return string(respByte), nil
65}
subhash kumar singhf8dc81b2022-10-10 18:21:51 +000066
67func (c *ChartMgr) DownloadChart(chartName string, version string) (io.ReadCloser, error) {
68 ricdms.Logger.Debug("Download Charts invoked")
69
70 if chartName == "" || version == "" {
71 return nil, fmt.Errorf("chartname or version is empty")
72 }
73
74 ChartURL := fmt.Sprintf(ricdms.Config.DownloadChartURLFormat, chartName, version)
75
76 resp, err := http.Get(ChartURL)
77 if err != nil {
78 return nil, err
79 }
80
81 return resp.Request.Body, nil
82}
subhash kumar singhe3ac46a2022-10-12 11:58:52 +000083
84func (c *ChartMgr) GetChartsByName(name string) ([]map[string]interface{}, error) {
85 ricdms.Logger.Debug("Get Chart by xApp name is invoked")
86
87 if name == "" {
88 return make([]map[string]interface{}, 0), fmt.Errorf("xAppname is empty")
89 }
90
91 URL := fmt.Sprintf(ricdms.Config.GetChartsByxAppNameURL, name)
92
93 response, err := http.Get(URL)
94 if err != nil {
95 ricdms.Logger.Error("error: %v", err)
96 return make([]map[string]interface{}, 0), err
97 }
98
99 defer response.Body.Close()
100 data, err := ioutil.ReadAll(response.Body)
101
102 if err != nil {
103 ricdms.Logger.Debug("Reading response failed with err : %v", err)
104 return make([]map[string]interface{}, 0), err
105 }
106
107 v := make([]map[string]interface{}, 0)
108 err = json.Unmarshal(data, &v)
109 if err != nil {
110 ricdms.Logger.Debug("Error while parsing res: %v", err)
111 return make([]map[string]interface{}, 0), err
112 }
113 return v, nil
114}