X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=rulemgt%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fholmes%2Frulemgt%2Fdcae%2FConfigFileScanningTask.java;h=574432c22f341301057132e55a5c2bb324f83438;hb=refs%2Fchanges%2F54%2F126654%2F2;hp=884ea311bc8a731a100ffaf2e53100e023464ade;hpb=ad3329cc6366a42824d3894cc669de9f260219ba;p=holmes%2Frule-management.git diff --git a/rulemgt/src/main/java/org/onap/holmes/rulemgt/dcae/ConfigFileScanningTask.java b/rulemgt/src/main/java/org/onap/holmes/rulemgt/dcae/ConfigFileScanningTask.java index 884ea31..574432c 100644 --- a/rulemgt/src/main/java/org/onap/holmes/rulemgt/dcae/ConfigFileScanningTask.java +++ b/rulemgt/src/main/java/org/onap/holmes/rulemgt/dcae/ConfigFileScanningTask.java @@ -53,6 +53,26 @@ public class ConfigFileScanningTask implements Runnable { @Override public void run() { + List deployedRules = null; + boolean isRuleQueryAvailable = true; + + try { + deployedRules = getExistingRules(); + } catch (Exception e) { + LOGGER.warn("Failed to get existing rules for comparison.", e); + isRuleQueryAvailable = false; + } + + // If it fails to load rule through API, it means that something must be wrong with the + // holmes-rule-mgmt service. Hence, there's no need to go on with remaining steps. + if (!isRuleQueryAvailable) { + return; + } + + for (RuleResult4API ruleResult4API : deployedRules) { + configInEffect.put(ruleResult4API.getLoopControlName(), ruleResult4API.getContent()); + } + if (null == configFileScanner) { configFileScanner = new ConfigFileScanner(); } @@ -60,8 +80,6 @@ public class ConfigFileScanningTask implements Runnable { try { Map newConfig = extractConfigItems(configFileScanner.scan(configFile)); - List deployedRules = getExistingRules(); - // deal with newly added rules final Set existingKeys = new HashSet(configInEffect.keySet()); final Set newKeys = new HashSet(newConfig.keySet()); @@ -69,15 +87,14 @@ public class ConfigFileScanningTask implements Runnable { .filter(key -> !existingKeys.contains(key)) .forEach(key -> { if (deployRule(key, newConfig.get(key))) { - configInEffect.put(key, newConfig.get(key)); LOGGER.info("Rule '{}' has been deployed.", key); } }); // deal with removed rules + final List existingRules = deployedRules; existingKeys.stream().filter(key -> !newKeys.contains(key)).forEach(key -> { - if (deleteRule(find(deployedRules, key))) { - configInEffect.remove(key); + if (deleteRule(find(existingRules, key))) { LOGGER.info("Rule '{}' has been removed.", key); } }); @@ -85,10 +102,8 @@ public class ConfigFileScanningTask implements Runnable { // deal with changed rules existingKeys.stream().filter(key -> newKeys.contains(key)).forEach(key -> { if (changed(configInEffect.get(key), newConfig.get(key))) { - if (deleteRule(find(deployedRules, key))) { - configInEffect.remove(key); + if (deleteRule(find(existingRules, key))) { deployRule(key, newConfig.get(key)); - configInEffect.put(key, newConfig.get(key)); LOGGER.info("Rule '{}' has been updated.", key); } }