public ClusterCreateReq deployClusterAfterOperation()

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;
    }