Anonymitaet commented on a change in pull request #5593: [Docs] Add admin api
docs of Pulsar Functions
URL: https://github.com/apache/pulsar/pull/5593#discussion_r344992548
##########
File path: site2/docs/admin-api-functions.md
##########
@@ -0,0 +1,545 @@
+---
+id: admin-api-functions
+title: Manage Functions
+sidebar_label: Functions
+---
+
+**Pulsar Functions** are lightweight compute processes that
+
+* consume messages from one or more Pulsar topics
+* apply a user-supplied processing logic to each message
+* publish the results of the computation to another topic
+
+Functions can be managed via the following methods.
+
+Method | Description
+---|---
+**Admin CLI** | The [`functions`](reference-pulsar-admin.md#functions) command
of the [`pulsar-admin`](reference-pulsar-admin.md) tool.
+**REST API** |The `/admin/v3/functions` endpoint of the admin {@inject:
rest:REST:/} API.
+**Java Admin API**| The `functions` method of the {@inject:
javadoc:PulsarAdmin:/admin/org/apache/pulsar/client/admin/PulsarAdmin} object
in the [Java API](client-libraries-java.md).
+
+## Function resources
+
+You can perform the following operations on functions.
+
+### Create
+
+You can create a Pulsar function in cluster mode (deploy it on a Pulsar
cluster) using Admin CLI, REST API or Java Admin API.
+
+#### Admin CLI
+
+Use the [`create`](reference-pulsar-admin.md#functions-create) subcommand.
+
+**Example**
+
+```shell
+$ pulsar-admin functions create \
+ --tenant public \
+ --namespace default \
+ --name (the name of Pulsar Functions) \
+ --inputs test-input-topic \
+ --output persistent://public/default/test-output-topic \
+ --classname org.apache.pulsar.functions.api.examples.ExclamationFunction \
+ --jar /examples/api-examples.jar
+```
+
+#### REST API
+
+{@inject: endpoint|POST|/admin/v3/functions/{tenant}/{namespace}/{functionName}
+
+#### Java Admin API
+
+```java
+FunctionConfig functionConfig = new FunctionConfig();
+functionConfig.setTenant(tenant);
+functionConfig.setNamespace(namespace);
+functionConfig.setName(functionName);
+functionConfig.setRuntime(FunctionConfig.Runtime.JAVA);
+functionConfig.setParallelism(1);
+functionConfig.setClassName("org.apache.pulsar.functions.api.examples.ExclamationFunction");
+functionConfig.setProcessingGuarantees(FunctionConfig.ProcessingGuarantees.ATLEAST_ONCE);
+functionConfig.setTopicsPattern(sourceTopicPattern);
+functionConfig.setSubName(subscriptionName);
+functionConfig.setAutoAck(true);
+functionConfig.setOutput(sinkTopic);
+admin.functions().createFunction(functionConfig, fileName);
+```
+
+### Update
+
+You can update a Pulsar function that has been deployed to a Pulsar cluster
using Admin CLI, REST API or Java Admin API.
+
+#### Admin CLI
+
+Use the [`update`](reference-pulsar-admin.md#functions-update) subcommand.
+
+**Example**
+
+```shell
+$ pulsar-admin functions update \
+ --tenant public \
+ --namespace default \
+ --name (the name of Pulsar Functions) \
+ --output persistent://public/default/update-output-topic \
+ # other options
+```
+
+#### REST Admin API
+
+{@inject: endpoint|PUT|/admin/v3/functions/{tenant}/{namespace}/{functionName}
+
+#### Java Admin API
+
+```java
+FunctionConfig functionConfig = new FunctionConfig();
+functionConfig.setTenant(tenant);
+functionConfig.setNamespace(namespace);
+functionConfig.setName(functionName);
+functionConfig.setRuntime(FunctionConfig.Runtime.JAVA);
+functionConfig.setParallelism(1);
+functionConfig.setClassName("org.apache.pulsar.functions.api.examples.ExclamationFunction");
+UpdateOptions updateOptions = new UpdateOptions();
+updateOptions.setUpdateAuthData(updateAuthData);
+admin.functions().updateFunction(functionConfig, userCodeFile, updateOptions);
+```
+
+### Start 1
+
+You can start a stopped function instance using Admin CLI, REST API or Java
Admin API.
+
+#### Admin CLI
+
+Use the [`start`](reference-pulsar-admin.md#functions-start) subcommand.
+
+```shell
+$ pulsar-admin functions start \
+ --tenant public \
+ --namespace default \
+ --name (the name of Pulsar Functions) \
+ --instance-id 1
+```
+
+#### REST API
+
+{@inject:
endpoint|POST|/admin/v3/functions/{tenant}/{namespace}/{functionName}/{instanceId}/start
+
+#### Java Admin API
+
+```java
+admin.functions().startFunction(tenant, namespace, functionName,
Integer.parseInt(instanceId));
+```
+
+### Start 2
+
+You can start all stopped function instances using Admin CLI, REST API or Java
Admin API.
+
+#### Admin CLI
+
+Use the [`start`](reference-pulsar-admin.md#functions-start) subcommand.
+
+**Example**
+
+```shell
+$ pulsar-admin functions start \
+ --tenant public \
+ --namespace default \
+ --name (the name of Pulsar Functions) \
+```
+
+#### REST API
+
+{@inject:
endpoint|POST|/admin/v3/functions/{tenant}/{namespace}/{functionName}/start
+
+#### Java
+
+```java
+admin.functions().startFunction(tenant, namespace, functionName);
+```
+
+### Stop 1
+
+You can stop a function instance with `instance-id` using Admin CLI, REST API
or Java Admin API.
+
+### Admin CLI
+
+Use the [`stop`](reference-pulsar-admin.md#functions-stop) subcommand.
+
+**Example**
+
+```shell
+$ pulsar-admin functions stop \
+ --tenant public \
+ --namespace default \
+ --name (the name of Pulsar Functions) \
+ --instance-id 1
+```
+
+#### REST API
+
+{@inject:
endpoint|POST|/admin/v3/functions/{tenant}/{namespace}/{functionName}/{instanceId}/stop
+
+#### Java Admin API
+
+```java
+admin.functions().stopFunction(tenant, namespace, functionName,
Integer.parseInt(instanceId));
+```
+
+### Stop 2
+
+You can stop all function instances using Admin CLI, REST API or Java Admin
API.
+
+#### Admin CLI
+
+Use the [`stop`](reference-pulsar-admin.md#functions-stop) subcommand.
+
+**Example**
+
+```shell
+$ pulsar-admin functions stop \
+ --tenant public \
+ --namespace default \
+ --name (the name of Pulsar Functions) \
+```
+
+#### REST API
+
+{@inject:
endpoint|POST|/admin/v3/functions/{tenant}/{namespace}/{functionName}/stop
+
+#### Java Admin API
+
+```java
+admin.functions().stopFunction(tenant, namespace, functionName);
+```
+
+### Restart 1
+
+Restart a function instance with `instance-id` using Admin CLI, REST API or
Java Admin API.
+
+#### Admin CLI
+
+Use the [`restart`](reference-pulsar-admin.md#functions-restart) subcommand.
+
+**Example**
+
+```shell
+$ pulsar-admin functions restart \
+ --tenant public \
+ --namespace default \
+ --name (the name of Pulsar Functions) \
+ --instance-id 1
+```
+
+#### REST API
+
+{@inject:
endpoint|POST|/admin/v3/functions/{tenant}/{namespace}/{functionName}/{instanceId}/restart
+
+#### Java Admin API
+
+```java
+admin.functions().restartFunction(tenant, namespace, functionName,
Integer.parseInt(instanceId));
+```
+
+### Restart 2
+
+You can restart all function instances using Admin CLI, REST API or Java admin
API.
+
+#### Admin CLI
+
+Use the [`restart`](reference-pulsar-admin.md#functions-restart) subcommand.
+
+**Example**
+
+```shell
+$ pulsar-admin functions restart \
+ --tenant public \
+ --namespace default \
+ --name (the name of Pulsar Functions) \
+```
+
+#### REST API
+
+{@inject:
endpoint|POST|/admin/v3/functions/{tenant}/{namespace}/{functionName}/restart
+
+#### Java Admin API
+
+```java
+admin.functions().restartFunction(tenant, namespace, functionName);
+```
+
+### List
+
+You can list all Pulsar functions running under a specific tenant and
namespace using Admin CLI, REST API or Java Admin API.
+
+#### Admin CLI
+
+Use the [`list`](reference-pulsar-admin.md#functions-list) subcommand.
+
+**Example**
+
+```shell
+$ pulsar-admin functions list \
+ --tenant public \
+ --namespace default
+```
+
+#### REST API
+
+{@inject: endpoint|GET|/admin/v3/functions/{tenant}/{namespace}
+
+#### Java Admin API
+
+```java
+admin.functions().getFunctions(tenant, namespace);
+```
+
+### Delete
+
+You can delete a Pulsar function that is running on a Pulsar cluster using
Admin CLI, REST API or Java Admin API.
+
+#### Admin CLI
+
+Use the [`delete`](reference-pulsar-admin.md#functions-delete) subcommand.
+
+**Example**
+
+```shell
+$ pulsar-admin functions delete \
+ --tenant public \
+ --namespace default \
+ --name (the name of Pulsar Functions)
+```
+
+#### REST API
+
+{@inject:
endpoint|DELETE|/admin/v3/functions/{tenant}/{namespace}/{functionName}
+
+#### Java Admin API
+
+```java
+admin.functions().deleteFunction(tenant, namespace, functionName);
+```
+
+### Get
+
+You can get information about a Pulsar function currently running in cluster
mode using Admin CLI, REST API or Java Admin API.
+
+#### Admin CLI
+
+Use the [`get`](reference-pulsar-admin.md#functions-get) subcommand.
+
+**Example**
+
+```shell
+$ pulsar-admin functions get \
+ --tenant public \
+ --namespace default \
+ --name (the name of Pulsar Functions)
+```
+
+#### REST API
+
+{@inject: endpoint|GET|/admin/v3/functions/{tenant}/{namespace}/{functionName}
+
+#### Java Admin API
+
+```java
+admin.functions().getFunction(tenant, namespace, functionName);
+```
+
+### Status 1
+
+You can get the current status of a Pulsar function instance with
`instance-id` using Admin CLI, REST API or Java Admin API.
+
+#### Admin CLI
+
+Use the [`status`](reference-pulsar-admin.md#functions-status) subcommand.
+
+**Example**
+
+```shell
+$ pulsar-admin functions status \
+ --tenant public \
+ --namespace default \
+ --name (the name of Pulsar Functions) \
+ --instance-id 1
+```
+
+#### REST API
+
+{@inject:
endpoint|GET|/admin/v3/functions/{tenant}/{namespace}/{functionName}/{instanceId}/status
+
+#### Java Admin API
+
+```java
+admin.functions().getFunctionStatus(tenant, namespace, functionName,
Integer.parseInt(instanceId));
+```
+
+### Status 2
+
+You can get the current status of a Pulsar function instance using Admin CLI,
REST API or Java Admin API.
Review comment:
```suggestion
You can get the current status of all Pulsar function instances using Admin
CLI, REST API or Java Admin API.
```
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services