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.StartVmInstanceMsg;
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 StartVmInstanceJob extends AbstractSchedulerJob {
private static final CLogger logger = Utils.getLogger(StartVmInstanceJob.class);
@Autowired
private transient AccountManager acntMgr;
private String vmUuid;
public StartVmInstanceJob(APICreateSchedulerMessage msg) {
super(msg);
}
public StartVmInstanceJob() {
super();
}
public void run() {
logger.debug(String.format("run scheduler for job: StartVmInstanceJob; vm uuid is %s", vmUuid));
StartVmInstanceMsg smsg = new StartVmInstanceMsg();
smsg.setVmInstanceUuid(vmUuid);
smsg.setAccountUuid(getAccountUuid());
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("StartVmInstanceJob for vm %s success", vmUuid));
} else {
logger.debug(String.format("StartVmInstanceJob for vm %s failed", vmUuid));
}
}
});
}
public String getVmUuid() {
return vmUuid;
}
public void setVmUuid(String vmUuid) {
this.vmUuid = vmUuid;
}
}