From 31f1f0fd0df7aeee5242ae5bcc527c47187eedc4 Mon Sep 17 00:00:00 2001 From: sauman Date: Wed, 1 Feb 2017 13:01:36 +0600 Subject: [PATCH] Rollback error fix --- pkg/helm/client.go | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/pkg/helm/client.go b/pkg/helm/client.go index a2e67e339..ada600c28 100644 --- a/pkg/helm/client.go +++ b/pkg/helm/client.go @@ -37,6 +37,7 @@ import ( "math/rand" "strconv" "time" + "errors" ) // Client manages client side of the helm-tiller protocol @@ -337,14 +338,14 @@ func (h *Client) install(ctx context.Context, req *rls.InstallReleaseRequest) (* // Executes tiller.UninstallRelease RPC. func (h *Client) delete(ctx context.Context, namespace string, req *rls.UninstallReleaseRequest) (*rls.UninstallReleaseResponse, error) { -/* c, err := grpc.Dial(h.opts.host, grpc.WithInsecure()) - if err != nil { - return nil, err - } - defer c.Close() + /* c, err := grpc.Dial(h.opts.host, grpc.WithInsecure()) + if err != nil { + return nil, err + } + defer c.Close() - rlc := rls.NewReleaseServiceClient(c) - return rlc.UninstallRelease(ctx, req)*/ + rlc := rls.NewReleaseServiceClient(c) + return rlc.UninstallRelease(ctx, req)*/ resp := &rls.UninstallReleaseResponse{} client, err := getRESTClient() // TODO handle response @@ -414,7 +415,12 @@ func (h *Client) rollback(ctx context.Context, namespace string, req *rls.Rollba if err != nil { return resp, err } + extClient, err := getRESTClient() client, err := clientset.NewForConfig(config) + err = extClient.RESTClient().Get().Namespace(namespace).Resource("releases").Name(req.Name).Do().Error() + if err != nil { + return resp, errors.New("Release not found") + } event, err := makeEventForRollBack(req) event.ObjectMeta.Namespace = namespace event.InvolvedObject.Namespace = namespace @@ -423,11 +429,14 @@ func (h *Client) rollback(ctx context.Context, namespace string, req *rls.Rollba if err != nil { return resp, err } - _, err = client.Core().Events(namespace).Create(event) // TODO namespace + err = extClient.RESTClient().Get().Namespace(namespace).Resource("releaseversions").Name(event.InvolvedObject.Name).Do().Error() + if err != nil { + return resp, errors.New("Release Version not found") + } + _, err = client.Core().Events(namespace).Create(event) if err != nil { return resp, err } - // TODO make response return resp, nil } @@ -449,8 +458,7 @@ func (h *Client) status(ctx context.Context, namespace string, req *rls.GetRelea } duration := time.Duration(2) * time.Second release := new(hapi.Release) - err = client.RESTClient().Get().Namespace(namespace).Resource("releases").Name(req.Name).Do().Into(release) // TODO handle namespace - + err = client.RESTClient().Get().Namespace(namespace).Resource("releases").Name(req.Name).Do().Into(release) if err != nil { return resp, err } @@ -459,7 +467,7 @@ func (h *Client) status(ctx context.Context, namespace string, req *rls.GetRelea name := req.Name + "-v" + strconv.Itoa(int(v)) for i := 0; i <= 20; i++ { - err = client.RESTClient().Get().Namespace(namespace).Resource("releaseversions").Name(name).Do().Into(releaseVersion) // TODO handle namespace + err = client.RESTClient().Get().Namespace(namespace).Resource("releaseversions").Name(name).Do().Into(releaseVersion) if err != nil { time.Sleep(duration) continue