package org.openstack.atlas.usage.jobs;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openstack.atlas.jobs.AbstractJob;
import org.openstack.atlas.service.domain.entities.JobName;
import org.openstack.atlas.service.domain.entities.LoadBalancer;
import org.openstack.atlas.service.domain.entities.LoadBalancerStatus;
import org.openstack.atlas.service.domain.events.UsageEvent;
import org.openstack.atlas.service.domain.repository.LoadBalancerRepository;
import org.openstack.atlas.service.domain.services.LoadBalancerService;
import org.openstack.atlas.service.domain.usage.BitTags;
import org.openstack.atlas.service.domain.usage.entities.LoadBalancerMergedHostUsage;
import org.openstack.atlas.service.domain.usage.repository.LoadBalancerMergedHostUsageRepository;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Calendar;
import java.util.List;
public class SuspendedEventJob extends AbstractJob {
private final Log LOG = LogFactory.getLog(SuspendedEventJob.class);
@Autowired
private LoadBalancerRepository loadBalancerRepository;
@Autowired
private LoadBalancerService loadBalancerService;
@Autowired
private LoadBalancerMergedHostUsageRepository lbMergedHostUsageRepository;
@Override
public Log getLogger() {
return LOG;
}
@Override
public JobName getJobName() {
return JobName.SUSPENDED_LB_JOB;
}
@Override
public void setup(JobExecutionContext jobExecutionContext) throws JobExecutionException {
}
@Override
public void run() throws Exception {
final Calendar now = Calendar.getInstance();
List<LoadBalancer> suspendedLoadBalancers = loadBalancerRepository.getLoadBalancersWithStatus(LoadBalancerStatus.SUSPENDED);
for (LoadBalancer suspendedLoadBalancer : suspendedLoadBalancers) {
BitTags tags = loadBalancerService.getCurrentBitTags(suspendedLoadBalancer.getId());
LoadBalancerMergedHostUsage newSuspendedEvent = new LoadBalancerMergedHostUsage(suspendedLoadBalancer.getAccountId(), suspendedLoadBalancer.getId(), 0l, 0l, 0l, 0l, 0, 0, suspendedLoadBalancer.getLoadBalancerJoinVipSet().size(), tags.toInt(), now, UsageEvent.SUSPENDED_LOADBALANCER);
LOG.debug(String.format("Adding suspended usage event for load balancer '%d'...", suspendedLoadBalancer.getId()));
lbMergedHostUsageRepository.create(newSuspendedEvent);
}
}
@Override
public void cleanup() {
}
}