X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Fmusic%2Feelf%2Fhealthcheck%2FMusicHealthCheck.java;h=df6cc26591e7e47b268135397444b94cb270415a;hb=66aac8e2b8f61f075b285f969c1f8a88fdb313bd;hp=837e37c2a607035bab1b7c2b6d88f0cb2110047e;hpb=068d42850aacf57e965302dddd99b35b350efcc4;p=music.git diff --git a/src/main/java/org/onap/music/eelf/healthcheck/MusicHealthCheck.java b/src/main/java/org/onap/music/eelf/healthcheck/MusicHealthCheck.java index 837e37c2..df6cc265 100644 --- a/src/main/java/org/onap/music/eelf/healthcheck/MusicHealthCheck.java +++ b/src/main/java/org/onap/music/eelf/healthcheck/MusicHealthCheck.java @@ -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. @@ -19,21 +21,23 @@ * ============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