public ClusterInfoEntity validateCluster()

in manager/dm-server/src/main/java/org/apache/doris/stack/component/DorisManagerUserSpaceComponent.java [190:237]


    public ClusterInfoEntity validateCluster(ClusterCreateReq createReq) throws Exception {
        log.debug("validate palo cluster info.");
        checkRequestBody(createReq.hasEmptyField());
        log.info("Verify that the Palo cluster already exists.");
        List<ClusterInfoEntity> exsitEntities =
                clusterInfoRepository.getByAddressAndPort(createReq.getAddress(), createReq.getHttpPort());
        if (exsitEntities != null && exsitEntities.size() != 0) {
            log.error("The palo cluster {} is already associated with space.", createReq.getAddress() + ":"
                    + createReq.getHttpPort());
            throw new DorisSpaceDuplicatedException();
        }

        log.info("Verify that the Palo cluster is available");
        ClusterInfoEntity entity = new ClusterInfoEntity();
        entity.updateByClusterInfo(createReq);
        // encrypt passwd
        entity.setPasswd(CredsUtil.aesEncrypt(entity.getPasswd()));
        // Just verify whether the Doris HTTP interface can be accessed
        try {
            paloLoginClient.loginPalo(entity);
        } catch (Exception e) {
            log.error("Doris cluster http access error.");
            if (e.getMessage().contains("nodename nor servname provided, or not known")) {
                throw new DorisIpErrorException();
            } else if (e.getMessage().contains("failed: Connection refused (Connection refused)")) {
                throw new DorisHttpPortErrorException();
            } else if (e.getMessage().contains("Login palo error:Access denied for default_cluster")) {
                throw new DorisUserNoPermissionException();
            } else if (e.getMessage().contains("Login palo error:Access denied")) {
                throw new DorisUerOrPassErrorException();
            }
            throw new DorisConnectionException(e.getMessage());
        }

        // Just verify whether the Doris JDBC protocol can be accessed
        try {
            jdbcClient.testConnetion(createReq.getAddress(), createReq.getQueryPort(),
                    ConstantDef.MYSQL_DEFAULT_SCHEMA, createReq.getUser(), createReq.getPasswd());
            log.debug("Doris cluster jdbc access success.");
        } catch (Exception e) {
            log.error("Doris cluster jdbc access error.");
            throw new DorisJdbcPortErrorException();
        }

        // The manager function is enabled by default
        entity.setManagerEnable(true);
        return entity;
    }