Add more details to list response

pull/8423/head
ys.achinta 5 years ago
parent c6e84e14c7
commit 8455818e31

@ -28,7 +28,12 @@ func startServer() {
actionUpgrade := action.NewUpgrade(app.ActionConfig)
actionHistory := action.NewHistory(app.ActionConfig)
service := api.NewService(app.Config, new(action.ChartPathOptions), api.NewList(actionList), api.NewInstall(actionInstall), api.NewUpgrader(actionUpgrade), api.NewHistory(actionHistory))
service := api.NewService(app.Config,
new(action.ChartPathOptions),
api.NewList(actionList),
api.NewInstall(actionInstall),
api.NewUpgrader(actionUpgrade),
api.NewHistory(actionHistory))
router.Handle("/ping", ping.Handler())
router.Handle("/list", api.List(service))

@ -2,9 +2,10 @@ package api
import (
"encoding/json"
"net/http"
"helm.sh/helm/v3/pkg/api/logger"
"helm.sh/helm/v3/pkg/release"
"helm.sh/helm/v3/pkg/time"
"net/http"
)
type ListRequest struct {
@ -14,12 +15,17 @@ type ListRequest struct {
type ListResponse struct {
Error string `json:"error,omitempty"`
Releases []Release
Releases []Release `json:"releases,omitempty"`
}
type Release struct {
Name string `json:"release"`
Name string `json:"name"`
Namespace string `json:"namespace"`
Revision int `json:"revision"`
Updated time.Time `json:"updated_at,omitempty"`
Status release.Status `json:"status"`
Chart string `json:"chart"`
AppVersion string `json:"app_version"`
}
func List(svc Service) http.Handler {

@ -161,7 +161,14 @@ func (s Service) List(releaseStatus string) ([]Release, error) {
var helmReleases []Release
for _, eachRes := range releases {
r := Release{Name: eachRes.Name, Namespace: eachRes.Namespace}
r := Release{Name: eachRes.Name,
Namespace: eachRes.Namespace,
Revision: eachRes.Version,
Updated: eachRes.Info.LastDeployed,
Status: eachRes.Info.Status,
Chart: fmt.Sprintf("%s-%s", eachRes.Chart.Metadata.Name, eachRes.Chart.Metadata.Version),
AppVersion: eachRes.Chart.Metadata.AppVersion,
}
helmReleases = append(helmReleases, r)
}

@ -3,6 +3,7 @@ package api_test
import (
"context"
"errors"
"helm.sh/helm/v3/pkg/time"
"testing"
"helm.sh/helm/v3/pkg/action"
@ -285,6 +286,10 @@ func (s *ServiceTestSuite) TestListShouldReturnErrorOnFailureOfListRun() {
}
func (s *ServiceTestSuite) TestListShouldReturnAllReleasesIfNoFilterIsPassed() {
layout := "2006-01-02T15:04:05.000Z"
str := "2014-11-12T11:45:26.371Z"
timeFromStr, err := time.Parse(layout, str)
s.lister.On("SetState", action.ListAll)
s.lister.On("SetStateMask")
@ -292,7 +297,10 @@ func (s *ServiceTestSuite) TestListShouldReturnAllReleasesIfNoFilterIsPassed() {
releases = append(releases,
&release.Release{Name: "test-release",
Namespace: "test-namespace",
Info: &release.Info{Status: release.StatusDeployed}})
Info: &release.Info{Status: release.StatusDeployed, LastDeployed: timeFromStr},
Version: 1,
Chart: &chart.Chart{Metadata: &chart.Metadata{Name: "test-release", Version: "0.1", AppVersion: "0.1"}},
})
s.lister.On("Run").Return(releases, nil)
@ -304,11 +312,23 @@ func (s *ServiceTestSuite) TestListShouldReturnAllReleasesIfNoFilterIsPassed() {
require.NotNil(t, res)
var response []api.Release
response = append(response, api.Release{"test-release", "test-namespace"})
assert.Equal(t, len(res), 1)
response = append(response, api.Release{Name: "test-release",
Namespace: "test-namespace",
Revision: 1,
Updated: timeFromStr,
Status: release.StatusDeployed,
Chart: "test-release-0.1",
AppVersion: "0.1",
})
assert.Equal(t, 1, len(res))
assert.Equal(t, "test-release", response[0].Name)
assert.Equal(t, "test-namespace", response[0].Namespace)
assert.Equal(t, 1, response[0].Revision)
assert.Equal(t, timeFromStr, response[0].Updated)
assert.Equal(t, release.StatusDeployed, response[0].Status)
assert.Equal(t, "test-release-0.1", response[0].Chart)
assert.Equal(t, "0.1", response[0].AppVersion)
s.lister.AssertExpectations(t)
}

Loading…
Cancel
Save