1. 30 7月, 2010 1 次提交
    • M
      esx: Improve blocked task detection and fix race condition · 25e34b70
      Matthias Bolte 提交于
      esxVI_WaitForTaskCompletion can take a UUID to lookup the
      corresponding domain and check if the current task for it
      is blocked by a question. It calls another function to do
      this: esxVI_LookupAndHandleVirtualMachineQuestion looks up
      the VirtualMachine and checks for a question. If there is
      a question it calls esxVI_HandleVirtualMachineQuestion to
      handle it.
      
      If there was no question or it has been answered the call
      to esxVI_LookupAndHandleVirtualMachineQuestion returns 0.
      If any error occurred during the lookup and answering
      process -1 is returned. The problem with this is, that -1
      is also returned when there was no error but the question
      could not be answered. So esxVI_WaitForTaskCompletion cannot
      distinguish between this two situations and reports that a
      question is blocking the task even when there was actually
      another problem.
      
      This inherent problem didn't surface until vSphere 4.1 when
      you try to define a new domain. The driver tries to lookup
      the domain that is just in the process of being registered.
      There seems to be some kind of race condition and the driver
      manages to issue a lookup command before the ESX server was
      able to register the domain. This used to work before.
      
      Due to the return value problem described above the driver
      reported a false error message in that case.
      
      To solve this esxVI_WaitForTaskCompletion now takes an
      additional occurrence parameter that describes whether or
      not to expect the domain to be existent. Also add a new
      parameter to esxVI_LookupAndHandleVirtualMachineQuestion
      that allows to distinguish if the call returned -1 because
      of an actual error or because the question could not be
      answered.
      25e34b70
  2. 25 7月, 2010 2 次提交
    • M
      esx: Support vSphere 4.1 · d3864c37
      Matthias Bolte 提交于
      Also accept version > 4.1, but output a warning.
      d3864c37
    • M
      esx: Add vpx:// scheme to allow direct connection to a vCenter · 3827f7f0
      Matthias Bolte 提交于
      Add a pointer to the primary context of a connection and use it in all
      driver functions that don't dependent on the context type. This includes
      almost all functions that deal with a virDomianPtr. Therefore, using
      a vpx:// connection allows you to perform all the usual domain related
      actions like start, destroy, suspend, resume, dumpxml etc.
      
      Some functions that require an explicitly specified ESX server don't work
      yet. This includes the host UUID, the hostname, the general node info, the
      max vCPU count and the free memory. Also not working yet are migration and
      defining new domains.
      3827f7f0
  3. 24 7月, 2010 2 次提交
    • M
      esx: Don't ignore the vcenter query parameter · 1b38e92b
      Matthias Bolte 提交于
      Since 070f6100 the vcenter query
      parameter has been ignored, because the refactoring to use
      esxUtil_ParseQuery was incomplete. This effectively broke migration,
      because the vcenter query parameter is essential for a migration.
      1b38e92b
    • C
      Qemu Monitor API entry point. · 21adf03c
      Chris Lalancette 提交于
      Add the library entry point for the new virDomainQemuMonitorCommand()
      entry point.  Because this is not part of the "normal" libvirt API,
      it gets its own header file, library file, and will eventually
      get its own over-the-wire protocol later in the series.
      
      Changes since v1:
       - Go back to using the virDriver table for qemuDomainMonitorCommand, due to
         linking issues
       - Added versioning information to the libvirt-qemu.so
      
      Changes since v2:
       - None
      
      Changes since v3:
       - Add LGPL header to libvirt-qemu.c
       - Make virLibConnError and virLibDomainError macros instead of function calls
      
      Changes since v4:
       - Move exported symbols to libvirt_qemu.syms
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      21adf03c
  4. 24 6月, 2010 2 次提交
    • M
      esx: Add support for the controller element · d72d9256
      Matthias Bolte 提交于
      Also don't abuse the disk driver name to specify the SCSI controller
      model anymore:
      
        <driver name='buslogic'/>
      
      Use the newly added model attribute of the controller element for this:
      
        <controller type='scsi' index='0' model='buslogic'/>
      
      The disk driver name approach is deprecated now, but still works for
      backward compatibility reasons.
      
      Update the documentation and tests accordingly.
      
      Fix usage of the words controller and id in the VMX handling code. Use
      controller, bus and unit properly.
      d72d9256
    • M
      Add wide SCSI bus disk address generation support · f8f29b1f
      Matthias Bolte 提交于
      The domain XML parsing code autogenerates disk address and
      controller elements when they are not explicitly specified.
      The code assumes a narrow SCSI bus (7 units per bus). ESX
      uses a wide SCSI bus (16 units per bus).
      
      This is a step towards controller support for the ESX driver.
      f8f29b1f
  5. 15 6月, 2010 2 次提交
    • E
      drivers: add virDomainCreateWithFlags if virDomainCreate exists · de3aadaa
      Eric Blake 提交于
      * src/esx/esx_driver.c (esxDomainCreate): Move guts...
      (esxDomainCreateWithFlags): ...to new function.
      (esxDriver): Trivially support the new API.
      * src/lxc/lxc_driver.c (lxcDomainStart, lxcDomainStartWithFlags)
      (lxcDriver): Likewise.
      * src/opennebula/one_driver.c (oneDomainStart)
      (oneDomainStartWithFlags, oneDriver): Likewise.
      * src/openvz/openvz_driver.c (openvzDomainCreate)
      (openvzDomainCreateWithFlags, openvzDriver): Likewise.
      * src/qemu/qemu_driver.c (qemudDomainStart)
      (qemudDomainStartWithFlags, qemuDriver): Likewise.
      * src/test/test_driver.c (testDomainCreate)
      (testDomainCreateWithFlags, testDriver): Likewise.
      * src/uml/uml_driver.c (umlDomainStart, umlDomainStartWithFlags)
      (umlDriver): Likewise.
      * src/vbox/vbox_tmpl.c (vboxDomainCreate)
      (vboxDomainCreateWithFlags, Driver): Likewise.
      * src/xen/xen_driver.c (xenUnifiedDomainCreate)
      (xenUnifiedDomainCreateWithFlags, xenUnifiedDriver): Likewise.
      * src/xenapi/xenapi_driver.c (xenapiDomainCreate)
      (xenapiDomainCreateWithFlags, xenapiDriver): Likewise.
      de3aadaa
    • E
      libvirt: introduce domainCreateWithFlags API · 460ca88b
      Eric Blake 提交于
      Persistent domain creation needs the same features as transient
      domains, but virDomainCreate lacks the flags argument present in
      virDomainCreateXML.  virDomainCreateFlags is already claimed as
      a public enum, so we have to break convention and expose
      virDomainCreateWithFlags.
      
      * include/libvirt/libvirt.h.in (virDomainCreateWithFlags): Add.
      * src/driver.h (virDrvDomainCreateWithFlags): Internal API.
      * src/libvirt.c (virDomainCreateWithFlags): Glue public API to
      driver API.
      * src/libvirt_public.syms (LIBVIRT_0.8.2): Expose public API.
      * src/esx/esx_driver.c (esxDriver): Add stub for driver.
      * src/lxc/lxc_driver.c (lxcDriver): Likewise.
      * src/opennebula/one_driver.c (oneDriver): Likewise.
      * src/openvz/openvz_driver.c (openvzDriver): Likewise.
      * src/phyp/phyp_driver.c (phypDriver): Likewise.
      * src/qemu/qemu_driver.c (qemuDriver): Likewise.
      * src/remote/remote_driver.c (remote_driver): Likewise.
      * src/test/test_driver.c (testDriver): Likewise.
      * src/uml/uml_driver.c (umlDriver): Likewise.
      * src/vbox/vbox_tmpl.c (Driver): Likewise.
      * src/xen/xen_driver.c (xenUnifiedDriver): Likewise.
      * src/xenapi/xenapi_driver.c (xenapiDriver): Likewise.
      460ca88b
  6. 09 6月, 2010 2 次提交
  7. 27 5月, 2010 2 次提交
    • M
      esx: Simplify goto usage · 041aac86
      Matthias Bolte 提交于
      Eliminate almost all backward jumps by replacing this common pattern:
      
      int
      some_random_function(void)
      {
          int result = 0;
          ...
      
        cleanup:
          <unconditional cleanup code>
          return result;
      
        failure:
          <cleanup code in case of an error>
          result = -1;
          goto cleanup
      }
      
      with this simpler pattern:
      
      int
      some_random_function(void)
      {
          int result = -1;
          ...
          result = 0;
      
        cleanup:
          if (result < 0) {
              <cleanup code in case of an error>
          }
      
          <unconditional cleanup code>
          return result;
      }
      
      Add a bool success variable in functions that don't have a int result
      that can be used for the new pattern.
      
      Also remove some unnecessary memsets in error paths.
      041aac86
    • M
      esx: Expose host UUID in the capabilities XML · b4cead59
      Matthias Bolte 提交于
      Parse the BIOS UUID. This information may not be available, in that
      case no host UUID is exposed in the capabilities XML.
      b4cead59
  8. 21 5月, 2010 1 次提交
  9. 30 4月, 2010 1 次提交
    • D
      Internal driver API infrastructure for virDomainGetBlockInfo · 46bad512
      Daniel P. Berrange 提交于
      This defines the internal driver API and stubs out each driver
      
      * src/driver.h: Define virDrvDomainGetBlockInfo signature
      * src/libvirt.c, src/libvirt_public.syms: Glue public API to drivers
      * src/esx/esx_driver.c, src/lxc/lxc_driver.c, src/opennebula/one_driver.c,
        src/openvz/openvz_driver.c, src/phyp/phyp_driver.c,
        src/test/test_driver.c, src/uml/uml_driver.c, src/vbox/vbox_tmpl.c,
        src/xen/xen_driver.c, src/xenapi/xenapi_driver.c: Stub out driver
      46bad512
  10. 21 4月, 2010 1 次提交
  11. 16 4月, 2010 3 次提交
  12. 14 4月, 2010 1 次提交
    • M
      esx: Extend esx_vi_generator.py to cover methods too · 71057b1c
      Matthias Bolte 提交于
      Generate almost all SOAP method mapping code.
      
      Update the driver code to use the complete paramater list of some methods
      that had parameters skipped before.
      
      Improve the ESX_VI__METHOD marco to do automatic output deserialization
      based on output occurrence. Also incorporate automatic _this binding and
      output pointer check.
      71057b1c
  13. 09 4月, 2010 1 次提交
    • M
      esx: Add domain snapshot support · 1aaa9091
      Matthias Bolte 提交于
      Fix invalid code generating in esx_vi_generator.py regarding deep copy
      types that contain enum properties.
      
      Add strptime and timegm to bootstrap.conf. Both are used to convert a
      xsd:dateTime to calendar time.
      
      Add a testcase of the xsd:dateTime conversion.
      1aaa9091
  14. 08 4月, 2010 1 次提交
  15. 07 4月, 2010 1 次提交
    • M
      esx: Mark error messages for translation · 028db0bf
      Matthias Bolte 提交于
      Also define ESX_ERROR and ESX_VI_ERROR in a central place, instead of
      defining them in each source file.
      
      Add ESX_ERROR and ESX_VI_ERROR to the msg_gen_function list in cfg.mk.
      
      Update po/POTFILES.in accordingly.
      028db0bf
  16. 05 4月, 2010 1 次提交
  17. 04 4月, 2010 1 次提交
    • D
      Add managed save API entry points · 15c647a9
      Daniel Veillard 提交于
      virDomainManagedSave() is to be run on a running domain. Once the call
      complete, as in virDomainSave() the domain is stopped upon completion,
      but there is no restore counterpart as any order to start the domain
      from the API would load the state from the managed file, similary if
      the domain is autostarted when libvirtd starts.
      Once a domain has restarted his managed save image is destroyed,
      basically managed save image can only exist for a stopped domain,
      for a running domain that would be by definition outdated data.
      
      * include/libvirt/libvirt.h.in src/libvirt.c src/libvirt_public.syms:
        adds the new entry points virDomainManagedSave(),
        virDomainHasManagedSaveImage() and virDomainManagedSaveRemove()
      * src/driver.h src/esx/esx_driver.c src/lxc/lxc_driver.c
        src/opennebula/one_driver.c  src/openvz/openvz_driver.c
        src/phyp/phyp_driver.c src/qemu/qemu_driver.c src/vbox/vbox_tmpl.c
        src/remote/remote_driver.c src/test/test_driver.c src/uml/uml_driver.c
        src/xen/xen_driver.c: add corresponding new internal drivers entry
        points
      15c647a9
  18. 01 4月, 2010 1 次提交
  19. 31 3月, 2010 2 次提交
    • E
      maint: remove redundant tests after virStrToLong · 9d6614df
      Eric Blake 提交于
      virStrToLong* guarantees (via strtol) that the end pointer will be set
      to the point at which parsing stopped (even on failure, this point is
      the start of the input string).
      
      * src/esx/esx_driver.c (esxGetVersion): Remove pointless
      conditional.
      * src/qemu/qemu_conf.c (qemuParseCommandLinePCI)
      (qemuParseCommandLineUSB, qemuParseCommandLineSmp): Likewise.
      * src/qemu/qemu_monitor_text.c
      (qemuMonitorTextGetMigrationStatus): Likewise.
      9d6614df
    • M
      esx: Generate most SOAP mapping and improve inheritance handling · 50723581
      Matthias Bolte 提交于
      The Python script generates the mappings based on the type descriptions
      in the esx_vi_generator.input file.
      
      This also improves the inheritance handling and allows to get rid of the
      ugly, inflexible, and error prone _base/_super approach. Now every struct
      that represents a SOAP type contains a _type member, that allows to
      recreate C++-like dynamic dispatch for "method" calls in C.
      50723581
  20. 26 3月, 2010 2 次提交
    • D
      Introduce a new virDomainUpdateDeviceFlags public API · 46a2ea36
      Daniel P. Berrange 提交于
      The current virDomainAttachDevice API can be (ab)used to change
      the media of an existing CDROM/Floppy device. Going forward there
      will be more devices that can be configured on the fly and overloading
      virDomainAttachDevice for this is not too pleasant. This patch adds
      a new virDomainUpdateDeviceFlags() explicitly just for modifying
      existing devices.
      
      * include/libvirt/libvirt.h.in: Add virDomainUpdateDeviceFlags
      * src/driver.h: Internal API for virDomainUpdateDeviceFlags
      * src/libvirt.c, src/libvirt_public.syms: Glue public API to
        driver API
      * src/esx/esx_driver.c, src/lxc/lxc_driver.c, src/opennebula/one_driver.c,
        src/openvz/openvz_driver.c, src/phyp/phyp_driver.c, src/qemu/qemu_driver.c,
        src/remote/remote_driver.c, src/test/test_driver.c, src/uml/uml_driver.c,
        src/vbox/vbox_tmpl.c, src/xen/xen_driver.c, src/xenapi/xenapi_driver.c: Add
        stubs for new driver entry point
      46a2ea36
    • D
      Introduce a new public API for domain events · 44457238
      Daniel P. Berrange 提交于
      The current API for domain events has a number of problems
      
       - Only allows for domain lifecycle change events
       - Does not allow the same callback to be registered multiple times
       - Does not allow filtering of events to a specific domain
      
      This introduces a new more general purpose domain events API
      
        typedef enum {
           VIR_DOMAIN_EVENT_ID_LIFECYCLE = 0,       /* virConnectDomainEventCallback */
            ...more events later..
        }
      
        int virConnectDomainEventRegisterAny(virConnectPtr conn,
                                             virDomainPtr dom, /* Optional, to filter */
                                             int eventID,
                                             virConnectDomainEventGenericCallback cb,
                                             void *opaque,
                                             virFreeCallback freecb);
      
        int virConnectDomainEventDeregisterAny(virConnectPtr conn,
                                               int callbackID);
      
      Since different event types can received different data in the callback,
      the API is defined with a generic callback. Specific events will each
      have a custom signature for their callback. Thus when registering an
      event it is neccessary to cast the callback to the generic signature
      
      eg
      
        int myDomainEventCallback(virConnectPtr conn,
                                  virDomainPtr dom,
                                  int event,
                                  int detail,
                                  void *opaque)
        {
          ...
        }
      
        virConnectDomainEventRegisterAny(conn, NULL,
                                         VIR_DOMAIN_EVENT_ID_LIFECYCLE,
                                         VIR_DOMAIN_EVENT_CALLBACK(myDomainEventCallback)
                                         NULL, NULL);
      
      The VIR_DOMAIN_EVENT_CALLBACK() macro simply does a "bad" cast
      to the generic signature
      
      * include/libvirt/libvirt.h.in: Define new APIs for registering
        domain events
      * src/driver.h: Internal driver entry points for new events APIs
      * src/libvirt.c: Wire up public API to driver API for events APIs
      * src/libvirt_public.syms: Export new APIs
      * src/esx/esx_driver.c, src/lxc/lxc_driver.c, src/opennebula/one_driver.c,
        src/openvz/openvz_driver.c, src/phyp/phyp_driver.c,
        src/qemu/qemu_driver.c, src/remote/remote_driver.c,
        src/test/test_driver.c, src/uml/uml_driver.c,
        src/vbox/vbox_tmpl.c, src/xen/xen_driver.c,
        src/xenapi/xenapi_driver.c: Stub out new API entries
      44457238
  21. 23 3月, 2010 3 次提交
    • M
      esx: Add esxVI_LookupVirtualMachineByName · 041a18be
      Matthias Bolte 提交于
      Used in esxDomainLookupByName and to be used in esxDomainDefineXML later.
      041a18be
    • M
      esx: Cleanup file header comments · 055d21d2
      Matthias Bolte 提交于
      Replace 'method' with 'function' and get the filename's suffix right.
      055d21d2
    • M
      esx: Generate method mappings via macros · d304352b
      Matthias Bolte 提交于
      This is actually a consequence of the reworked required parameter
      checking: Unify the required parameter check into a Validate function
      instead of doing it separately im the (de)serialization part.
      
      The required parameter checking for the mapped methods parameter was
      done in the (de)serialize functions before. Now it's explicitly done
      in the mapped method itself.
      d304352b
  22. 20 3月, 2010 1 次提交
  23. 17 3月, 2010 1 次提交
  24. 10 3月, 2010 1 次提交
  25. 08 3月, 2010 1 次提交
    • E
      build: consistently use C99 varargs macros · 2e56fb2b
      Eric Blake 提交于
      Prior to this patch, there was an inconsistent mix between GNU and C99.
      
      For consistency, and potential portability to other compilers, stick
      with the C99 vararg macro syntax.
      
      * src/conf/cpu_conf.c (virCPUReportError): Use C99 rather than GNU
        vararg macro syntax.
      * src/conf/domain_conf.c (virDomainReportError): Likewise.
      * src/conf/domain_event.c (eventReportError): Likewise.
      * src/conf/interface_conf.c (virInterfaceReportError): Likewise.
      * src/conf/network_conf.c (virNetworkReportError): Likewise.
      * src/conf/node_device_conf.h (virNodeDeviceReportError): Likewise.
      * src/conf/secret_conf.h (virSecretReportError): Likewise.
      * src/conf/storage_conf.h (virStorageReportError): Likewise.
      * src/esx/esx_device_monitor.c (ESX_ERROR): Use C99 rather than
        GNU vararg macro syntax.
      * src/esx/esx_driver.c (ESX_ERROR): Likewise.
      * src/esx/esx_interface_driver.c (ESX_ERROR): Likewise.
      * src/esx/esx_network_driver.c (ESX_ERROR): Likewise.
      * src/esx/esx_secret_driver.c (ESX_ERROR): Likewise.
      * src/esx/esx_storage_driver.c (ESX_ERROR): Likewise.
      * src/esx/esx_util.c (ESX_ERROR): Likewise.
      * src/esx/esx_vi.c (ESX_VI_ERROR): Likewise.
      * src/esx/esx_vi_methods.c (ESX_VI_ERROR): Likewise.
      * src/esx/esx_vi_types.c (ESX_VI_ERROR): Likewise.
      * src/esx/esx_vmx.c (ESX_ERROR): Likewise.
      * src/util/hostusb.c (usbReportError): Use C99 rather than GNU
        vararg macro syntax.
      * src/util/json.c (virJSONError): Likewise.
      * src/util/macvtap.c (ReportError): Likewise.
      * src/util/pci.c (pciReportError): Likewise.
      * src/util/stats_linux.c (virStatsError): Likewise.
      * src/util/util.c (virUtilError): Likewise.
      * src/util/xml.c (virXMLError): Likewise.
      * src/xen/proxy_internal.c (virProxyError): Use C99 rather than
        GNU vararg macro syntax.
      * src/xen/sexpr.c (virSexprError): Likewise.
      * src/xen/xen_driver.c (xenUnifiedError): Likewise.
      * src/xen/xen_hypervisor.c (virXenError): Likewise.
      * src/xen/xen_inotify.c (virXenInotifyError): Likewise.
      * src/xen/xend_internal.c (virXendError): Likewise.
      * src/xen/xm_internal.c (xenXMError): Likewise.
      * src/xen/xs_internal.c (virXenStoreError): Likewise.
      * src/cpu/cpu.h (virCPUReportError): Use C99 rather than GNU
        vararg macro syntax.
      * src/datatypes.c (virLibConnError): Likewise.
      * src/interface/netcf_driver.c (interfaceReportError): Likewise.
      * src/libvirt.c (virLibStreamError): Likewise.
      * src/lxc/lxc_conf.h (lxcError): Likewise.
      * src/network/bridge_driver.c (networkReportError): Likewise.
      * src/nodeinfo.c (nodeReportError): Likewise.
      * src/opennebula/one_conf.h (oneError): Likewise.
      * src/openvz/openvz_conf.h (openvzError): Likewise.
      * src/phyp/phyp_driver.c (PHYP_ERROR): Likewise.
      * src/qemu/qemu_conf.h (qemuReportError): Likewise.
      * src/remote/remote_driver.c (errorf): Likewise.
      * src/security/security_driver.h (virSecurityReportError): Likewise.
      * src/test/test_driver.c (testError): Likewise.
      * src/uml/uml_conf.h (umlReportError): Likewise.
      * src/vbox/vbox_driver.c (vboxError): Likewise.
      * src/vbox/vbox_tmpl.c (vboxError): Likewise.
      2e56fb2b
  26. 03 3月, 2010 3 次提交
    • E
      esx: don't ignore failure on close · a8464c51
      Eric Blake 提交于
      Another warning caught by coverity.  Continue to perform best-effort
      closing and resource release, but warn the caller about the failure.
      
      * src/esx/esx_driver.c (esxClose): Return an error on failure to close.
      a8464c51
    • D
      Wire up internal entry points for virDomainAbortJob API · 0d8aa35f
      Daniel P. Berrange 提交于
      This provides the internal glue for the driver API
      
      * src/driver.h: Internal API contract
      * src/libvirt.c, src/libvirt_public.syms: Connect public API
        to driver API
      * src/esx/esx_driver.c, src/lxc/lxc_driver.c, src/opennebula/one_driver.c,
        src/openvz/openvz_driver.c, src/phyp/phyp_driver.c,
        src/qemu/qemu_driver.c, src/remote/remote_driver.c,
        src/test/test_driver.c src/uml/uml_driver.c, src/vbox/vbox_tmpl.c,
        src/xen/xen_driver.c: Stub out entry points
      0d8aa35f
    • D
      Stub out internal driver entry points for job processing · 92bd859a
      Daniel P. Berrange 提交于
      The internal glue layer for the new pubic API
      
      * src/driver.h: Define internal driver API contract
      * src/libvirt.c, src/libvirt_public.syms: Wire up public
        API to internal driver API
      * src/esx/esx_driver.c, src/lxc/lxc_driver.c, src/opennebula/one_driver.c,
        src/openvz/openvz_driver.c, src/phyp/phyp_driver.c,
        src/qemu/qemu_driver.c, src/remote/remote_driver.c,
        src/test/test_driver.c, src/uml/uml_driver.c, src/vbox/vbox_tmpl.c,
        src/xen/xen_driver.c: Stub new entry point
      92bd859a