Skip to content

Commit

Permalink
Adding https support for backend service (#486)
Browse files Browse the repository at this point in the history
* Adding https support for backend service

* minore refactoring

---------

Co-authored-by: Gurleen Kaur <[email protected]>
  • Loading branch information
gurleen-gks and Gurleen Kaur authored Apr 4, 2024
1 parent 672863e commit e013e9d
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import java.text.DecimalFormat;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.pulsar.client.admin.Brokers;
import org.apache.pulsar.client.admin.PulsarAdminException;
import org.apache.pulsar.manager.controller.exception.PulsarAdminOperationException;
Expand Down Expand Up @@ -53,6 +54,7 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.web.util.UriComponentsBuilder;

@Service
@Configuration
Expand All @@ -67,6 +69,9 @@ public class BrokerStatsServiceImpl implements BrokerStatsService {
@Value("${clear.stats.interval}")
private Long clearStatsInterval;

@Value("${tls.enabled}")
private boolean tlsEnabled;

private final EnvironmentsRepository environmentsRepository;
private final ClustersService clustersService;
private final BrokersService brokersService;
Expand Down Expand Up @@ -124,12 +129,16 @@ private void scheduleCollectStats() {
clusterLists.forEach((clusterMap) -> {
String cluster = (String) clusterMap.get("cluster");
Pair<String, String> envCluster = Pair.of(env.getName(), cluster);
String webServiceUrl = (String) clusterMap.get("serviceUrl");

String serviceUrlTls = (String) clusterMap.get("serviceUrlTls");
tlsEnabled = tlsEnabled && StringUtils.isNotBlank(serviceUrlTls);
String webServiceUrl = tlsEnabled ? serviceUrlTls : (String) clusterMap.get("serviceUrl");
if (webServiceUrl.contains(",")) {
String[] webServiceUrlList = webServiceUrl.split(",");
for (String url : webServiceUrlList) {
if (!url.contains("http://")) {
url = "http://" + url;
// making sure the protocol is appended in case the env was added without the protocol
if (!tlsEnabled && !url.contains("http://")) {
url = (tlsEnabled ? "https://" : "http://") + url;
}
try {
Brokers brokers = pulsarAdminService.brokers(url);
Expand Down Expand Up @@ -158,9 +167,16 @@ public void collectStatsToDB(long unixTime, String env, String cluster, String s
Map<String, Object> brokerObject = brokersService.getBrokersList(0, 0, cluster, serviceUrl);
List<HashMap<String, Object>> brokerLists = (List<HashMap<String, Object>>) brokerObject.get("data");
brokerLists.forEach((brokerMap) -> {
// returns [Broker Hostname]:[Broker non Tls port]
String tempBroker = (String) brokerMap.get("broker");
// TODO: handle other protocols
//default to http
String broker = "http://" + tempBroker;
// if tls enabled the protocol and port is extracted from service url
if (tlsEnabled && tempBroker.contains(":")) {
String brokerHost = tempBroker.substring(0, tempBroker.indexOf(":"));
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(serviceUrl);
broker = builder.host(brokerHost).toUriString();
}
JsonObject result;
try {
result = pulsarAdminService.brokerStats(broker).getTopics();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.pulsar.common.policies.data.ClusterData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

Expand All @@ -51,6 +52,8 @@ public class EnvironmentCacheServiceImpl implements EnvironmentCacheService {

private final PulsarAdminService pulsarAdminService;

@Value("${tls.enabled}")
private boolean tlsEnabled;
private final Map<String, String> serviceUrlEnvironmentMap;

@Autowired
Expand Down Expand Up @@ -138,7 +141,7 @@ private String getServiceUrl(String environment, String cluster, int numReloads)
throw new RuntimeException(
"No cluster '" + cluster + "' found in environment '" + environment + "'");
}
return clusterData.getServiceUrl();
return tlsEnabled && StringUtils.isNotBlank(clusterData.getServiceUrlTls()) ? clusterData.getServiceUrlTls() : clusterData.getServiceUrl();
}

@Scheduled(
Expand Down

0 comments on commit e013e9d

Please sign in to comment.