pull/1908/head
sauman 9 years ago
parent 2e27f2c85d
commit f973168ff9

@ -40,6 +40,7 @@ type deleteCmd struct {
disableHooks bool disableHooks bool
purge bool purge bool
timeout int64 timeout int64
namespace string
out io.Writer out io.Writer
client helm.Interface client helm.Interface
@ -75,6 +76,7 @@ func newDeleteCmd(c helm.Interface, out io.Writer) *cobra.Command {
} }
f := cmd.Flags() f := cmd.Flags()
f.StringVar(&del.namespace, "namespace", "default", "namespace to uninstall the release")
f.BoolVar(&del.dryRun, "dry-run", false, "simulate a delete") f.BoolVar(&del.dryRun, "dry-run", false, "simulate a delete")
f.BoolVar(&del.disableHooks, "no-hooks", false, "prevent hooks from running during deletion") f.BoolVar(&del.disableHooks, "no-hooks", false, "prevent hooks from running during deletion")
f.BoolVar(&del.purge, "purge", false, "remove the release from the store and make its name free for later use") f.BoolVar(&del.purge, "purge", false, "remove the release from the store and make its name free for later use")
@ -90,7 +92,7 @@ func (d *deleteCmd) run() error {
helm.DeletePurge(d.purge), helm.DeletePurge(d.purge),
helm.DeleteTimeout(d.timeout), helm.DeleteTimeout(d.timeout),
} }
res, err := d.client.DeleteRelease(d.name, opts...) res, err := d.client.DeleteRelease(d.name, d.namespace, opts...)
if res != nil && res.Info != "" { if res != nil && res.Info != "" {
fmt.Fprintln(d.out, res.Info) fmt.Fprintln(d.out, res.Info)
} }

@ -204,12 +204,16 @@ func (i *installCmd) run() error {
return prettyError(err) return prettyError(err)
} }
rel := res.GetRelease()
/* rel := res.GetRelease()
if rel == nil {
return nil
}*/
rel := res.Release
if rel == nil { if rel == nil {
return nil return nil
} }
i.printRelease(rel) i.printRelease(rel)
// If this is a dry run, we can't display status. // If this is a dry run, we can't display status.
if i.dryRun { if i.dryRun {
return nil return nil

@ -108,7 +108,7 @@ func (h *Client) InstallRelease(chstr, ns string, opts ...InstallOption) (*rls.I
} }
// DeleteRelease uninstalls a named release and returns the response. // DeleteRelease uninstalls a named release and returns the response.
func (h *Client) DeleteRelease(rlsName string, opts ...DeleteOption) (*rls.UninstallReleaseResponse, error) { func (h *Client) DeleteRelease(rlsName string, namespace string, opts ...DeleteOption) (*rls.UninstallReleaseResponse, error) {
// apply the uninstall options // apply the uninstall options
for _, opt := range opts { for _, opt := range opts {
opt(&h.opts) opt(&h.opts)
@ -133,7 +133,7 @@ func (h *Client) DeleteRelease(rlsName string, opts ...DeleteOption) (*rls.Unins
return nil, err return nil, err
} }
} }
return h.delete(ctx, req) return h.delete(ctx, namespace, req)
} }
// UpdateRelease updates a release to a new/different chart // UpdateRelease updates a release to a new/different chart
@ -279,12 +279,13 @@ func (h *Client) install(ctx context.Context, req *rls.InstallReleaseRequest) (*
return rlc.InstallRelease(ctx, req)*/ return rlc.InstallRelease(ctx, req)*/
resp := &rls.InstallReleaseResponse{} resp := &rls.InstallReleaseResponse{}
releaseObj := makeReleaseObject(req) releaseObj := makeReleaseObject(req)
releaseObj.Spec.Version = 1
release := new(hapi.Release) release := new(hapi.Release)
client, err := getRESTClient() client, err := getRESTClient()
if err != nil { if err != nil {
return resp, err return resp, err
} }
err = client.RESTClient().Post().Namespace(releaseObj.Namespace).Resource("releases").Body(releaseObj).Do().Into(release) err = client.RESTClient().Post().Namespace(req.Namespace).Resource("releases").Body(releaseObj).Do().Into(release)
if err != nil { if err != nil {
return resp, err return resp, err
} }
@ -302,19 +303,19 @@ func (h *Client) install(ctx context.Context, req *rls.InstallReleaseRequest) (*
} }
// Executes tiller.UninstallRelease RPC. // Executes tiller.UninstallRelease RPC.
func (h *Client) delete(ctx context.Context, req *rls.UninstallReleaseRequest) (*rls.UninstallReleaseResponse, error) { func (h *Client) delete(ctx context.Context,namespace string, req *rls.UninstallReleaseRequest) (*rls.UninstallReleaseResponse, error) {
/* c, err := grpc.Dial(h.opts.host, grpc.WithInsecure()) c, err := grpc.Dial(h.opts.host, grpc.WithInsecure())
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer c.Close() defer c.Close()
rlc := rls.NewReleaseServiceClient(c) rlc := rls.NewReleaseServiceClient(c)
return rlc.UninstallRelease(ctx, req)*/ return rlc.UninstallRelease(ctx, req)
resp := &rls.UninstallReleaseResponse{} resp := &rls.UninstallReleaseResponse{}
client, err := getRESTClient() client, err := getRESTClient()
// TODO handle response // TODO handle response
err = client.RESTClient().Delete().Namespace("default").Resource("releases").Name(req.Name).Do().Error() // TODO handle namespace err = client.RESTClient().Delete().Namespace(namespace).Resource("releases").Name(req.Name).Do().Error() // TODO handle namespace
if err != nil { if err != nil {
return resp, err return resp, err
} }
@ -395,14 +396,48 @@ func (h *Client) rollback(ctx context.Context, req *rls.RollbackReleaseRequest)
// Executes tiller.GetReleaseStatus RPC. // Executes tiller.GetReleaseStatus RPC.
func (h *Client) status(ctx context.Context, req *rls.GetReleaseStatusRequest) (*rls.GetReleaseStatusResponse, error) { func (h *Client) status(ctx context.Context, req *rls.GetReleaseStatusRequest) (*rls.GetReleaseStatusResponse, error) {
c, err := grpc.Dial(h.opts.host, grpc.WithInsecure()) /* c, err := grpc.Dial(h.opts.host, grpc.WithInsecure())
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer c.Close() defer c.Close()
rlc := rls.NewReleaseServiceClient(c) rlc := rls.NewReleaseServiceClient(c)
return rlc.GetReleaseStatus(ctx, req) return rlc.GetReleaseStatus(ctx, req)*/
resp := &rls.GetReleaseStatusResponse{}
client, err := getRESTClient()
if err != nil {
return resp, err
}
release := new(hapi.Release)
err = client.RESTClient().Get().Namespace("default").Resource("releases").Name(req.Name).Do().Into(release) // TODO handle namespace
if err != nil {
return resp, err
}
v := release.Spec.Version
releaseVersion := new(hapi.ReleaseVersion)
name := req.Name + "-v" + strconv.Itoa(int(v))
duration :=time.Duration(5) * time.Second
for i:=0;i<=10;i++ {
time.Sleep(duration)
err = client.RESTClient().Get().Namespace("default").Resource("releaseversions").Name(name).Do().Into(releaseVersion) // TODO handle namespace
if err != nil {
continue
}else {
break
}
}
if err != nil {
return resp, err
}
resp.Name = release.Name
resp.Namespace = release.Namespace
resp.Info = new(rs.Info)
resp.Info.Status = releaseVersion.Status.Status
/* *resp.Info.FirstDeployed = releaseVersion.Status.FirstDeployed //TODO
*resp.Info.LastDeployed = releaseVersion.Status.LastDeployed
*resp.Info.Deleted = releaseVersion.Status.Deleted*/
return resp, nil
} }
// Executes tiller.GetReleaseContent RPC. // Executes tiller.GetReleaseContent RPC.

@ -24,7 +24,7 @@ import (
type Interface interface { type Interface interface {
ListReleases(opts ...ReleaseListOption) (*rls.ListReleasesResponse, error) ListReleases(opts ...ReleaseListOption) (*rls.ListReleasesResponse, error)
InstallRelease(chStr, namespace string, opts ...InstallOption) (*rls.InstallReleaseResponse, error) InstallRelease(chStr, namespace string, opts ...InstallOption) (*rls.InstallReleaseResponse, error)
DeleteRelease(rlsName string, opts ...DeleteOption) (*rls.UninstallReleaseResponse, error) DeleteRelease(rlsName string, namespace string, opts ...DeleteOption) (*rls.UninstallReleaseResponse, error)
ReleaseStatus(rlsName string, opts ...StatusOption) (*rls.GetReleaseStatusResponse, error) ReleaseStatus(rlsName string, opts ...StatusOption) (*rls.GetReleaseStatusResponse, error)
UpdateRelease(rlsName, chStr string, opts ...UpdateOption) (*rls.UpdateReleaseResponse, error) UpdateRelease(rlsName, chStr string, opts ...UpdateOption) (*rls.UpdateReleaseResponse, error)
RollbackRelease(rlsName string, opts ...RollbackOption) (*rls.RollbackReleaseResponse, error) RollbackRelease(rlsName string, opts ...RollbackOption) (*rls.RollbackReleaseResponse, error)

@ -93,17 +93,17 @@ type ReleaseVersion struct {
unversioned.TypeMeta `json:",inline,omitempty"` unversioned.TypeMeta `json:",inline,omitempty"`
api.ObjectMeta `json:"metadata,omitempty"` api.ObjectMeta `json:"metadata,omitempty"`
Spec ReleaseVersionSpec `json:"spec,omitempty"` Spec ReleaseVersionSpec `json:"spec,omitempty"`
Status ReleaseVersionStatus `json:"status,omitempty"` Status ReleaseStatus `json:"status,omitempty"`
} }
type ReleaseVersionSpec struct { type ReleaseVersionSpec struct {
ReleaseSpec ReleaseSpec `json:"inline,omitempty"` ReleaseSpec ReleaseSpec `json:"inline,omitempty"`
} }
type ReleaseVersionStatus struct { /*type ReleaseVersionStatus struct {
Status *hapi_release.Status `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"` Status *hapi_release.Status `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"`
Deployed unversioned.Time `protobuf:"bytes,2,opt,name=deployed" json:"deployed,omitempty"` Deployed unversioned.Time `protobuf:"bytes,2,opt,name=deployed" json:"deployed,omitempty"`
} }*/
type ReleaseVersionList struct { type ReleaseVersionList struct {
unversioned.TypeMeta `json:",inline"` unversioned.TypeMeta `json:",inline"`

Loading…
Cancel
Save