package com.sungardas.enhancedsnapshots.cluster; import com.sungardas.enhancedsnapshots.aws.dynamodb.model.EventEntry; import com.sungardas.enhancedsnapshots.aws.dynamodb.model.NodeEntry; import com.sungardas.enhancedsnapshots.aws.dynamodb.repository.EventsRepository; import com.sungardas.enhancedsnapshots.aws.dynamodb.repository.NodeRepository; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class ClusterEventPublisherImpl implements ClusterEventPublisher { private static final Logger LOG = LogManager.getLogger(ClusterEventPublisherImpl.class); @Autowired private EventsRepository eventsRepository; @Autowired private NodeRepository nodeRepository; public void settingsUpdated() { long time = System.currentTimeMillis(); EventEntry eventEntry = new EventEntry(String.valueOf(time), time, ClusterEvents.SETTINGS_UPDATED, null, 0); eventsRepository.save(eventEntry); LOG.info("Settings update event was published"); } public void nodeLaunched(String nodeId, long volumeId, String msgId) { long time = System.currentTimeMillis(); EventEntry eventEntry = new EventEntry(msgId != null ? msgId : String.valueOf(time), time, ClusterEvents.NODE_LAUNCHED, nodeId, volumeId); eventsRepository.save(eventEntry); LOG.info("Node launched event published"); } public void nodeTerminated(String nodeId, String msgId) { long time = System.currentTimeMillis(); NodeEntry terminatedNode = nodeRepository.findOne(nodeId); if (terminatedNode != null) { EventEntry eventEntry = new EventEntry(msgId != null ? msgId : String.valueOf(time), time, ClusterEvents.NODE_TERMINATED, nodeId, terminatedNode.getSdfsVolumeId()); eventsRepository.save(eventEntry); nodeRepository.delete(terminatedNode); LOG.info("Node terminated event published"); } } @Override public void logWatcherStarted() { long time = System.currentTimeMillis(); EventEntry eventEntry = new EventEntry(String.valueOf(time), time, ClusterEvents.LOGS_WATCHER_STARTED, null, 0); eventsRepository.save(eventEntry); LOG.info("Log watcher started event published"); } @Override public void masterNodeChanged() { long time = System.currentTimeMillis(); EventEntry eventEntry = new EventEntry(String.valueOf(time), time, ClusterEvents.MASTER_NODE_CHANGED, null, 0); eventsRepository.save(eventEntry); LOG.info("Master node changed event published"); } }