Fix the DCAE integration Bugs 89/22089/2
authorGuangrong Fu <fu.guangrong@zte.com.cn>
Sat, 4 Nov 2017 04:51:41 +0000 (12:51 +0800)
committerGuangrong Fu <fu.guangrong@zte.com.cn>
Sat, 4 Nov 2017 05:15:24 +0000 (13:15 +0800)
Change-Id: I87d8fbd71edc2ceaf39ca4d0c4df0ef62115a3d2
Issue-ID: HOLMES-81
Signed-off-by: Guangrong Fu <fu.guangrong@zte.com.cn>
engine-d/src/main/java/org/onap/holmes/engine/EngineDActiveApp.java
engine-d/src/main/java/org/onap/holmes/engine/dcae/DcaeConfigurationPolling.java
engine-d/src/test/java/org/onap/holmes/engine/EngineDActiveAppTest.java

index 9f604b1..4f5593c 100644 (file)
@@ -42,7 +42,6 @@ public class EngineDActiveApp extends IOCApplication<EngineDAppConfig> {
         super.run(configuration, environment);
 
         environment.jersey().register(new EngineResources());
-
         try {
             new MSBRegisterUtil().register2Msb(createMicroServiceInfo());
         } catch (CorrelationException e) {
@@ -50,7 +49,8 @@ public class EngineDActiveApp extends IOCApplication<EngineDAppConfig> {
         }
 
         ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
-        service.scheduleAtFixedRate(new DcaeConfigurationPolling("holmes-engine-mgmt"), 0,
+        service.scheduleAtFixedRate(
+                new DcaeConfigurationPolling(MicroServiceConfig.getEnv(MicroServiceConfig.HOSTNAME)), 0,
                 DcaeConfigurationPolling.POLLING_PERIOD, TimeUnit.MILLISECONDS);
     }
 
index 4808009..9f892de 100644 (file)
@@ -25,13 +25,11 @@ import org.onap.holmes.dsa.dmaappolling.Subscriber;
 import org.onap.holmes.engine.dmaap.SubscriberAction;
 
 @Slf4j
-public class DcaeConfigurationPolling implements Runnable{
+public class DcaeConfigurationPolling implements Runnable {
 
     private String hostname;
 
-    private String subscriberKey = "sec_fault_unsecure";
-
-    public static long POLLING_PERIOD = 10 * 1000L;
+    public static long POLLING_PERIOD = 30 * 1000L;
 
     public DcaeConfigurationPolling(String hostname) {
         this.hostname = hostname;
@@ -44,21 +42,23 @@ public class DcaeConfigurationPolling implements Runnable{
             dcaeConfigurations = DcaeConfigurationQuery
                     .getDcaeConfigurations(hostname);
         } catch (CorrelationException e) {
-            log.error("Failed to polling dcae configurations" + e.getMessage());
+            log.error("Failed to poll the DCAE configurations. " + e.getMessage());
         }
         if (dcaeConfigurations != null) {
             DcaeConfigurationsCache.setDcaeConfigurations(dcaeConfigurations);
-            addSubscriber(dcaeConfigurations);
+            addSubscribers(dcaeConfigurations);
         }
     }
 
-    private void addSubscriber(DcaeConfigurations dcaeConfigurations) {
+    private void addSubscribers(DcaeConfigurations dcaeConfigurations) {
         SubscriberAction subscriberAction = ServiceLocatorHolder.getLocator()
                 .getService(SubscriberAction.class);
-        Subscriber subscriber = new Subscriber();
-        subscriber.setTopic(subscriberKey);
-        subscriber.setUrl(dcaeConfigurations.getSubSecInfo(subscriberKey).getDmaapInfo()
-                .getTopicUrl());
-        subscriberAction.addSubscriber(subscriber);
+        for (String key : dcaeConfigurations.getSubKeys()) {
+            Subscriber subscriber = new Subscriber();
+            subscriber.setTopic(key);
+            subscriber.setUrl(dcaeConfigurations.getSubSecInfo(key).getDmaapInfo()
+                    .getTopicUrl());
+            subscriberAction.addSubscriber(subscriber);
+        }
     }
 }
index 2c6cdb7..b96dc74 100644 (file)
@@ -17,7 +17,97 @@ package org.onap.holmes.engine;
 \r
 public class EngineDActiveAppTest {\r
     public static void main(String[] args) throws Exception {\r
-        String filePath = "C:\\engine-d.yml";\r
+        String test = "package org.onap.holmes.droolsRule;\n"\r
+                + "\n"\r
+                + "import org.onap.holmes.common.dmaap.DmaapService;\n"\r
+                + "import org.onap.holmes.common.api.stat.VesAlarm;\n"\r
+                + "import org.onap.holmes.common.aai.CorrelationUtil;\n"\r
+                + "import org.onap.holmes.common.dmaap.entity.PolicyMsg;\n"\r
+                + "import org.onap.holmes.common.dropwizard.ioc.utils.ServiceLocatorHolder;\n"\r
+                + "import org.onap.holmes.common.utils.DroolsLog;\n"\r
+                + " \n"\r
+                + "\n"\r
+                + "rule \"Relation_analysis_Rule\"\n"\r
+                + "salience 200\n"\r
+                + "no-loop true\n"\r
+                + "    when\n"\r
+                + "        $root : VesAlarm(alarmIsCleared == 0,\n"\r
+                + "            $sourceId: sourceId, sourceId != null && !sourceId.equals(\"\"),\n"\r
+                + "\t\t\t$sourceName: sourceName, sourceName != null && !sourceName.equals(\"\"),\n"\r
+                + "\t\t\t$startEpochMicrosec: startEpochMicrosec,\n"\r
+                + "            specificProblem in (\"Fault_MultiCloud_VMFailure\"),\n"\r
+                + "            $eventId: eventId)\n"\r
+                + "        $child : VesAlarm( eventId != $eventId, parentId == null,\n"\r
+                + "            CorrelationUtil.getInstance().isTopologicallyRelated(sourceId, $sourceId, $sourceName),\n"\r
+                + "            specificProblem in (\"Slave MPU is offline\"),\n"\r
+                + "            startEpochMicrosec < $startEpochMicrosec + 60000 && startEpochMicrosec > $startEpochMicrosec - 60000 )\n"\r
+                + "    then\n"\r
+                + "\t\tDroolsLog.printInfo(\"===========================================================\");\n"\r
+                + "\t\tDroolsLog.printInfo(\"Relation_analysis_Rule: rootId=\" + $root.getEventId() + \", childId=\" + $child.getEventId());\n"\r
+                + "\t\t$child.setParentId($root.getEventId());\n"\r
+                + "\t\tupdate($child);\n"\r
+                + "\t\t\n"\r
+                + "end\n"\r
+                + "\n"\r
+                + "rule \"root_has_child_handle_Rule\"\n"\r
+                + "salience 150\n"\r
+                + "no-loop true\n"\r
+                + "\twhen\n"\r
+                + "\t\t$root : VesAlarm(alarmIsCleared == 0, rootFlag == 0, $eventId: eventId)\n"\r
+                + "\t\t$child : VesAlarm(eventId != $eventId, parentId == $eventId)\n"\r
+                + "\tthen\n"\r
+                + "\t\tDroolsLog.printInfo(\"===========================================================\");\n"\r
+                + "\t\tDroolsLog.printInfo(\"root_has_child_handle_Rule: rootId=\" + $root.getEventId() + \", childId=\" + $child.getEventId());\n"\r
+                + "\t\tDmaapService dmaapService = ServiceLocatorHolder.getLocator().getService(DmaapService.class);\n"\r
+                + "\t\tPolicyMsg policyMsg = dmaapService.getPolicyMsg($root, $child, \"org.onap.holmes.droolsRule\");\n"\r
+                + "        dmaapService.publishPolicyMsg(policyMsg, \"unauthenticated.DCAE_CL_OUTPUT\");\n"\r
+                + "\t\t$root.setRootFlag(1);\n"\r
+                + "\t\tupdate($root);\n"\r
+                + "end\n"\r
+                + "\n"\r
+                + "rule \"root_no_child_handle_Rule\"\n"\r
+                + "salience 100\n"\r
+                + "no-loop true\n"\r
+                + "    when\n"\r
+                + "        $root : VesAlarm(alarmIsCleared == 0, rootFlag == 0,\n"\r
+                + "            sourceId != null && !sourceId.equals(\"\"),\n"\r
+                + "\t\t\tsourceName != null && !sourceName.equals(\"\"),\n"\r
+                + "            specificProblem in (\"Fault_MultiCloud_VMFailure\"))\n"\r
+                + "    then\n"\r
+                + "\t\tDroolsLog.printInfo(\"===========================================================\");\n"\r
+                + "\t\tDroolsLog.printInfo(\"root_no_child_handle_Rule: rootId=\" + $root.getEventId());\n"\r
+                + "\t\tDmaapService dmaapService = ServiceLocatorHolder.getLocator().getService(DmaapService.class);\n"\r
+                + "\t\tPolicyMsg policyMsg = dmaapService.getPolicyMsg($root, null, \"org.onap.holmes.droolsRule\");\n"\r
+                + "        dmaapService.publishPolicyMsg(policyMsg, \"unauthenticated.DCAE_CL_OUTPUT\");\n"\r
+                + "\t\t$root.setRootFlag(1);\n"\r
+                + "\t\tupdate($root);\n"\r
+                + "end\n"\r
+                + "\n"\r
+                + "rule \"root_cleared_handle_Rule\"\n"\r
+                + "salience 100\n"\r
+                + "no-loop true\n"\r
+                + "    when\n"\r
+                + "        $root : VesAlarm(alarmIsCleared == 1, rootFlag == 1)\n"\r
+                + "    then\n"\r
+                + "\t\tDroolsLog.printInfo(\"===========================================================\");\n"\r
+                + "\t\tDroolsLog.printInfo(\"root_cleared_handle_Rule: rootId=\" + $root.getEventId());\n"\r
+                + "\t\tDmaapService dmaapService = ServiceLocatorHolder.getLocator().getService(DmaapService.class);\n"\r
+                + "\t\tPolicyMsg policyMsg = dmaapService.getPolicyMsg($root, null, \"org.onap.holmes.droolsRule\");\n"\r
+                + "        dmaapService.publishPolicyMsg(policyMsg, \"unauthenticated.DCAE_CL_OUTPUT\");\n"\r
+                + "\t\tretract($root);\n"\r
+                + "end\n"\r
+                + "\n"\r
+                + "rule \"child_handle_Rule\"\n"\r
+                + "salience 100\n"\r
+                + "no-loop true\n"\r
+                + "    when\n"\r
+                + "        $child : VesAlarm(alarmIsCleared == 1, rootFlag == 0)\n"\r
+                + "    then\n"\r
+                + "\t\tDroolsLog.printInfo(\"===========================================================\");\n"\r
+                + "\t\tDroolsLog.printInfo(\"child_handle_Rule: childId=\" + $child.getEventId());\n"\r
+                + "\t\tretract($child);\n"\r
+                + "end";\r
+        String filePath = "E:\\项目代码\\ONAP\\holmes\\engine-management\\engine-d-standalone\\src\\main\\assembly\\conf\\engine-d.yml";\r
         new EngineDActiveApp().run(new String[]{"server", filePath});\r
     }\r
 }\r