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

sijie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new cb2f4ee  add function package-url into function-get api response 
(#2354)
cb2f4ee is described below

commit cb2f4ee3960fc841ad42bc6e6b1209a92b88d5d9
Author: Rajan Dhabalia <[email protected]>
AuthorDate: Mon Aug 13 14:40:18 2018 -0700

    add function package-url into function-get api response (#2354)
    
    ### Motivation
    
    Right now, we mostly use function by submitting function with url and many 
times, we want to verify function package-url to confirm the package-version. 
So, function-admin api should return packageurl along with function metadata.
    
    ### Modifications
    
    return function pacakge-url along with function-metadata on get-function 
api call.
---
 pulsar-functions/proto/src/main/proto/Function.proto       |  1 +
 .../pulsar/functions/worker/rest/api/FunctionsImpl.java    | 14 ++++++++++----
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/pulsar-functions/proto/src/main/proto/Function.proto 
b/pulsar-functions/proto/src/main/proto/Function.proto
index 92f14f6..77a9c2c 100644
--- a/pulsar-functions/proto/src/main/proto/Function.proto
+++ b/pulsar-functions/proto/src/main/proto/Function.proto
@@ -58,6 +58,7 @@ message FunctionDetails {
     SourceSpec source = 11;
     SinkSpec sink = 12;
     Resources resources = 13;
+    string packageUrl = 14; //present only if function submitted with 
package-url
 }
 
 message SourceSpec {
diff --git 
a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java
 
b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java
index b71e6cd..4bb6e49 100644
--- 
a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java
+++ 
b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java
@@ -733,9 +733,8 @@ public class FunctionsImpl {
             throw new IllegalArgumentException("Function Package url is not 
valid. supported url (http/https/file)");
         }
         Utils.validateFileUrl(functionPkgUrl, 
workerServiceSupplier.get().getWorkerConfig().getDownloadDirectory());
-        File jarWithFileUrl = functionPkgUrl.startsWith(FILE) ? (new File((new 
URL(functionPkgUrl)).toURI())) : null;
         FunctionDetails functionDetails = validateUpdateRequestParams(tenant, 
namespace, functionName,
-                functionDetailsJson, jarWithFileUrl);
+                functionDetailsJson, functionPkgUrl);
         return functionDetails;
     }
 
@@ -789,7 +788,7 @@ public class FunctionsImpl {
     }
 
     private FunctionDetails validateUpdateRequestParams(String tenant, String 
namespace, String functionName,
-            String functionDetailsJson, File jarWithFileUrl) throws 
IllegalArgumentException {
+            String functionDetailsJson, String functionPkgUrl) throws 
IllegalArgumentException {
         if (tenant == null) {
             throw new IllegalArgumentException("Tenant is not provided");
         }
@@ -806,7 +805,14 @@ public class FunctionsImpl {
         try {
             FunctionDetails.Builder functionDetailsBuilder = 
FunctionDetails.newBuilder();
             
org.apache.pulsar.functions.utils.Utils.mergeJson(functionDetailsJson, 
functionDetailsBuilder);
-            validateFunctionClassTypes(jarWithFileUrl, functionDetailsBuilder);
+            if (isNotBlank(functionPkgUrl)) {
+                // validate function details by loading function-jar from 
local file-system
+                File jarWithFileUrl = functionPkgUrl.startsWith(FILE) ? (new 
File((new URL(functionPkgUrl)).toURI()))
+                        : null;
+                validateFunctionClassTypes(jarWithFileUrl, 
functionDetailsBuilder);
+                // set package-url if present
+                functionDetailsBuilder.setPackageUrl(functionPkgUrl);
+            }
             FunctionDetails functionDetails = functionDetailsBuilder.build();
 
             List<String> missingFields = new LinkedList<>();

Reply via email to