From 66d07c5d277c631d98c08ce3c1f41bd9bbf0f4ff Mon Sep 17 00:00:00 2001 From: anthony Date: Tue, 2 Aug 2011 18:29:28 -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 --- .../hypervisor/xen/resource/CitrixHelper.java | 49 ++++++++++++++----- .../xen/resource/XenServer56FP1Resource.java | 2 +- .../xen/resource/XenServer56Resource.java | 2 +- .../xen/resource/XenServer56SP2Resource.java | 2 +- .../xen/resource/XenServer60Resource.java | 2 +- 5 files changed, 42 insertions(+), 15 deletions(-) diff --git a/core/src/com/cloud/hypervisor/xen/resource/CitrixHelper.java b/core/src/com/cloud/hypervisor/xen/resource/CitrixHelper.java index 90531008b2f..2f64866aaca 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 * @@ -420,35 +422,60 @@ 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; } - public static String getXenServer60GuestOsType(String stdType) { - return _xenServer60GuestOsMap.get(stdType); + public static String getXenServer60GuestOsType(String stdType, boolean bootFromCD) { + String guestOS = _xenServer60GuestOsMap.get(stdType); + if (guestOS == null) { + if ( !bootFromCD ) { + s_logger.debug("Can't find the guest os: " + stdType + " mapping into XenServer 6.0 guestOS type, start it as HVM guest"); + guestOS = "Other install media"; + } else { + String msg = "XenServer 6.0 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 diff --git a/core/src/com/cloud/hypervisor/xen/resource/XenServer60Resource.java b/core/src/com/cloud/hypervisor/xen/resource/XenServer60Resource.java index 4850719335f..7c0d0b63555 100644 --- a/core/src/com/cloud/hypervisor/xen/resource/XenServer60Resource.java +++ b/core/src/com/cloud/hypervisor/xen/resource/XenServer60Resource.java @@ -39,7 +39,7 @@ public class XenServer60Resource extends XenServer56Resource { @Override protected String getGuestOsType(String stdType, boolean bootFromCD) { - return CitrixHelper.getXenServer60GuestOsType(stdType); + return CitrixHelper.getXenServer60GuestOsType(stdType, bootFromCD); } @Override