aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/impl/ESCatalogDAO.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-dao/src/main/java/org/openecomp/sdc/be/dao/impl/ESCatalogDAO.java')
-rw-r--r--catalog-dao/src/main/java/org/openecomp/sdc/be/dao/impl/ESCatalogDAO.java205
1 files changed, 0 insertions, 205 deletions
diff --git a/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/impl/ESCatalogDAO.java b/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/impl/ESCatalogDAO.java
deleted file mode 100644
index 8d8e0ba50c..0000000000
--- a/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/impl/ESCatalogDAO.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.dao.impl;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import fj.data.Either;
-import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest;
-import org.elasticsearch.cluster.health.ClusterHealthStatus;
-import org.elasticsearch.common.unit.TimeValue;
-import org.openecomp.sdc.be.config.BeEcompErrorManager;
-import org.openecomp.sdc.be.config.ConfigurationManager;
-import org.openecomp.sdc.be.dao.api.ESGenericSearchDAO;
-import org.openecomp.sdc.be.dao.api.ICatalogDAO;
-import org.openecomp.sdc.be.dao.api.ResourceUploadStatus;
-import org.openecomp.sdc.be.resources.data.ESArtifactData;
-import org.openecomp.sdc.be.resources.exception.ResourceDAOException;
-import org.openecomp.sdc.common.api.HealthCheckInfo.HealthCheckStatus;
-import org.openecomp.sdc.common.log.wrappers.Logger;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.PostConstruct;
-import java.util.List;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.TimeUnit;
-
-@Component("resource-dao")
-public class ESCatalogDAO extends ESGenericSearchDAO implements ICatalogDAO {
-
- private static Logger log = Logger.getLogger(ESCatalogDAO.class.getName());
-
- // Index Checking Variables
- private boolean initCompleted = false;
-
- //TODO use LoggerMetric instead
- private static Logger healthCheckLogger = Logger.getLogger("elasticsearch.healthcheck");
-
- ///// HealthCheck/////////
- private static final String ES_HEALTH_CHECK_STR = "elasticsearchHealthCheck";
-
- private ScheduledExecutorService healthCheckScheduler = Executors
- .newSingleThreadScheduledExecutor(new ThreadFactory() {
- @Override
- public Thread newThread(Runnable r) {
- return new Thread(r, "ES-Health-Check-Thread");
- }
- });
-
- private class HealthCheckScheduledTask implements Runnable {
- @Override
- public void run() {
- log.trace("Executing ELASTICSEARCH Health Check Task - Start");
-
- HealthCheckStatus healthStatus = null;
- try {
- healthStatus = isInitCompleted() ? checkHealth() : HealthCheckStatus.DOWN;
- } catch (Exception e) {
- log.error("Error while trying to connect to elasticsearch. host: {} | port: {} | error: {}",
- getEsClient().getServerHost(), getEsClient().getServerPort(), e.getMessage(), e);
- healthStatus = HealthCheckStatus.DOWN;
- }
- log.trace("Executed ELASTICSEARCH Health Check Task - Status = {}", healthStatus);
- if (healthStatus != lastHealthState) {
- log.trace("ELASTICSEARCH Health State Changed to {}. Issuing alarm / recovery alarm...", healthStatus);
- lastHealthState = healthStatus;
- logAlarm();
- }
- }
- }
-
- private HealthCheckScheduledTask healthCheckScheduledTask = new HealthCheckScheduledTask();
- private volatile HealthCheckStatus lastHealthState = HealthCheckStatus.DOWN;
-
- /**
- * Get ES cluster status string rep
- *
- * @return "GREEN", "YELLOW" or "RED"
- */
- private HealthCheckStatus checkHealth() {
- if (!isInitCompleted()) {
- return HealthCheckStatus.DOWN;
- }
- ClusterHealthRequest healthRequest = new ClusterHealthRequest("_all");
- healthRequest.masterNodeTimeout(TimeValue.timeValueSeconds(2));
- ClusterHealthStatus status = getClient().admin().cluster().health(healthRequest).actionGet().getStatus();
- healthCheckLogger.debug("ES cluster health status is {}", status);
- if (status == null || status.equals(ClusterHealthStatus.RED)) {
- return HealthCheckStatus.DOWN;
- }
- return HealthCheckStatus.UP;
- }
-
- private void logAlarm() {
- if (lastHealthState == HealthCheckStatus.UP) {
- BeEcompErrorManager.getInstance().logBeHealthCheckElasticSearchRecovery(ES_HEALTH_CHECK_STR);
- } else {
- BeEcompErrorManager.getInstance().logBeHealthCheckElasticSearchError(ES_HEALTH_CHECK_STR);
- }
- }
-
- @PostConstruct
- public void initCompleted() {
- long interval = ConfigurationManager.getConfigurationManager().getConfiguration()
- .getEsReconnectIntervalInSeconds(5);
- this.healthCheckScheduler.scheduleAtFixedRate(healthCheckScheduledTask, 0, interval, TimeUnit.SECONDS);
- initCompleted = true;
- }
-
- @Override
- public void writeArtifact(ESArtifactData artifactData) {
- try {
- saveResourceData(artifactData);
- } catch (Exception e) {
- throw new ResourceDAOException("Error to save ArtifactData with " + artifactData.getId());
- }
- }
-
- @Override
- public Either<ESArtifactData, ResourceUploadStatus> getArtifact(String id) {
- ESArtifactData resData = null;
-
- try {
- resData = findById(getTypeFromClass(ESArtifactData.class), id, ESArtifactData.class);
- } catch (Exception e) {
- resData = null;
- BeEcompErrorManager.getInstance().logBeDaoSystemError("Get Artifact from database");
- log.debug("ESCatalogDAO:getArtifact failed with exception ", e);
- return Either.right(ResourceUploadStatus.ERROR);
- }
-
- if (resData != null) {
- return Either.left(resData);
- } else {
- return Either.right(ResourceUploadStatus.NOT_EXIST);
- }
- }
-
- private <T> String getTypeFromClass(Class<T> clazz) {
-
- return clazz.getSimpleName().toLowerCase();
- }
-
- @Override
- public void deleteArtifact(String id) {
- delete(getTypeFromClass(ESArtifactData.class), id);
- }
-
- @Override
- public Either<List<ESArtifactData>, ResourceUploadStatus> getArtifacts(String[] ids) {
- List<ESArtifactData> resData = null;
- try {
- resData = findByIds(getTypeFromClass(ESArtifactData.class), ESArtifactData.class, ids);
- } catch (Exception e) {
- resData = null;
- return Either.right(ResourceUploadStatus.ERROR);
- }
-
- if (resData != null && !resData.isEmpty()) {
- return Either.left(resData);
- } else {
- return Either.right(ResourceUploadStatus.NOT_EXIST);
- }
- }
-
- private void saveResourceData(ESArtifactData data) throws JsonProcessingException {
- String typeName = getTypeFromClass(data.getClass());
- saveResourceData(typeName, data, data.getId());
- }
-
- @Override
- public void deleteAllArtifacts() {
- String typeName = getTypeFromClass(ESArtifactData.class);
- String indexName = getIndexForType(typeName);
- deleteIndex(indexName);
-
- }
-
- public boolean isInitCompleted() {
- return initCompleted;
- }
-
- public HealthCheckStatus getHealth() {
- return lastHealthState;
- }
-
-}