From 8a5a0572314f3f93e9f3f93371e812cde38a89cd Mon Sep 17 00:00:00 2001 From: anthony Date: Tue, 2 Aug 2011 18:34:41 -0700 Subject: [PATCH] bug 10483: if hypervisor doesn't support a guest OS type, boot from ISO of this guest OS type fails, deployed VM is not impacted, if the guest OS type is not supported, run it as HVM status 10483: resolved fixed Conflicts: core/src/com/cloud/hypervisor/xen/resource/CitrixHelper.java core/src/com/cloud/hypervisor/xen/resource/XenServer60Resource.java --- .../hypervisor/xen/resource/CitrixHelper.java | 35 ++++++++++++++----- .../xen/resource/XenServer56FP1Resource.java | 2 +- .../xen/resource/XenServer56Resource.java | 2 +- .../xen/resource/XenServer56SP2Resource.java | 2 +- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/core/src/com/cloud/hypervisor/xen/resource/CitrixHelper.java b/core/src/com/cloud/hypervisor/xen/resource/CitrixHelper.java index 8bc7cb25915..570dd2c9091 100644 --- a/core/src/com/cloud/hypervisor/xen/resource/CitrixHelper.java +++ b/core/src/com/cloud/hypervisor/xen/resource/CitrixHelper.java @@ -22,6 +22,8 @@ import java.util.HashMap; import org.apache.log4j.Logger; +import com.cloud.utils.exception.CloudRuntimeException; + /** * Reduce bloat inside CitrixResourceBase * @@ -326,29 +328,44 @@ public class CitrixHelper { return guestOS; } - public static String getXenServerGuestOsType(String stdType) { + public static String getXenServerGuestOsType(String stdType, boolean bootFromCD) { String guestOS = _xenServerGuestOsMap.get(stdType); if (guestOS == null) { - s_logger.debug("Can't find the guest os: " + stdType + " mapping into XenServer 5.6 guestOS type, start it as HVM guest"); - guestOS = "Other install media"; + if ( !bootFromCD ) { + s_logger.debug("Can't find the guest os: " + stdType + " mapping into XenServer 5.6 guestOS type, start it as HVM guest"); + guestOS = "Other install media"; + } else { + String msg = "XenServer 5.6 doesn't support Guest OS type " + stdType; + s_logger.warn(msg); + } } return guestOS; } - public static String getXenServer56FP1GuestOsType(String stdType) { + public static String getXenServer56FP1GuestOsType(String stdType, boolean bootFromCD) { String guestOS = _xenServer56FP1GuestOsMap.get(stdType); if (guestOS == null) { - s_logger.debug("Can't find the guest os: " + stdType + " mapping into XenServer 5.6 FP1 guestOS type, start it as HVM guest"); - guestOS = "Other install media"; + if ( !bootFromCD ) { + s_logger.debug("Can't find the guest os: " + stdType + " mapping into XenServer 5.6 FP1 guestOS type, start it as HVM guest"); + guestOS = "Other install media"; + } else { + String msg = "XenServer 5.6 FP1 DOES NOT support Guest OS type " + stdType; + s_logger.warn(msg); + } } return guestOS; } - public static String getXenServer56FP2GuestOsType(String stdType) { + public static String getXenServer56SP2GuestOsType(String stdType, boolean bootFromCD) { String guestOS = _xenServer56FP2GuestOsMap.get(stdType); if (guestOS == null) { - s_logger.debug("Can't find the guest os: " + stdType + " mapping into XenServer 5.6 FP2 guestOS type, start it as HVM guest"); - guestOS = "Other install media"; + if ( !bootFromCD ) { + s_logger.debug("Can't find the guest os: " + stdType + " mapping into XenServer 5.6 SP2 guestOS type, start it as HVM guest"); + guestOS = "Other install media"; + } else { + String msg = "XenServer 5.6 SP2 DOES NOT support Guest OS type " + stdType; + s_logger.warn(msg); + } } return guestOS; } diff --git a/core/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java b/core/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java index 130755f6bf8..3aa91889ad3 100644 --- a/core/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java +++ b/core/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java @@ -38,7 +38,7 @@ public class XenServer56FP1Resource extends XenServer56Resource { @Override protected String getGuestOsType(String stdType, boolean bootFromCD) { - return CitrixHelper.getXenServer56FP1GuestOsType(stdType); + return CitrixHelper.getXenServer56FP1GuestOsType(stdType, bootFromCD); } @Override diff --git a/core/src/com/cloud/hypervisor/xen/resource/XenServer56Resource.java b/core/src/com/cloud/hypervisor/xen/resource/XenServer56Resource.java index d506783a26c..629a8647463 100644 --- a/core/src/com/cloud/hypervisor/xen/resource/XenServer56Resource.java +++ b/core/src/com/cloud/hypervisor/xen/resource/XenServer56Resource.java @@ -84,7 +84,7 @@ public class XenServer56Resource extends CitrixResourceBase { @Override protected String getGuestOsType(String stdType, boolean bootFromCD) { - return CitrixHelper.getXenServerGuestOsType(stdType); + return CitrixHelper.getXenServerGuestOsType(stdType, bootFromCD); } diff --git a/core/src/com/cloud/hypervisor/xen/resource/XenServer56SP2Resource.java b/core/src/com/cloud/hypervisor/xen/resource/XenServer56SP2Resource.java index 8bb9eebdea6..7ab27491d41 100644 --- a/core/src/com/cloud/hypervisor/xen/resource/XenServer56SP2Resource.java +++ b/core/src/com/cloud/hypervisor/xen/resource/XenServer56SP2Resource.java @@ -39,7 +39,7 @@ public class XenServer56SP2Resource extends XenServer56Resource { @Override protected String getGuestOsType(String stdType, boolean bootFromCD) { - return CitrixHelper.getXenServer56FP2GuestOsType(stdType); + return CitrixHelper.getXenServer56SP2GuestOsType(stdType, bootFromCD); } @Override