namespace added

pull/1908/head
sauman 9 years ago
parent f973168ff9
commit c3f5d4f501

@ -220,7 +220,7 @@ func (i *installCmd) run() error {
} }
// Print the status like status command does // Print the status like status command does
status, err := i.client.ReleaseStatus(rel.Name) status, err := i.client.ReleaseStatus(rel.Name, rel.Namespace)
if err != nil { if err != nil {
return prettyError(err) return prettyError(err)
} }

@ -36,6 +36,7 @@ second is a revision (version) number. To see revision numbers, run
type rollbackCmd struct { type rollbackCmd struct {
name string name string
namespace string
revision int32 revision int32
dryRun bool dryRun bool
recreate bool recreate bool
@ -76,6 +77,7 @@ func newRollbackCmd(c helm.Interface, out io.Writer) *cobra.Command {
f := cmd.Flags() f := cmd.Flags()
f.BoolVar(&rollback.dryRun, "dry-run", false, "simulate a rollback") f.BoolVar(&rollback.dryRun, "dry-run", false, "simulate a rollback")
f.StringVar(&rollback.namespace, "namespace", "default", "namespace of the release")
f.BoolVar(&rollback.recreate, "recreate-pods", false, "performs pods restart for the resource if applicable") f.BoolVar(&rollback.recreate, "recreate-pods", false, "performs pods restart for the resource if applicable")
f.BoolVar(&rollback.disableHooks, "no-hooks", false, "prevent hooks from running during rollback") f.BoolVar(&rollback.disableHooks, "no-hooks", false, "prevent hooks from running during rollback")
f.Int64Var(&rollback.timeout, "timeout", 300, "time in seconds to wait for any individual kubernetes operation (like Jobs for hooks)") f.Int64Var(&rollback.timeout, "timeout", 300, "time in seconds to wait for any individual kubernetes operation (like Jobs for hooks)")
@ -86,6 +88,7 @@ func newRollbackCmd(c helm.Interface, out io.Writer) *cobra.Command {
func (r *rollbackCmd) run() error { func (r *rollbackCmd) run() error {
_, err := r.client.RollbackRelease( _, err := r.client.RollbackRelease(
r.name, r.name,
r.namespace,
helm.RollbackDryRun(r.dryRun), helm.RollbackDryRun(r.dryRun),
helm.RollbackRecreate(r.recreate), helm.RollbackRecreate(r.recreate),
helm.RollbackDisableHooks(r.disableHooks), helm.RollbackDisableHooks(r.disableHooks),

@ -33,6 +33,7 @@ This command shows the status of a named release.
type statusCmd struct { type statusCmd struct {
release string release string
namespace string
out io.Writer out io.Writer
client helm.Interface client helm.Interface
version int32 version int32
@ -62,12 +63,13 @@ func newStatusCmd(client helm.Interface, out io.Writer) *cobra.Command {
} }
cmd.PersistentFlags().Int32Var(&status.version, "revision", 0, "if set, display the status of the named release with revision") cmd.PersistentFlags().Int32Var(&status.version, "revision", 0, "if set, display the status of the named release with revision")
cmd.PersistentFlags().StringVar(&status.namespace, "namespace", "default", "namespace of the release")
return cmd return cmd
} }
func (s *statusCmd) run() error { func (s *statusCmd) run() error {
res, err := s.client.ReleaseStatus(s.release, helm.StatusReleaseVersion(s.version)) res, err := s.client.ReleaseStatus(s.release, s.namespace, helm.StatusReleaseVersion(s.version))
if err != nil { if err != nil {
return prettyError(err) return prettyError(err)
} }

@ -152,6 +152,7 @@ func (u *upgradeCmd) run() error {
resp, err := u.client.UpdateRelease( resp, err := u.client.UpdateRelease(
u.release, u.release,
chartPath, chartPath,
u.namespace,
helm.UpdateValueOverrides(rawVals), helm.UpdateValueOverrides(rawVals),
helm.UpgradeDryRun(u.dryRun), helm.UpgradeDryRun(u.dryRun),
helm.UpgradeRecreate(u.recreate), helm.UpgradeRecreate(u.recreate),
@ -168,7 +169,7 @@ func (u *upgradeCmd) run() error {
fmt.Fprintf(u.out, "Release %q has been upgraded. Happy Helming!\n", u.release) fmt.Fprintf(u.out, "Release %q has been upgraded. Happy Helming!\n", u.release)
// Print the status like status command does // Print the status like status command does
status, err := u.client.ReleaseStatus(u.release) status, err := u.client.ReleaseStatus(u.release, u.namespace)
if err != nil { if err != nil {
return prettyError(err) return prettyError(err)
} }

@ -32,8 +32,8 @@ import (
"k8s.io/kubernetes/pkg/client/restclient" "k8s.io/kubernetes/pkg/client/restclient"
rest "k8s.io/kubernetes/pkg/client/restclient" rest "k8s.io/kubernetes/pkg/client/restclient"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd" "k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
"strconv"
"math/rand" "math/rand"
"strconv"
"time" "time"
) )
@ -41,6 +41,7 @@ import (
func init() { func init() {
rand.Seed(time.Now().UnixNano()) rand.Seed(time.Now().UnixNano())
} }
type Client struct { type Client struct {
opts options opts options
} }
@ -137,7 +138,7 @@ func (h *Client) DeleteRelease(rlsName string, namespace string, opts ...DeleteO
} }
// UpdateRelease updates a release to a new/different chart // UpdateRelease updates a release to a new/different chart
func (h *Client) UpdateRelease(rlsName string, chstr string, opts ...UpdateOption) (*rls.UpdateReleaseResponse, error) { func (h *Client) UpdateRelease(rlsName string, chstr string,namespace string, opts ...UpdateOption) (*rls.UpdateReleaseResponse, error) {
// load the chart to update // load the chart to update
chart, err := chartutil.Load(chstr) chart, err := chartutil.Load(chstr)
if err != nil { if err != nil {
@ -161,7 +162,7 @@ func (h *Client) UpdateRelease(rlsName string, chstr string, opts ...UpdateOptio
return nil, err return nil, err
} }
} }
return h.update(ctx, req) return h.update(ctx, namespace, req)
} }
// GetVersion returns the server version // GetVersion returns the server version
@ -181,7 +182,7 @@ func (h *Client) GetVersion(opts ...VersionOption) (*rls.GetVersionResponse, err
} }
// RollbackRelease rolls back a release to the previous version // RollbackRelease rolls back a release to the previous version
func (h *Client) RollbackRelease(rlsName string, opts ...RollbackOption) (*rls.RollbackReleaseResponse, error) { func (h *Client) RollbackRelease(rlsName string,namespace string, opts ...RollbackOption) (*rls.RollbackReleaseResponse, error) {
for _, opt := range opts { for _, opt := range opts {
opt(&h.opts) opt(&h.opts)
} }
@ -196,11 +197,11 @@ func (h *Client) RollbackRelease(rlsName string, opts ...RollbackOption) (*rls.R
return nil, err return nil, err
} }
} }
return h.rollback(ctx, req) return h.rollback(ctx, namespace, req)
} }
// ReleaseStatus returns the given release's status. // ReleaseStatus returns the given release's status.
func (h *Client) ReleaseStatus(rlsName string, opts ...StatusOption) (*rls.GetReleaseStatusResponse, error) { func (h *Client) ReleaseStatus(rlsName string, namespace string, opts ...StatusOption) (*rls.GetReleaseStatusResponse, error) {
for _, opt := range opts { for _, opt := range opts {
opt(&h.opts) opt(&h.opts)
} }
@ -213,7 +214,7 @@ func (h *Client) ReleaseStatus(rlsName string, opts ...StatusOption) (*rls.GetRe
return nil, err return nil, err
} }
} }
return h.status(ctx, req) return h.status(ctx, namespace, req)
} }
// ReleaseContent returns the configuration for a given release. // ReleaseContent returns the configuration for a given release.
@ -315,7 +316,8 @@ func (h *Client) delete(ctx context.Context,namespace string, req *rls.Uninstall
resp := &rls.UninstallReleaseResponse{} resp := &rls.UninstallReleaseResponse{}
client, err := getRESTClient() client, err := getRESTClient()
// TODO handle response // TODO handle response
err = client.RESTClient().Delete().Namespace(namespace).Resource("releases").Name(req.Name).Do().Error() // TODO handle namespace release := new(hapi.Release)
err = client.RESTClient().Delete().Namespace(namespace).Resource("releases").Name(req.Name).Do().Into(release)
if err != nil { if err != nil {
return resp, err return resp, err
} }
@ -323,7 +325,7 @@ func (h *Client) delete(ctx context.Context,namespace string, req *rls.Uninstall
} }
// Executes tiller.UpdateRelease RPC. // Executes tiller.UpdateRelease RPC.
func (h *Client) update(ctx context.Context, req *rls.UpdateReleaseRequest) (*rls.UpdateReleaseResponse, error) { func (h *Client) update(ctx context.Context,namespace string, req *rls.UpdateReleaseRequest) (*rls.UpdateReleaseResponse, 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
@ -336,7 +338,7 @@ func (h *Client) update(ctx context.Context, req *rls.UpdateReleaseRequest) (*rl
client, err := getRESTClient() client, err := getRESTClient()
// get the release // get the release
release := new(hapi.Release) release := new(hapi.Release)
err = client.RESTClient().Get().Namespace("default").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) // TODO handle namespace
if err != nil { if err != nil {
return resp, err return resp, err
} }
@ -346,9 +348,10 @@ func (h *Client) update(ctx context.Context, req *rls.UpdateReleaseRequest) (*rl
release.Spec.Recreate = req.Recreate release.Spec.Recreate = req.Recreate
release.Spec.Timeout = req.Timeout release.Spec.Timeout = req.Timeout
release.Spec.Chart.Inline = req.Chart release.Spec.Chart.Inline = req.Chart
release.Spec.Version = release.Spec.Version
// update the release // update the release
updatedRelease := new(hapi.Release) updatedRelease := new(hapi.Release)
err = client.RESTClient().Put().Namespace(release.Namespace).Resource("releases").Name(release.Name).Body(release).Do().Into(updatedRelease) err = client.RESTClient().Put().Namespace(namespace).Resource("releases").Name(release.Name).Body(release).Do().Into(updatedRelease)
if err != nil { if err != nil {
return resp, err return resp, err
} }
@ -365,7 +368,7 @@ func (h *Client) update(ctx context.Context, req *rls.UpdateReleaseRequest) (*rl
} }
// Executes tiller.RollbackRelease RPC. // Executes tiller.RollbackRelease RPC.
func (h *Client) rollback(ctx context.Context, req *rls.RollbackReleaseRequest) (*rls.RollbackReleaseResponse, error) { func (h *Client) rollback(ctx context.Context, namespace string, req *rls.RollbackReleaseRequest) (*rls.RollbackReleaseResponse, 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
@ -381,12 +384,14 @@ func (h *Client) rollback(ctx context.Context, req *rls.RollbackReleaseRequest)
} }
client, err := clientset.NewForConfig(config) client, err := clientset.NewForConfig(config)
event, err := makeEventForRollBack(req) event, err := makeEventForRollBack(req)
event.ObjectMeta.Namespace = namespace
event.InvolvedObject.Namespace = namespace
event.InvolvedObject.Name = (req.Name + "-v" + strconv.Itoa(int(req.Version))) event.InvolvedObject.Name = (req.Name + "-v" + strconv.Itoa(int(req.Version)))
event.ObjectMeta.Name = event.InvolvedObject.Name + "-" + RandStringRunes(5) event.ObjectMeta.Name = event.InvolvedObject.Name + "-" + RandStringRunes(5)
if err != nil { if err != nil {
return resp, err return resp, err
} }
_, err = client.Core().Events("default").Create(event) // TODO namespace _, err = client.Core().Events(namespace).Create(event) // TODO namespace
if err != nil { if err != nil {
return resp, err return resp, err
} }
@ -395,7 +400,7 @@ 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, namespace string, 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
@ -410,7 +415,7 @@ func (h *Client) status(ctx context.Context, req *rls.GetReleaseStatusRequest) (
return resp, err return resp, err
} }
release := new(hapi.Release) release := new(hapi.Release)
err = client.RESTClient().Get().Namespace("default").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) // TODO handle namespace
if err != nil { if err != nil {
return resp, err return resp, err
} }
@ -420,7 +425,7 @@ func (h *Client) status(ctx context.Context, req *rls.GetReleaseStatusRequest) (
duration := time.Duration(5) * time.Second duration := time.Duration(5) * time.Second
for i := 0; i <= 10; i++ { for i := 0; i <= 10; i++ {
time.Sleep(duration) time.Sleep(duration)
err = client.RESTClient().Get().Namespace("default").Resource("releaseversions").Name(name).Do().Into(releaseVersion) // TODO handle namespace err = client.RESTClient().Get().Namespace(namespace).Resource("releaseversions").Name(name).Do().Into(releaseVersion) // TODO handle namespace
if err != nil { if err != nil {
continue continue
} else { } else {
@ -546,12 +551,8 @@ func makeEventForRollBack(req *rls.RollbackReleaseRequest) (*api.Event, error) {
return &api.Event{}, err return &api.Event{}, err
} }
event := &api.Event{ event := &api.Event{
ObjectMeta: api.ObjectMeta{
Namespace: "default", //TODO handle namespace
},
InvolvedObject: api.ObjectReference{ InvolvedObject: api.ObjectReference{
Kind: "release", Kind: "release",
Namespace: "default", //TODO handle namespace
}, },
Reason: "releaseRollback", Reason: "releaseRollback",
Message: string(message), Message: string(message),
@ -561,7 +562,6 @@ func makeEventForRollBack(req *rls.RollbackReleaseRequest) (*api.Event, error) {
return event, nil return event, nil
} }
var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
func RandStringRunes(n int) string { func RandStringRunes(n int) string {

@ -25,9 +25,9 @@ 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, namespace 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, namespace string, opts ...StatusOption) (*rls.GetReleaseStatusResponse, error)
UpdateRelease(rlsName, chStr string, opts ...UpdateOption) (*rls.UpdateReleaseResponse, error) UpdateRelease(rlsName, chStr string, namespace string, opts ...UpdateOption) (*rls.UpdateReleaseResponse, error)
RollbackRelease(rlsName string, opts ...RollbackOption) (*rls.RollbackReleaseResponse, error) RollbackRelease(rlsName string, namespace string, opts ...RollbackOption) (*rls.RollbackReleaseResponse, error)
ReleaseContent(rlsName string, opts ...ContentOption) (*rls.GetReleaseContentResponse, error) ReleaseContent(rlsName string, opts ...ContentOption) (*rls.GetReleaseContentResponse, error)
ReleaseHistory(rlsName string, opts ...HistoryOption) (*rls.GetHistoryResponse, error) ReleaseHistory(rlsName string, opts ...HistoryOption) (*rls.GetHistoryResponse, error)
GetVersion(opts ...VersionOption) (*rls.GetVersionResponse, error) GetVersion(opts ...VersionOption) (*rls.GetVersionResponse, error)

Loading…
Cancel
Save