package org.zstack.test.compute.vm;
import org.zstack.header.errorcode.ErrorCode;
import org.zstack.header.vm.VmInstanceInventory;
import org.zstack.header.vm.VmInstanceStopExtensionPoint;
import org.zstack.utils.Utils;
import org.zstack.utils.logging.CLogger;
public class VmStopExtension implements VmInstanceStopExtensionPoint {
CLogger logger = Utils.getLogger(VmStopExtension.class);
boolean preventStop = false;
boolean beforeCalled = false;
boolean afterCalled = false;
boolean failedCalled = false;
String expectedUuid;
@Override
public String preStopVm(VmInstanceInventory inv) {
if (preventStop) {
return "Prevent stopping vm on purpose";
} else {
return null;
}
}
@Override
public void beforeStopVm(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 afterStopVm(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 failedToStopVm(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 isPreventStop() {
return preventStop;
}
public void setPreventStop(boolean preventStop) {
this.preventStop = preventStop;
}
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;
}
}