Search in sources :

Example 1 with SchedulingVo

use of com.dtstack.taier.scheduler.vo.SchedulingVo in project Taier by DTStack.

the class ConsoleClusterService method getConsoleClusterInfo.

/**
 * 获取集群信息详情 需要根据组件分组
 *
 * @param clusterId
 * @return
 */
public ClusterVO getConsoleClusterInfo(Long clusterId) {
    Cluster cluster = clusterMapper.getOne(clusterId);
    if (null == cluster) {
        return new ClusterVO();
    }
    ClusterVO clusterVO = ClusterVO.toVO(cluster);
    // 查询默认版本或者多个版本
    List<com.dtstack.taier.dao.domain.Component> components = componentMapper.listByClusterId(clusterId, null, false);
    List<IComponentVO> componentConfigs = componentConfigService.getComponentVoByComponent(components, true, clusterId, true, true);
    Table<Integer, String, KerberosConfig> kerberosTable = null;
    // kerberos的配置
    kerberosTable = HashBasedTable.create();
    for (KerberosConfig kerberosConfig : consoleKerberosMapper.getByClusters(clusterId)) {
        kerberosTable.put(kerberosConfig.getComponentType(), StringUtils.isBlank(kerberosConfig.getComponentVersion()) ? StringUtils.EMPTY : kerberosConfig.getComponentVersion(), kerberosConfig);
    }
    Map<EComponentScheduleType, List<IComponentVO>> scheduleType = new HashMap<>(4);
    // 组件根据用途分组(计算,资源)
    if (CollectionUtils.isNotEmpty(componentConfigs)) {
        scheduleType = componentConfigs.stream().collect(Collectors.groupingBy(c -> EComponentType.getScheduleTypeByComponent(c.getComponentTypeCode())));
    }
    List<SchedulingVo> schedulingVos = convertComponentToScheduling(kerberosTable, scheduleType);
    clusterVO.setScheduling(schedulingVos);
    clusterVO.setCanModifyMetadata(checkMetadata(clusterId, components));
    return clusterVO;
}
Also used : IComponentVO(com.dtstack.taier.scheduler.vo.IComponentVO) ClusterVO(com.dtstack.taier.develop.vo.console.ClusterVO) KerberosConfig(com.dtstack.taier.dao.domain.KerberosConfig) Cluster(com.dtstack.taier.dao.domain.Cluster) EComponentScheduleType(com.dtstack.taier.common.enums.EComponentScheduleType) SchedulingVo(com.dtstack.taier.scheduler.vo.SchedulingVo) Component(org.springframework.stereotype.Component)

Example 2 with SchedulingVo

use of com.dtstack.taier.scheduler.vo.SchedulingVo in project Taier by DTStack.

the class ConsoleClusterService method convertComponentToScheduling.

private List<SchedulingVo> convertComponentToScheduling(Table<Integer, String, KerberosConfig> kerberosTable, Map<EComponentScheduleType, List<IComponentVO>> scheduleType) {
    List<SchedulingVo> schedulingVos = new ArrayList<>();
    // 为空也返回
    for (EComponentScheduleType value : EComponentScheduleType.values()) {
        SchedulingVo schedulingVo = new SchedulingVo();
        schedulingVo.setSchedulingCode(value.getType());
        schedulingVo.setSchedulingName(value.getName());
        List<IComponentVO> componentVoList = scheduleType.getOrDefault(value, Collections.emptyList());
        if (Objects.nonNull(kerberosTable) && !kerberosTable.isEmpty() && CollectionUtils.isNotEmpty(componentVoList)) {
            componentVoList.forEach(component -> {
                // 组件每个版本设置k8s参数
                for (ComponentVO componentVO : component.loadComponents()) {
                    KerberosConfig kerberosConfig;
                    EComponentType type = EComponentType.getByCode(componentVO.getComponentTypeCode());
                    if (type == EComponentType.YARN || type == EComponentType.SPARK_THRIFT || type == EComponentType.HIVE_SERVER) {
                        kerberosConfig = kerberosTable.get(type.getTypeCode(), StringUtils.EMPTY);
                    } else {
                        kerberosConfig = kerberosTable.get(componentVO.getComponentTypeCode(), StringUtils.isBlank(componentVO.getVersionValue()) ? StringUtils.EMPTY : componentVO.getVersionValue());
                    }
                    if (Objects.nonNull(kerberosConfig)) {
                        componentVO.setPrincipal(kerberosConfig.getPrincipal());
                        componentVO.setPrincipals(kerberosConfig.getPrincipals());
                        componentVO.setMergeKrb5Content(kerberosConfig.getMergeKrbContent());
                    }
                }
            });
        }
        schedulingVo.setComponents(componentVoList);
        schedulingVos.add(schedulingVo);
    }
    return schedulingVos;
}
Also used : IComponentVO(com.dtstack.taier.scheduler.vo.IComponentVO) IComponentVO(com.dtstack.taier.scheduler.vo.IComponentVO) ComponentVO(com.dtstack.taier.scheduler.vo.ComponentVO) EComponentScheduleType(com.dtstack.taier.common.enums.EComponentScheduleType) KerberosConfig(com.dtstack.taier.dao.domain.KerberosConfig) SchedulingVo(com.dtstack.taier.scheduler.vo.SchedulingVo) EComponentType(com.dtstack.taier.common.enums.EComponentType)

Aggregations

EComponentScheduleType (com.dtstack.taier.common.enums.EComponentScheduleType)2 KerberosConfig (com.dtstack.taier.dao.domain.KerberosConfig)2 IComponentVO (com.dtstack.taier.scheduler.vo.IComponentVO)2 SchedulingVo (com.dtstack.taier.scheduler.vo.SchedulingVo)2 EComponentType (com.dtstack.taier.common.enums.EComponentType)1 Cluster (com.dtstack.taier.dao.domain.Cluster)1 ClusterVO (com.dtstack.taier.develop.vo.console.ClusterVO)1 ComponentVO (com.dtstack.taier.scheduler.vo.ComponentVO)1 Component (org.springframework.stereotype.Component)1