CADI and a few small updates.
[music.git] / src / main / java / org / onap / music / eelf / healthcheck / MusicHealthCheck.java
index 837e37c..df6cc26 100644 (file)
@@ -3,6 +3,8 @@
  * org.onap.music
  * ===================================================================
  *  Copyright (c) 2017 AT&T Intellectual Property
+ *  
+ *  Modifications Copyright (C) 2019 IBM.
  * ===================================================================
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
  * ============LICENSE_END=============================================
  * ====================================================================
  */
+
 package org.onap.music.eelf.healthcheck;
 
 import java.util.UUID;
 
+import org.onap.music.datastore.MusicDataStoreHandle;
 import org.onap.music.datastore.PreparedQueryObject;
 import org.onap.music.eelf.logging.EELFLoggerDelegate;
 import org.onap.music.eelf.logging.format.AppMessages;
 import org.onap.music.eelf.logging.format.ErrorSeverity;
 import org.onap.music.eelf.logging.format.ErrorTypes;
 import org.onap.music.exceptions.MusicLockingException;
+import org.onap.music.exceptions.MusicQueryException;
 import org.onap.music.exceptions.MusicServiceException;
-import org.onap.music.lockingservice.MusicLockingService;
-import org.onap.music.main.MusicCore;
 import org.onap.music.main.MusicUtil;
 import org.onap.music.main.ResultType;
+import org.onap.music.main.MusicCore;
 
 import com.datastax.driver.core.ConsistencyLevel;
 
@@ -43,109 +47,86 @@ import com.datastax.driver.core.ConsistencyLevel;
  */
 public class MusicHealthCheck {
 
-       private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MusicUtil.class);
-
-       private String cassandrHost;
-       private String zookeeperHost;
-
-       public String getCassandraStatus(String consistency) {
-               logger.info(EELFLoggerDelegate.applicationLogger, "Getting Status for Cassandra");
-               
-               boolean result = false;
-               try {
-                       result = getAdminKeySpace(consistency);
-               } catch(Exception e) {
-                       if(e.getMessage().toLowerCase().contains("unconfigured table healthcheck")) {
-                               logger.error("Error", e);
-                               logger.debug("Creating table....");
-                               boolean ksresult = createKeyspace();
-                               if(ksresult)
-                                       try {
-                                               result = getAdminKeySpace(consistency);
-                                       } catch (MusicServiceException e1) {
-                                               // TODO Auto-generated catch block
-                                               logger.error("Error", e);
-                                               e1.printStackTrace();
-                                       }
-                       } else {
-                               logger.error("Error", e);
-                               return "One or more nodes are down or not responding.";
-                       }
-               }
-               if (result) {
-                       return "ACTIVE";
-               } else {
-                       logger.info(EELFLoggerDelegate.applicationLogger, "Cassandra Service is not responding");
-                       return "INACTIVE";
-               }
-       }
-
-       private Boolean getAdminKeySpace(String consistency) throws MusicServiceException {
-
-
-               PreparedQueryObject pQuery = new PreparedQueryObject();
-               pQuery.appendQueryString("insert into admin.healthcheck (id) values (?)");
-               pQuery.addValue(UUID.randomUUID());
-                       ResultType rs = MusicCore.nonKeyRelatedPut(pQuery, consistency);
-                       logger.info(rs.toString());
-                       if (rs != null) {
-                               return Boolean.TRUE;
-                       } else {
-                               return Boolean.FALSE;
-                       }
-
-
-       }
-       
-       private boolean createKeyspace() {
-               PreparedQueryObject pQuery = new PreparedQueryObject();
-               pQuery.appendQueryString("CREATE TABLE admin.healthcheck (id uuid PRIMARY KEY)");
-               ResultType rs = null ;
-               try {
-                       rs = MusicCore.nonKeyRelatedPut(pQuery, ConsistencyLevel.ONE.toString());
-               } catch (MusicServiceException e) {
+    private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MusicUtil.class);
+
+    private String cassandrHost;
+
+    public String getCassandraStatus(String consistency) {
+        logger.info(EELFLoggerDelegate.applicationLogger, "Getting Status for Cassandra");
+        
+        boolean result = false;
+        UUID randomUUID = UUID.randomUUID();
+        try {
+            result = getAdminKeySpace(consistency, randomUUID);
+        } catch(Exception e) {
+            if(e.getMessage().toLowerCase().contains("unconfigured table healthcheck")) {
+                logger.error("Error", e);
+                logger.debug("Creating table....");
+                boolean ksresult = createKeyspace();
+                if(ksresult)
+                    try {
+                        result = getAdminKeySpace(consistency, randomUUID);
+                    } catch (MusicServiceException e1) {
+                        logger.error(EELFLoggerDelegate.errorLogger, e1, AppMessages.UNKNOWNERROR, ErrorSeverity.ERROR, ErrorTypes.UNKNOWN);
+                    }
+            } else {
+                logger.error("Error", e);
+                return "One or more nodes are down or not responding.";
+            }
+        }
+        try {
+                       cleanHealthCheckId(randomUUID);
+               } catch (MusicServiceException | MusicQueryException e) {
                        // TODO Auto-generated catch block
-                       e.printStackTrace();
-                       logger.error("Error", e);
+                       logger.error("Error while cleaning healthcheck record id...", e);
                }
-               if(rs != null && rs.getResult().toLowerCase().contains("success"))
-                       return true;
-               else
-                       return false;
+        if (result) {
+            return "ACTIVE";
+        } else {
+            logger.info(EELFLoggerDelegate.applicationLogger, "Cassandra Service is not responding");
+            return "INACTIVE";
+        }
+    }
+
+    private Boolean getAdminKeySpace(String consistency, UUID randomUUID) throws MusicServiceException {
+        PreparedQueryObject pQuery = new PreparedQueryObject();
+        pQuery.appendQueryString("insert into admin.healthcheck (id) values (?)");
+        pQuery.addValue(randomUUID);
+        ResultType rs = MusicCore.nonKeyRelatedPut(pQuery, consistency);
+        logger.info(rs.toString());
+        return null != rs;
+        
+    }
+
+       private void cleanHealthCheckId(UUID randomUUID) throws MusicServiceException, MusicQueryException {
+               String cleanQuery = "delete  from admin.healthcheck where id = ?";
+        PreparedQueryObject deleteQueryObject = new PreparedQueryObject();
+        deleteQueryObject.appendQueryString(cleanQuery);
+        deleteQueryObject.addValue(randomUUID);
+        MusicDataStoreHandle.getDSHandle().executePut(deleteQueryObject, "eventual");  
+        logger.info(EELFLoggerDelegate.applicationLogger, "Cassandra healthcheck responded and cleaned up.");
        }
-
-       public String getZookeeperStatus() {
-
-               String host = MusicUtil.getMyZkHost();
-               logger.info(EELFLoggerDelegate.applicationLogger, "Getting Status for Zookeeper Host: " + host);
-               try {
-                       MusicCore.getLockingServiceHandle();
-                       // additionally need to call the ZK to create,aquire and delete lock
-               } catch (MusicLockingException e) {
-                       logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(), AppMessages.LOCKINGERROR,
-                                       ErrorTypes.CONNECTIONERROR, ErrorSeverity.CRITICAL);
-                       return "INACTIVE";
-               }
-
-               logger.info(EELFLoggerDelegate.applicationLogger, "Zookeeper is Active and Running");
-               return "ACTIVE";
-
-       }
-
-       public String getCassandrHost() {
-               return cassandrHost;
-       }
-
-       public void setCassandrHost(String cassandrHost) {
-               this.cassandrHost = cassandrHost;
-       }
-
-       public String getZookeeperHost() {
-               return zookeeperHost;
-       }
-
-       public void setZookeeperHost(String zookeeperHost) {
-               this.zookeeperHost = zookeeperHost;
-       }
-
-}
+    
+    
+    
+    private boolean createKeyspace() {
+        PreparedQueryObject pQuery = new PreparedQueryObject();
+        pQuery.appendQueryString("CREATE TABLE admin.healthcheck (id uuid PRIMARY KEY)");
+        ResultType rs = null ;
+        try {
+            rs = MusicCore.nonKeyRelatedPut(pQuery, ConsistencyLevel.ONE.toString());
+        } catch (MusicServiceException e) {
+            logger.error(EELFLoggerDelegate.errorLogger, e, AppMessages.UNKNOWNERROR, ErrorSeverity.ERROR, ErrorTypes.UNKNOWN);
+        }
+        return rs != null && rs.getResult().toLowerCase().contains("success");
+    }
+
+    public String getCassandrHost() {
+        return cassandrHost;
+    }
+
+    public void setCassandrHost(String cassandrHost) {
+        this.cassandrHost = cassandrHost;
+    }
+
+}
\ No newline at end of file