This is an automated email from the ASF dual-hosted git repository. rxl pushed a commit to branch branch-2.6 in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 2a65167529e02d9f76ecef673430d04357d2ddfc Author: Rajan Dhabalia <rdhaba...@apache.org> AuthorDate: Wed Jul 1 23:21:16 2020 -0700 [pulsar-cli] fix update-cluster cli updates proxy-url (#7422) ### Motivation Pulsar-admin CLI doesn't update cluster-metadata with proxy-url and proxy-protocol. ### Modification Fix CLI to update proxy metadata. (cherry picked from commit 1e152bd1ef1d3c4b48de0179c66efa899ea34330) --- .../java/org/apache/pulsar/broker/admin/AdminApiTest2.java | 14 ++++++++++++++ .../main/java/org/apache/pulsar/admin/cli/CmdClusters.java | 10 ++++++++-- .../apache/pulsar/common/policies/data/ClusterData.java | 2 ++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java index 1fad0f8..ba246ea 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java @@ -62,6 +62,7 @@ import org.apache.pulsar.client.api.Consumer; import org.apache.pulsar.client.api.Message; import org.apache.pulsar.client.api.MessageRoutingMode; import org.apache.pulsar.client.api.Producer; +import org.apache.pulsar.client.api.ProxyProtocol; import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.client.api.SubscriptionInitialPosition; @@ -1269,4 +1270,17 @@ public class AdminApiTest2 extends MockedPulsarServiceBaseTest { } } + @Test + public void testUpdateClusterWithProxyUrl() throws Exception { + ClusterData cluster = new ClusterData(pulsar.getWebServiceAddress()); + String clusterName = "test2"; + admin.clusters().createCluster(clusterName, cluster); + Assert.assertEquals(admin.clusters().getCluster(clusterName), cluster); + + // update + cluster.setProxyServiceUrl("proxy"); + cluster.setProxyProtocol(ProxyProtocol.SNI); + admin.clusters().updateCluster(clusterName, cluster); + Assert.assertEquals(admin.clusters().getCluster(clusterName), cluster); + } } diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdClusters.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdClusters.java index 75f80ee..8ea2e36 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdClusters.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdClusters.java @@ -101,10 +101,16 @@ public class CmdClusters extends CmdBase { @Parameter(names = "--broker-url-secure", description = "broker-service-url for secure connection", required = false) private String brokerServiceUrlTls; + @Parameter(names = "--proxy-url", description = "Proxy-service url when client would like to connect to broker via proxy.", required = false) + private String proxyServiceUrl; + + @Parameter(names = "--proxy-protocol", description = "protocol to decide type of proxy routing eg: SNI", required = false) + private ProxyProtocol proxyProtocol; + void run() throws PulsarAdminException { String cluster = getOneArgument(params); - admin.clusters().updateCluster(cluster, - new ClusterData(serviceUrl, serviceUrlTls, brokerServiceUrl, brokerServiceUrlTls)); + admin.clusters().updateCluster(cluster, new ClusterData(serviceUrl, serviceUrlTls, brokerServiceUrl, + brokerServiceUrlTls, proxyServiceUrl, proxyProtocol)); } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java index 35cecbb..4f17811 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/ClusterData.java @@ -117,6 +117,8 @@ public class ClusterData { this.serviceUrlTls = other.serviceUrlTls; this.brokerServiceUrl = other.brokerServiceUrl; this.brokerServiceUrlTls = other.brokerServiceUrlTls; + this.proxyServiceUrl = other.proxyServiceUrl; + this.proxyProtocol = other.proxyProtocol; } public String getServiceUrl() {