package org.zstack.compute.vm;
import org.springframework.beans.factory.annotation.Autowire;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Configurable;
import org.zstack.core.cloudbus.CloudBusCallBack;
import org.zstack.core.scheduler.AbstractSchedulerJob;
import org.zstack.header.core.scheduler.APICreateSchedulerMessage;
import org.zstack.header.message.MessageReply;
import org.zstack.header.vm.StopVmInstanceMsg;
import org.zstack.header.vm.VmInstanceConstant;
import org.zstack.identity.AccountManager;
import org.zstack.utils.Utils;
import org.zstack.utils.logging.CLogger;
/**
* Created by root on 7/30/16.
*/
@Configurable(preConstruction = true, autowire = Autowire.BY_TYPE)
public class StopVmInstanceJob extends AbstractSchedulerJob {
private static final CLogger logger = Utils.getLogger(StopVmInstanceJob.class);
@Autowired
private transient AccountManager acntMgr;
/**
* @desc vm uuid
*/
private String vmUuid;
public StopVmInstanceJob(APICreateSchedulerMessage msg) {
super(msg);
}
public StopVmInstanceJob() {
super();
}
public void run() {
logger.debug(String.format("run scheduler for job: StopVmInstanceJob; vm uuid is %s", vmUuid));
StopVmInstanceMsg smsg = new StopVmInstanceMsg();
smsg.setVmInstanceUuid(vmUuid);
bus.makeTargetServiceIdByResourceUuid(smsg, VmInstanceConstant.SERVICE_ID, vmUuid);
bus.send(smsg, new CloudBusCallBack(null) {
@Override
public void run(MessageReply reply) {
if (reply.isSuccess()) {
logger.debug(String.format("StopVmInstanceJob for vm %s success", vmUuid));
} else {
logger.debug(String.format("StopVmInstanceJob for vm %s failed", vmUuid));
}
}
});
}
public String getVmUuid() {
return vmUuid;
}
public void setVmUuid(String vmUuid) {
this.vmUuid = vmUuid;
}
}