]> xenbits.xensource.com Git - libvirt.git/commitdiff
esx: Support vSphere 5.x
authorPatrice LACHANCE <patlachance@gmail.com>
Fri, 21 Oct 2011 05:56:07 +0000 (07:56 +0200)
committerMatthias Bolte <matthias.bolte@googlemail.com>
Tue, 1 Nov 2011 17:00:34 +0000 (18:00 +0100)
And virtual hardware version 8.

AUTHORS
src/esx/esx_driver.c
src/esx/esx_vi.c
src/esx/esx_vi.h
src/vmx/vmx.c

diff --git a/AUTHORS b/AUTHORS
index 5bd49b332f5ec715a81dbf68f5d35216548b04a9..f6c2df45c54ca8420f395ab15468d38d2ab22e53 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -202,6 +202,7 @@ Patches have also been contributed by:
   Tyler Coumbes        <coumbes@gmail.com>
   Josh Durgin          <josh.durgin@dreamhost.com>
   Wen Ruo Lv           <lvroyce@linux.vnet.ibm.com>
+  Patrice LACHANCE     <patlachance@gmail.com>
 
   [....send patches to get your name here....]
 
index 41086efd85c79a853594ecbbdfcd0ebf0973c0d7..5d0b6dbd51e04aa0ba62648e3d40bb6441e2e701 100644 (file)
@@ -730,9 +730,11 @@ esxConnectToHost(esxPrivate *priv, virConnectAuthPtr auth,
         if (priv->host->productVersion != esxVI_ProductVersion_ESX35 &&
             priv->host->productVersion != esxVI_ProductVersion_ESX40 &&
             priv->host->productVersion != esxVI_ProductVersion_ESX41 &&
-            priv->host->productVersion != esxVI_ProductVersion_ESX4x) {
+            priv->host->productVersion != esxVI_ProductVersion_ESX4x &&
+            priv->host->productVersion != esxVI_ProductVersion_ESX50 &&
+            priv->host->productVersion != esxVI_ProductVersion_ESX5x) {
             ESX_ERROR(VIR_ERR_INTERNAL_ERROR,
-                      _("%s is neither an ESX 3.5 host nor an ESX 4.x host"),
+                      _("%s is neither an ESX 3.5, 4.x nor 5.x host"),
                       hostname);
             goto cleanup;
         }
@@ -857,10 +859,12 @@ esxConnectToVCenter(esxPrivate *priv, virConnectAuthPtr auth,
     if (priv->vCenter->productVersion != esxVI_ProductVersion_VPX25 &&
         priv->vCenter->productVersion != esxVI_ProductVersion_VPX40 &&
         priv->vCenter->productVersion != esxVI_ProductVersion_VPX41 &&
-        priv->vCenter->productVersion != esxVI_ProductVersion_VPX4x) {
+        priv->vCenter->productVersion != esxVI_ProductVersion_VPX4x &&
+        priv->vCenter->productVersion != esxVI_ProductVersion_VPX50 &&
+        priv->vCenter->productVersion != esxVI_ProductVersion_VPX5x) {
         ESX_ERROR(VIR_ERR_INTERNAL_ERROR,
-                  _("%s is neither a vCenter 2.5 server nor a vCenter "
-                    "4.x server"), hostname);
+                  _("%s is neither a vCenter 2.5, 4.x nor 5.x server"),
+                  hostname);
         goto cleanup;
     }
 
index 325157ceba98cadb35c240d2e830eac48f78d80e..86e5739a34080bc17982a915723a5b754bf324be 100644 (file)
@@ -673,12 +673,19 @@ esxVI_Context_Connect(esxVI_Context *ctx, const char *url,
         } else if (STRPREFIX(ctx->service->about->apiVersion, "4.")) {
             ctx->apiVersion = esxVI_APIVersion_4x;
 
+            VIR_WARN("Found untested VI API major/minor version '%s'",
+                     ctx->service->about->apiVersion);
+        } else if (STRPREFIX(ctx->service->about->apiVersion, "5.0")) {
+            ctx->apiVersion = esxVI_APIVersion_50;
+        } else if (STRPREFIX(ctx->service->about->apiVersion, "5.")) {
+            ctx->apiVersion = esxVI_APIVersion_5x;
+
             VIR_WARN("Found untested VI API major/minor version '%s'",
                      ctx->service->about->apiVersion);
         } else {
             ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
-                         _("Expecting VI API major/minor version '2.5' or '4.x' "
-                           "but found '%s'"), ctx->service->about->apiVersion);
+                         _("Expecting VI API major/minor version '2.5', '4.x' or "
+                           "'5.x' but found '%s'"), ctx->service->about->apiVersion);
             return -1;
         }
 
@@ -702,12 +709,19 @@ esxVI_Context_Connect(esxVI_Context *ctx, const char *url,
             } else if (STRPREFIX(ctx->service->about->version, "4.")) {
                 ctx->productVersion = esxVI_ProductVersion_ESX4x;
 
+                VIR_WARN("Found untested ESX major/minor version '%s'",
+                         ctx->service->about->version);
+            } else if (STRPREFIX(ctx->service->about->version, "5.0")) {
+                ctx->productVersion = esxVI_ProductVersion_ESX50;
+            } else if (STRPREFIX(ctx->service->about->version, "5.")) {
+                ctx->productVersion = esxVI_ProductVersion_ESX5x;
+
                 VIR_WARN("Found untested ESX major/minor version '%s'",
                          ctx->service->about->version);
             } else {
                 ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
-                             _("Expecting ESX major/minor version '3.5' or "
-                               "'4.x' but found '%s'"),
+                             _("Expecting ESX major/minor version '3.5', "
+                               "'4.x' or '5.x' but found '%s'"),
                              ctx->service->about->version);
                 return -1;
             }
@@ -721,12 +735,20 @@ esxVI_Context_Connect(esxVI_Context *ctx, const char *url,
             } else if (STRPREFIX(ctx->service->about->version, "4.")) {
                 ctx->productVersion = esxVI_ProductVersion_VPX4x;
 
+                VIR_WARN("Found untested VPX major/minor version '%s'",
+                         ctx->service->about->version);
+            } else if (STRPREFIX(ctx->service->about->version, "5.0")) {
+                ctx->productVersion = esxVI_ProductVersion_VPX50;
+            } else if (STRPREFIX(ctx->service->about->version, "5.")) {
+                ctx->productVersion = esxVI_ProductVersion_VPX5x;
+
                 VIR_WARN("Found untested VPX major/minor version '%s'",
                          ctx->service->about->version);
             } else {
                 ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR,
-                             _("Expecting VPX major/minor version '2.5' or '4.x' "
-                               "but found '%s'"), ctx->service->about->version);
+                             _("Expecting VPX major/minor version '2.5', '4.x' "
+                               "or '5.x' but found '%s'"),
+                               ctx->service->about->version);
                 return -1;
             }
         } else {
@@ -3897,11 +3919,12 @@ esxVI_ProductVersionToDefaultVirtualHWVersion(esxVI_ProductVersion productVersio
     /*
      * virtualHW.version compatibility matrix:
      *
-     *              4 7    API
-     *   ESX 3.5    +      2.5
-     *   ESX 4.0    + +    4.0
-     *   ESX 4.1    + +    4.1
-     *   GSX 2.0    + +    2.5
+     *              4 7 8   API
+     *   ESX 3.5    +       2.5
+     *   ESX 4.0    + +     4.0
+     *   ESX 4.1    + +     4.1
+     *   ESX 5.0    + + +   5.0
+     *   GSX 2.0    + +     2.5
      */
     switch (productVersion) {
       case esxVI_ProductVersion_ESX35:
@@ -3919,6 +3942,14 @@ esxVI_ProductVersionToDefaultVirtualHWVersion(esxVI_ProductVersion productVersio
       case esxVI_ProductVersion_VPX4x:
         return 7;
 
+      case esxVI_ProductVersion_ESX50:
+      case esxVI_ProductVersion_VPX50:
+        return 8;
+
+      case esxVI_ProductVersion_ESX5x:
+      case esxVI_ProductVersion_VPX5x:
+        return 8;
+
       default:
         ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "%s",
                      _("Unexpected product version"));
index b8e921f7f95dda483456affe14cb4a39d35668f5..0b3f889b5ec81e668c010b10584445a230c8752f 100644 (file)
@@ -99,7 +99,9 @@ enum _esxVI_APIVersion {
     esxVI_APIVersion_25,
     esxVI_APIVersion_40,
     esxVI_APIVersion_41,
-    esxVI_APIVersion_4x /* > 4.1 */
+    esxVI_APIVersion_4x, /* > 4.1 */
+    esxVI_APIVersion_50,
+    esxVI_APIVersion_5x  /* > 5.0 */
 };
 
 /*
@@ -117,12 +119,16 @@ enum _esxVI_ProductVersion {
     esxVI_ProductVersion_ESX40 = esxVI_ProductVersion_ESX | 2,
     esxVI_ProductVersion_ESX41 = esxVI_ProductVersion_ESX | 3,
     esxVI_ProductVersion_ESX4x = esxVI_ProductVersion_ESX | 4, /* > 4.1 */
+    esxVI_ProductVersion_ESX50 = esxVI_ProductVersion_ESX | 5,
+    esxVI_ProductVersion_ESX5x = esxVI_ProductVersion_ESX | 6, /* > 5.0 */
 
     esxVI_ProductVersion_VPX   = (1 << 2) << 16,
     esxVI_ProductVersion_VPX25 = esxVI_ProductVersion_VPX | 1,
     esxVI_ProductVersion_VPX40 = esxVI_ProductVersion_VPX | 2,
     esxVI_ProductVersion_VPX41 = esxVI_ProductVersion_VPX | 3,
-    esxVI_ProductVersion_VPX4x = esxVI_ProductVersion_VPX | 4  /* > 4.1 */
+    esxVI_ProductVersion_VPX4x = esxVI_ProductVersion_VPX | 4, /* > 4.1 */
+    esxVI_ProductVersion_VPX50 = esxVI_ProductVersion_VPX | 5,
+    esxVI_ProductVersion_VPX5x = esxVI_ProductVersion_VPX | 6  /* > 5.0 */
 };
 
 enum _esxVI_Occurrence {
index be91c13ef78e73e53d394f89077505520512b5d8..9ba06e58212bea4fe8a5f70ae1eb9e0a9a8b9a62 100644 (file)
@@ -44,6 +44,7 @@ domain-xml                        <=>   vmx
                                         config.version = "8"                    # essential
                                         virtualHW.version = "4"                 # essential for ESX 3.5
                                         virtualHW.version = "7"                 # essential for ESX 4.0
+                                        virtualHW.version = "8"                 # essential for ESX 5.0
 
 
 ???                               <=>   guestOS = "<value>"                     # essential, FIXME: not representable
@@ -1278,9 +1279,10 @@ virVMXParseConfig(virVMXContext *ctx, virCapsPtr caps, const char *vmx)
         goto cleanup;
     }
 
-    if (virtualHW_version != 4 && virtualHW_version != 7) {
+    if (virtualHW_version != 4 && virtualHW_version != 7 &&
+        virtualHW_version != 8) {
         VMX_ERROR(VIR_ERR_INTERNAL_ERROR,
-                  _("Expecting VMX entry 'virtualHW.version' to be 4 or 7 "
+                  _("Expecting VMX entry 'virtualHW.version' to be 4, 7 or 8 "
                     "but found %lld"),
                   virtualHW_version);
         goto cleanup;