blob: 83d3610a8fd8f5ac9a1d1865b9491747d0f28837 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.pulsar.common.policies.data;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.MoreObjects;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.LinkedHashSet;
import java.util.Objects;
import org.apache.pulsar.client.api.ProxyProtocol;
/**
* The configuration data for a cluster.
*/
@ApiModel(
value = "ClusterData",
description = "The configuration data for a cluster"
)
public class ClusterData {
@ApiModelProperty(
name = "serviceUrl",
value = "The HTTP rest service URL (for admin operations)",
example = "http://pulsar.example.com:8080"
)
private String serviceUrl;
@ApiModelProperty(
name = "serviceUrlTls",
value = "The HTTPS rest service URL (for admin operations)",
example = "https://pulsar.example.com:8443"
)
private String serviceUrlTls;
@ApiModelProperty(
name = "brokerServiceUrl",
value = "The broker service url (for produce and consume operations)",
example = "pulsar://pulsar.example.com:6650"
)
private String brokerServiceUrl;
@ApiModelProperty(
name = "brokerServiceUrlTls",
value = "The secured broker service url (for produce and consume operations)",
example = "pulsar+ssl://pulsar.example.com:6651"
)
private String brokerServiceUrlTls;
@ApiModelProperty(
name = "proxyServiceUrl",
value = "Proxy-service url when client would like to connect to broker via proxy.",
example = "pulsar+ssl://ats-proxy.example.com:4443 or "
+ "pulsar://ats-proxy.example.com:4080"
)
private String proxyServiceUrl;
@ApiModelProperty(
name = "proxyProtocol",
value = "protocol to decide type of proxy routing eg: SNI-routing",
example = "SNI"
)
private ProxyProtocol proxyProtocol;
// For given Cluster1(us-west1, us-east1) and Cluster2(us-west2, us-east2)
// Peer: [us-west1 -> us-west2] and [us-east1 -> us-east2]
@ApiModelProperty(
name = "peerClusterNames",
value = "A set of peer cluster names"
)
private LinkedHashSet<String> peerClusterNames;
public ClusterData() {
}
public ClusterData(String serviceUrl) {
this(serviceUrl, "");
}
public ClusterData(String serviceUrl, String serviceUrlTls) {
this.serviceUrl = serviceUrl;
this.serviceUrlTls = serviceUrlTls;
}
public ClusterData(String serviceUrl, String serviceUrlTls, String brokerServiceUrl, String brokerServiceUrlTls) {
this.serviceUrl = serviceUrl;
this.serviceUrlTls = serviceUrlTls;
this.brokerServiceUrl = brokerServiceUrl;
this.brokerServiceUrlTls = brokerServiceUrlTls;
}
public ClusterData(String serviceUrl, String serviceUrlTls, String brokerServiceUrl, String brokerServiceUrlTls,
String proxyServiceUrl, ProxyProtocol proxyProtocol) {
this.serviceUrl = serviceUrl;
this.serviceUrlTls = serviceUrlTls;
this.brokerServiceUrl = brokerServiceUrl;
this.brokerServiceUrlTls = brokerServiceUrlTls;
this.proxyServiceUrl = proxyServiceUrl;
this.proxyProtocol = proxyProtocol;
}
public void update(ClusterData other) {
checkNotNull(other);
this.serviceUrl = other.serviceUrl;
this.serviceUrlTls = other.serviceUrlTls;
this.brokerServiceUrl = other.brokerServiceUrl;
this.brokerServiceUrlTls = other.brokerServiceUrlTls;
this.proxyServiceUrl = other.proxyServiceUrl;
this.proxyProtocol = other.proxyProtocol;
}
public String getServiceUrl() {
return serviceUrl;
}
public String getServiceUrlTls() {
return serviceUrlTls;
}
public void setServiceUrl(String serviceUrl) {
this.serviceUrl = serviceUrl;
}
public void setServiceUrlTls(String serviceUrlTls) {
this.serviceUrlTls = serviceUrlTls;
}
public String getBrokerServiceUrl() {
return brokerServiceUrl;
}
public void setBrokerServiceUrl(String brokerServiceUrl) {
this.brokerServiceUrl = brokerServiceUrl;
}
public String getBrokerServiceUrlTls() {
return brokerServiceUrlTls;
}
public void setBrokerServiceUrlTls(String brokerServiceUrlTls) {
this.brokerServiceUrlTls = brokerServiceUrlTls;
}
public String getProxyServiceUrl() {
return proxyServiceUrl;
}
public void setProxyServiceUrl(String proxyServiceUrl) {
this.proxyServiceUrl = proxyServiceUrl;
}
public ProxyProtocol getProxyProtocol() {
return proxyProtocol;
}
public void setProxyProtocol(ProxyProtocol proxyProtocol) {
this.proxyProtocol = proxyProtocol;
}
public LinkedHashSet<String> getPeerClusterNames() {
return peerClusterNames;
}
public void setPeerClusterNames(LinkedHashSet<String> peerClusterNames) {
this.peerClusterNames = peerClusterNames;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof ClusterData) {
ClusterData other = (ClusterData) obj;
return Objects.equals(serviceUrl, other.serviceUrl) && Objects.equals(serviceUrlTls, other.serviceUrlTls)
&& Objects.equals(brokerServiceUrl, other.brokerServiceUrl)
&& Objects.equals(brokerServiceUrlTls, other.brokerServiceUrlTls)
&& Objects.equals(proxyServiceUrl, other.proxyServiceUrl)
&& Objects.equals(proxyProtocol, other.proxyProtocol);
}
return false;
}
@Override
public int hashCode() {
return Objects.hash(this.toString());
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("serviceUrl", serviceUrl)
.add("serviceUrlTls", serviceUrlTls)
.add("brokerServiceUrl", brokerServiceUrl)
.add("brokerServiceUrlTls", brokerServiceUrlTls)
.add("proxyServiceUrl", proxyServiceUrl)
.add("proxyProtocol", proxyProtocol)
.add("peerClusterNames", peerClusterNames).toString();
}
}