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>
Signed-off-by: Aleksei Krugliak <aleksei.krugliak@altenar.com>
pull/31792/head
Luke Reed 5 years ago committed by Aleksei Krugliak
parent fbb8de54be
commit 1f52a0e0e6

@ -81,6 +81,8 @@ type Metadata struct {
Dependencies []*Dependency `json:"dependencies,omitempty"`
// Specifies the chart type: application or library
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
@ -98,6 +100,7 @@ func (md *Metadata) Validate() error {
md.Tags = sanitizeString(md.Tags)
md.AppVersion = sanitizeString(md.AppVersion)
md.KubeVersion = sanitizeString(md.KubeVersion)
md.RepoURL = sanitizeString(md.RepoURL)
for i := range md.Sources {
md.Sources[i] = sanitizeString(md.Sources[i])
}

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

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

@ -197,6 +197,11 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command {
if err != nil {
return err
}
if client.ChartPathOptions.RepoURL != "" {
ch.Metadata.RepoURL = client.ChartPathOptions.RepoURL
} else {
ch.Metadata.RepoURL = "path"
}
ac, err := ci.NewAccessor(ch)
if err != nil {

@ -84,7 +84,8 @@ type ChartDownloader struct {
ContentCache string
// Cache specifies the cache implementation to use.
Cache Cache
Cache Cache
RepositoryURL string
}
// DownloadTo retrieves a chart. Depending on the settings, it may also download a provenance file.
@ -356,12 +357,7 @@ func (c *ChartDownloader) ResolveChartVersion(ref, version string) (string, *url
}
if registry.IsOCI(u.String()) {
if c.RegistryClient == nil {
return "", nil, fmt.Errorf("unable to lookup ref %s at version '%s', missing registry client", ref, version)
}
digest, OCIref, err := c.RegistryClient.ValidateReference(ref, version, u)
return digest, OCIref, err
return c.getOciURI(ref, version, u)
}
rf, err := loadRepoConfig(c.RepositoryConfig)
@ -430,6 +426,9 @@ func (c *ChartDownloader) ResolveChartVersion(ref, version string) (string, *url
}
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 != "" {
c.Options = append(c.Options, getter.WithTLSClientConfig(r.Config.CertFile, r.Config.KeyFile, r.Config.CAFile))
}

Loading…
Cancel
Save