package org.zstack.compute.vm;
import org.zstack.header.core.workflow.FlowChain;
import org.zstack.header.message.Message;
import org.zstack.header.vm.VmInstanceBaseExtensionFactory;
import org.zstack.header.vm.VmInstanceFactory;
import org.zstack.header.vm.VmInstanceInventory;
import org.zstack.header.vm.VmInstanceType;
public interface VmInstanceManager {
FlowChain getCreateVmWorkFlowChain(VmInstanceInventory inv);
FlowChain getStopVmWorkFlowChain(VmInstanceInventory inv);
FlowChain getRebootVmWorkFlowChain(VmInstanceInventory inv);
FlowChain getStartVmWorkFlowChain(VmInstanceInventory inv);
FlowChain getDestroyVmWorkFlowChain(VmInstanceInventory inv);
FlowChain getMigrateVmWorkFlowChain(VmInstanceInventory inv);
FlowChain getAttachUninstantiatedVolumeWorkFlowChain(VmInstanceInventory inv);
FlowChain getAttachIsoWorkFlowChain(VmInstanceInventory inv);
FlowChain getDetachIsoWorkFlowChain(VmInstanceInventory inv);
FlowChain getExpungeVmWorkFlowChain(VmInstanceInventory inv);
FlowChain getPauseWorkFlowChain(VmInstanceInventory inv);
FlowChain getResumeVmWorkFlowChain(VmInstanceInventory inv);
VmInstanceFactory getVmInstanceFactory(VmInstanceType vmType);
VmInstanceBaseExtensionFactory getVmInstanceBaseExtensionFactory(Message msg);
}