use of org.apache.pulsar.functions.proto.Function.FunctionConfig in project incubator-pulsar by apache.
the class FunctionsImpl method updateFunction.
@PUT
@Path("/{tenant}/{namespace}/{functionName}")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response updateFunction(@PathParam("tenant") final String tenant, @PathParam("namespace") final String namespace, @PathParam("functionName") final String functionName, @FormDataParam("data") final InputStream uploadedInputStream, @FormDataParam("data") final FormDataContentDisposition fileDetail, @FormDataParam("functionConfig") final String functionConfigJson) {
FunctionConfig functionConfig;
// validate parameters
try {
functionConfig = validateUpdateRequestParams(tenant, namespace, functionName, uploadedInputStream, fileDetail, functionConfigJson);
} catch (IllegalArgumentException e) {
log.error("Invalid update function request @ /{}/{}/{}", tenant, namespace, functionName, e);
return Response.status(Status.BAD_REQUEST).type(MediaType.APPLICATION_JSON).entity(new ErrorData(e.getMessage())).build();
}
FunctionMetaDataManager functionMetaDataManager = worker().getFunctionMetaDataManager();
if (!functionMetaDataManager.containsFunction(tenant, namespace, functionName)) {
return Response.status(Status.BAD_REQUEST).type(MediaType.APPLICATION_JSON).entity(new ErrorData(String.format("Function %s doesn't exist", functionName))).build();
}
// function state
FunctionMetaData.Builder functionMetaDataBuilder = FunctionMetaData.newBuilder().setFunctionConfig(functionConfig).setCreateTime(System.currentTimeMillis()).setVersion(0);
PackageLocationMetaData.Builder packageLocationMetaDataBuilder = PackageLocationMetaData.newBuilder().setPackagePath(String.format("%s/%s/%s/%s", tenant, namespace, functionName, Utils.getUniquePackageName(fileDetail.getFileName())));
functionMetaDataBuilder.setPackageLocation(packageLocationMetaDataBuilder);
return updateRequest(functionMetaDataBuilder.build(), uploadedInputStream);
}
use of org.apache.pulsar.functions.proto.Function.FunctionConfig in project incubator-pulsar by apache.
the class FunctionsImpl method registerFunction.
@POST
@Path("/{tenant}/{namespace}/{functionName}")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response registerFunction(@PathParam("tenant") final String tenant, @PathParam("namespace") final String namespace, @PathParam("functionName") final String functionName, @FormDataParam("data") final InputStream uploadedInputStream, @FormDataParam("data") final FormDataContentDisposition fileDetail, @FormDataParam("functionConfig") final String functionConfigJson) {
FunctionConfig functionConfig;
// validate parameters
try {
functionConfig = validateUpdateRequestParams(tenant, namespace, functionName, uploadedInputStream, fileDetail, functionConfigJson);
} catch (IllegalArgumentException e) {
log.error("Invalid register function request @ /{}/{}/{}", tenant, namespace, functionName, e);
return Response.status(Status.BAD_REQUEST).type(MediaType.APPLICATION_JSON).entity(new ErrorData(e.getMessage())).build();
}
FunctionMetaDataManager functionMetaDataManager = worker().getFunctionMetaDataManager();
if (functionMetaDataManager.containsFunction(tenant, namespace, functionName)) {
log.error("Function {}/{}/{} already exists", tenant, namespace, functionName);
return Response.status(Status.BAD_REQUEST).type(MediaType.APPLICATION_JSON).entity(new ErrorData(String.format("Function %s already exists", functionName))).build();
}
// function state
FunctionMetaData.Builder functionMetaDataBuilder = FunctionMetaData.newBuilder().setFunctionConfig(functionConfig).setCreateTime(System.currentTimeMillis()).setVersion(0);
PackageLocationMetaData.Builder packageLocationMetaDataBuilder = PackageLocationMetaData.newBuilder().setPackagePath(String.format("%s/%s/%s/%s", tenant, namespace, functionName, Utils.getUniquePackageName(fileDetail.getFileName())));
functionMetaDataBuilder.setPackageLocation(packageLocationMetaDataBuilder);
return updateRequest(functionMetaDataBuilder.build(), uploadedInputStream);
}
Aggregations