public void modifyAppAndAlarm()

in ozhera-monitor/ozhera-monitor-service/src/main/java/org/apache/ozhera/monitor/service/impl/AppMonitorServiceImpl.java [975:1073]


    public void modifyAppAndAlarm(HeraAppInfoModifyMessage baseInfoModify) {
        
        /**
         * appMonitor 信息同步变更
         */
        List<AppMonitor> appMonitors = appMonitorDao.listAppsByBaseInfoId(baseInfoModify.getId());
        if (!CollectionUtils.isEmpty(appMonitors)) {
            appMonitors.forEach(t -> {
                t.setAppSource(baseInfoModify.getPlatformType());
                t.setProjectId(baseInfoModify.getAppId());
                t.setIamTreeId(baseInfoModify.getIamTreeId());
                t.setIamTreeType(baseInfoModify.getIamTreeType());
                t.setProjectName(baseInfoModify.getAppName());
                appMonitorDao.update(t);
            });
        }
        
        /**
         * appName变更,报警策略和报警规则同步变更
         */
        if (baseInfoModify.getIsNameChange()) {
            
            AlarmStrategy strategy = new AlarmStrategy();
            strategy.setAppId(baseInfoModify.getAppId());
            strategy.setIamId(baseInfoModify.getIamTreeId());
            
            if (!appMonitorServiceExtension.checkAppModifyStrategySearchCondition(baseInfoModify)) {
                return;
            }
            
            PageData<List<AlarmStrategyInfo>> listPageData = strategyDao.searchByCondNoUser(strategy, 1, 1000, null,
                    null);
            List<AlarmStrategyInfo> list = listPageData.getList();
            if (!CollectionUtils.isEmpty(list)) {
                list.forEach(t -> {
                    List<AppAlarmRule> rules = ruleDao.selectByStrategyId(t.getId());
                    for (AppAlarmRule rule : rules) {
                        
                        AppMonitor app = new AppMonitor();
                        app.setProjectId(baseInfoModify.getAppId());
                        app.setProjectName(baseInfoModify.getAppName());
                        
                        AlarmRuleData ruleData = new AlarmRuleData();
                        BeanUtils.copyProperties(rule, ruleData);
                        ruleData.setLabels(rule.getLabels());
                        ruleData.convertLabels();
                        
                        ruleData.setIncludeEnvs(t.getIncludeEnvs());
                        ruleData.setExceptEnvs(t.getExceptEnvs());
                        ruleData.setIncludeZones(t.getIncludeZones());
                        ruleData.setExceptZones(t.getExceptZones());
                        
                        ruleData.setIncludeContainerName(t.getIncludeContainerName());
                        ruleData.setExceptContainerName(t.getExceptContainerName());
                        ruleData.setAlertMembers(t.getAlertMembers());
                        ruleData.setAtMembers(t.getAtMembers());
                        
                        if (!CollectionUtils.isEmpty(t.getIncludeFunctions())) {
                            ruleData.setIncludeFunctions(
                                    t.getIncludeFunctions().stream().map(String::valueOf).collect(Collectors.toList()));
                        }
                        
                        if (!CollectionUtils.isEmpty(t.getExceptFunctions())) {
                            ruleData.setExceptFunctions(
                                    t.getExceptFunctions().stream().map(String::valueOf).collect(Collectors.toList()));
                        }
                        
                        ruleData.setIncludeModules(t.getIncludeModules());
                        ruleData.setExceptModules(t.getExceptModules());
                        
                        Result result = alarmService.editRule(rule, ruleData, app, rule.getCreater());
                        if (!result.isSuccess()) {
                            log.error("heraAppInfoModify fail! rule : {} , result : {}", rule.toString(),
                                    new Gson().toJson(result));
                            continue;
                        }
                        
                        int i = ruleDao.updateByIdSelective(rule);
                        if (i < 1) {
                            log.error("heraAppInfoModify update rule db fail! rule{}", rule.toString());
                        }
                        
                    }
                    
                    AlarmStrategy strategyUp = new AlarmStrategy();
                    strategyUp.setId(t.getId());
                    strategyUp.setAppId(baseInfoModify.getAppId());
                    strategyUp.setAppName(baseInfoModify.getAppName());
                    strategyUp.setIamId(baseInfoModify.getIamTreeId());
                    boolean b = strategyDao.updateById(strategyUp);
                    if (!b) {
                        log.error("heraAppInfoModify update strategy fail! old:{},new:{}", t.toString(),
                                strategyUp.toString());
                    }
                    
                });
            }
        }
    }