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