populate chart metadata with a repoURL field

Signed-off-by: Luke Reed <luke@lreed.net>

support OCI registries as well

Signed-off-by: Luke Reed <luke@lreed.net>

revert changes to DownloadTo function and implement using the ChartDownloader object instead

Signed-off-by: Luke Reed <luke@lreed.net>

make sure update will still update repoURL

Signed-off-by: Luke Reed <luke@lreed.net>
Signed-off-by: Andy Suderman <andy@suderman.dev>

Set the repository URL to path if a URL is not found

Signed-off-by: Andy Suderman <andy@suderman.dev>

Fixes

Signed-off-by: Andy Suderman <andy@suderman.dev>
pull/11378/head
Luke Reed 3 years ago committed by Andy Suderman
parent 03911aeab7
commit 799c1b6c13
No known key found for this signature in database
GPG Key ID: 9C9CAE7EC2133DB7

@ -228,6 +228,12 @@ func runInstall(args []string, client *action.Install, valueOpts *values.Options
return nil, err return nil, err
} }
if client.ChartPathOptions.RepoURL != "" {
chartRequested.Metadata.RepoURL = client.ChartPathOptions.RepoURL
} else {
chartRequested.Metadata.RepoURL = "path"
}
if err := checkIfInstallable(chartRequested); err != nil { if err := checkIfInstallable(chartRequested); err != nil {
return nil, err return nil, err
} }

@ -158,6 +158,11 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command {
if err != nil { if err != nil {
return err return err
} }
if client.ChartPathOptions.RepoURL != "" {
ch.Metadata.RepoURL = client.ChartPathOptions.RepoURL
} else {
ch.Metadata.RepoURL = "path"
}
if req := ch.Metadata.Dependencies; req != nil { if req := ch.Metadata.Dependencies; req != nil {
if err := action.CheckDependencies(ch, req); err != nil { if err := action.CheckDependencies(ch, req); err != nil {
err = errors.Wrap(err, "An error occurred while checking for chart dependencies. You may need to run `helm dependency build` to fetch missing dependencies") err = errors.Wrap(err, "An error occurred while checking for chart dependencies. You may need to run `helm dependency build` to fetch missing dependencies")

@ -785,6 +785,7 @@ func (c *ChartPathOptions) LocateChart(name string, settings *cli.EnvSettings) (
if err != nil { if err != nil {
return "", err return "", err
} }
c.RepoURL = dl.RepositoryURL
lname, err := filepath.Abs(filename) lname, err := filepath.Abs(filename)
if err != nil { if err != nil {

@ -80,6 +80,8 @@ type Metadata struct {
Dependencies []*Dependency `json:"dependencies,omitempty"` Dependencies []*Dependency `json:"dependencies,omitempty"`
// Specifies the chart type: application or library // Specifies the chart type: application or library
Type string `json:"type,omitempty"` Type string `json:"type,omitempty"`
// Specifies the chart URL that was used to initially install a chart.
RepoURL string `json:"repoURL,omitempty"`
} }
// Validate checks the metadata for known issues and sanitizes string // Validate checks the metadata for known issues and sanitizes string
@ -97,6 +99,7 @@ func (md *Metadata) Validate() error {
md.Tags = sanitizeString(md.Tags) md.Tags = sanitizeString(md.Tags)
md.AppVersion = sanitizeString(md.AppVersion) md.AppVersion = sanitizeString(md.AppVersion)
md.KubeVersion = sanitizeString(md.KubeVersion) md.KubeVersion = sanitizeString(md.KubeVersion)
md.RepoURL = sanitizeString(md.RepoURL)
for i := range md.Sources { for i := range md.Sources {
md.Sources[i] = sanitizeString(md.Sources[i]) md.Sources[i] = sanitizeString(md.Sources[i])
} }

@ -73,6 +73,7 @@ type ChartDownloader struct {
RegistryClient *registry.Client RegistryClient *registry.Client
RepositoryConfig string RepositoryConfig string
RepositoryCache string RepositoryCache string
RepositoryURL string
} }
// DownloadTo retrieves a chart. Depending on the settings, it may also download a provenance file. // DownloadTo retrieves a chart. Depending on the settings, it may also download a provenance file.
@ -196,6 +197,7 @@ func (c *ChartDownloader) ResolveChartVersion(ref, version string) (*url.URL, er
} }
if registry.IsOCI(u.String()) { if registry.IsOCI(u.String()) {
c.RepositoryURL = ref
return c.getOciURI(ref, version, u) return c.getOciURI(ref, version, u)
} }
@ -266,6 +268,9 @@ func (c *ChartDownloader) ResolveChartVersion(ref, version string) (*url.URL, er
} }
if r != nil && r.Config != nil { if r != nil && r.Config != nil {
if r.Config.URL != "" {
c.RepositoryURL = r.Config.URL
}
if r.Config.CertFile != "" || r.Config.KeyFile != "" || r.Config.CAFile != "" { if r.Config.CertFile != "" || r.Config.KeyFile != "" || r.Config.CAFile != "" {
c.Options = append(c.Options, getter.WithTLSClientConfig(r.Config.CertFile, r.Config.KeyFile, r.Config.CAFile)) c.Options = append(c.Options, getter.WithTLSClientConfig(r.Config.CertFile, r.Config.KeyFile, r.Config.CAFile))
} }

Loading…
Cancel
Save