pull/10873/merge
Tan Guofu 3 months ago committed by GitHub
commit 0ddd8e7935
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -91,6 +91,19 @@ type Configuration struct {
mutex sync.Mutex
}
// postRenderReleaseHook render the manifests of release hooks with postrender.PostRenderer
func postRenderHookManifests(hs []*release.Hook, pr postrender.PostRenderer) error {
for _, hook := range hs {
sb, err := pr.Run(bytes.NewBufferString(hook.Manifest))
if err != nil {
return errors.Wrapf(err, "error while running postRender on hook: %s, which is path: %s and kind: %s", hook.Name, hook.Path, hook.Kind)
}
hook.Manifest = sb.String()
}
return nil
}
// renderResources renders the templates in a chart
//
// TODO: This function is badly in need of a refactor.
@ -225,6 +238,11 @@ func (cfg *Configuration) renderResources(ch *chart.Chart, values chartutil.Valu
if err != nil {
return hs, b, notes, fmt.Errorf("error while running post render on files: %w", err)
}
err = postRenderHookManifests(hs, pr)
if err != nil {
return hs, b, notes, err
}
}
return hs, b, notes, nil

@ -16,6 +16,7 @@ limitations under the License.
package action
import (
"bytes"
"flag"
"fmt"
"io"
@ -368,3 +369,50 @@ func TestGetVersionSet(t *testing.T) {
t.Error("Non-existent version is reported found.")
}
}
type PostRendererMock struct {
}
func (p *PostRendererMock) Run(renderedManifests *bytes.Buffer) (*bytes.Buffer, error) {
var output = &bytes.Buffer{}
for {
line, err := renderedManifests.ReadBytes('\n')
if len(line) > 0 {
output.Write(bytes.ReplaceAll(line, []byte("fake-image"), []byte("local-image")))
}
// ReadBytes returns err != nil if and only if the returned data does not end in delim.
if err != nil {
break
}
}
return output, nil
}
func TestPostRenderHookManifests(t *testing.T) {
hs := []*release.Hook{
{
Name: "test-postrender-hook",
Kind: "Pod",
Path: "test-postrender-hook",
Manifest: manifestWithTestHook,
Events: []release.HookEvent{
release.HookTest,
},
},
}
pr := &PostRendererMock{}
if err := postRenderHookManifests(hs, pr); err != nil {
t.Error(err)
}
is := assert.New(t)
for _, hook := range hs {
is.Contains(hook.Manifest, "local-image")
}
}

Loading…
Cancel
Save