package org.openstack.atlas.jobs; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.openstack.atlas.service.domain.entities.JobName; import org.openstack.atlas.service.domain.entities.LoadBalancer; import org.openstack.atlas.service.domain.events.entities.Alert; import org.openstack.atlas.service.domain.repository.LoadBalancerRepository; import org.openstack.atlas.service.domain.repository.SslTerminationRepository; import org.openstack.atlas.service.domain.services.helpers.AlertHelper; import org.openstack.atlas.service.domain.services.helpers.AlertType; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; @Component public class LoadBalancerDeletionJob extends AbstractJob { private final Log LOG = LogFactory.getLog(LoadBalancerDeletionJob.class); @Autowired private LoadBalancerRepository loadBalancerRepository; @Autowired private SslTerminationRepository sslTerminationRepository; @Override public Log getLogger() { return LOG; } @Override public JobName getJobName() { return JobName.LB_DELETION_JOB; } @Override public void setup(JobExecutionContext jobExecutionContext) throws JobExecutionException { } @Override public void run() throws Exception { try { List<LoadBalancer> elbs = loadBalancerRepository.getExpiredLbs(); LOG.info(String.format("There are '%s' expired load balancers...", elbs.size())); if (!elbs.isEmpty()) { for (LoadBalancer deleteLb : elbs) { LOG.info(String.format("Attempting to remove load balancer with id..'%s' from the database... ", deleteLb.getId())); //TODO: for legacy bug, remove user_page to prevent manual intervention. once caught up the following line(1) can be removed loadBalancerRepository.removeErrorPage(deleteLb.getId(), deleteLb.getAccountId()); try { sslTerminationRepository.removeSslTermination(deleteLb.getId(), deleteLb.getAccountId()); } catch (Exception e) { LOG.debug("SSL Termination is not found for load balancer: " + deleteLb.getId()); } loadBalancerRepository.removeExpiredLb(deleteLb.getId()); } } } catch (Exception e) { Alert alert = AlertHelper.createAlert(null, null, e, AlertType.API_FAILURE.name(), e.getMessage()); alertRepository.save(alert); throw e; } } @Override public void cleanup() { } }