diff --git a/client.go b/client.go index 2c65d157..4614d04a 100644 --- a/client.go +++ b/client.go @@ -256,8 +256,8 @@ func (c *HelmClient) ListReleasesByStateMask(states action.ListStates) ([]*relea } // GetReleaseValues returns the (optionally, all computed) values for the specified release. -func (c *HelmClient) GetReleaseValues(name string, allValues bool) (map[string]interface{}, error) { - return c.getReleaseValues(name, allValues) +func (c *HelmClient) GetReleaseValues(name string, allValues bool, version int) (map[string]interface{}, error) { + return c.getReleaseValues(name, allValues, version) } // GetRelease returns a release specified by name. @@ -801,10 +801,12 @@ func (c *HelmClient) listReleases(state action.ListStates) ([]*release.Release, // getReleaseValues returns the values for the provided release 'name'. // If allValues = true is specified, all computed values are returned. -func (c *HelmClient) getReleaseValues(name string, allValues bool) (map[string]interface{}, error) { +// version '0' means the latest reversion. +func (c *HelmClient) getReleaseValues(name string, allValues bool, version int) (map[string]interface{}, error) { getReleaseValuesClient := action.NewGetValues(c.ActionConfig) getReleaseValuesClient.AllValues = allValues + getReleaseValuesClient.Version = version return getReleaseValuesClient.Run(name) } diff --git a/client_test.go b/client_test.go index eb2fdd91..10df0fc6 100644 --- a/client_test.go +++ b/client_test.go @@ -3,6 +3,7 @@ package helmclient import ( "bytes" "context" + "helm.sh/helm/v3/pkg/chartutil" "helm.sh/helm/v3/pkg/action" @@ -316,7 +317,7 @@ func ExampleHelmClient_ListDeployedReleases() { func ExampleHelmClient_GetReleaseValues() { // Get the values of a deployed release. - if _, err := helmClient.GetReleaseValues("etcd-operator", true); err != nil { + if _, err := helmClient.GetReleaseValues("etcd-operator", true, 0); err != nil { panic(err) } } diff --git a/interface.go b/interface.go index dd1f4ba3..7fb2a300 100644 --- a/interface.go +++ b/interface.go @@ -22,7 +22,7 @@ type Client interface { GetRelease(name string) (*release.Release, error) // RollBack is an interface to abstract a rollback action. RollBack - GetReleaseValues(name string, allValues bool) (map[string]interface{}, error) + GetReleaseValues(name string, allValues bool, version int) (map[string]interface{}, error) UninstallRelease(spec *ChartSpec) error UninstallReleaseByName(name string) error TemplateChart(spec *ChartSpec, options *HelmTemplateOptions) ([]byte, error) diff --git a/mock/interface.go b/mock/interface.go index 0fdc07a9..fc1b4514 100644 --- a/mock/interface.go +++ b/mock/interface.go @@ -85,18 +85,18 @@ func (mr *MockClientMockRecorder) GetRelease(name interface{}) *gomock.Call { } // GetReleaseValues mocks base method. -func (m *MockClient) GetReleaseValues(name string, allValues bool) (map[string]interface{}, error) { +func (m *MockClient) GetReleaseValues(name string, allValues bool, version int) (map[string]interface{}, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetReleaseValues", name, allValues) + ret := m.ctrl.Call(m, "GetReleaseValues", name, allValues, version) ret0, _ := ret[0].(map[string]interface{}) ret1, _ := ret[1].(error) return ret0, ret1 } // GetReleaseValues indicates an expected call of GetReleaseValues. -func (mr *MockClientMockRecorder) GetReleaseValues(name, allValues interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetReleaseValues(name, allValues, version interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetReleaseValues", reflect.TypeOf((*MockClient)(nil).GetReleaseValues), name, allValues) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetReleaseValues", reflect.TypeOf((*MockClient)(nil).GetReleaseValues), name, allValues, version) } // InstallChart mocks base method. diff --git a/mock/mock_test.go b/mock/mock_test.go index 6cdfca66..4545d571 100644 --- a/mock/mock_test.go +++ b/mock/mock_test.go @@ -51,9 +51,9 @@ func TestHelmClientInterfaces(t *testing.T) { t.Run("GetReleaseValues", func(t *testing.T) { m := make(map[string]interface{}) - mockClient.EXPECT().GetReleaseValues(mockedRelease.Name, true). + mockClient.EXPECT().GetReleaseValues(mockedRelease.Name, true, 0). Return(m, nil) - rv, err := mockClient.GetReleaseValues(mockedRelease.Name, true) + rv, err := mockClient.GetReleaseValues(mockedRelease.Name, true, 0) if err != nil { panic(err) }