You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by dg...@apache.org on 2022/08/15 15:15:05 UTC
[openwhisk-runtime-python] branch master updated: Support array result include sequence action (#129)
This is an automated email from the ASF dual-hosted git repository.
dgrove pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openwhisk-runtime-python.git
The following commit(s) were added to refs/heads/master by this push:
new 18270cc Support array result include sequence action (#129)
18270cc is described below
commit 18270cca17d48cef2358c6e8d9ea361ba950a04c
Author: ningyougang <ni...@navercorp.com>
AuthorDate: Mon Aug 15 23:15:01 2022 +0800
Support array result include sequence action (#129)
---
README.md | 28 ++++++++++++++++++
core/python310Action/Dockerfile | 4 +--
core/python36AiAction/Dockerfile | 8 ++---
core/python39Action/Dockerfile | 4 +--
core/python3Action/Dockerfile | 8 ++---
.../actionContainers/PythonBasicTests.scala | 34 ++++++++++++++++++++++
6 files changed, 74 insertions(+), 12 deletions(-)
diff --git a/README.md b/README.md
index a85e69c..642ad07 100644
--- a/README.md
+++ b/README.md
@@ -32,6 +32,34 @@ The following Python runtime versions (with kind & image labels) are generated b
This README documents the build, customization and testing of these runtime images.
+So a very simple `hello world` function would be:
+
+```python
+def main(args):
+ name = args.get("name", "stranger")
+ greeting = "Hello " + name + "!"
+ print(greeting)
+ return {"greeting": greeting}
+```
+
+For the return result, not only support `dictionary` but also support `array`
+
+So a very simple `hello array` function would be:
+
+```python
+def main(args):
+ return ["a", "b"]
+```
+
+And support array result for sequence action as well, the first action's array result can be used as next action's input parameter.
+
+So the function can be:
+
+```python
+def main(args):
+ return args
+```
+
To learn more about using Python actions to build serverless applications, check out the main project documentation [here](https://github.com/apache/openwhisk/blob/master/docs/actions-python.md).
## Build Runtimes
diff --git a/core/python310Action/Dockerfile b/core/python310Action/Dockerfile
index e777425..d34d09b 100644
--- a/core/python310Action/Dockerfile
+++ b/core/python310Action/Dockerfile
@@ -26,12 +26,12 @@ RUN git clone --branch ${GO_PROXY_GITHUB_BRANCH} \
# or build it from a release
FROM golang:1.18 AS builder_release
-ARG GO_PROXY_RELEASE_VERSION=1.18@1.19.0
+ARG GO_PROXY_RELEASE_VERSION=1.18@1.20.0
RUN curl -sL \
https://github.com/apache/openwhisk-runtime-go/archive/{$GO_PROXY_RELEASE_VERSION}.tar.gz\
| tar xzf -\
&& cd openwhisk-runtime-go-*/main\
- && GO111MODULE=on go build -o /bin/proxy
+ && GO111MODULE=on CGO_ENABLED=0 go build -o /bin/proxy
FROM python:3.10-buster
diff --git a/core/python36AiAction/Dockerfile b/core/python36AiAction/Dockerfile
index b7c4ac8..c269c86 100644
--- a/core/python36AiAction/Dockerfile
+++ b/core/python36AiAction/Dockerfile
@@ -16,7 +16,7 @@
#
# build go proxy from source
-FROM golang:1.16 AS builder_source
+FROM golang:1.18 AS builder_source
ARG GO_PROXY_GITHUB_USER=apache
ARG GO_PROXY_GITHUB_BRANCH=master
RUN git clone --branch ${GO_PROXY_GITHUB_BRANCH} \
@@ -25,13 +25,13 @@ RUN git clone --branch ${GO_PROXY_GITHUB_BRANCH} \
mv proxy /bin/proxy
# or build it from a release
-FROM golang:1.16 AS builder_release
-ARG GO_PROXY_RELEASE_VERSION=1.16@1.19.0
+FROM golang:1.18 AS builder_release
+ARG GO_PROXY_RELEASE_VERSION=1.18@1.20.0
RUN curl -sL \
https://github.com/apache/openwhisk-runtime-go/archive/${GO_PROXY_RELEASE_VERSION}.tar.gz\
| tar xzf -\
&& cd openwhisk-runtime-go-*/main\
- && GO111MODULE=on go build -o /bin/proxy
+ && GO111MODULE=on CGO_ENABLED=0 go build -o /bin/proxy
# Dockerfile for python AI actions, overrides and extends ActionRunner from actionProxy
FROM tensorflow/tensorflow:1.15.2-py3-jupyter
diff --git a/core/python39Action/Dockerfile b/core/python39Action/Dockerfile
index 339bc04..e09ba3b 100644
--- a/core/python39Action/Dockerfile
+++ b/core/python39Action/Dockerfile
@@ -26,12 +26,12 @@ RUN git clone --branch ${GO_PROXY_GITHUB_BRANCH} \
# or build it from a release
FROM golang:1.18 AS builder_release
-ARG GO_PROXY_RELEASE_VERSION=1.18@1.19.0
+ARG GO_PROXY_RELEASE_VERSION=1.18@1.20.0
RUN curl -sL \
https://github.com/apache/openwhisk-runtime-go/archive/{$GO_PROXY_RELEASE_VERSION}.tar.gz\
| tar xzf -\
&& cd openwhisk-runtime-go-*/main\
- && GO111MODULE=on go build -o /bin/proxy
+ && GO111MODULE=on CGO_ENABLED=0 go build -o /bin/proxy
FROM python:3.9-buster
diff --git a/core/python3Action/Dockerfile b/core/python3Action/Dockerfile
index 90aa17b..291b9fb 100644
--- a/core/python3Action/Dockerfile
+++ b/core/python3Action/Dockerfile
@@ -16,7 +16,7 @@
#
# build go proxy from source
-FROM golang:1.16 AS builder_source
+FROM golang:1.18 AS builder_source
ARG GO_PROXY_GITHUB_USER=apache
ARG GO_PROXY_GITHUB_BRANCH=master
RUN git clone --branch ${GO_PROXY_GITHUB_BRANCH} \
@@ -25,13 +25,13 @@ RUN git clone --branch ${GO_PROXY_GITHUB_BRANCH} \
mv proxy /bin/proxy
# or build it from a release
-FROM golang:1.16 AS builder_release
-ARG GO_PROXY_RELEASE_VERSION=1.16@1.19.0
+FROM golang:1.18 AS builder_release
+ARG GO_PROXY_RELEASE_VERSION=1.18@1.20.0
RUN curl -sL \
https://github.com/apache/openwhisk-runtime-go/archive/{$GO_PROXY_RELEASE_VERSION}.tar.gz\
| tar xzf -\
&& cd openwhisk-runtime-go-*/main\
- && GO111MODULE=on go build -o /bin/proxy
+ && GO111MODULE=on CGO_ENABLED=0 go build -o /bin/proxy
FROM python:3.7-buster
diff --git a/tests/src/test/scala/runtime/actionContainers/PythonBasicTests.scala b/tests/src/test/scala/runtime/actionContainers/PythonBasicTests.scala
index 3e06160..6cd919c 100644
--- a/tests/src/test/scala/runtime/actionContainers/PythonBasicTests.scala
+++ b/tests/src/test/scala/runtime/actionContainers/PythonBasicTests.scala
@@ -317,4 +317,38 @@ abstract class PythonBasicTests extends BasicActionRunnerTests with WskActorSyst
runRes.get.fields.get("sys").get.toString() should include("python")
}
}
+
+ it should "support return array result" in {
+ withActionContainer() { c =>
+ val code =
+ """
+ |def main(args):
+ | return ["a", "b"]
+ """.stripMargin
+
+ val (initCode, res) = c.init(initPayload(code))
+ initCode should be(200)
+
+ val (runCode, runRes) = c.runForJsArray(runPayload(JsObject()))
+ runCode should be(200)
+ runRes shouldBe Some(JsArray(JsString("a"), JsString("b")))
+ }
+ }
+
+ it should "support array as input param" in {
+ withActionContainer() { c =>
+ val code =
+ """
+ |def main(args):
+ | return args
+ """.stripMargin
+
+ val (initCode, res) = c.init(initPayload(code))
+ initCode should be(200)
+
+ val (runCode, runRes) = c.runForJsArray(runPayload(JsArray(JsString("a"), JsString("b"))))
+ runCode should be(200)
+ runRes shouldBe Some(JsArray(JsString("a"), JsString("b")))
+ }
+ }
}