/** * Copyright 2017-2021 ZTE Corporation. *

* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.onap.holmes.rulemgt.tools; import lombok.extern.slf4j.Slf4j; import org.onap.holmes.common.api.entity.CorrelationRule; import org.onap.holmes.common.engine.entity.EngineEntity; import org.onap.holmes.common.engine.service.EngineEntityService; import org.onap.holmes.rulemgt.wrapper.RuleQueryWrapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Arrays; import java.util.LinkedHashMap; import java.util.List; import java.util.stream.Collectors; @Component @Slf4j public class EngineTools { @Autowired private RuleQueryWrapper ruleQueryWrapper; @Autowired private EngineEntityService engineEntityService; public List getInstanceList() { List entities = engineEntityService.getAllEntities(); return entities.stream().map(EngineEntity::getIp).collect(Collectors.toList()); } public List getLegacyEngineInstances() { return engineEntityService.getLegacyEngines(); } public String getEngineWithLeastRules() { LinkedHashMap ruleNumInEachEngine = new LinkedHashMap<>(); try { for (String ip : getInstanceList()) { List rules = ruleQueryWrapper.queryRuleByEngineInstance(ip); if (rules != null) { ruleNumInEachEngine.put(ip, rules.size()); } } } catch (Exception e) { log.error("getEngineWithLeastRules failed!" + e.getMessage()); } Integer[] numOfRules = ruleNumInEachEngine.values().toArray(new Integer[0]); Arrays.sort(numOfRules); for (String ip : ruleNumInEachEngine.keySet()) { if (ruleNumInEachEngine.get(ip).equals(numOfRules[0])) { return ip; } } return null; } }