fix(helm): add 'skip-refresh' flag to 'helm init'

This exposes the skip-refresh flag to helm init to make it possible to
initialize Helm without fetching the index.yaml of the stable repo.
This mirrors the behavior of 'helm dep up's skip-refresh flag.

Closes #2127
pull/2145/head
Matt Butcher 9 years ago
parent c1540795b0
commit ba6c55c987
No known key found for this signature in database
GPG Key ID: DCD5F5E5EF32C345

@ -62,16 +62,17 @@ const (
) )
type initCmd struct { type initCmd struct {
image string image string
clientOnly bool clientOnly bool
canary bool canary bool
upgrade bool upgrade bool
namespace string namespace string
dryRun bool dryRun bool
out io.Writer skipRefresh bool
home helmpath.Home out io.Writer
opts installer.Options home helmpath.Home
kubeClient internalclientset.Interface opts installer.Options
kubeClient internalclientset.Interface
} }
func newInitCmd(out io.Writer) *cobra.Command { func newInitCmd(out io.Writer) *cobra.Command {
@ -99,6 +100,7 @@ func newInitCmd(out io.Writer) *cobra.Command {
f.BoolVar(&i.upgrade, "upgrade", false, "upgrade if tiller is already installed") f.BoolVar(&i.upgrade, "upgrade", false, "upgrade if tiller is already installed")
f.BoolVarP(&i.clientOnly, "client-only", "c", false, "if set does not install tiller") f.BoolVarP(&i.clientOnly, "client-only", "c", false, "if set does not install tiller")
f.BoolVar(&i.dryRun, "dry-run", false, "do not install local or remote") f.BoolVar(&i.dryRun, "dry-run", false, "do not install local or remote")
f.BoolVar(&i.skipRefresh, "skip-refresh", false, "do not refresh (download) the local repository cache")
// f.BoolVar(&tlsEnable, "tiller-tls", false, "install tiller with TLS enabled") // f.BoolVar(&tlsEnable, "tiller-tls", false, "install tiller with TLS enabled")
// f.BoolVar(&tlsVerify, "tiller-tls-verify", false, "install tiller with TLS enabled and to verify remote certificates") // f.BoolVar(&tlsVerify, "tiller-tls-verify", false, "install tiller with TLS enabled and to verify remote certificates")
@ -176,7 +178,7 @@ func (i *initCmd) run() error {
if err := ensureDirectories(i.home, i.out); err != nil { if err := ensureDirectories(i.home, i.out); err != nil {
return err return err
} }
if err := ensureDefaultRepos(i.home, i.out); err != nil { if err := ensureDefaultRepos(i.home, i.out, i.skipRefresh); err != nil {
return err return err
} }
if err := ensureRepoFileFormat(i.home.RepositoryFile(), i.out); err != nil { if err := ensureRepoFileFormat(i.home.RepositoryFile(), i.out); err != nil {
@ -242,12 +244,12 @@ func ensureDirectories(home helmpath.Home, out io.Writer) error {
return nil return nil
} }
func ensureDefaultRepos(home helmpath.Home, out io.Writer) error { func ensureDefaultRepos(home helmpath.Home, out io.Writer, skipRefresh bool) error {
repoFile := home.RepositoryFile() repoFile := home.RepositoryFile()
if fi, err := os.Stat(repoFile); err != nil { if fi, err := os.Stat(repoFile); err != nil {
fmt.Fprintf(out, "Creating %s \n", repoFile) fmt.Fprintf(out, "Creating %s \n", repoFile)
f := repo.NewRepoFile() f := repo.NewRepoFile()
sr, err := initStableRepo(home.CacheIndex(stableRepository)) sr, err := initStableRepo(home.CacheIndex(stableRepository), skipRefresh)
if err != nil { if err != nil {
return err return err
} }
@ -266,7 +268,7 @@ func ensureDefaultRepos(home helmpath.Home, out io.Writer) error {
return nil return nil
} }
func initStableRepo(cacheFile string) (*repo.Entry, error) { func initStableRepo(cacheFile string, skipRefresh bool) (*repo.Entry, error) {
c := repo.Entry{ c := repo.Entry{
Name: stableRepository, Name: stableRepository,
URL: stableRepositoryURL, URL: stableRepositoryURL,
@ -277,6 +279,10 @@ func initStableRepo(cacheFile string) (*repo.Entry, error) {
return nil, err return nil, err
} }
if skipRefresh {
return &c, nil
}
// In this case, the cacheFile is always absolute. So passing empty string // In this case, the cacheFile is always absolute. So passing empty string
// is safe. // is safe.
if err := r.DownloadIndexFile(""); err != nil { if err := r.DownloadIndexFile(""); err != nil {

@ -179,7 +179,10 @@ func TestEnsureHome(t *testing.T) {
if err := ensureDirectories(hh, b); err != nil { if err := ensureDirectories(hh, b); err != nil {
t.Error(err) t.Error(err)
} }
if err := ensureDefaultRepos(hh, b); err != nil { if err := ensureDefaultRepos(hh, b, false); err != nil {
t.Error(err)
}
if err := ensureDefaultRepos(hh, b, true); err != nil {
t.Error(err) t.Error(err)
} }
if err := ensureRepoFileFormat(hh.RepositoryFile(), b); err != nil { if err := ensureRepoFileFormat(hh.RepositoryFile(), b); err != nil {

@ -161,7 +161,6 @@ func (r *ChartRepository) DownloadIndexFile(cachePath string) error {
if !filepath.IsAbs(cp) { if !filepath.IsAbs(cp) {
cp = filepath.Join(cachePath, cp) cp = filepath.Join(cachePath, cp)
} }
println("Writing to", cp)
return ioutil.WriteFile(cp, index, 0644) return ioutil.WriteFile(cp, index, 0644)
} }

Loading…
Cancel
Save