in manager/dm-server/src/main/java/org/apache/doris/stack/control/manager/DorisClusterManager.java [184:267]
public ClusterCreateReq deployClusterAfterOperation(long clusterId, String newPassword) throws Exception {
log.info("Deploy cluster {} after operation.", clusterId);
List<ClusterModuleServiceEntity> serviceEntities = serviceRepository.getByClusterId(clusterId);
int feJdbcPort = 0;
int feHttpPort = 0;
int feEditPort = 0;
int beHeartPort = 0;
int brokerRpcPort = 0;
List<String> feAccessInfo = new ArrayList<>();
List<String> beAccessInfo = new ArrayList<>();
List<String> brokerAccessInfo = new ArrayList<>();
List<String> feObserverInfo = new ArrayList<>();
for (ClusterModuleServiceEntity serviceEntity : serviceEntities) {
if (serviceEntity.getName().equals(ServerAndAgentConstant.FE_JDBC_SERVICE)) {
feJdbcPort = serviceEntity.getPort();
feAccessInfo = JSON.parseArray(serviceEntity.getAddressInfo(), String.class);
}
if (serviceEntity.getName().equals(ServerAndAgentConstant.FE_EDIT_SERVICE)) {
feEditPort = serviceEntity.getPort();
feObserverInfo = JSON.parseArray(serviceEntity.getAddressInfo(), String.class);
}
if (serviceEntity.getName().equals(ServerAndAgentConstant.FE_HTTP_SERVICE)) {
feHttpPort = serviceEntity.getPort();
}
if (serviceEntity.getName().equals(ServerAndAgentConstant.BE_HEARTBEAT_SERVICE)) {
beHeartPort = serviceEntity.getPort();
beAccessInfo = JSON.parseArray(serviceEntity.getAddressInfo(), String.class);
}
if (serviceEntity.getName().equals(ServerAndAgentConstant.BROKER_PRC_SERVICE)) {
brokerRpcPort = serviceEntity.getPort();
brokerAccessInfo = JSON.parseArray(serviceEntity.getAddressInfo(), String.class);
}
}
log.debug("Get doris jdbc connection");
// get doris jdbc connection
String feHost = feAccessInfo.get(0);
Statement stmt = jdbcClient.getStatement(feHost, feJdbcPort, ServerAndAgentConstant.USER_ROOT, "");
// add fe Observer
log.debug("Add fe Observers {}", feObserverInfo);
List<String> feObserverHostsPorts = new ArrayList<>();
for (String feObserverHost : feObserverInfo) {
String feObserverHostsPort = feObserverHost + ":" + feEditPort;
feObserverHostsPorts.add(feObserverHostsPort);
}
jdbcClient.addFeObserver(feObserverHostsPorts, stmt);
// add be
log.debug("Add be {}", beAccessInfo);
List<String> beHostsPorts = new ArrayList<>();
for (String beHost : beAccessInfo) {
String beHostsPort = beHost + ":" + beHeartPort;
beHostsPorts.add(beHostsPort);
}
jdbcClient.addBe(beHostsPorts, stmt);
// add broker
log.debug("Add broker {}", brokerAccessInfo);
List<String> brokerHostsPorts = new ArrayList<>();
for (String brokerHost : brokerAccessInfo) {
String brokerHostsPort = brokerHost + ":" + brokerRpcPort;
brokerHostsPorts.add(brokerHostsPort);
}
jdbcClient.addBrokerName(brokerHostsPorts, stmt);
// update password
log.debug("Update doris root and admin user default password.");
jdbcClient.updateUserPassword(ServerAndAgentConstant.USER_ADMIN, newPassword, stmt);
jdbcClient.updateUserPassword(ServerAndAgentConstant.USER_ROOT, newPassword, stmt);
// close jdbc connection
jdbcClient.closeStatement(stmt);
// get cluster fe access info
ClusterCreateReq clusterAccessInfo = new ClusterCreateReq();
clusterAccessInfo.setPasswd(newPassword);
clusterAccessInfo.setAddress(feHost);
clusterAccessInfo.setUser(ServerAndAgentConstant.USER_ADMIN);
clusterAccessInfo.setQueryPort(feJdbcPort);
clusterAccessInfo.setHttpPort(feHttpPort);
clusterAccessInfo.setType(ClusterType.Doris);
return clusterAccessInfo;
}