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"
|
"gopkg.in/yaml.v3"
|
||||||
"helm.sh/helm/v3/pkg/chartutil"
|
"helm.sh/helm/v3/pkg/chartutil"
|
||||||
"helm.sh/helm/v3/pkg/release"
|
"helm.sh/helm/v3/pkg/release"
|
||||||
"helm.sh/helm/v3/pkg/repo"
|
|
||||||
helmtime "helm.sh/helm/v3/pkg/time"
|
helmtime "helm.sh/helm/v3/pkg/time"
|
||||||
"k8s.io/utils/strings/slices"
|
"k8s.io/utils/strings/slices"
|
||||||
)
|
)
|
||||||
@@ -278,14 +277,6 @@ func (h *HelmHandler) RepoCharts(c *gin.Context) {
|
|||||||
return
|
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 {
|
sort.Slice(charts, func(i, j int) bool {
|
||||||
return charts[i].Name < charts[j].Name
|
return charts[i].Name < charts[j].Name
|
||||||
})
|
})
|
||||||
@@ -293,19 +284,6 @@ func (h *HelmHandler) RepoCharts(c *gin.Context) {
|
|||||||
c.IndentedJSON(http.StatusOK, charts)
|
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) {
|
func (h *HelmHandler) RepoUpdate(c *gin.Context) {
|
||||||
app := h.GetApp(c)
|
app := h.GetApp(c)
|
||||||
if app == nil {
|
if app == nil {
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package objects
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
|
||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
@@ -51,25 +50,26 @@ func (a *Releases) List() ([]*Release, error) {
|
|||||||
return nil, errorx.Decorate(err, "failed to get list of releases")
|
return nil, errorx.Decorate(err, "failed to get list of releases")
|
||||||
}
|
}
|
||||||
for _, r := range rels {
|
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
|
return releases, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *Releases) ByName(namespace string, name string) (*Release, error) {
|
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 {
|
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 {
|
client := action.NewGet(hc)
|
||||||
if r.Orig.Namespace == namespace && r.Orig.Name == name {
|
rel, err := client.Run(name)
|
||||||
return r, nil
|
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) {
|
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{}
|
r.revisions = []*Release{}
|
||||||
for _, rev := range revs {
|
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
|
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)
|
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