Bug 11740 - OVM - after Primary storage OCFS2 with ISCSI path has been removed, attempt to add back same ISCSI path to Primary storage OCFS2 failed

status 11740: resolved fixed
This commit is contained in:
frank 2011-10-17 13:55:19 -07:00
parent f7f2eb825d
commit 628a88a3e9
4 changed files with 33 additions and 1 deletions

View File

@ -41,6 +41,7 @@ errCode = {
"OvmStoragePool.createTemplateFromVolume":OvmStoragePoolErrCodeStub+5,
"OvmStoragePool._umount":OvmStoragePoolErrCodeStub+6,
"OvmStoragePool.copyVolume":OvmStoragePoolErrCodeStub+7,
"OvmStoragePool.delete":OvmStoragePoolErrCodeStub+8,
"OvmNetwork.createBridge":OvmNetworkErrCodeStub+1,
"OvmNetwork.deleteBridge":OvmNetworkErrCodeStub+2,

View File

@ -379,6 +379,19 @@ if this doesn't resolve the problem, please check oracle manual to see how to of
logger.error(OvmStoragePool.createTemplateFromVolume, errmsg)
raise XmlRpcFault(toErrCode(OvmStoragePool, OvmStoragePool.createTemplateFromVolume), errmsg)
@staticmethod
def delete(uuid):
try:
sr = OvmStoragePool()._getSrByNameLable(uuid)
primaryStoragePath = sr.mountpoint
OvmStoragePool()._umount(primaryStoragePath)
rs = SUCC()
return rs
except Exception, e:
errmsg = fmt_err_msg(e)
logger.error(OvmStoragePool.delete, errmsg)
raise XmlRpcFault(toErrCode(OvmStoragePool, OvmStoragePool.delete), errmsg)
@staticmethod
def copyVolume(secStorageMountPath, volumeFolderOnSecStorage, volumePath, storagePoolUuid, toSec):
def copyToSecStorage(secMountPoint, volumeFolderOnSecStorage, volumePath):

View File

@ -28,6 +28,7 @@ import com.cloud.agent.api.Command;
import com.cloud.agent.api.CreatePrivateTemplateFromVolumeCommand;
import com.cloud.agent.api.CreateStoragePoolCommand;
import com.cloud.agent.api.CreateVolumeFromSnapshotCommand;
import com.cloud.agent.api.DeleteStoragePoolCommand;
import com.cloud.agent.api.FenceAnswer;
import com.cloud.agent.api.FenceCommand;
import com.cloud.agent.api.GetHostStatsAnswer;
@ -1215,6 +1216,16 @@ public class OvmResourceBase implements ServerResource, HypervisorResource {
}
}
protected Answer execute(DeleteStoragePoolCommand cmd) {
try {
OvmStoragePool.delete(_conn, cmd.getPool().getUuid());
} catch (Exception e) {
s_logger.debug("Delete storage pool on host " + _ip + " failed, however, we leave to user for cleanup and tell managment server it succeeded", e);
}
return new Answer(cmd);
}
@Override
public Answer executeRequest(Command cmd) {
Class<? extends Command> clazz = cmd.getClass();
@ -1270,7 +1281,9 @@ public class OvmResourceBase implements ServerResource, HypervisorResource {
return execute((CreatePrivateTemplateFromVolumeCommand)cmd);
} else if (clazz == CopyVolumeCommand.class) {
return execute((CopyVolumeCommand)cmd);
}else {
} else if (clazz == DeleteStoragePoolCommand.class) {
return execute((DeleteStoragePoolCommand)cmd);
} else {
return Answer.createUnsupportedCommandAnswer(cmd);
}
}

View File

@ -81,4 +81,9 @@ public class OvmStoragePool extends OvmObject {
Map info = Coder.mapFromJson(res);
return (String) info.get("installPath");
}
public static void delete(Connection c, String uuid) throws XmlRpcException {
Object[] params = {uuid};
c.call("OvmStoragePool.delete", params);
}
}