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());
}