mirror of https://github.com/apache/cloudstack.git
CS-15155 : after system VMs boot up, destroy CD virtual device for System VM
when reconnect XenServer host, try to destroy CD virtual device for System VM, this is for upgrade Reviewed-By : kelven
This commit is contained in:
parent
29b82f2778
commit
89332d2816
|
|
@ -1118,6 +1118,26 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
|
|||
return cdromVBD;
|
||||
}
|
||||
|
||||
protected void destroyPatchVbd(Connection conn, String vmName) throws XmlRpcException, XenAPIException {
|
||||
try {
|
||||
if( !vmName.startsWith("r-") && !vmName.startsWith("s-") && !vmName.startsWith("v-") ) {
|
||||
return;
|
||||
}
|
||||
Set<VM> vms = VM.getByNameLabel(conn, vmName);
|
||||
for ( VM vm : vms ) {
|
||||
Set<VBD> vbds = vm.getVBDs(conn);
|
||||
for( VBD vbd : vbds ) {
|
||||
if (vbd.getType(conn) == Types.VbdType.CD ) {
|
||||
vbd.destroy(conn);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
s_logger.debug("Cannot destory CD-ROM device for VM " + vmName + " due to " + e.toString(), e);
|
||||
}
|
||||
}
|
||||
|
||||
protected CheckSshAnswer execute(CheckSshCommand cmd) {
|
||||
Connection conn = getConnection();
|
||||
String vmName = cmd.getName();
|
||||
|
|
@ -1133,6 +1153,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
|
|||
if (result != null) {
|
||||
return new CheckSshAnswer(cmd, "Can not ping System vm " + vmName + "due to:" + result);
|
||||
}
|
||||
destroyPatchVbd(conn, vmName);
|
||||
} catch (Exception e) {
|
||||
return new CheckSshAnswer(cmd, e);
|
||||
}
|
||||
|
|
@ -2697,7 +2718,14 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
|
|||
callHostPlugin(conn, "vmopsSnapshot", "unmountSnapshotsDir", "dcId", dcId.toString());
|
||||
|
||||
setupLinkLocalNetwork(conn);
|
||||
|
||||
// try to destroy CD-ROM device for all system VMs
|
||||
try {
|
||||
Set<VM> vms = VM.getAll(conn);
|
||||
for ( VM vm : vms ) {
|
||||
destroyPatchVbd(conn, vm.getNameLabel(conn));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
}
|
||||
try {
|
||||
boolean result = cleanupHaltedVms(conn);
|
||||
if (!result) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue