You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by sa...@apache.org on 2018/10/08 22:03:16 UTC

[pulsar] 10/13: Switched cli to use functionConfig instead of function details

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

sanjeevrk pushed a commit to branch srkukarni/serverside_validation_endpoints
in repository https://gitbox.apache.org/repos/asf/pulsar.git

commit 44de9f6e4977ff4a389d79e420cf5d7f26dd83d4
Author: Sanjeev Kulkarni <sa...@streaml.io>
AuthorDate: Mon Oct 8 10:32:06 2018 -0700

    Switched cli to use functionConfig instead of function details
---
 .../org/apache/pulsar/client/admin/Functions.java  | 19 ++++++------
 .../client/admin/internal/FunctionsImpl.java       | 34 ++++++++++++----------
 .../org/apache/pulsar/admin/cli/CmdFunctions.java  |  8 ++---
 .../rest/api/v2/FunctionApiV2ResourceTest.java     | 20 +++++++++----
 4 files changed, 46 insertions(+), 35 deletions(-)

diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/Functions.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/Functions.java
index bdb2c56..10c890c 100644
--- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/Functions.java
+++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/Functions.java
@@ -28,8 +28,7 @@ import org.apache.pulsar.common.io.ConnectorDefinition;
 import org.apache.pulsar.functions.proto.Function.FunctionDetails;
 import org.apache.pulsar.functions.proto.InstanceCommunication.FunctionStatus;
 import org.apache.pulsar.functions.proto.InstanceCommunication.FunctionStatusList;
-import org.apache.pulsar.functions.proto.InstanceCommunication.Metrics;
-import org.apache.pulsar.functions.worker.WorkerInfo;
+import org.apache.pulsar.functions.utils.FunctionConfig;
 
 /**
  * Admin interface for function management.
@@ -83,13 +82,13 @@ public interface Functions {
     /**
      * Create a new function.
      *
-     * @param functionDetails
+     * @param functionConfig
      *            the function configuration object
      *
      * @throws PulsarAdminException
      *             Unexpected error
      */
-    void createFunction(FunctionDetails functionDetails, String fileName) throws PulsarAdminException;
+    void createFunction(FunctionConfig functionConfig, String fileName) throws PulsarAdminException;
 
     /**
      * <pre>
@@ -99,19 +98,19 @@ public interface Functions {
      * Http: http://www.repo.com/fileName.jar
      * </pre>
      *
-     * @param functionDetails
+     * @param functionConfig
      *            the function configuration object
      * @param pkgUrl
      *            url from which pkg can be downloaded
      * @throws PulsarAdminException
      */
-    void createFunctionWithUrl(FunctionDetails functionDetails, String pkgUrl) throws PulsarAdminException;
+    void createFunctionWithUrl(FunctionConfig functionConfig, String pkgUrl) throws PulsarAdminException;
 
     /**
      * Update the configuration for a function.
      * <p>
      *
-     * @param functionDetails
+     * @param functionConfig
      *            the function configuration object
      *
      * @throws NotAuthorizedException
@@ -121,7 +120,7 @@ public interface Functions {
      * @throws PulsarAdminException
      *             Unexpected error
      */
-    void updateFunction(FunctionDetails functionDetails, String fileName) throws PulsarAdminException;
+    void updateFunction(FunctionConfig functionConfig, String fileName) throws PulsarAdminException;
 
     /**
      * Update the configuration for a function.
@@ -132,7 +131,7 @@ public interface Functions {
      * Http: http://www.repo.com/fileName.jar
      * </pre>
      *
-     * @param functionDetails
+     * @param functionConfig
      *            the function configuration object
      * @param pkgUrl
      *            url from which pkg can be downloaded
@@ -143,7 +142,7 @@ public interface Functions {
      * @throws PulsarAdminException
      *             Unexpected error
      */
-    void updateFunctionWithUrl(FunctionDetails functionDetails, String pkgUrl) throws PulsarAdminException;
+    void updateFunctionWithUrl(FunctionConfig functionConfig, String pkgUrl) throws PulsarAdminException;
 
     /**
      * Delete an existing function
diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java
index 99d0da2..b9ea1a5 100644
--- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java
+++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/FunctionsImpl.java
@@ -18,6 +18,7 @@
  */
 package org.apache.pulsar.client.admin.internal;
 
+import com.google.gson.Gson;
 import com.google.protobuf.AbstractMessage.Builder;
 import com.google.protobuf.MessageOrBuilder;
 import com.google.protobuf.util.JsonFormat;
@@ -48,6 +49,7 @@ import org.apache.pulsar.common.policies.data.ErrorData;
 import org.apache.pulsar.functions.proto.Function.FunctionDetails;
 import org.apache.pulsar.functions.proto.InstanceCommunication.FunctionStatus;
 import org.apache.pulsar.functions.proto.InstanceCommunication.FunctionStatusList;
+import org.apache.pulsar.functions.utils.FunctionConfig;
 import org.apache.pulsar.functions.worker.WorkerInfo;
 import org.glassfish.jersey.media.multipart.FormDataBodyPart;
 import org.glassfish.jersey.media.multipart.FormDataMultiPart;
@@ -129,7 +131,7 @@ public class FunctionsImpl extends BaseResource implements Functions {
     }
 
     @Override
-    public void createFunction(FunctionDetails functionDetails, String fileName) throws PulsarAdminException {
+    public void createFunction(FunctionConfig functionConfig, String fileName) throws PulsarAdminException {
         try {
             final FormDataMultiPart mp = new FormDataMultiPart();
 
@@ -138,10 +140,10 @@ public class FunctionsImpl extends BaseResource implements Functions {
                 mp.bodyPart(new FileDataBodyPart("data", new File(fileName), MediaType.APPLICATION_OCTET_STREAM_TYPE));
             }
 
-            mp.bodyPart(new FormDataBodyPart("functionDetails",
-                printJson(functionDetails),
+            mp.bodyPart(new FormDataBodyPart("functionConfig",
+                new Gson().toJson(functionConfig),
                 MediaType.APPLICATION_JSON_TYPE));
-            request(functions.path(functionDetails.getTenant()).path(functionDetails.getNamespace()).path(functionDetails.getName()))
+            request(functions.path(functionConfig.getTenant()).path(functionConfig.getNamespace()).path(functionConfig.getName()))
                     .post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -149,16 +151,16 @@ public class FunctionsImpl extends BaseResource implements Functions {
     }
 
     @Override
-    public void createFunctionWithUrl(FunctionDetails functionDetails, String pkgUrl) throws PulsarAdminException {
+    public void createFunctionWithUrl(FunctionConfig functionConfig, String pkgUrl) throws PulsarAdminException {
         try {
             final FormDataMultiPart mp = new FormDataMultiPart();
 
             mp.bodyPart(new FormDataBodyPart("url", pkgUrl, MediaType.TEXT_PLAIN_TYPE));
 
-            mp.bodyPart(new FormDataBodyPart("functionDetails",
-                printJson(functionDetails),
+            mp.bodyPart(new FormDataBodyPart("functionConfig",
+                new Gson().toJson(functionConfig),
                 MediaType.APPLICATION_JSON_TYPE));
-            request(functions.path(functionDetails.getTenant()).path(functionDetails.getNamespace()).path(functionDetails.getName()))
+            request(functions.path(functionConfig.getTenant()).path(functionConfig.getNamespace()).path(functionConfig.getName()))
                     .post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -176,7 +178,7 @@ public class FunctionsImpl extends BaseResource implements Functions {
     }
 
     @Override
-    public void updateFunction(FunctionDetails functionDetails, String fileName) throws PulsarAdminException {
+    public void updateFunction(FunctionConfig functionConfig, String fileName) throws PulsarAdminException {
         try {
             final FormDataMultiPart mp = new FormDataMultiPart();
 
@@ -185,10 +187,10 @@ public class FunctionsImpl extends BaseResource implements Functions {
                 mp.bodyPart(new FileDataBodyPart("data", new File(fileName), MediaType.APPLICATION_OCTET_STREAM_TYPE));
             }
 
-            mp.bodyPart(new FormDataBodyPart("functionDetails",
-                printJson(functionDetails),
+            mp.bodyPart(new FormDataBodyPart("functionConfig",
+                new Gson().toJson(functionConfig),
                 MediaType.APPLICATION_JSON_TYPE));
-            request(functions.path(functionDetails.getTenant()).path(functionDetails.getNamespace()).path(functionDetails.getName()))
+            request(functions.path(functionConfig.getTenant()).path(functionConfig.getNamespace()).path(functionConfig.getName()))
                     .put(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA), ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
@@ -196,16 +198,16 @@ public class FunctionsImpl extends BaseResource implements Functions {
     }
 
     @Override
-    public void updateFunctionWithUrl(FunctionDetails functionDetails, String pkgUrl) throws PulsarAdminException {
+    public void updateFunctionWithUrl(FunctionConfig functionConfig, String pkgUrl) throws PulsarAdminException {
         try {
             final FormDataMultiPart mp = new FormDataMultiPart();
 
             mp.bodyPart(new FormDataBodyPart("url", pkgUrl, MediaType.TEXT_PLAIN_TYPE));
 
-            mp.bodyPart(new FormDataBodyPart("functionDetails", printJson(functionDetails),
+            mp.bodyPart(new FormDataBodyPart("functionConfig", new Gson().toJson(functionConfig),
                     MediaType.APPLICATION_JSON_TYPE));
-            request(functions.path(functionDetails.getTenant()).path(functionDetails.getNamespace())
-                    .path(functionDetails.getName())).put(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA),
+            request(functions.path(functionConfig.getTenant()).path(functionConfig.getNamespace())
+                    .path(functionConfig.getName())).put(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA),
                             ErrorData.class);
         } catch (Exception e) {
             throw getApiException(e);
diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java
index c771e7b..2f23a63 100644
--- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java
+++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java
@@ -684,9 +684,9 @@ public class CmdFunctions extends CmdBase {
         @Override
         void runCmd() throws Exception {
             if (Utils.isFunctionPackageUrlSupported(functionConfig.getJar())) {
-                admin.functions().createFunctionWithUrl(FunctionConfigUtils.convert(functionConfig, classLoader), functionConfig.getJar());
+                admin.functions().createFunctionWithUrl(functionConfig, functionConfig.getJar());
             } else {
-                admin.functions().createFunction(FunctionConfigUtils.convert(functionConfig, classLoader), userCodeFile);
+                admin.functions().createFunction(functionConfig, userCodeFile);
             }
 
             print("Created successfully");
@@ -776,9 +776,9 @@ public class CmdFunctions extends CmdBase {
         @Override
         void runCmd() throws Exception {
             if (Utils.isFunctionPackageUrlSupported(functionConfig.getJar())) {
-                admin.functions().updateFunctionWithUrl(FunctionConfigUtils.convert(functionConfig, classLoader), functionConfig.getJar());
+                admin.functions().updateFunctionWithUrl(functionConfig, functionConfig.getJar());
             } else {
-                admin.functions().updateFunction(FunctionConfigUtils.convert(functionConfig, classLoader), userCodeFile);
+                admin.functions().updateFunction(functionConfig, userCodeFile);
             }
             print("Updated successfully");
         }
diff --git a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v2/FunctionApiV2ResourceTest.java b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v2/FunctionApiV2ResourceTest.java
index 9ce87d0..bd29941 100644
--- a/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v2/FunctionApiV2ResourceTest.java
+++ b/pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/rest/api/v2/FunctionApiV2ResourceTest.java
@@ -346,6 +346,8 @@ public class FunctionApiV2ResourceTest {
                 null,
                 null,
                 new Gson().toJson(functionConfig),
+                null,
+                null,
                 null);
 
         assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
@@ -372,7 +374,9 @@ public class FunctionApiV2ResourceTest {
             null,
             null,
             new Gson().toJson(functionConfig),
-            null);
+            null,
+                null,
+                null);
     }
 
     @Test
@@ -646,7 +650,9 @@ public class FunctionApiV2ResourceTest {
             null,
             null,
             new Gson().toJson(functionConfig),
-            null);
+            null,
+                null,
+                null);
 
         assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
         Assert.assertEquals(((ErrorData) response.getEntity()).reason, new ErrorData(expectedError).reason);
@@ -673,7 +679,9 @@ public class FunctionApiV2ResourceTest {
             null,
             null,
             new Gson().toJson(functionConfig),
-            null);
+            null,
+                null,
+                null);
     }
 
     @Test
@@ -756,7 +764,9 @@ public class FunctionApiV2ResourceTest {
             filePackageUrl,
             null,
             new Gson().toJson(functionConfig),
-            null);
+            null,
+                null,
+                null);
 
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
     }
@@ -1108,7 +1118,7 @@ public class FunctionApiV2ResourceTest {
         functionConfig.setOutput(outputTopic);
         functionConfig.setOutputSerdeClassName(outputSerdeClassName);
         Response response = resource.registerFunction(tenant, namespace, function, null, null, filePackageUrl,
-                null, new Gson().toJson(functionConfig), null);
+                null, new Gson().toJson(functionConfig), null, null, null);
 
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
     }