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.events.entities.Alert; import org.openstack.atlas.service.domain.repository.UsageRepository; import org.openstack.atlas.service.domain.services.helpers.AlertHelper; import org.openstack.atlas.service.domain.services.helpers.AlertType; import org.openstack.atlas.service.domain.usage.repository.HostUsageRepository; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class DailyDeletionJob extends AbstractJob { private final Log LOG = LogFactory.getLog(DailyDeletionJob.class); @Autowired private UsageRepository usageRepository; @Autowired private HostUsageRepository hostUsageRepository; @Override public Log getLogger() { return LOG; } @Override public JobName getJobName() { return JobName.DAILY_DELETION_JOB; } @Override public void setup(JobExecutionContext jobExecutionContext) throws JobExecutionException { } @Override public void run() throws Exception { try { deleteLoadBalancerUsageRecords(); deleteHostUsageRecords(); } 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() { } private void deleteLoadBalancerUsageRecords() { LOG.info("Deleting old loadbalancer usage records from the 'loadbalancing' database..."); usageRepository.deleteOldRecords(); LOG.info("Completed deleting old loadbalancer usage records from the 'loadbalancing' database."); } private void deleteHostUsageRecords() { LOG.info("Deleting old host usage records from the 'loadbalancing_usage' database..."); hostUsageRepository.deleteOldRecords(); LOG.info("Completed deleting old host usage records from the 'loadbalancing_usage' database."); } }