Merge pull request #6255 from waveywaves/fix/6237

(fix/issue-6237) Add check to see if connected to the kubernetes cluster
pull/6353/head
Matt Farina 6 years ago committed by GitHub
commit 01adf0d7a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -38,5 +38,9 @@ func NewGet(cfg *Configuration) *Get {
// Run executes 'helm get' against the given release.
func (g *Get) Run(name string) (*release.Release, error) {
if err := g.cfg.KubeClient.IsReachable(); err != nil {
return nil, err
}
return g.cfg.releaseContent(name, g.Version)
}

@ -41,6 +41,10 @@ func NewHistory(cfg *Configuration) *History {
// Run executes 'helm history' against the given release.
func (h *History) Run(name string) ([]*release.Release, error) {
if err := h.cfg.KubeClient.IsReachable(); err != nil {
return nil, err
}
if err := validateReleaseName(name); err != nil {
return nil, errors.Errorf("release name is invalid: %s", name)
}

@ -107,6 +107,10 @@ func NewInstall(cfg *Configuration) *Install {
//
// If DryRun is set to true, this will prepare the release, but not install it
func (i *Install) Run(chrt *chart.Chart, vals map[string]interface{}) (*release.Release, error) {
if err := i.cfg.KubeClient.IsReachable(); err != nil {
return nil, err
}
if err := i.availableName(); err != nil {
return nil, err
}

@ -140,6 +140,10 @@ func NewList(cfg *Configuration) *List {
// Run executes the list command, returning a set of matches.
func (l *List) Run() ([]*release.Release, error) {
if err := l.cfg.KubeClient.IsReachable(); err != nil {
return nil, err
}
var filter *regexp.Regexp
if l.Filter != "" {
var err error

@ -50,6 +50,10 @@ func NewRollback(cfg *Configuration) *Rollback {
// Run executes 'helm rollback' against the given release.
func (r *Rollback) Run(name string) error {
if err := r.cfg.KubeClient.IsReachable(); err != nil {
return err
}
r.cfg.Log("preparing rollback of %s", name)
currentRelease, targetRelease, err := r.prepareRollback(name)
if err != nil {

@ -39,5 +39,9 @@ func NewStatus(cfg *Configuration) *Status {
// Run executes 'helm status' against the given release.
func (s *Status) Run(name string) (*release.Release, error) {
if err := s.cfg.KubeClient.IsReachable(); err != nil {
return nil, err
}
return s.cfg.releaseContent(name, s.Version)
}

@ -47,6 +47,10 @@ func NewUninstall(cfg *Configuration) *Uninstall {
// Run uninstalls the given release.
func (u *Uninstall) Run(name string) (*release.UninstallReleaseResponse, error) {
if err := u.cfg.KubeClient.IsReachable(); err != nil {
return nil, err
}
if u.DryRun {
// In the dry run case, just see if the release exists
r, err := u.cfg.releaseContent(name, 0)

@ -63,6 +63,16 @@ func New(getter genericclioptions.RESTClientGetter) *Client {
var nopLogger = func(_ string, _ ...interface{}) {}
// Test connectivity to the Client
func (c *Client) IsReachable() error {
client, _ := c.Factory.KubernetesClientSet()
_, err := client.ServerVersion()
if err != nil {
return errors.New("Kubernetes cluster unreachable")
}
return nil
}
// Create creates Kubernetes resources specified in the resource list.
func (c *Client) Create(resources ResourceList) (*Result, error) {
c.Log("creating %d resource(s)", len(resources))

@ -33,6 +33,11 @@ type PrintingKubeClient struct {
Out io.Writer
}
// isReachable checks if the cluster is reachable
func (p *PrintingKubeClient) IsReachable() error {
return nil
}
// Create prints the values of what would be created with a real KubeClient.
func (p *PrintingKubeClient) Create(resources kube.ResourceList) (*kube.Result, error) {
_, err := io.Copy(p.Out, bufferize(resources))

@ -56,6 +56,9 @@ type Interface interface {
// WaitAndGetCompletedPodPhase waits up to a timeout until a pod enters a completed phase
// and returns said phase (PodSucceeded or PodFailed qualify).
WaitAndGetCompletedPodPhase(name string, timeout time.Duration) (v1.PodPhase, error)
// isReachable checks whether the client is able to connect to the cluster
IsReachable() error
}
var _ Interface = (*Client)(nil)

Loading…
Cancel
Save