package org.zstack.test.compute.vm;
import org.zstack.header.errorcode.ErrorCode;
import org.zstack.header.vm.VmInstanceInventory;
import org.zstack.header.vm.VmInstanceStartExtensionPoint;
import org.zstack.utils.Utils;
import org.zstack.utils.logging.CLogger;
public class VmStartExtension implements VmInstanceStartExtensionPoint {
CLogger logger = Utils.getLogger(VmStartExtension.class);
boolean preventStart = false;
boolean beforeCalled = false;
boolean afterCalled = false;
boolean failedCalled = false;
String expectedUuid;
@Override
public String preStartVm(VmInstanceInventory inv) {
if (preventStart) {
return "Prevent starting vm on purpose";
}
return null;
}
@Override
public void beforeStartVm(VmInstanceInventory inv) {
if (inv.getUuid().equals(expectedUuid)) {
beforeCalled = true;
} else {
logger.debug(String.format("Expected uuid: %s but got %s", expectedUuid, inv.getUuid()));
}
}
@Override
public void afterStartVm(VmInstanceInventory inv) {
if (inv.getUuid().equals(expectedUuid)) {
afterCalled = true;
} else {
logger.debug(String.format("Expected uuid: %s but got %s", expectedUuid, inv.getUuid()));
}
}
@Override
public void failedToStartVm(VmInstanceInventory inv, ErrorCode reason) {
if (inv.getUuid().equals(expectedUuid)) {
failedCalled = true;
} else {
logger.debug(String.format("Expected uuid: %s but got %s", expectedUuid, inv.getUuid()));
}
}
public boolean isPreventStart() {
return preventStart;
}
public void setPreventStart(boolean preventStart) {
this.preventStart = preventStart;
}
public boolean isBeforeCalled() {
return beforeCalled;
}
public void setBeforeCalled(boolean beforeCalled) {
this.beforeCalled = beforeCalled;
}
public boolean isAfterCalled() {
return afterCalled;
}
public void setAfterCalled(boolean afterCalled) {
this.afterCalled = afterCalled;
}
public boolean isFailedCalled() {
return failedCalled;
}
public void setFailedCalled(boolean failedCalled) {
this.failedCalled = failedCalled;
}
public String getExpectedUuid() {
return expectedUuid;
}
public void setExpectedUuid(String expectedUuid) {
this.expectedUuid = expectedUuid;
}
}