From 24e5b13adcda6e7330cb141d0b26a8b5704d19e3 Mon Sep 17 00:00:00 2001 From: Mike Eltsufin Date: Thu, 2 Apr 2020 11:56:45 -0400 Subject: [PATCH 1/5] Adds Readme to GCP sample app Also, fixing a bug in the default constructor of the invoker. Fixes: #478. --- .../adapter/gcloud/FunctionInvoker.java | 7 ++- .../function-sample-gcp/README.adoc | 49 +++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 spring-cloud-function-samples/function-sample-gcp/README.adoc diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcloud/FunctionInvoker.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcloud/FunctionInvoker.java index 9d2d087bf..2a6b2666e 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcloud/FunctionInvoker.java +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcloud/FunctionInvoker.java @@ -46,13 +46,18 @@ public class FunctionInvoker public FunctionInvoker() { super(); + init(); } public FunctionInvoker(Class configurationClass) { super(configurationClass); + init(); + } + + private void init() { System.setProperty("spring.http.converters.preferred-json-mapper", "gson"); Thread.currentThread() //TODO investigate if it is necessary - .setContextClassLoader(FunctionInvoker.class.getClassLoader()); + .setContextClassLoader(FunctionInvoker.class.getClassLoader()); initialize(null); } diff --git a/spring-cloud-function-samples/function-sample-gcp/README.adoc b/spring-cloud-function-samples/function-sample-gcp/README.adoc new file mode 100644 index 000000000..86da52659 --- /dev/null +++ b/spring-cloud-function-samples/function-sample-gcp/README.adoc @@ -0,0 +1,49 @@ +:branch: master + +=== Google Cloud Functions Sample Application + +===== Test locally + +Run the function: + +---- +mvn function:run +---- + +Invoke the HTTP function: + +---- +curl http://localhost:8080/ -d "hello" +---- + +===== Deploy to GCP + +As of March 2020, Google Cloud Functions for Java is in Alpha. +You can get on the https://docs.google.com/forms/d/e/1FAIpQLScC98jGi7CfG0n3UYlj7Xad8XScvZC8-BBOg7Pk3uSZx_2cdQ/viewform[whitelist] to try it out. + +Package the application. + +---- +mvn package +---- + +You should see the fat jar in the `deploy` directory. + +Make sure that you have the https://cloud.google.com/sdk/install[Cloud SDK CLI] installed. + +Run the following command from the project root to deploy. + +---- +gcloud alpha functions deploy function-sample-gcp \ +--entry-point org.springframework.cloud.function.adapter.gcloud.FunctionInvoker \ +--runtime java11 \ +--trigger-http \ +--source deploy \ +--memory 512MB +---- + +Invoke the HTTP function: + +---- +curl https://REGION-PROJECT_ID.cloudfunctions.net/function-sample-gcp -d "hello" +---- From ee8bbc3e82a6336f3610b89902382b5e305e4392 Mon Sep 17 00:00:00 2001 From: Mike Eltsufin Date: Thu, 2 Apr 2020 14:10:58 -0400 Subject: [PATCH 2/5] Update invoker class name --- spring-cloud-function-samples/function-sample-gcp/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud-function-samples/function-sample-gcp/pom.xml b/spring-cloud-function-samples/function-sample-gcp/pom.xml index 5debf3b91..6f50a17be 100644 --- a/spring-cloud-function-samples/function-sample-gcp/pom.xml +++ b/spring-cloud-function-samples/function-sample-gcp/pom.xml @@ -27,7 +27,7 @@ function-maven-plugin 0.9.1 - org.springframework.cloud.function.adapter.gcloud.GcfSpringBootHttpRequestHandler + org.springframework.cloud.function.adapter.gcloud.FunctionInvoker 8080 From c251b6de46d2a1f8c0aee38c99d06318cbeacd6e Mon Sep 17 00:00:00 2001 From: Mike Eltsufin Date: Thu, 2 Apr 2020 18:17:24 -0400 Subject: [PATCH 3/5] The classloader trick won't be needed after https://github.com/GoogleCloudPlatform/functions-framework-java/commit/a3d23cc12df52cb10ee0102e50cd54eb943527e6 --- .../spring-cloud-function-adapter-gcp/pom.xml | 7 ++++--- .../cloud/function/adapter/gcloud/FunctionInvoker.java | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/pom.xml b/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/pom.xml index 2c2bd5734..942ea2e28 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/pom.xml +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/pom.xml @@ -17,14 +17,15 @@ UTF-8 UTF-8 - 1.0.0-alpha-2-rc3 + 1.0.0-alpha-2-rc3 + 1.0.0-alpha-2-rc4 com.google.cloud.functions functions-framework-api - ${google.cloud.functions.version} + ${google.cloud.functions.api.version} provided @@ -44,7 +45,7 @@ com.google.cloud.functions.invoker java-function-invoker - ${google.cloud.functions.version} + ${google.cloud.functions.invoker.version} test diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcloud/FunctionInvoker.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcloud/FunctionInvoker.java index 2a6b2666e..adeae7907 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcloud/FunctionInvoker.java +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp/src/main/java/org/springframework/cloud/function/adapter/gcloud/FunctionInvoker.java @@ -56,7 +56,7 @@ public class FunctionInvoker private void init() { System.setProperty("spring.http.converters.preferred-json-mapper", "gson"); - Thread.currentThread() //TODO investigate if it is necessary + Thread.currentThread() // TODO: remove after upgrading to 1.0.0-alpha-2-rc5 .setContextClassLoader(FunctionInvoker.class.getClassLoader()); initialize(null); } From 3d70d0d3f42fdd8ab0b7e6223f081736f810af4d Mon Sep 17 00:00:00 2001 From: Mike Eltsufin Date: Thu, 2 Apr 2020 23:15:19 -0400 Subject: [PATCH 4/5] Add GCP adapter refs to documentation --- docs/src/main/asciidoc/adapters/gcp.adoc | 3 +++ docs/src/main/asciidoc/index.adoc | 1 + docs/src/main/asciidoc/spring-cloud-function.adoc | 1 + 3 files changed, 5 insertions(+) create mode 100644 docs/src/main/asciidoc/adapters/gcp.adoc diff --git a/docs/src/main/asciidoc/adapters/gcp.adoc b/docs/src/main/asciidoc/adapters/gcp.adoc new file mode 100644 index 000000000..fefdbc8ab --- /dev/null +++ b/docs/src/main/asciidoc/adapters/gcp.adoc @@ -0,0 +1,3 @@ +*{spring-cloud-function-version}* + +include::adapters/gcp-intro.adoc[] diff --git a/docs/src/main/asciidoc/index.adoc b/docs/src/main/asciidoc/index.adoc index 96aabfa75..ac42ee4c0 100644 --- a/docs/src/main/asciidoc/index.adoc +++ b/docs/src/main/asciidoc/index.adoc @@ -11,6 +11,7 @@ The reference documentation consists of the following sections: <> :: Spring Cloud Function Reference <> :: AWS Adapter Reference <> :: Azure Adapter Reference +<> :: GCP Adapter Reference <> :: Apache OpenWhisk Adapter Reference diff --git a/docs/src/main/asciidoc/spring-cloud-function.adoc b/docs/src/main/asciidoc/spring-cloud-function.adoc index 3a4578244..be1686e2b 100644 --- a/docs/src/main/asciidoc/spring-cloud-function.adoc +++ b/docs/src/main/asciidoc/spring-cloud-function.adoc @@ -585,4 +585,5 @@ Invoker] acts natively is an adapter for Spring Cloud Function jars. include::adapters/aws-intro.adoc[] include::adapters/azure-intro.adoc[] +include::adapters/gcp-intro.adoc[] From a52d38657649d716a29b78e5bf2edff2e0c2bca8 Mon Sep 17 00:00:00 2001 From: Mike Eltsufin Date: Thu, 2 Apr 2020 23:37:46 -0400 Subject: [PATCH 5/5] Add sample link to refdoc --- docs/src/main/asciidoc/adapters/gcp-intro.adoc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/src/main/asciidoc/adapters/gcp-intro.adoc b/docs/src/main/asciidoc/adapters/gcp-intro.adoc index d95221a2a..f9a5f849b 100644 --- a/docs/src/main/asciidoc/adapters/gcp-intro.adoc +++ b/docs/src/main/asciidoc/adapters/gcp-intro.adoc @@ -130,3 +130,7 @@ Invoke the HTTP function: ---- curl https://REGION-PROJECT_ID.cloudfunctions.net/function-sample-gcp -d "hello" ---- + +==== Sample Function + +Go to the link:../../spring-cloud-function-samples/function-sample-gcp/[function-sample-gcp] to try out a sample function that you can test locally or deploy to GCP.