get:
produces:
- application/json
- - application/gzip
parameters:
- in: path
name: xApp_name
type: string
responses:
'200':
- description: Get helm chart package OK
+ description: Get helm chart details OK
schema:
- type: file
+ type: object
'500':
- description: Get helm chart package failed
+ description: Get helm chart details failed
schema:
$ref: '#/definitions/error_message'
tags:
mock-server: "127.0.0.1:9191"
getCharts-url: "http://127.0.0.1:9191"
download-charts-url-format: "http://127.0.0.1:9191/helmrepo/charts/%s-%s.tgz"
-getCharts-by-name-url: "http://127.0.0.1:9191/helmrepo/api/charts/%s"
\ No newline at end of file
+getCharts-by-name-url: "http://127.0.0.1:9191/helmrepo/api/charts/%s"
+getCharts-by-name-and-version-url: "http://127.0.0.1:9191/helmrepo/api/charts/%s/%s"
\ No newline at end of file
onborder-url: "http://service-ricplt-xapp-onboarder-http.ricplt:8888/api/v1/onboard"
getCharts-url: "http://service-ricplt-xapp-onboarder-http.ricplt:8080/api/charts"
download-charts-url-format: "http://service-ricplt-xapp-onboarder-http.ricplt:8080/charts/%s-%s.tgz"
-getCharts-by-name-url: "http://172.17.0.1:9100/helmrepo/api/charts/%s"
\ No newline at end of file
+getCharts-by-name-url: "http://172.17.0.1:9100/helmrepo/api/charts/%s"
+getCharts-by-name-and-version-url: "http://172.17.0.1:9100/helmrepo/api/charts/%s/%s"
\ No newline at end of file
GetCharts() (string, error)
DownloadChart(string, string) (io.ReadCloser, error)
GetChartsByName(name string) ([]map[string]interface{}, error)
+ GetChartsByNameAndVersion(name, version string) (map[string]interface{}, error)
}
func NewChartmgr() IChartMgr {
}
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
+}
)
type Conf struct {
- LogLevel string `yaml:"log-level"`
- OnboardURL string `yaml:"onborder-url"`
- GetChartsURL string `yaml:"getCharts-url"`
- GetChartsByxAppNameURL string `yaml:"getCharts-by-name-url"`
- DownloadChartURLFormat string `yaml:"download-charts-url-format"`
- MockServer string `yaml:"mock-server"`
+ LogLevel string `yaml:"log-level"`
+ OnboardURL string `yaml:"onborder-url"`
+ GetChartsURL string `yaml:"getCharts-url"`
+ GetChartsByxAppNameURL string `yaml:"getCharts-by-name-url"`
+ GetChartsByNameAndVersionURL string `yaml:"getCharts-by-name-and-version-url"`
+ DownloadChartURLFormat string `yaml:"download-charts-url-format"`
+ MockServer string `yaml:"mock-server"`
}
func ReadConfiguration(configFile string) (c *Conf, err error) {
return resp
})
+ api.ChartsGetChartsFetcherHandler = charts.GetChartsFetcherHandlerFunc(func(param charts.GetChartsFetcherParams) middleware.Responder {
+ ricdms.Logger.Debug("==> Get Charts by name and version is invoked")
+ resp := r.rh.GetChartByNameAndVersion(param.XAppName, param.Version)
+ return resp
+ })
+
r.api = api
}
--- /dev/null
+{
+ "name": "hw-go",
+ "version": "1.0.0",
+ "description": "Standard xApp Helm Chart",
+ "apiVersion": "v1",
+ "appVersion": "1.0",
+ "urls": [
+ "charts/hw-go-1.0.0.tgz"
+ ],
+ "created": "2022-09-19T08:12:55.54057053Z",
+ "digest": "f155d6c356bdcd1e3bcc1dd3df080e25a62b6e8ee32c289c5f20dec1af9c96de"
+ }
\ No newline at end of file
return charts.NewGetChartOK().WithPayload(response)
}
+
+func (rh *Resthook) GetChartByNameAndVersion(name, version string) middleware.Responder {
+ ricdms.Logger.Debug("GetChartByNameAndVersion is invoked")
+ resp, err := rh.ChartMgr.GetChartsByNameAndVersion(name, version)
+
+ if err != nil {
+ return charts.NewGetChartsFetcherInternalServerError()
+ }
+
+ return charts.NewGetChartsFetcherOK().WithPayload(resp)
+}
assert.IsType(t, &charts.GetChartOK{}, resp, "response did not match type")
}
+func TestGetChartsByNameAndVersion(t *testing.T) {
+ svr := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ ricdms.Logger.Debug("request received by mock to get chart by name and version")
+ path, _ := filepath.Abs("./mocks/resp-get-charts-by-name-and-ver.json")
+ file, err := os.Open(path)
+
+ if err != nil {
+ ricdms.Logger.Error("error in reading file: %v", err)
+ }
+
+ jsonData, err := io.ReadAll(file)
+ if err != nil {
+ ricdms.Logger.Error("Error in rading file: %v", err)
+ }
+ w.Write(jsonData)
+ }))
+
+ svr.Listener.Close()
+ svr.Listener, _ = net.Listen("tcp", ricdms.Config.MockServer)
+
+ svr.Start()
+ defer svr.Close()
+
+ resp := rh.GetChartByNameAndVersion("Test", "1.0.0")
+ ricdms.Logger.Debug("resp data: %s", resp.(*charts.GetChartsFetcherOK).Payload)
+ assert.IsType(t, &charts.GetChartsFetcherOK{}, resp, "response did not match type")
+}
+
type HealthCheckerMock struct {
mock.Mock
}