| # PIP-277: Add current cluster marking to clusters list command |
| |
| # Motivation |
| |
| After configuring the geo-replication on Pulsar clusters, the `clusters list` API will return multiple clusters, including the local Pulsar cluster and remote clusters like |
| |
| ``` |
| bin/pulsar-admin clusters list |
| us-west |
| us-east |
| us-cent |
| ``` |
| But in this return, you can't distinguish the local and the remote cluster. When you need to remove the geo-replication configuration, it will be hard to decide which cluster should be removed on replicated tenants and namespaces unless you record the cluster information. |
| |
| # High Level Design |
| |
| Add `--current` option to the cluster list cmd and mark the current cluster with `(*)` |
| ``` |
| bin/pulsar-admin clusters list --current |
| us-west(*) |
| us-east |
| us-cent |
| ``` |
| |
| # Detailed Design |
| |
| ## Implementation Details |
| |
| Add `--current` option to the cluster list cmd |
| ``` |
| @Parameter(names = { "-c", "--current" }, description = "Print the current cluster with (*)", required = false) |
| private boolean current = false; |
| ``` |
| |
| ``` |
| void run() throws PulsarAdminException { |
| java.util.List<String> clusters = getAdmin().clusters().getClusters(); |
| String clusterName = getAdmin().brokers().getRuntimeConfigurations().get("clusterName"); |
| List<String> result = clusters.stream().map(c ->c.equals(clusterName) ? (current ? c + "(*)" : c) : c).collect(Collectors.toList()); |
| print(result); |
| } |
| ``` |
| |
| # Links |
| |
| <!-- |
| Updated afterwards |
| --> |
| * Mailing List discussion thread: https://lists.apache.org/thread/800r6ld5wg7bttbywmk38m1qx12hs6nl |
| * Mailing List voting thread: https://lists.apache.org/thread/rqn3rd3c4hj11o3b12ygopmztj2yy7pv |