feat(helm): add --reset-values flag to 'helm upgrade'

The --reset-values flag on upgrade instructs Tiller to reset the
upgraded release to the chart's built-in values.yaml, and ignore the
last install's overridden values.

Closes #1569
pull/1814/head
Matt Butcher 8 years ago
parent 6d6e88a86e
commit c32b2ddcdf
No known key found for this signature in database
GPG Key ID: DCD5F5E5EF32C345

@ -192,6 +192,8 @@ message UpdateReleaseRequest {
bool recreate = 6;
// timeout specifies the max amount of time any kubernetes client command can run.
int64 timeout = 7;
// ResetValues will cause Tiller to ignore stored values, resetting to default values.
bool reset_values = 8;
}
// UpdateReleaseResponse is the response to an update request.

@ -64,6 +64,7 @@ type upgradeCmd struct {
namespace string
version string
timeout int64
resetValues bool
}
func newUpgradeCmd(client helm.Interface, out io.Writer) *cobra.Command {
@ -104,6 +105,7 @@ func newUpgradeCmd(client helm.Interface, out io.Writer) *cobra.Command {
f.StringVar(&upgrade.namespace, "namespace", "default", "namespace to install the release into (only used if --install is set)")
f.StringVar(&upgrade.version, "version", "", "specify the exact chart version to use. If this is not specified, the latest version is used")
f.Int64Var(&upgrade.timeout, "timeout", 300, "time in seconds to wait for any individual kubernetes operation (like Jobs for hooks)")
f.BoolVar(&upgrade.resetValues, "reset-values", false, "when upgrading, reset the values to the ones built into the chart")
f.MarkDeprecated("disable-hooks", "use --no-hooks instead")
@ -156,7 +158,8 @@ func (u *upgradeCmd) run() error {
helm.UpgradeDryRun(u.dryRun),
helm.UpgradeRecreate(u.recreate),
helm.UpgradeDisableHooks(u.disableHooks),
helm.UpgradeTimeout(u.timeout))
helm.UpgradeTimeout(u.timeout),
helm.ResetValues(u.resetValues))
if err != nil {
return fmt.Errorf("UPGRADE FAILED: %v", prettyError(err))
}

@ -93,6 +93,13 @@ func TestUpgradeCmd(t *testing.T) {
resp: releaseMock(&releaseOptions{name: "funny-bunny", version: 3, chart: ch2}),
expected: "Release \"funny-bunny\" has been upgraded. Happy Helming!\n",
},
{
name: "upgrade a release with --reset-values",
args: []string{"funny-bunny", chartPath},
flags: []string{"--reset-values", "true"},
resp: releaseMock(&releaseOptions{name: "funny-bunny", version: 4, chart: ch2}),
expected: "Release \"funny-bunny\" has been upgraded. Happy Helming!\n",
},
{
name: "install a release with 'upgrade --install'",
args: []string{"zany-bunny", chartPath},

@ -134,6 +134,7 @@ func (h *Client) UpdateRelease(rlsName string, chstr string, opts ...UpdateOptio
req.Name = rlsName
req.DisableHooks = h.opts.disableHooks
req.Recreate = h.opts.recreate
req.ResetValues = h.opts.resetValues
ctx := NewContext()
if h.opts.before != nil {

@ -64,6 +64,8 @@ type options struct {
before func(context.Context, proto.Message) error
// release history options are applied directly to the get release history request
histReq rls.GetHistoryRequest
// resetValues instructs Tiller to reset values to their defaults.
resetValues bool
}
// Host specifies the host address of the Tiller release server, (default = ":44134").
@ -270,6 +272,12 @@ func UpgradeDryRun(dry bool) UpdateOption {
}
}
func ResetValues(reset bool) UpdateOption {
return func(opts *options) {
opts.resetValues = reset
}
}
// UpgradeRecreate will (if true) recreate pods after upgrade.
func UpgradeRecreate(recreate bool) UpdateOption {
return func(opts *options) {

@ -250,6 +250,8 @@ type UpdateReleaseRequest struct {
Recreate bool `protobuf:"varint,6,opt,name=recreate" json:"recreate,omitempty"`
// timeout specifies the max amount of time any kubernetes client command can run.
Timeout int64 `protobuf:"varint,7,opt,name=timeout" json:"timeout,omitempty"`
// ResetValues will cause Tiller to ignore stored values, resetting to default values.
ResetValues bool `protobuf:"varint,8,opt,name=reset_values,json=resetValues" json:"reset_values,omitempty"`
}
func (m *UpdateReleaseRequest) Reset() { *m = UpdateReleaseRequest{} }
@ -892,72 +894,73 @@ var _ReleaseService_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("hapi/services/tiller.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 1058 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x57, 0xdd, 0x6e, 0xe3, 0xc4,
0x17, 0xaf, 0xf3, 0xe1, 0x24, 0xa7, 0x1f, 0xff, 0x74, 0xb6, 0x1f, 0xae, 0xf5, 0x07, 0x45, 0x46,
0xb0, 0x61, 0x61, 0x53, 0x08, 0x57, 0x48, 0x08, 0xa9, 0x9b, 0x8d, 0xd2, 0x42, 0xc9, 0x4a, 0x0e,
0x05, 0x89, 0x0b, 0x22, 0x37, 0x99, 0x6c, 0xcd, 0x3a, 0x9e, 0xe0, 0x99, 0x54, 0x9b, 0x5b, 0xee,
0x78, 0x00, 0x5e, 0x80, 0xc7, 0xe0, 0xa9, 0x90, 0x78, 0x01, 0xe4, 0xf9, 0x70, 0x33, 0xae, 0x9d,
0x35, 0xb9, 0x89, 0x3d, 0x73, 0xce, 0xfc, 0xce, 0x39, 0xbf, 0x39, 0x1f, 0x0e, 0xd8, 0x77, 0xde,
0xc2, 0x3f, 0xa7, 0x38, 0xba, 0xf7, 0x27, 0x98, 0x9e, 0x33, 0x3f, 0x08, 0x70, 0xd4, 0x59, 0x44,
0x84, 0x11, 0x74, 0x14, 0xcb, 0x3a, 0x4a, 0xd6, 0x11, 0x32, 0xfb, 0x84, 0x9f, 0x98, 0xdc, 0x79,
0x11, 0x13, 0xbf, 0x42, 0xdb, 0x3e, 0x5d, 0xdf, 0x27, 0xe1, 0xcc, 0x7f, 0x2d, 0x05, 0xc2, 0x44,
0x84, 0x03, 0xec, 0x51, 0xac, 0x9e, 0xda, 0x21, 0x25, 0xf3, 0xc3, 0x19, 0x91, 0x82, 0x33, 0x4d,
0x40, 0x99, 0xc7, 0x96, 0x54, 0xc3, 0xbb, 0xc7, 0x11, 0xf5, 0x49, 0xa8, 0x9e, 0x42, 0xe6, 0xfc,
0x59, 0x82, 0x27, 0xd7, 0x3e, 0x65, 0xae, 0x38, 0x48, 0x5d, 0xfc, 0xeb, 0x12, 0x53, 0x86, 0x8e,
0xa0, 0x1a, 0xf8, 0x73, 0x9f, 0x59, 0x46, 0xcb, 0x68, 0x97, 0x5d, 0xb1, 0x40, 0x27, 0x60, 0x92,
0xd9, 0x8c, 0x62, 0x66, 0x95, 0x5a, 0x46, 0xbb, 0xe1, 0xca, 0x15, 0xfa, 0x1a, 0x6a, 0x94, 0x44,
0x6c, 0x7c, 0xbb, 0xb2, 0xca, 0x2d, 0xa3, 0x7d, 0xd0, 0xfd, 0xb0, 0x93, 0x45, 0x45, 0x27, 0xb6,
0x34, 0x22, 0x11, 0xeb, 0xc4, 0x3f, 0x2f, 0x56, 0xae, 0x49, 0xf9, 0x33, 0xc6, 0x9d, 0xf9, 0x01,
0xc3, 0x91, 0x55, 0x11, 0xb8, 0x62, 0x85, 0x06, 0x00, 0x1c, 0x97, 0x44, 0x53, 0x1c, 0x59, 0x55,
0x0e, 0xdd, 0x2e, 0x00, 0xfd, 0x2a, 0xd6, 0x77, 0x1b, 0x54, 0xbd, 0xa2, 0xaf, 0x60, 0x4f, 0x50,
0x32, 0x9e, 0x90, 0x29, 0xa6, 0x96, 0xd9, 0x2a, 0xb7, 0x0f, 0xba, 0x67, 0x02, 0x4a, 0x31, 0x3c,
0x12, 0xa4, 0xf5, 0xc8, 0x14, 0xbb, 0xbb, 0x42, 0x3d, 0x7e, 0xa7, 0xce, 0xcf, 0x50, 0x57, 0xf0,
0x4e, 0x17, 0x4c, 0xe1, 0x3c, 0xda, 0x85, 0xda, 0xcd, 0xf0, 0xdb, 0xe1, 0xab, 0x1f, 0x87, 0xcd,
0x1d, 0x54, 0x87, 0xca, 0xf0, 0xe2, 0xbb, 0x7e, 0xd3, 0x40, 0x87, 0xb0, 0x7f, 0x7d, 0x31, 0xfa,
0x7e, 0xec, 0xf6, 0xaf, 0xfb, 0x17, 0xa3, 0xfe, 0xcb, 0x66, 0xc9, 0x79, 0x1f, 0x1a, 0x89, 0x57,
0xa8, 0x06, 0xe5, 0x8b, 0x51, 0x4f, 0x1c, 0x79, 0xd9, 0x1f, 0xf5, 0x9a, 0x86, 0xf3, 0xbb, 0x01,
0x47, 0xfa, 0x25, 0xd0, 0x05, 0x09, 0x29, 0x8e, 0x6f, 0x61, 0x42, 0x96, 0x61, 0x72, 0x0b, 0x7c,
0x81, 0x10, 0x54, 0x42, 0xfc, 0x56, 0xdd, 0x01, 0x7f, 0x8f, 0x35, 0x19, 0x61, 0x5e, 0xc0, 0xf9,
0x2f, 0xbb, 0x62, 0x81, 0x3e, 0x87, 0xba, 0x0c, 0x8e, 0x5a, 0x95, 0x56, 0xb9, 0xbd, 0xdb, 0x3d,
0xd6, 0x43, 0x96, 0x16, 0xdd, 0x44, 0xcd, 0x19, 0xc0, 0xe9, 0x00, 0x2b, 0x4f, 0x04, 0x23, 0x2a,
0x27, 0x62, 0xbb, 0xde, 0x1c, 0x73, 0x67, 0x62, 0xbb, 0xde, 0x1c, 0x23, 0x0b, 0x6a, 0x32, 0xa1,
0xb8, 0x3b, 0x55, 0x57, 0x2d, 0x1d, 0x06, 0xd6, 0x63, 0x20, 0x19, 0x57, 0x16, 0xd2, 0x47, 0x50,
0x89, 0xd3, 0x99, 0xc3, 0xec, 0x76, 0x91, 0xee, 0xe7, 0x55, 0x38, 0x23, 0x2e, 0x97, 0xa3, 0xff,
0x43, 0x23, 0xd6, 0xa7, 0x0b, 0x6f, 0x82, 0x79, 0xb4, 0x0d, 0xf7, 0x61, 0xc3, 0xb9, 0x5c, 0xb7,
0xda, 0x23, 0x21, 0xc3, 0x21, 0xdb, 0xce, 0xff, 0x6b, 0x38, 0xcb, 0x40, 0x92, 0x01, 0x9c, 0x43,
0x4d, 0xba, 0xc6, 0xd1, 0x72, 0x79, 0x55, 0x5a, 0xce, 0x3f, 0x06, 0x1c, 0xdd, 0x2c, 0xa6, 0x1e,
0xc3, 0x4a, 0xb4, 0xc1, 0xa9, 0xa7, 0x50, 0xe5, 0x6d, 0x41, 0x72, 0x71, 0x28, 0xb0, 0x45, 0xef,
0xe8, 0xc5, 0xbf, 0xae, 0x90, 0xa3, 0x67, 0x60, 0xde, 0x7b, 0xc1, 0x12, 0x53, 0x4e, 0x44, 0xc2,
0x9a, 0xd4, 0xe4, 0x3d, 0xc5, 0x95, 0x1a, 0xe8, 0x14, 0x6a, 0xd3, 0x68, 0x35, 0x8e, 0x96, 0x21,
0x2f, 0xb2, 0xba, 0x6b, 0x4e, 0xa3, 0x95, 0xbb, 0x0c, 0xd1, 0x07, 0xb0, 0x3f, 0xf5, 0xa9, 0x77,
0x1b, 0xe0, 0xf1, 0x1d, 0x21, 0x6f, 0x28, 0xaf, 0xb3, 0xba, 0xbb, 0x27, 0x37, 0x2f, 0xe3, 0x3d,
0x64, 0xc7, 0x99, 0x34, 0x89, 0xb0, 0xc7, 0xb0, 0x65, 0x72, 0x79, 0xb2, 0x8e, 0x39, 0x64, 0xfe,
0x1c, 0x93, 0x25, 0xb3, 0x6a, 0x3c, 0xfb, 0xd4, 0xd2, 0xb9, 0x84, 0xe3, 0x54, 0xd0, 0xdb, 0xf2,
0xf7, 0x97, 0x01, 0x27, 0x2e, 0x09, 0x82, 0x5b, 0x6f, 0xf2, 0xa6, 0x00, 0x83, 0x6b, 0xc1, 0x96,
0x36, 0x07, 0x5b, 0xce, 0x08, 0x76, 0x2d, 0x29, 0x2a, 0x5a, 0x52, 0x68, 0x34, 0x54, 0xf3, 0x69,
0x30, 0x75, 0x1a, 0xbe, 0x81, 0xd3, 0x47, 0xbe, 0x6f, 0x4b, 0xc4, 0x1f, 0x25, 0x38, 0xbe, 0x0a,
0x29, 0xf3, 0x82, 0x20, 0xc5, 0x43, 0x92, 0x35, 0x46, 0xe1, 0xac, 0x29, 0xfd, 0x97, 0xac, 0x29,
0x6b, 0x44, 0x2a, 0xd6, 0x2b, 0x6b, 0xac, 0x17, 0xca, 0x24, 0xad, 0x7e, 0xcd, 0x54, 0xfd, 0xa2,
0xf7, 0x00, 0x22, 0xbc, 0xa4, 0x78, 0xcc, 0xc1, 0x6b, 0xfc, 0x7c, 0x83, 0xef, 0x0c, 0x65, 0xb9,
0x2a, 0x8e, 0xeb, 0x3a, 0xc7, 0x57, 0x70, 0x92, 0xa6, 0x65, 0x5b, 0x8a, 0x7f, 0x33, 0xe0, 0xf4,
0x26, 0xf4, 0x33, 0x49, 0xce, 0x4a, 0xb6, 0x47, 0x61, 0x97, 0x32, 0xc2, 0x3e, 0x82, 0xea, 0x62,
0x19, 0xbd, 0xc6, 0x92, 0x46, 0xb1, 0x58, 0x8f, 0xa7, 0xa2, 0xc7, 0x33, 0x06, 0xeb, 0xb1, 0x0f,
0x5b, 0x46, 0x14, 0x7b, 0x9d, 0xf4, 0xd6, 0x86, 0xe8, 0xa3, 0xce, 0x13, 0x38, 0x1c, 0x60, 0xf6,
0x83, 0x48, 0x6c, 0x19, 0x9e, 0xd3, 0x07, 0xb4, 0xbe, 0xf9, 0x60, 0x4f, 0x6e, 0xe9, 0xf6, 0xd4,
0xa7, 0x84, 0xd2, 0x57, 0x5a, 0xce, 0x97, 0x1c, 0xfb, 0xd2, 0xa7, 0x8c, 0x44, 0xab, 0x4d, 0xd4,
0x35, 0xa1, 0x3c, 0xf7, 0xde, 0xca, 0xd6, 0x1b, 0xbf, 0x3a, 0x03, 0xee, 0x41, 0x72, 0x54, 0x7a,
0xb0, 0x3e, 0xc8, 0x8c, 0x42, 0x83, 0xac, 0xfb, 0x77, 0x0d, 0x0e, 0xd4, 0xf4, 0x11, 0xdf, 0x0a,
0xc8, 0x87, 0xbd, 0xf5, 0x31, 0x8b, 0x3e, 0xce, 0xff, 0x94, 0x48, 0x7d, 0x0f, 0xd9, 0xcf, 0x8a,
0xa8, 0x0a, 0x67, 0x9d, 0x9d, 0xcf, 0x0c, 0x44, 0xa1, 0x99, 0x9e, 0x7e, 0xe8, 0x79, 0x36, 0x46,
0xce, 0xb8, 0xb5, 0x3b, 0x45, 0xd5, 0x95, 0x59, 0x74, 0xcf, 0x69, 0xd7, 0x47, 0x16, 0x7a, 0x27,
0x8c, 0x3e, 0x25, 0xed, 0xf3, 0xc2, 0xfa, 0x89, 0xdd, 0x5f, 0x60, 0x5f, 0x6b, 0xf3, 0x28, 0x87,
0xad, 0xac, 0x01, 0x68, 0x7f, 0x52, 0x48, 0x37, 0xb1, 0x35, 0x87, 0x03, 0xbd, 0xce, 0x51, 0x0e,
0x40, 0x66, 0x93, 0xb4, 0x3f, 0x2d, 0xa6, 0x9c, 0x98, 0xa3, 0xd0, 0x4c, 0x97, 0x61, 0xde, 0x3d,
0xe6, 0xb4, 0x8c, 0xbc, 0x7b, 0xcc, 0xab, 0x6e, 0x67, 0x07, 0x79, 0x00, 0x0f, 0x55, 0x88, 0x9e,
0xe6, 0x5e, 0x88, 0x5e, 0xbc, 0x76, 0xfb, 0xdd, 0x8a, 0x89, 0x89, 0x05, 0xfc, 0x2f, 0x35, 0x92,
0x50, 0x0e, 0x35, 0xd9, 0x53, 0xd7, 0x7e, 0x5e, 0x50, 0x3b, 0x15, 0x94, 0x2c, 0xec, 0x0d, 0x41,
0xe9, 0x5d, 0x63, 0x43, 0x50, 0xa9, 0x1e, 0xe1, 0xec, 0xbc, 0x80, 0x9f, 0xea, 0x4a, 0xef, 0xd6,
0xe4, 0xff, 0x6f, 0xbe, 0xf8, 0x37, 0x00, 0x00, 0xff, 0xff, 0xae, 0xe0, 0xb8, 0xc3, 0xb0, 0x0d,
0x00, 0x00,
// 1075 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x57, 0xdd, 0x6e, 0xe3, 0x44,
0x14, 0xae, 0xf3, 0xe3, 0x24, 0xa7, 0x3f, 0xa4, 0xb3, 0xfd, 0x71, 0x2d, 0x40, 0xc5, 0x08, 0x36,
0x2c, 0x6c, 0x0a, 0xe1, 0x0a, 0x09, 0x21, 0x75, 0xb3, 0x51, 0x5a, 0x28, 0x59, 0xc9, 0xa1, 0x8b,
0xc4, 0x05, 0x91, 0x9b, 0x4c, 0xb6, 0x66, 0x1d, 0x4f, 0xf0, 0x4c, 0xaa, 0xcd, 0x2d, 0x77, 0x3c,
0x00, 0x3c, 0x00, 0x8f, 0xc1, 0x53, 0xf1, 0x08, 0xc8, 0xf3, 0xe3, 0x66, 0x5c, 0x3b, 0xeb, 0xcd,
0x4d, 0xec, 0x99, 0x73, 0xe6, 0x3b, 0xe7, 0x7c, 0x73, 0x7e, 0x1c, 0xb0, 0x6f, 0xbd, 0xb9, 0x7f,
0x46, 0x71, 0x74, 0xe7, 0x8f, 0x31, 0x3d, 0x63, 0x7e, 0x10, 0xe0, 0xa8, 0x3d, 0x8f, 0x08, 0x23,
0xe8, 0x20, 0x96, 0xb5, 0x95, 0xac, 0x2d, 0x64, 0xf6, 0x11, 0x3f, 0x31, 0xbe, 0xf5, 0x22, 0x26,
0x7e, 0x85, 0xb6, 0x7d, 0xbc, 0xba, 0x4f, 0xc2, 0xa9, 0xff, 0x4a, 0x0a, 0x84, 0x89, 0x08, 0x07,
0xd8, 0xa3, 0x58, 0x3d, 0xb5, 0x43, 0x4a, 0xe6, 0x87, 0x53, 0x22, 0x05, 0x27, 0x9a, 0x80, 0x32,
0x8f, 0x2d, 0xa8, 0x86, 0x77, 0x87, 0x23, 0xea, 0x93, 0x50, 0x3d, 0x85, 0xcc, 0xf9, 0xa7, 0x04,
0x8f, 0xae, 0x7c, 0xca, 0x5c, 0x71, 0x90, 0xba, 0xf8, 0xf7, 0x05, 0xa6, 0x0c, 0x1d, 0x40, 0x35,
0xf0, 0x67, 0x3e, 0xb3, 0x8c, 0x53, 0xa3, 0x55, 0x76, 0xc5, 0x02, 0x1d, 0x81, 0x49, 0xa6, 0x53,
0x8a, 0x99, 0x55, 0x3a, 0x35, 0x5a, 0x0d, 0x57, 0xae, 0xd0, 0x77, 0x50, 0xa3, 0x24, 0x62, 0xa3,
0x9b, 0xa5, 0x55, 0x3e, 0x35, 0x5a, 0x7b, 0x9d, 0x4f, 0xda, 0x59, 0x54, 0xb4, 0x63, 0x4b, 0x43,
0x12, 0xb1, 0x76, 0xfc, 0xf3, 0x6c, 0xe9, 0x9a, 0x94, 0x3f, 0x63, 0xdc, 0xa9, 0x1f, 0x30, 0x1c,
0x59, 0x15, 0x81, 0x2b, 0x56, 0xa8, 0x0f, 0xc0, 0x71, 0x49, 0x34, 0xc1, 0x91, 0x55, 0xe5, 0xd0,
0xad, 0x02, 0xd0, 0x2f, 0x62, 0x7d, 0xb7, 0x41, 0xd5, 0x2b, 0xfa, 0x16, 0x76, 0x04, 0x25, 0xa3,
0x31, 0x99, 0x60, 0x6a, 0x99, 0xa7, 0xe5, 0xd6, 0x5e, 0xe7, 0x44, 0x40, 0x29, 0x86, 0x87, 0x82,
0xb4, 0x2e, 0x99, 0x60, 0x77, 0x5b, 0xa8, 0xc7, 0xef, 0xd4, 0xf9, 0x15, 0xea, 0x0a, 0xde, 0xe9,
0x80, 0x29, 0x9c, 0x47, 0xdb, 0x50, 0xbb, 0x1e, 0xfc, 0x30, 0x78, 0xf1, 0xf3, 0xa0, 0xb9, 0x85,
0xea, 0x50, 0x19, 0x9c, 0xff, 0xd8, 0x6b, 0x1a, 0x68, 0x1f, 0x76, 0xaf, 0xce, 0x87, 0x3f, 0x8d,
0xdc, 0xde, 0x55, 0xef, 0x7c, 0xd8, 0x7b, 0xde, 0x2c, 0x39, 0x1f, 0x42, 0x23, 0xf1, 0x0a, 0xd5,
0xa0, 0x7c, 0x3e, 0xec, 0x8a, 0x23, 0xcf, 0x7b, 0xc3, 0x6e, 0xd3, 0x70, 0xfe, 0x34, 0xe0, 0x40,
0xbf, 0x04, 0x3a, 0x27, 0x21, 0xc5, 0xf1, 0x2d, 0x8c, 0xc9, 0x22, 0x4c, 0x6e, 0x81, 0x2f, 0x10,
0x82, 0x4a, 0x88, 0xdf, 0xa8, 0x3b, 0xe0, 0xef, 0xb1, 0x26, 0x23, 0xcc, 0x0b, 0x38, 0xff, 0x65,
0x57, 0x2c, 0xd0, 0x57, 0x50, 0x97, 0xc1, 0x51, 0xab, 0x72, 0x5a, 0x6e, 0x6d, 0x77, 0x0e, 0xf5,
0x90, 0xa5, 0x45, 0x37, 0x51, 0x73, 0xfa, 0x70, 0xdc, 0xc7, 0xca, 0x13, 0xc1, 0x88, 0xca, 0x89,
0xd8, 0xae, 0x37, 0xc3, 0xdc, 0x99, 0xd8, 0xae, 0x37, 0xc3, 0xc8, 0x82, 0x9a, 0x4c, 0x28, 0xee,
0x4e, 0xd5, 0x55, 0x4b, 0x87, 0x81, 0xf5, 0x10, 0x48, 0xc6, 0x95, 0x85, 0xf4, 0x29, 0x54, 0xe2,
0x74, 0xe6, 0x30, 0xdb, 0x1d, 0xa4, 0xfb, 0x79, 0x19, 0x4e, 0x89, 0xcb, 0xe5, 0xe8, 0x7d, 0x68,
0xc4, 0xfa, 0x74, 0xee, 0x8d, 0x31, 0x8f, 0xb6, 0xe1, 0xde, 0x6f, 0x38, 0x17, 0xab, 0x56, 0xbb,
0x24, 0x64, 0x38, 0x64, 0x9b, 0xf9, 0x7f, 0x05, 0x27, 0x19, 0x48, 0x32, 0x80, 0x33, 0xa8, 0x49,
0xd7, 0x38, 0x5a, 0x2e, 0xaf, 0x4a, 0xcb, 0xf9, 0xbb, 0x04, 0x07, 0xd7, 0xf3, 0x89, 0xc7, 0xb0,
0x12, 0xad, 0x71, 0xea, 0x31, 0x54, 0x79, 0x5b, 0x90, 0x5c, 0xec, 0x0b, 0x6c, 0xd1, 0x3b, 0xba,
0xf1, 0xaf, 0x2b, 0xe4, 0xe8, 0x09, 0x98, 0x77, 0x5e, 0xb0, 0xc0, 0x94, 0x13, 0x91, 0xb0, 0x26,
0x35, 0x79, 0x4f, 0x71, 0xa5, 0x06, 0x3a, 0x86, 0xda, 0x24, 0x5a, 0x8e, 0xa2, 0x45, 0xc8, 0x8b,
0xac, 0xee, 0x9a, 0x93, 0x68, 0xe9, 0x2e, 0x42, 0xf4, 0x31, 0xec, 0x4e, 0x7c, 0xea, 0xdd, 0x04,
0x78, 0x74, 0x4b, 0xc8, 0x6b, 0xca, 0xeb, 0xac, 0xee, 0xee, 0xc8, 0xcd, 0x8b, 0x78, 0x0f, 0xd9,
0x71, 0x26, 0x8d, 0x23, 0xec, 0x31, 0x6c, 0x99, 0x5c, 0x9e, 0xac, 0x63, 0x0e, 0x99, 0x3f, 0xc3,
0x64, 0xc1, 0xac, 0x1a, 0xcf, 0x3e, 0xb5, 0x44, 0x1f, 0xc1, 0x4e, 0x84, 0x29, 0x66, 0x23, 0xe9,
0x65, 0x9d, 0x9f, 0xdc, 0xe6, 0x7b, 0x2f, 0xf9, 0x96, 0x73, 0x01, 0x87, 0x29, 0x5e, 0x36, 0xa5,
0xf8, 0x5f, 0x03, 0x8e, 0x5c, 0x12, 0x04, 0x37, 0xde, 0xf8, 0x75, 0x01, 0x92, 0x57, 0xf8, 0x28,
0xad, 0xe7, 0xa3, 0x9c, 0xc1, 0xc7, 0x4a, 0xde, 0x54, 0xb4, 0xbc, 0xd1, 0x98, 0xaa, 0xe6, 0x33,
0x65, 0x6a, 0x4c, 0x39, 0xdf, 0xc3, 0xf1, 0x03, 0xdf, 0x37, 0x25, 0xe2, 0xaf, 0x12, 0x1c, 0x5e,
0x86, 0x94, 0x79, 0x41, 0x90, 0xe2, 0x21, 0x49, 0x2c, 0xa3, 0x70, 0x62, 0x95, 0xde, 0x25, 0xb1,
0xca, 0x1a, 0x91, 0x8a, 0xf5, 0xca, 0x0a, 0xeb, 0x85, 0x92, 0x4d, 0x2b, 0x71, 0x33, 0x55, 0xe2,
0xe8, 0x03, 0x80, 0x08, 0x2f, 0x28, 0x1e, 0x71, 0xf0, 0x1a, 0x3f, 0xdf, 0xe0, 0x3b, 0x03, 0x59,
0xd1, 0x8a, 0xe3, 0xba, 0xce, 0xf1, 0x25, 0x1c, 0xa5, 0x69, 0xd9, 0x94, 0xe2, 0x3f, 0x0c, 0x38,
0xbe, 0x0e, 0xfd, 0x4c, 0x92, 0xb3, 0x92, 0xed, 0x41, 0xd8, 0xa5, 0x8c, 0xb0, 0x0f, 0xa0, 0x3a,
0x5f, 0x44, 0xaf, 0xb0, 0xa4, 0x51, 0x2c, 0x56, 0xe3, 0xa9, 0xe8, 0xf1, 0x8c, 0xc0, 0x7a, 0xe8,
0xc3, 0x86, 0x11, 0xc5, 0x5e, 0x27, 0xed, 0xb7, 0x21, 0x5a, 0xad, 0xf3, 0x08, 0xf6, 0xfb, 0x98,
0xbd, 0x14, 0x89, 0x2d, 0xc3, 0x73, 0x7a, 0x80, 0x56, 0x37, 0xef, 0xed, 0xc9, 0x2d, 0xdd, 0x9e,
0xfa, 0xda, 0x50, 0xfa, 0x4a, 0xcb, 0xf9, 0x86, 0x63, 0x5f, 0xf8, 0x94, 0x91, 0x68, 0xb9, 0x8e,
0xba, 0x26, 0x94, 0x67, 0xde, 0x1b, 0xd9, 0x9d, 0xe3, 0x57, 0xa7, 0xcf, 0x3d, 0x48, 0x8e, 0x4a,
0x0f, 0x56, 0x67, 0x9d, 0x51, 0x68, 0xd6, 0x75, 0xfe, 0xab, 0xc1, 0x9e, 0x1a, 0x50, 0xe2, 0x73,
0x02, 0xf9, 0xb0, 0xb3, 0x3a, 0x89, 0xd1, 0x67, 0xf9, 0x5f, 0x1b, 0xa9, 0x4f, 0x26, 0xfb, 0x49,
0x11, 0x55, 0xe1, 0xac, 0xb3, 0xf5, 0xa5, 0x81, 0x28, 0x34, 0xd3, 0x03, 0x12, 0x3d, 0xcd, 0xc6,
0xc8, 0x99, 0xc8, 0x76, 0xbb, 0xa8, 0xba, 0x32, 0x8b, 0xee, 0x38, 0xed, 0xfa, 0x54, 0x43, 0x6f,
0x85, 0xd1, 0x07, 0xa9, 0x7d, 0x56, 0x58, 0x3f, 0xb1, 0xfb, 0x1b, 0xec, 0x6a, 0x6d, 0x1e, 0xe5,
0xb0, 0x95, 0x35, 0x23, 0xed, 0xcf, 0x0b, 0xe9, 0x26, 0xb6, 0x66, 0xb0, 0xa7, 0xd7, 0x39, 0xca,
0x01, 0xc8, 0x6c, 0x92, 0xf6, 0x17, 0xc5, 0x94, 0x13, 0x73, 0x14, 0x9a, 0xe9, 0x32, 0xcc, 0xbb,
0xc7, 0x9c, 0x96, 0x91, 0x77, 0x8f, 0x79, 0xd5, 0xed, 0x6c, 0x21, 0x0f, 0xe0, 0xbe, 0x0a, 0xd1,
0xe3, 0xdc, 0x0b, 0xd1, 0x8b, 0xd7, 0x6e, 0xbd, 0x5d, 0x31, 0x31, 0x31, 0x87, 0xf7, 0x52, 0x23,
0x09, 0xe5, 0x50, 0x93, 0x3d, 0x75, 0xed, 0xa7, 0x05, 0xb5, 0x53, 0x41, 0xc9, 0xc2, 0x5e, 0x13,
0x94, 0xde, 0x35, 0xd6, 0x04, 0x95, 0xea, 0x11, 0xce, 0xd6, 0x33, 0xf8, 0xa5, 0xae, 0xf4, 0x6e,
0x4c, 0xfe, 0x17, 0xe8, 0xeb, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x83, 0x62, 0xce, 0x77, 0xd3,
0x0d, 0x00, 0x00,
}

@ -323,11 +323,26 @@ func (s *ReleaseServer) performUpdate(originalRelease, updatedRelease *release.R
return res, nil
}
// reuseValues copies values from the current release to a new release if the new release does not have any values.
// reuseValues copies values from the current release to a new release if the
// new release does not have any values.
//
// If the request already has values, or if there are no values in the current release, this does nothing.
// If the request already has values, or if there are no values in the current
// release, this does nothing.
//
// This is skipped if the req.ResetValues flag is set, in which case the
// request values are not altered.
func (s *ReleaseServer) reuseValues(req *services.UpdateReleaseRequest, current *release.Release) {
if (req.Values == nil || req.Values.Raw == "" || req.Values.Raw == "{}\n") && current.Config != nil && current.Config.Raw != "" && current.Config.Raw != "{}\n" {
if req.ResetValues {
// If ResetValues is set, we comletely ignore current.Config.
log.Print("Reset values to the chart's original version.")
return
}
// If req.Values is empty, but current. config is not, copy current into the
// request.
if (req.Values == nil || req.Values.Raw == "" || req.Values.Raw == "{}\n") &&
current.Config != nil &&
current.Config.Raw != "" &&
current.Config.Raw != "{}\n" {
log.Printf("Copying values from %s (v%d) to new release.", current.Name, current.Version)
req.Values = current.Config
}

@ -667,6 +667,32 @@ func TestUpdateRelease(t *testing.T) {
t.Errorf("Expected release version to be %v, got %v", 2, res.Release.Version)
}
}
func TestUpdateReleaseResetValues(t *testing.T) {
c := helm.NewContext()
rs := rsFixture()
rel := releaseStub()
rs.env.Releases.Create(rel)
req := &services.UpdateReleaseRequest{
Name: rel.Name,
Chart: &chart.Chart{
Metadata: &chart.Metadata{Name: "hello"},
Templates: []*chart.Template{
{Name: "templates/hello", Data: []byte("hello: world")},
{Name: "templates/hooks", Data: []byte(manifestWithUpgradeHooks)},
},
},
ResetValues: true,
}
res, err := rs.UpdateRelease(c, req)
if err != nil {
t.Fatalf("Failed updated: %s", err)
}
// This should have been unset. Config: &chart.Config{Raw: `name: value`},
if res.Release.Config != nil && res.Release.Config.Raw != "" {
t.Errorf("Expected chart config to be empty, got %q", res.Release.Config.Raw)
}
}
func TestUpdateReleaseFailure(t *testing.T) {
c := helm.NewContext()

Loading…
Cancel
Save