1. 03 4月, 2015 1 次提交
  2. 23 1月, 2015 1 次提交
    • P
      esx_vi: fix possible segfault · 3baeea62
      Pavel Hrdina 提交于
      Clang found possible dereference of NULL pointer which is right.
      Function 'esxVI_LookupTaskInfoByTask' should find a task info. The issue
      is that we could return 0 and leave 'taksInfo' pointer NULL because if
      there is no match we simply end the search loop end set 'result' to 0.
      Every caller count on the fact that if the return value is 0 than it's
      safe to dereference 'taskInfo'. We should return 0 only in case we found
      something and the '*taskInfo' is not NULL.
      Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
      3baeea62
  3. 15 11月, 2014 1 次提交
  4. 08 11月, 2014 1 次提交
    • M
      esx: Simplify VI (vSphere) API and VMware product version handling · 0396394f
      Matthias Bolte 提交于
      Store version numbers in this format
      
      version = 1000000 * major + 1000 * minor + micro
      
      produced by virParseVersionString instead of dedicated enums.
      
      Split the complex esxVI_ProductVersion enum into a simpler
      esxVI_ProductLine enum and a product version number.
      
      Relax API and product version number checks to accept everything that
      is equal or greater than the supported minimum version. VMware ESX
      went through 3 major versions and the vSphere API always stayed
      backward compatible. This commit assumes that this will also be true
      for future VMware ESX versions.
      
      Also reword error messages in esxConnectTo* to say what was expected
      and what was found instead (suggested by Richard W.M. Jones).
      0396394f
  5. 08 10月, 2014 2 次提交
    • J
      Fix build with older libcurl · eb396051
      Ján Tomko 提交于
      Add ATTRIBUTE_UNUSED marker to the unused timeout_ms option
      in esxVI_MultiCURL_TimerCallback.
      
      Introduced by commit 125007d3.
      eb396051
    • M
      esx: Add libcurl based stream driver · 125007d3
      Matthias Bolte 提交于
      This allows to implement libvirt functions that use streams, such as
      virDoaminScreenshot, without the need to store the downloaded data in
      a temporary file first. The stream driver directly interacts with
      libcurl to send and receive data.
      
      The driver uses the libcurl multi interface that allows to do a transfer
      in multiple curl_multi_perform() calls. The easy interface would do the
      whole transfer in a single curl_easy_perform() call. This doesn't work
      with the libvirt stream API that is driven by multiple calls to the
      virStreamSend() and virStreamRecv() functions.
      
      The curl_multi_wait() function is used to do blocking operations. But it
      was added in libcurl 7.28.0. For older versions it is emulated using the
      socket callback of the multi interface.
      
      The current driver only supports blocking operations. There is already
      some code in place for non-blocking mode but it is not complete.
      125007d3
  6. 18 7月, 2014 1 次提交
  7. 03 7月, 2014 1 次提交
    • J
      Use virBufferCheckError everywhere we report OOM error · 92a8e72f
      Ján Tomko 提交于
      Replace:
      if (virBufferError(&buf)) {
          virBufferFreeAndReset(&buf);
          virReportOOMError();
          ...
      }
      
      with:
      if (virBufferCheckError(&buf) < 0)
          ...
      
      This should not be a functional change (unless some callers
      misused the virBuffer APIs - a different error would be reported
      then)
      92a8e72f
  8. 25 3月, 2014 1 次提交
  9. 18 3月, 2014 2 次提交
  10. 20 1月, 2014 1 次提交
  11. 18 10月, 2013 1 次提交
  12. 05 9月, 2013 1 次提交
  13. 04 9月, 2013 1 次提交
  14. 30 7月, 2013 1 次提交
  15. 11 7月, 2013 1 次提交
  16. 10 7月, 2013 2 次提交
  17. 21 5月, 2013 1 次提交
  18. 18 5月, 2013 1 次提交
  19. 09 5月, 2013 1 次提交
  20. 02 5月, 2013 1 次提交
    • M
      virutil: Move string related functions to virstring.c · 7c9a2d88
      Michal Privoznik 提交于
      The source code base needs to be adapted as well. Some files
      include virutil.h just for the string related functions (here,
      the include is substituted to match the new file), some include
      virutil.h without any need (here, the include is removed), and
      some require both.
      7c9a2d88
  21. 18 1月, 2013 1 次提交
  22. 21 12月, 2012 6 次提交
  23. 04 12月, 2012 1 次提交
    • A
      Add iSCSI backend storage driver for ESX · 60f0f55e
      Ata E Husain Bohra 提交于
      The patch adds the backend driver to support iSCSI format storage pools
      and volumes for ESX host. The mapping of ESX iSCSI specifics to Libvirt
      is as follows:
      
      1. ESX static iSCSI target <------> Libvirt Storage Pools
      2. ESX iSCSI LUNs          <------> Libvirt Storage Volumes.
      
      The above understanding is based on http://libvirt.org/storage.html.
      
      The operation supported on iSCSI pools includes:
      
      1. List storage pools & volumes.
      2. Get XML descriptor operaion on pools & volumes.
      3. Lookup operation on pools & volumes by name, UUID and path (if applicable).
      
      iSCSI pools does not support operations such as: Create / remove pools
      and volumes.
      60f0f55e
  24. 27 11月, 2012 1 次提交
    • A
      Refactor ESX storage driver to implement facade pattern · 067e83eb
      Ata E Husain Bohra 提交于
      The patch refactors the current ESX storage driver due to following reasons:
      
      1. Given most of the public APIs exposed by the storage driver in Libvirt
      remains same, ESX storage driver should not implement logic specific
      for only one supported format (current implementation only supports VMFS).
      2. Decoupling interface from specific storage implementation gives us an
      extensible design to hook implementation for other supported storage
      formats.
      
      This patch refactors the current driver to implement it as a facade pattern i.e.
      the driver exposes all the public libvirt APIs, but uses backend drivers to get
      the required task done. The backend drivers provide implementation specific to
      the type of storage device.
      
      File changes:
      ------------------
      esx_storage_driver.c ----> esx_storage_driver.c (base storage driver)
                           |
                           |---> esx_storage_backend_vmfs.c (VMFS backend)
      067e83eb
  25. 06 11月, 2012 1 次提交
    • M
      esx: Yet another connection fix for 5.1 · 9c294e6f
      Martin Kletzander 提交于
      After the connection to ESX 5.1 being broken since g1e7cd395, the fix
      in bab7752c helped a bit, but still missed a spot, so the connection
      is now successful, but some APIs (for example defineXML) don't work.
      Two cases missing are added in this patch to avoid that.
      9c294e6f
  26. 02 11月, 2012 1 次提交
  27. 25 10月, 2012 1 次提交
    • M
      esx: Update version checks for vSphere 5.1 · 1e7cd395
      Matthias Bolte 提交于
      Also remove warnings for upcoming versions. There hadn't been any
      compatibility problems with new ESX version over the whole lifetime
      of the ESX driver, so I don't expect any in the future.
      
      Update documentation to mention vSphere 5.x support.
      1e7cd395
  28. 07 10月, 2012 1 次提交
    • M
      esx: Disable libcurl's use of signals to fix a segfault · 0821ea6b
      Matthias Bolte 提交于
      libcurl uses a SIGALRM in combination with sigsetjmp/siglongjmp to be
      able to abort a DNS lookup when it takes too long. The problem with this
      in a multi-threaded application is that the signal handler for SIGALRM
      and the call to siglongjmp can be executed on a thread that is different
      from the one that initially did the SIGALRM setup and the call to
      sigsetjmp. In the reported case this triggered a segfault.
      
      Disable libcurl's use of signals to avoid this situation. This has the
      disadvantage of losing the ability to abort synchronous DNS lookups which
      might result in libcurl getting stuck in a DNS lookup in the worst case.
      When libcurl was build with an asynchronous DNS backend such as c-ares
      then there is no problem because the timeout mechanism works without
      signals here anyway.
      
      Reported by Benjamin Wang.
      0821ea6b
  29. 21 9月, 2012 1 次提交
  30. 10 8月, 2012 3 次提交
    • M
      esx: Implement network driver · b8fa5fd0
      Matthias Bolte 提交于
      An ESX server has one or more PhysicalNics that represent the actual
      hardware NICs. Those can be listed via the interface driver.
      
      A libvirt virtual network is mapped to a HostVirtualSwitch. On the
      physical side a HostVirtualSwitch can be connected to PhysicalNics.
      On the virtual side a HostVirtualSwitch has HostPortGroups that are
      mapped to libvirt virtual network's portgroups. Typically there is
      HostPortGroups named 'VM Network' that is used to connect virtual
      machines to a HostVirtualSwitch. A second HostPortGroup typically
      named 'Management Network' is used to connect the hypervisor itself
      to the HostVirtualSwitch. This one is not mapped to a libvirt virtual
      network's portgroup. There can be more HostPortGroups than those
      typical two on a HostVirtualSwitch.
      
               +---------------+-------------------+
         ...---|               |                   |   +-------------+
               | HostPortGroup |                   |---| PhysicalNic |
               |   VM Network  |                   |   |    vmnic0   |
         ...---|               |                   |   +-------------+
               +---------------+ HostVirtualSwitch |
                               |     vSwitch0      |
               +---------------+                   |
               | HostPortGroup |                   |
         ...---|   Management  |                   |
               |    Network    |                   |
               +---------------+-------------------+
      
      The virtual counterparts of the PhysicalNic is the HostVirtualNic for
      the hypervisor and the VirtualEthernetCard for the virtual machines
      that are grouped into HostPortGroups.
      
         +---------------------+   +---------------+---...
         | VirtualEthernetCard |---|               |
         +---------------------+   | HostPortGroup |
         +---------------------+   |   VM Network  |
         | VirtualEthernetCard |---|               |
         +---------------------+   +---------------+
                                                   |
                                   +---------------+
         +---------------------+   | HostPortGroup |
         |    HostVirtualNic   |---|   Management  |
         +---------------------+   |    Network    |
                                   +---------------+---...
      
      The currently implemented network driver can list, define and undefine
      HostVirtualSwitches including HostPortGroups for virtual machines.
      Existing HostVirtualSwitches cannot be edited yet. This will be added
      in a followup patch.
      b8fa5fd0
    • M
      esx: Remove redundant checks for esxVI_LookupHostSystemProperties result · ba86e5cd
      Matthias Bolte 提交于
      esxVI_LookupHostSystemProperties guarantees that hostSystem is non-NULL.
      Remove redundant NULL checks from callers.
      
      Also prefer esxVI_GetStringValue over open-coding the logic.
      ba86e5cd
    • M
      esx: Implement interface driver · b9dfbf57
      Matthias Bolte 提交于
      Lists available PhysicalNic devices. A PhysicalNic is always active
      and can neither be defined nor undefined.
      
      A PhysicalNic is used to bridge a HostVirtualSwitch to the physical
      network.
      b9dfbf57