modify unique bug 71/20071/3
authorShiwei Tian <tian.shiwei@zte.com.cn>
Mon, 23 Oct 2017 08:06:41 +0000 (16:06 +0800)
committerShiwei Tian <tian.shiwei@zte.com.cn>
Tue, 24 Oct 2017 02:01:23 +0000 (10:01 +0800)
Issue-ID: HOLMES-71

Change-Id: I7b19e161f74c6dd97b6aeb93ae0d0247ce02b91e
Signed-off-by: Shiwei Tian <tian.shiwei@zte.com.cn>
holmes-actions/src/main/java/org/onap/holmes/common/api/stat/VesAlarm.java
holmes-actions/src/main/java/org/onap/holmes/common/dmaap/DmaapService.java
holmes-actions/src/main/java/org/onap/holmes/common/dmaap/entity/PolicyMsg.java
holmes-actions/src/test/java/org/onap/holmes/common/api/stat/VesAlarmTest.java
holmes-actions/src/test/java/org/onap/holmes/common/dmaap/DmaapServiceTest.java

index f43d3bd..ead8464 100644 (file)
@@ -57,7 +57,7 @@ public class VesAlarm implements Cloneable, Serializable{
 
     @Override
     public int hashCode() {
-        return this.version.hashCode();
+        return (this.getSourceId() + this.eventName.replace("Cleared", "")).hashCode();
     }
 
     @Override
@@ -65,7 +65,9 @@ public class VesAlarm implements Cloneable, Serializable{
         if (object == null || !(object instanceof VesAlarm)) {
             return false;
         }
-        return this.version.equals(((VesAlarm) object).getVersion());
+        return this.eventName.replace("Cleared", "")
+                .equals(((VesAlarm) object).getEventName().replace("Cleared", ""))
+                && this.getSourceId().equals(((VesAlarm) object).getSourceId());
     }
 
     @Override
index 3ddf126..fc79539 100644 (file)
@@ -38,14 +38,12 @@ import org.onap.holmes.common.utils.JacksonUtil;
 @Slf4j
 @Service
 public class DmaapService {
-
     public static final int POLICY_MESSAGE_ABATED = 1;
-
+    public static final String SERVICE_INSTANCE = "service-instance";
+    public static final String SERVICE_INSTANCE_ID = "service-instance.service-instance-id";
     @Inject
     private AaiQuery aaiQuery;
-
     public static ConcurrentHashMap<String, String> loopControlNames = new ConcurrentHashMap<>();
-
     public static ConcurrentHashMap<String, String> alarmUniqueRequestID = new ConcurrentHashMap<>();
 
     public void publishPolicyMsg(PolicyMsg policyMsg, String dmaapConfigKey) {
@@ -75,7 +73,7 @@ public class DmaapService {
             List<Relationship> relationshipList = vnfEntity.getRelationshipList().getRelationships();
             Relationship relationship = null;
             for(int i = 0; i < relationshipList.size(); i++) {
-                if ("service-instance".equals(relationshipList.get(i).getRelatedTo())) {
+                if (SERVICE_INSTANCE.equals(relationshipList.get(i).getRelatedTo())) {
                     relationship = relationshipList.get(i);
                     break;
                 }
@@ -83,7 +81,7 @@ public class DmaapService {
             if (relationship != null) {
                 List<RelationshipData> relationshipDataList = relationship.getRelationshipDataList();
                 for(int i = 0; i < relationshipDataList.size(); i++) {
-                    if ("service-instance.service-instance-id"
+                    if (SERVICE_INSTANCE_ID
                             .equals(relationshipDataList.get(i).getRelationshipKey())) {
                         vserverInstanceId = relationshipDataList.get(i).getRelationshipValue();
                         break;
@@ -97,30 +95,34 @@ public class DmaapService {
     private PolicyMsg getEnrichedPolicyMsg(VmEntity vmEntity, VesAlarm rootAlarm, VesAlarm childAlarm,
             String packageName) {
         PolicyMsg policyMsg = new PolicyMsg();
+        String alarmUniqueKey = "";
         if (rootAlarm.getAlarmIsCleared() == POLICY_MESSAGE_ABATED) {
             policyMsg.setClosedLoopEventStatus(EVENT_STATUS.ABATED);
+            alarmUniqueKey =
+                    rootAlarm.getSourceId() + ":" + rootAlarm.getEventName().replace("Cleared", "");
         } else {
             policyMsg.setClosedLoopEventStatus(EVENT_STATUS.ONSET);
             enrichVnfInfo(childAlarm, policyMsg);
+            alarmUniqueKey = rootAlarm.getSourceId() + ":" + rootAlarm.getEventName();
         }
-        if (alarmUniqueRequestID.containsKey(rootAlarm.getSourceId())) {
-            policyMsg.setRequestID(alarmUniqueRequestID.get(rootAlarm.getSourceId()));
+        if (alarmUniqueRequestID.containsKey(alarmUniqueKey)) {
+            policyMsg.setRequestID(alarmUniqueRequestID.get(alarmUniqueKey));
         } else {
             String requestID = UUID.randomUUID().toString();
             policyMsg.setRequestID(requestID);
-            alarmUniqueRequestID.put(rootAlarm.getSourceId(), requestID);
+            alarmUniqueRequestID.put(alarmUniqueKey, requestID);
         }
         policyMsg.setClosedLoopControlName(loopControlNames.get(packageName));
         policyMsg.setTarget(vmEntity.getVserverName());
-        policyMsg.getAAI().put("vserver.in-maint", String.valueOf(vmEntity.getInMaint()));
-        policyMsg.getAAI().put("vserver.is-closed-loop-disabled",
+        policyMsg.getAai().put("vserver.in-maint", String.valueOf(vmEntity.getInMaint()));
+        policyMsg.getAai().put("vserver.is-closed-loop-disabled",
                 String.valueOf(vmEntity.getClosedLoopDisable()));
-        policyMsg.getAAI().put("vserver.prov-status", vmEntity.getProvStatus());
-        policyMsg.getAAI().put("vserver.resource-version", vmEntity.getResourceVersion());
-        policyMsg.getAAI().put("vserver.vserver-id", vmEntity.getVserverId());
-        policyMsg.getAAI().put("vserver.vserver-name", vmEntity.getVserverName());
-        policyMsg.getAAI().put("vserver.vserver-name2", vmEntity.getVserverName2());
-        policyMsg.getAAI().put("vserver.vserver-selflink", vmEntity.getVserverSelflink());
+        policyMsg.getAai().put("vserver.prov-status", vmEntity.getProvStatus());
+        policyMsg.getAai().put("vserver.resource-version", vmEntity.getResourceVersion());
+        policyMsg.getAai().put("vserver.vserver-id", vmEntity.getVserverId());
+        policyMsg.getAai().put("vserver.vserver-name", vmEntity.getVserverName());
+        policyMsg.getAai().put("vserver.vserver-name2", vmEntity.getVserverName2());
+        policyMsg.getAai().put("vserver.vserver-selflink", vmEntity.getVserverSelflink());
         return policyMsg;
     }
 
@@ -128,16 +130,16 @@ public class DmaapService {
         PolicyMsg policyMsg = new PolicyMsg();
         policyMsg.setTarget("vserver.vserver-name");
         policyMsg.setTargetType("VM");
-        policyMsg.getAAI().put("vserver.vserver-name", sourceName);
+        policyMsg.getAai().put("vserver.vserver-name", sourceName);
         return policyMsg;
     }
 
     private void enrichVnfInfo(VesAlarm childAlarm, PolicyMsg policyMsg) {
         VnfEntity vnfEntity = getVnfEntity(childAlarm.getSourceId(), childAlarm.getSourceName());
         String vserverInstatnceId = getVserverInstanceId(vnfEntity);
-        policyMsg.getAAI().put("generic-vnf.vnf-id", childAlarm.getSourceId());
-        policyMsg.getAAI().put("generic-vnf.vnf-name", childAlarm.getSourceName());
-        policyMsg.getAAI().put("generic-vnf.service-instance-id", vserverInstatnceId);
+        policyMsg.getAai().put("generic-vnf.vnf-id", childAlarm.getSourceId());
+        policyMsg.getAai().put("generic-vnf.vnf-name", childAlarm.getSourceName());
+        policyMsg.getAai().put("generic-vnf.service-instance-id", vserverInstatnceId);
     }
 
     private VnfEntity getVnfEntity(String vnfId, String vnfName) {
index 4462474..37713b4 100644 (file)
@@ -36,11 +36,12 @@ public class PolicyMsg {
     private String policyVersion;\r
     private String policyName;\r
     private String policyScope;\r
-    private String from = "HOLMES";\r
+    private String from = "DCAE";\r
     @JsonProperty(value = "target_type")\r
     private String targetType = "VM";\r
     private String target;\r
-    private Map<String, String> AAI = new HashMap<>();\r
+    @JsonProperty(value = "AAI")\r
+    private Map<String, String> aai = new HashMap<>();\r
 \r
     public static enum EVENT_STATUS {\r
         ONSET, ABATED;\r
index c2772e8..f046517 100644 (file)
@@ -27,7 +27,8 @@ public class VesAlarmTest {
     @Test
     public void hashCodeTest() throws Exception {
         VesAlarm alarm = new VesAlarm();
-        alarm.setVersion(0L);
+        alarm.setEventName("unique");
+        alarm.setSourceId("123");
         VesAlarm alarmClone = (VesAlarm)alarm.clone();
         assertTrue(alarm.hashCode() == alarmClone.hashCode());
     }
@@ -35,7 +36,8 @@ public class VesAlarmTest {
     @Test
     public void equalsTest() throws Exception {
         VesAlarm alarm = new VesAlarm();
-        alarm.setVersion(0L);
+        alarm.setEventName("unique");
+        alarm.setSourceId("123");
         VesAlarm alarmClone = (VesAlarm)alarm.clone();
         assertTrue(alarm.equals(alarmClone));
     }
@@ -44,7 +46,8 @@ public class VesAlarmTest {
     public void cloneTest() throws Exception {
         VesAlarm alarm = new VesAlarm();
         alarm.setDomain("Test");
-        alarm.setVersion(0L);
+        alarm.setEventName("unique");
+        alarm.setSourceId("123");
         assertThat(alarm, equalTo(alarm.clone()));
     }
 
index c9f892b..3f61813 100644 (file)
@@ -72,7 +72,7 @@ public class DmaapServiceTest {
 
         assertThat(policyMsg.getTarget(), equalTo("vserver.vserver-name"));
         assertThat(policyMsg.getTargetType(), equalTo("VM"));
-        assertThat(policyMsg.getAAI().get("vserver.vserver-name"), equalTo("tetss"));
+        assertThat(policyMsg.getAai().get("vserver.vserver-name"), equalTo("tetss"));
     }
 
     @Test
@@ -189,8 +189,8 @@ public class DmaapServiceTest {
         PowerMock.verifyAll();
 
         assertThat(actual.getClosedLoopControlName(), equalTo(null));
-        assertThat(actual.getAAI().get("vserver.prov-status"), equalTo("prov"));
-        assertThat(actual.getAAI().get("vserver.vserver-name2") == null, equalTo(true));
-        assertThat(actual.getAAI().get("generic-vnf.service-instance-id"), equalTo(""));
+        assertThat(actual.getAai().get("vserver.prov-status"), equalTo("prov"));
+        assertThat(actual.getAai().get("vserver.vserver-name2") == null, equalTo(true));
+        assertThat(actual.getAai().get("generic-vnf.service-instance-id"), equalTo(""));
     }
 }
\ No newline at end of file