diff --git a/pkg/phase/executors/container.go b/pkg/phase/executors/container.go
index beafd8d84..2f3dc49d8 100644
--- a/pkg/phase/executors/container.go
+++ b/pkg/phase/executors/container.go
@@ -103,16 +103,23 @@ func (c *ContainerExecutor) Run(evtCh chan events.Event, opts ifc.RunOptions) {
 		return
 	}
 
-	c.SetInput(evtCh)
-	c.PrepareFunctions(evtCh)
+	if err := c.SetInput(); err != nil {
+		handleError(evtCh, err)
+		return
+	}
+
+	if err := c.PrepareFunctions(); err != nil {
+		handleError(evtCh, err)
+		return
+	}
+
 	c.SetMounts()
 
 	if c.ContConf.PrintOutput {
 		c.RunFns.Output = os.Stdout
 	}
 
-	err := c.RunFns.Execute()
-	if err != nil {
+	if err := c.RunFns.Execute(); err != nil {
 		handleError(evtCh, err)
 		return
 	}
@@ -124,39 +131,38 @@ func (c *ContainerExecutor) Run(evtCh chan events.Event, opts ifc.RunOptions) {
 }
 
 // SetInput sets input for function
-func (c *ContainerExecutor) SetInput(evtCh chan events.Event) {
+func (c *ContainerExecutor) SetInput() error {
 	buf := &bytes.Buffer{}
 	err := c.ExecutorBundle.Write(buf)
 	if err != nil {
-		handleError(evtCh, err)
-		return
+		return err
 	}
 
 	c.RunFns.Input = buf
+	return nil
 }
 
 // PrepareFunctions prepares data for function
-func (c *ContainerExecutor) PrepareFunctions(evtCh chan events.Event) {
+func (c *ContainerExecutor) PrepareFunctions() error {
 	rnode, err := kyaml.Parse(c.ContConf.Config)
 	if err != nil {
-		handleError(evtCh, err)
-		return
+		return err
 	}
 	// Transform GenericContainer.Spec to annotation,
 	// because we need to specify runFns config in annotation
 	spec, err := yaml.Marshal(c.ContConf.Spec)
 	if err != nil {
-		handleError(evtCh, err)
-		return
+		return err
 	}
 	annotation := kyaml.SetAnnotation(runtimeutil.FunctionAnnotationKey, string(spec))
 	_, err = annotation.Filter(rnode)
 	if err != nil {
-		handleError(evtCh, err)
-		return
+		return err
 	}
 
 	c.RunFns.Functions = append(c.RunFns.Functions, rnode)
+
+	return nil
 }
 
 // SetMounts allows to set relative path for storage mounts to prevent security issues
diff --git a/pkg/phase/executors/container_test.go b/pkg/phase/executors/container_test.go
index 075bd504c..fe1dcc0b1 100644
--- a/pkg/phase/executors/container_test.go
+++ b/pkg/phase/executors/container_test.go
@@ -28,7 +28,6 @@ import (
 	"opendev.org/airship/airshipctl/pkg/api/v1alpha1"
 	"opendev.org/airship/airshipctl/pkg/config"
 	"opendev.org/airship/airshipctl/pkg/document"
-	"opendev.org/airship/airshipctl/pkg/events"
 	"opendev.org/airship/airshipctl/pkg/phase"
 	"opendev.org/airship/airshipctl/pkg/phase/executors"
 	"opendev.org/airship/airshipctl/pkg/phase/ifc"
@@ -151,9 +150,8 @@ func TestSetInputSingleDocument(t *testing.T) {
 			Functions: []*kyaml.RNode{},
 		},
 	}
-	ch := make(chan events.Event)
-	e.SetInput(ch)
-	assert.Empty(t, ch)
+	err = e.SetInput()
+	require.NoError(t, err)
 
 	// need to use kustomize here, because
 	// it changes order of lines in document
@@ -185,9 +183,8 @@ func TestSetInputManyDocuments(t *testing.T) {
 			Functions: []*kyaml.RNode{},
 		},
 	}
-	ch := make(chan events.Event)
-	e.SetInput(ch)
-	assert.Empty(t, ch)
+	err = e.SetInput()
+	require.NoError(t, err)
 
 	// need to use kustomize here, because
 	// it changes order of lines in document
@@ -232,9 +229,8 @@ func TestPrepareFunctions(t *testing.T) {
 		},
 	}
 
-	ch := make(chan events.Event)
-	e.PrepareFunctions(ch)
-	assert.Empty(t, ch)
+	err = e.PrepareFunctions()
+	require.NoError(t, err)
 	strFuncs, err := e.RunFns.Functions[0].String()
 	require.NoError(t, err)