package alien4cloud.paas; import javax.inject.Inject; import org.springframework.stereotype.Service; import alien4cloud.deployment.DeploymentService; import alien4cloud.model.deployment.Deployment; import alien4cloud.paas.model.AbstractMonitorEvent; import alien4cloud.paas.model.DeploymentStatus; import alien4cloud.paas.model.PaaSDeploymentStatusMonitorEvent; import lombok.extern.slf4j.Slf4j; /** * This handler receives Deployment Status events and update the deployment if the status is un-deployed. */ @Slf4j @Service public class DeploymentStatusEventHandler implements IPaasEventListener<AbstractMonitorEvent> { @Inject private DeploymentService deploymentService; @Override public void eventHappened(AbstractMonitorEvent aEvent) { PaaSDeploymentStatusMonitorEvent event = (PaaSDeploymentStatusMonitorEvent) aEvent; log.debug("Received a deployment status event for deployment {} with a new status to {}", event.getDeploymentId(), event.getDeploymentStatus()); if (DeploymentStatus.UNDEPLOYED.equals(event.getDeploymentStatus())) { Deployment deployment = deploymentService.get(event.getDeploymentId()); if (deployment == null) { log.error("No deployment with id {} can be found while processing status event with status update to {}.", event.getDeploymentId(), event.getDeploymentStatus()); return; } deploymentService.markUndeployed(deployment); log.debug("Deployment {} end date has been updated to {} based on received UNDEPLOYED status event", event.getDeploymentId(), deployment.getEndDate()); } } @Override public boolean canHandle(AbstractMonitorEvent event) { return event instanceof PaaSDeploymentStatusMonitorEvent; } }