You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by mr...@apache.org on 2020/08/21 17:51:38 UTC

[openwhisk-wskdeploy] branch master updated: Added interpolation to docker option in manifest.yaml (#1100)

This is an automated email from the ASF dual-hosted git repository.

mrutkowski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openwhisk-wskdeploy.git


The following commit(s) were added to refs/heads/master by this push:
     new 1979827  Added interpolation to docker option in manifest.yaml (#1100)
1979827 is described below

commit 19798274025c54b11329df940c13f2726af5694b
Author: huydoan2 <do...@gmail.com>
AuthorDate: Fri Aug 21 12:51:31 2020 -0500

    Added interpolation to docker option in manifest.yaml (#1100)
    
    * Added interpolation to docker option in manifest.yaml
    
    * Migrate to using Go Module. Upgraded Go version to 1.14 alongside with other packages. Modified unit tests to accomodate changes.
    
    * Upgraded Travis Go version to 1.14
    
    * Added End-of-Line to a test data file
    
    * Fixed test manifest.yml for integration test. Applied golint and sanitized code
    
    * Added example for docker interpolation in manifest.yaml
    
    Co-authored-by: Huy Doan <hu...@ibm.com>
---
 docs/wskdeploy_interpolation.md                    |  3 ++
 parsers/manifest_parser.go                         |  5 ++-
 parsers/manifest_parser_test.go                    |  9 ++++-
 .../manifest_data_compose_actions_for_docker.yaml  | 44 +++++++++++-----------
 4 files changed, 37 insertions(+), 24 deletions(-)

diff --git a/docs/wskdeploy_interpolation.md b/docs/wskdeploy_interpolation.md
index 57f5d19..b067c6a 100644
--- a/docs/wskdeploy_interpolation.md
+++ b/docs/wskdeploy_interpolation.md
@@ -76,6 +76,9 @@ project:
                     function: ${OPENWHISK_FUNCTION_PYTHON}.py
                 hello4:
                     function: https://${OPENWHISK_FUNCTION_GITHUB_DIR}.js                    function: github.com/apache/openwhisk-test/packages/helloworlds
+                hello5:
+                    function: $OPENWHISK_FUNCTION_FILE
+                    docker: $DOCKER_HUB_IMAGE
 ```
 
 #### Trigger Feed
diff --git a/parsers/manifest_parser.go b/parsers/manifest_parser.go
index beff9cc..bf5ad9f 100644
--- a/parsers/manifest_parser.go
+++ b/parsers/manifest_parser.go
@@ -29,6 +29,8 @@ import (
 
 	"gopkg.in/yaml.v2"
 
+	"net/url"
+
 	"github.com/apache/openwhisk-client-go/whisk"
 	"github.com/apache/openwhisk-wskdeploy/conductor"
 	"github.com/apache/openwhisk-wskdeploy/dependencies"
@@ -40,7 +42,6 @@ import (
 	"github.com/apache/openwhisk-wskdeploy/wski18n"
 	"github.com/apache/openwhisk-wskdeploy/wskprint"
 	yamlHelper "github.com/ghodss/yaml"
-	"net/url"
 )
 
 const (
@@ -796,7 +797,7 @@ func (dm *YAMLParser) composeActionExec(manifestFilePath string, manifestFileNam
 		if action.Native {
 			exec.Image = NATIVE_DOCKER_IMAGE
 		} else {
-			exec.Image = action.Docker
+			exec.Image = wskenv.InterpolateStringWithEnvVar(action.Docker).(string)
 		}
 	}
 
diff --git a/parsers/manifest_parser_test.go b/parsers/manifest_parser_test.go
index 3782360..5068a45 100644
--- a/parsers/manifest_parser_test.go
+++ b/parsers/manifest_parser_test.go
@@ -928,7 +928,7 @@ func TestComposeActionsForFunctionWithRemoteDir(t *testing.T) {
 
 // validate manifest_parser.ComposeActions() method
 func TestComposeActionsForDocker(t *testing.T) {
-
+	os.Setenv("image_name", "environmental_variable/image")
 	file := "../tests/dat/manifest_data_compose_actions_for_docker.yaml"
 	actionFile := "../tests/src/integration/docker/actions/exec.zip"
 
@@ -960,8 +960,15 @@ func TestComposeActionsForDocker(t *testing.T) {
 			assert.NotNil(t, action.Action.Exec.Code, TEST_MSG_ACTION_CODE_MISSING)
 			assert.Equal(t, runtimes.BLACKBOX, action.Action.Exec.Kind, fmt.Sprintf(TEST_MSG_ACTION_DOCKER_KIND_MISMATCH, action.Action.Exec.Kind))
 			assert.Equal(t, "mydockerhub/myimage", action.Action.Exec.Image, TEST_MSG_ACTION_DOCKER_IMAGE_MISMATCH)
+		case "CustomDockerAction6":
+			println(action.Action.Exec.Image)
+			assert.NotNil(t, action.Action.Exec.Code, TEST_MSG_ACTION_CODE_MISSING)
+			assert.Equal(t, runtimes.BLACKBOX, action.Action.Exec.Kind, fmt.Sprintf(TEST_MSG_ACTION_DOCKER_KIND_MISMATCH, action.Action.Exec.Kind))
+			assert.Equal(t, os.Getenv("image_name"), action.Action.Exec.Image, TEST_MSG_ACTION_DOCKER_IMAGE_MISMATCH)
 		}
 	}
+
+	os.Unsetenv("image_name")
 }
 
 func TestComposeActionsForEnvVariableInFunction(t *testing.T) {
diff --git a/tests/dat/manifest_data_compose_actions_for_docker.yaml b/tests/dat/manifest_data_compose_actions_for_docker.yaml
index 8bb10c1..0f439dd 100644
--- a/tests/dat/manifest_data_compose_actions_for_docker.yaml
+++ b/tests/dat/manifest_data_compose_actions_for_docker.yaml
@@ -17,24 +17,26 @@
 
 packages:
   IntegrationTestDocker:
-      actions:
-          OpenWhiskSkeleton:
-              docker: openwhisk/skeleton
-          OpenWhiskSkeletonWithNative:
-              native: true
-          CustomDockerAction1:
-              function: ../src/integration/docker/actions/exec.zip
-              docker: openwhisk/skeleton
-          CustomDockerAction2:
-              function: ../src/integration/docker/actions/exec.zip
-              native: true
-          CustomDockerAction3:
-              function: ../src/integration/docker/actions/bash
-              native: true
-          CustomDockerAction4:
-              function: ../src/integration/docker/actions/go
-              native: true
-          CustomDockerAction5:
-              function: ../src/integration/docker/actions/go
-              docker: mydockerhub/myimage
-
+    actions:
+      OpenWhiskSkeleton:
+        docker: openwhisk/skeleton
+      OpenWhiskSkeletonWithNative:
+        native: true
+      CustomDockerAction1:
+        function: ../src/integration/docker/actions/exec.zip
+        docker: openwhisk/skeleton
+      CustomDockerAction2:
+        function: ../src/integration/docker/actions/exec.zip
+        native: true
+      CustomDockerAction3:
+        function: ../src/integration/docker/actions/bash
+        native: true
+      CustomDockerAction4:
+        function: ../src/integration/docker/actions/go
+        native: true
+      CustomDockerAction5:
+        function: ../src/integration/docker/actions/go
+        docker: mydockerhub/myimage
+      CustomDockerAction6:
+        function: ../src/integration/docker/actions/go
+        docker: ${image_name}