mirror of
https://github.com/komodorio/helm-dashboard.git
synced 2026-03-24 11:48:04 +00:00
Optimize single release getting (#373)
* Optimize single release getting * Disable unused releases getting * fix build * Remove unused code completely
This commit is contained in:
@@ -23,7 +23,6 @@ import (
|
||||
"gopkg.in/yaml.v3"
|
||||
"helm.sh/helm/v3/pkg/chartutil"
|
||||
"helm.sh/helm/v3/pkg/release"
|
||||
"helm.sh/helm/v3/pkg/repo"
|
||||
helmtime "helm.sh/helm/v3/pkg/time"
|
||||
"k8s.io/utils/strings/slices"
|
||||
)
|
||||
@@ -278,14 +277,6 @@ func (h *HelmHandler) RepoCharts(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
installed, err := app.Releases.List()
|
||||
if err != nil {
|
||||
_ = c.AbortWithError(http.StatusInternalServerError, err)
|
||||
return
|
||||
}
|
||||
|
||||
enrichRepoChartsWithInstalled(charts, installed)
|
||||
|
||||
sort.Slice(charts, func(i, j int) bool {
|
||||
return charts[i].Name < charts[j].Name
|
||||
})
|
||||
@@ -293,19 +284,6 @@ func (h *HelmHandler) RepoCharts(c *gin.Context) {
|
||||
c.IndentedJSON(http.StatusOK, charts)
|
||||
}
|
||||
|
||||
func enrichRepoChartsWithInstalled(charts []*repo.ChartVersion, installed []*objects.Release) {
|
||||
for _, rchart := range charts {
|
||||
for _, rel := range installed {
|
||||
if rchart.Metadata.Name == rel.Orig.Chart.Name() {
|
||||
log.Debugf("Matched") // TODO: restore implementation
|
||||
// TODO: there can be more than one
|
||||
//rchart.InstalledNamespace = rel.Orig.Namespace
|
||||
//rchart.InstalledName = rel.Orig.Name
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (h *HelmHandler) RepoUpdate(c *gin.Context) {
|
||||
app := h.GetApp(c)
|
||||
if app == nil {
|
||||
|
||||
@@ -2,7 +2,6 @@ package objects
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"gopkg.in/yaml.v3"
|
||||
"io"
|
||||
"os"
|
||||
@@ -51,25 +50,26 @@ func (a *Releases) List() ([]*Release, error) {
|
||||
return nil, errorx.Decorate(err, "failed to get list of releases")
|
||||
}
|
||||
for _, r := range rels {
|
||||
releases = append(releases, &Release{HelmConfig: a.HelmConfig, Orig: r, Settings: a.Settings})
|
||||
releases = append(releases, NewRelease(a.HelmConfig, r, a.Settings))
|
||||
}
|
||||
}
|
||||
return releases, nil
|
||||
}
|
||||
|
||||
func (a *Releases) ByName(namespace string, name string) (*Release, error) {
|
||||
rels, err := a.List()
|
||||
log.Debugf("Getting release by ns+name: %s/%s", namespace, name)
|
||||
hc, err := a.HelmConfig(namespace)
|
||||
if err != nil {
|
||||
return nil, errorx.Decorate(err, "failed to get list of releases")
|
||||
return nil, errorx.Decorate(err, "failed to get helm config for namespace '%s'", "")
|
||||
}
|
||||
|
||||
for _, r := range rels {
|
||||
if r.Orig.Namespace == namespace && r.Orig.Name == name {
|
||||
return r, nil
|
||||
}
|
||||
client := action.NewGet(hc)
|
||||
rel, err := client.Run(name)
|
||||
if err != nil {
|
||||
return nil, errorx.Decorate(err, "failed to get helm release")
|
||||
}
|
||||
|
||||
return nil, errorx.DataUnavailable.New(fmt.Sprintf("release '%s' is not found in namespace '%s'", name, namespace))
|
||||
return NewRelease(a.HelmConfig, rel, a.Settings), nil
|
||||
}
|
||||
|
||||
func (a *Releases) Install(namespace string, name string, repoChart string, version string, justTemplate bool, values map[string]interface{}) (*release.Release, error) {
|
||||
@@ -191,7 +191,7 @@ func (r *Release) History() ([]*Release, error) {
|
||||
|
||||
r.revisions = []*Release{}
|
||||
for _, rev := range revs {
|
||||
r.revisions = append(r.revisions, &Release{HelmConfig: r.HelmConfig, Orig: rev, Settings: r.Settings})
|
||||
r.revisions = append(r.revisions, NewRelease(r.HelmConfig, rev, r.Settings))
|
||||
}
|
||||
|
||||
return r.revisions, nil
|
||||
@@ -399,3 +399,11 @@ func checkIfInstallable(ch *chart.Chart) error {
|
||||
}
|
||||
return errors.Errorf("%s charts are not installable", ch.Metadata.Type)
|
||||
}
|
||||
|
||||
func NewRelease(hc HelmNSConfigGetter, orig *release.Release, settings *cli.EnvSettings) *Release {
|
||||
return &Release{
|
||||
HelmConfig: hc,
|
||||
Orig: orig,
|
||||
Settings: settings,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user