1. 30 7月, 2012 1 次提交
    • D
      Run an RPC protocol over the LXC controller monitor · 9117fcb2
      Daniel P. Berrange 提交于
      This defines a new RPC protocol to be used between the LXC
      controller and the libvirtd LXC driver. There is only a
      single RPC message defined thus far, an asynchronous "EXIT"
      event that is emitted just before the LXC controller process
      exits. This provides the LXC driver with details about how
      the container shutdown - normally, or abnormally (crashed),
      thus allowing the driver to emit better libvirt events.
      
      Emitting the event in the LXC controller requires a few
      little tricks with the RPC service. Simply calling the
      virNetServiceClientSendMessage does not work, since this
      merely queues the message for asynchronous processing.
      In addition the main event loop is no longer running at
      the point the event is emitted, so no I/O is processed.
      
      Thus after invoking virNetServiceClientSendMessage it is
      necessary to mark the client as being in "delayed close"
      mode. Then the event loop is run again, until the client
      completes its close - this happens only after the queued
      message has been fully transmitted. The final complexity
      is that it is not safe to run virNetServerQuit() from the
      client close callback, since that is invoked from a
      context where the server is locked. Thus a zero-second
      timer is used to trigger shutdown of the event loop,
      causing the controller to finally exit.
      
      * src/Makefile.am: Add rules for generating RPC protocol
        files and dispatch methods
      * src/lxc/lxc_controller.c: Emit an RPC event immediately
        before exiting
      * src/lxc/lxc_domain.h: Record the shutdown reason
        given by the controller
      * src/lxc/lxc_monitor.c, src/lxc/lxc_monitor.h: Register
        RPC program and event handler. Add callback to let
        driver receive EXIT event.
      * src/lxc/lxc_process.c: Use monitor exit event to decide
        what kind of domain event to emit
      * src/lxc/lxc_protocol.x: Define wire protocol for LXC
        controller monitor.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      9117fcb2
  2. 23 7月, 2012 1 次提交
    • D
      Make ESX & Hyper-V code generator safe with parallel builds · 1bfb47df
      Daniel P. Berrange 提交于
      If from a clean GIT checkout 'make -j 8' is run, the ESX
      and Hyper-V code will be generated multiple times over.
      This is because there are multiple files being generated
      from one invocation of the generator script. make does not
      realize this and so invokes the generator once per file.
      This doesn't matter with serialized builds, but with
      parallel builds multiple instances of the generator get
      run at once.
      
      make[2]: Entering directory `/home/berrange/src/virt/libvirt/src'
        GEN    util/virkeymaps.h
        GEN    remote/remote_protocol.h
        GEN    remote/remote_client_bodies.h
        GEN    remote/qemu_protocol.h
        GEN    remote/qemu_client_bodies.h
        GEN    esx/esx_vi_methods.generated.c
        GEN    esx/esx_vi_methods.generated.h
        GEN    esx/esx_vi_methods.generated.macro
        GEN    esx/esx_vi_types.generated.c
        GEN    esx/esx_vi_types.generated.h
        GEN    esx/esx_vi_types.generated.typedef
        GEN    esx/esx_vi_types.generated.typedef
        GEN    esx/esx_vi_types.generated.typeenum
        GEN    esx/esx_vi_types.generated.typetostring
        GEN    esx/esx_vi_types.generated.typefromstring
        GEN    esx/esx_vi_types.generated.h
        GEN    esx/esx_vi_types.generated.c
        GEN    esx/esx_vi_methods.generated.h
        GEN    esx/esx_vi_methods.generated.c
        GEN    esx/esx_vi_methods.generated.macro
        GEN    esx/esx_vi.generated.h
        GEN    esx/esx_vi.generated.c
        GEN    esx/esx_vi_types.generated.typeenum
        GEN    esx/esx_vi_types.generated.typedef
        GEN    esx/esx_vi_types.generated.typeenum
        GEN    esx/esx_vi_types.generated.typetostring
        GEN    esx/esx_vi_types.generated.typefromstring
        GEN    esx/esx_vi_types.generated.h
        GEN    esx/esx_vi_types.generated.c
        GEN    esx/esx_vi_methods.generated.h
        ...snip...
        GEN    hyperv/hyperv_wmi.generated.h
        GEN    libvirt_qemu_probes.h
        GEN    locking/qemu-sanlock.conf
        GEN    hyperv/hyperv_wmi.generated.c
        GEN    rpc/virnetprotocol.h
        GEN    hyperv/hyperv_wmi_classes.generated.typedef
        GEN    hyperv/hyperv_wmi_classes.generated.h
        GEN    hyperv/hyperv_wmi_classes.generated.c
        GEN    rpc/virkeepaliveprotocol.h
        GEN    remote/remote_protocol.c
        GEN    remote/qemu_protocol.c
        GEN    rpc/virkeepaliveprotocol.c
        GEN    rpc/virnetprotocol.c
        GEN    libvirt.def
      
      Prevent this using a timestamp file to control generation,
      as was previously done for the python bindings in commit
      a7868e01Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      1bfb47df
  3. 19 7月, 2012 1 次提交
    • S
      Add a sheepdog backend for the storage driver · 29bc4fe6
      Sebastian Wiedenroth 提交于
      This patch brings support to manage sheepdog pools and volumes to libvirt.
      It uses the "collie" command-line utility that comes with sheepdog for that.
      
      A sheepdog pool in libvirt maps to a sheepdog cluster.
      It needs a host and port to connect to, which in most cases
      is just going to be the default of localhost on port 7000.
      
      A sheepdog volume in libvirt maps to a sheepdog vdi.
      To create one specify the pool, a name and the capacity.
      Volumes can also be resized later.
      
      In the volume XML the vdi name has to be put into the <target><path>.
      To use the volume as a disk source for virtual machines specify
      the vdi name as "name" attribute of the <source>.
      The host and port information from the pool are specified inside the host tag.
      
        <disk type='network'>
          ...
          <source protocol="sheepdog" name="vdi_name">
            <host name="localhost" port="7000"/>
          </source>
        </disk>
      
      To work right this patch parses the output of collie,
      so it relies on the raw output option. There recently was a bug which caused
      size information to be reported wrong. This is fixed upstream already and
      will be in the next release.
      Signed-off-by: NSebastian Wiedenroth <wiedi@frubar.net>
      29bc4fe6
  4. 27 6月, 2012 1 次提交
  5. 25 6月, 2012 1 次提交
  6. 30 5月, 2012 1 次提交
    • E
      build: fix testing of augeas files in VPATH builds · fb59cf7a
      Eric Blake 提交于
      Without this fix, a VPATH build (such as used by ./autobuild.sh)
      fails with messages like:
      
      make[3]: Entering directory `/home/remote/eblake/libvirt-tmp2/build/daemon'
      ../../build-aux/augeas-gentest.pl libvirtd.conf ../../daemon/test_libvirtd.aug.in test_libvirtd.aug
      cannot read libvirtd.conf: No such file or directory at ../../build-aux/augeas-gentest.pl line 38.
      
      Since the test files are not part of the tarball, we can generate
      them into the build dir, but rather than create a subdirectory
      just for the test file, it is easier to test them directly in
      libvirt.git/src.
      
      * daemon/Makefile.am (AUG_GENTEST): Factor out definition.
      (test_libvirtd.aug): Look for correct file.
      * src/Makefile.am (AUG_GENTEST): Use $(PERL).
      (qemu/test_libvirtd_qemu.aug, lxc/test_libvirtd_lxc.aug)
      (locking/test_libvirt_sanlock.aug): Rename to avoid subdirectories.
      (check-augeas-qemu, check-augeas-lxc, check-augeas-sanlock): Reflect
      location of built tests.
      * configure.ac (PERL): Substitute perl.
      fb59cf7a
  7. 28 5月, 2012 1 次提交
    • D
      Autogenerate augeas test case from default config files · de9758ae
      Daniel P. Berrange 提交于
      When adding new config file parameters, the corresponding
      additions to the augeas lens' are constantly forgotten.
      Also there are augeas test cases, these don't catch the
      error, since they too are never updated.
      
      To address this, the augeas test cases need to be auto-generated
      from the example config files.
      
      * build-aux/augeas-gentest.pl: Helper to generate an
        augeas test file, substituting in elements from the
        example config files
      * src/Makefile.am, daemon/Makefile.am: Switch to
        auto-generated augeas test cases
      * daemon/test_libvirtd.aug, daemon/test_libvirtd.aug.in,
        src/locking/test_libvirt_sanlock.aug,
        src/locking/test_libvirt_sanlock.aug.in,
        src/lxc/test_libvirtd_lxc.aug,
        src/lxc/test_libvirtd_lxc.aug.in,
        src/qemu/test_libvirtd_qemu.aug,
        src/qemu/test_libvirtd_qemu.aug.in: Remove example
        config file data, replacing with a ::CONFIG:: placeholder
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      de9758ae
  8. 25 5月, 2012 1 次提交
  9. 28 4月, 2012 1 次提交
  10. 13 4月, 2012 1 次提交
  11. 10 4月, 2012 1 次提交
    • D
      Replace daemon-conf test script with a proper test case · a9694a8e
      Daniel P. Berrange 提交于
      The daemon-conf test script continues to be very fragile to
      changes in libvirt. It currently fails 1 time in 3/4 due
      to race conditions in startup/shutdown of the test script.
      
      Replace it with a proper test case tailored to the code
      being tested
      
      * tests/Makefile.am: Remove daemon-conf, add libvirtdconftest
      * tests/daemon-conf: Delete obsolete test
      * tests/libvirtdconftest.c: Test config file handling
      a9694a8e
  12. 24 3月, 2012 1 次提交
    • E
      build: drop obsolete qparams test · 98ada9ab
      Eric Blake 提交于
      Otherwise, 'make check' breaks since commit bc1ff160 deleted
      qparams.h.  A later patch will ensure that viruri takes over
      what qparams used to do.
      
      * tests/qparamtest.c (mymain): Delete, now that we have viruri.
      * tests/Makefile.am (check_PROGRAMS, TESTS, qparamtest_SOURCES):
      Delete old test.
      * .gitignore: Add recent test additions.
      98ada9ab
  13. 09 3月, 2012 1 次提交
    • L
      remove daemon/probes.h from .gitignore · f51be165
      Laine Stump 提交于
      The file daemon/probes.h used to be generated as part of a build, but
      is no longer used. However, a stale copy of it lying around could
      cause a build to fail. Removing it from .gitignore will make it more
      likely someone will notice that they have it lying around.
      f51be165
  14. 28 2月, 2012 1 次提交
    • J
      qemu: unescape HMP commands before converting them to json · f27f616f
      Josh Durgin 提交于
      QMP commands don't need to be escaped since converting them to json
      also escapes special characters. When a QMP command fails, however,
      libvirt falls back to HMP commands. These fallback functions
      (qemuMonitorText*) do their own escaping, and pass the result directly
      to qemuMonitorHMPCommandWithFd. If the monitor is in json mode, these
      pre-escaped commands will be escaped again when converted to json,
      which can result in the wrong arguments being sent.
      
      For example, a filename test\file would be sent in json as
      test\\file.
      
      This prevented attaching an image file with a " or \ in its name in
      qemu 1.0.50, and also broke rbd attachment (which uses backslashes to
      escape some internal arguments.)
      Reported-by: NMasuko Tomoya <tomoya.masuko@gmail.com>
      Signed-off-by: NJosh Durgin <josh.durgin@dreamhost.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      f27f616f
  15. 07 2月, 2012 1 次提交
  16. 04 2月, 2012 1 次提交
    • E
      maint: consolidate several .gitignore files · 8f00276c
      Eric Blake 提交于
      Unlike .cvsignore under CVS, git allows for ignoring nested
      names.  We weren't very consistent where new tests were
      being ignored (some in .gitignore, some in tests/.gitignore),
      and I found it easier to just consolidate everything.
      
      * .gitignore: Subsume entries from subdirectories.
      * daemon/.gitignore: Delete.
      * docs/.gitignore: Likewise.
      * docs/devhelp/.gitignore: Likewise.
      * docs/html/.gitignore: Likewise.
      * examples/dominfo/.gitignore: Likewise.
      * examples/domsuspend/.gitignore: Likewise.
      * examples/hellolibvirt/.gitignore: Likewise.
      * examples/openauth/.gitignore: Likewise.
      * examples/domain-events/events-c/.gitignore: Likewise.
      * include/libvirt/.gitignore: Likewise.
      * src/.gitignore: Likewise.
      * src/esx/.gitignore: Likewise.
      * tests/.gitignore: Likewise.
      * tools/.gitignore: Likewise.
      8f00276c
  17. 28 1月, 2012 1 次提交
    • E
      build: fix missing include · 93f93f51
      Eric Blake 提交于
      Fix a build failure:
      
      virt-host-validate.c: In function 'main':
      virt-host-validate.c:82:5: error: implicit declaration of function 'setlocale' [-Werror=implicit-function-declaration]
      virt-host-validate.c:82:5: error: nested extern declaration of 'setlocale' [-Werror=nested-externs]
      virt-host-validate.c:82:20: error: 'LC_ALL' undeclared (first use in this function)
      
      * tools/virt-host-validate.c: Add <locale.h>.
      * .gitignore: Ignore built executable.
      93f93f51
  18. 27 1月, 2012 1 次提交
    • E
      hash: minor touchups · 19896423
      Eric Blake 提交于
      On RHEL5, I got:
      util/virrandom.c:66: warning: nested extern declaration of '_gl_verify_function66' [-Wnested-externs]
      
      The fix is to hoist the verify earlier.  Also some other hodge-podge
      fixes I noticed while reviewing Dan's recent series.
      
      * .gitignore: Ignore new test.
      * src/util/cgroup.c: Bump copyright year.
      * src/util/virhash.c: Fix typo in description.
      * src/util/virrandom.c (virRandomBits): Mark doc comment, and
      hoist assert to silence older gcc.
      19896423
  19. 24 11月, 2011 1 次提交
    • J
      Define keepalive protocol · 4acd358a
      Jiri Denemark 提交于
      The keepalive program has two procedures: PING, and PONG.
      Both are used only in asynchronous messages and the sender doesn't wait
      for any reply. However, the party which receives PING messages is
      supposed to react by sending PONG message the other party, but no
      explicit binding between PING and PONG messages is made. For backward
      compatibility neither server nor client are allowed to send keepalive
      messages before checking that remote party supports them.
      4acd358a
  20. 21 10月, 2011 1 次提交
    • E
      snapshot: test domainsnapshot indentation · 27b3b303
      Eric Blake 提交于
      Add a test for the simple parts of my indentation changes, and
      fix the fallout.
      
      * tests/domainsnapshotxml2xmltest.c: New test.
      * tests/Makefile.am (domainsnapshotxml2xmltest_SOURCES): Build it.
      * src/conf/domain_conf.c (virDomainSnapshotDefFormat): Avoid NULL
      deref, match documented order.
      * src/conf/domain_conf.h (virDomainSnapshotDefFormat): Add const.
      * tests/domainsnapshotxml2xmlout/all_parameters.xml: Tweak output.
      * tests/domainsnapshotxml2xmlout/disk_snapshot.xml: Likewise.
      * tests/domainsnapshotxml2xmlout/full_domain.xml: Likewise.
      * .gitignore: Exempt new binary.
      27b3b303
  21. 20 10月, 2011 1 次提交
  22. 17 9月, 2011 1 次提交
    • D
      Prevent crash from dlclose() of libvirt.so · 8e44e559
      Daniel P. Berrange 提交于
      When libvirt calls virInitialize it creates a thread local
      for the virErrorPtr storage, and registers a callback to
      cleanup memory when a thread exits. When libvirt is dlclose()d
      or otherwise made non-resident, the callback function is
      removed from memory, but the thread local may still exist
      and if a thread later exists, it will invoke the callback
      and SEGV. There may also be other thread locals with callbacks
      pointing to libvirt code, so it is in general never safe to
      unload libvirt.so from memory once initialized.
      
      To allow dlclose() to succeed, but keep libvirt.so resident
      in memory, link with '-z nodelete'. This issue was first
      found with the libvirt CIM provider, but can potentially
      hit many of the dynamic language bindings which all ultimately
      involve dlopen() in some way, either on libvirt.so itself,
      or on the glue code for the binding which in turns links
      to libvirt
      
      * configure.ac, src/Makefile.am: Ensure libvirt.so is linked
        with -z nodelete
      * cfg.mk, .gitignore, tests/Makefile.am, tests/shunloadhelper.c,
        tests/shunloadtest.c: A test case to unload libvirt while
        a thread is still running.
      8e44e559
  23. 14 9月, 2011 1 次提交
  24. 26 8月, 2011 1 次提交
    • M
      hyperv: Add OpenWSMAN based client for the Hyper-V WMI API · e224b6f8
      Matthias Bolte 提交于
      Add a generator script to generate the structs and serialization
      information for OpenWSMAN.
      
      openwsman.h collects workarounds for problems in OpenWSMAN <= 2.2.6.
      There are also disabled sections that would use ws_serializer_free_mem
      but can't because it's broken in OpenWSMAN <= 2.2.6. Patches to fix
      this have been posted upstream.
      e224b6f8
  25. 19 8月, 2011 1 次提交
    • E
      maint: ignore generated file · 322d1cfc
      Eric Blake 提交于
      I did 'git add .' while in the middle of 'make syntax-check', and
      it picked up a temporary file that should not be committed.
      
      * .gitignore: Ignore sc_* from syntax check.
      322d1cfc
  26. 16 8月, 2011 1 次提交
  27. 29 7月, 2011 1 次提交
    • M
      freebsd: Fix build problem due to picking up the wrong libvirt.h · b590866b
      Matthias Bolte 提交于
      Gettext annoyingly modifies CPPFLAGS in-place, putting
      -I/usr/local/include into the search patch if libintl headers
      must be used from that location.  But since we must support
      automake 1.9.6 which lacks AM_CPPFLAGS, and since CPPFLAGS is used
      prior to INCLUDES, this means that the build picks up the _old_
      installed libvirt.h in priority to the in-tree version, leading
      to all sorts of weird build failures on FreeBSD.
      
      Fix this by teaching configure to undo gettext's actions, but
      to keep any changes required by gettext at the end of INCLUDES
      after all in-tree locations are used first.  Also requires
      adding a wrapper Makefile.am and making gnulib-tool create
      just gnulib.mk files during the bootstrap process.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      b590866b
  28. 21 7月, 2011 1 次提交
    • L
      util: add virtkeycode module · 0bbf87e9
      Lai Jiangshan 提交于
      Add virtkey lib for usage-improvment and keycode translating.
      Add 4 internal API for the aim
      
      const char *virKeycodeSetTypeToString(int codeset);
      int virKeycodeSetTypeFromString(const char *name);
      int virKeycodeValueFromString(virKeycodeSet codeset, const char *keyname);
      int virKeycodeValueTranslate(virKeycodeSet from_codeset,
                                   virKeycodeSet to_offset,
                                   int key_value);
      
      * include/libvirt/libvirt.h.in: extend virKeycodeSet enum
      * src/Makefile.am: add new virtkeycode module and rule to generate
        virkeymaps.h
      * src/util/virkeycode.c src/util/virkeycode.h: new module
      * src/util/virkeycode-mapgen.py: python generator for virkeymaps.h
        out of keymaps.csv
      * src/libvirt_private.syms: extend private symbols for new module
      * .gitignore: add generated virkeymaps.h
      0bbf87e9
  29. 19 7月, 2011 1 次提交
    • E
      build: detect doc generation failure · 97ee0953
      Eric Blake 提交于
      Commit 8665f855 introduced a slight regression in doc generation,
      since make only quits a rule on the first failed command ending
      with a newline rather than a semicolon.
      
      * docs/Makefile.am (html/index.html): Don't use xmllint unless
      xsltproc succeeded.
      * .gitignore: Ignore recently updated stamp file name.
      97ee0953
  30. 01 7月, 2011 1 次提交
  31. 29 6月, 2011 1 次提交
    • D
      Convert libvirtd over to the new RPC handling APIs · df0b57a9
      Daniel P. Berrange 提交于
      This guts the libvirtd daemon, removing all its networking and
      RPC handling code. Instead it calls out to the new virServerPtr
      APIs for all its RPC & networking work
      
      As a fallout all libvirtd daemon error reporting now takes place
      via the normal internal error reporting APIs. There is no need
      to call separate error reporting APIs in RPC code, nor should
      code use VIR_WARN/VIR_ERROR for reporting fatal problems anymore.
      
      * daemon/qemu_dispatch_*.h, daemon/remote_dispatch_*.h: Remove
        old generated dispatcher code
      * daemon/qemu_dispatch.h, daemon/remote_dispatch.h: New dispatch
        code
      * daemon/dispatch.c, daemon/dispatch.h: Remove obsoleted code
      * daemon/remote.c, daemon/remote.h: Rewrite for new dispatch
        APIs
      * daemon/libvirtd.c, daemon/libvirtd.h: Remove all networking
        code
      * daemon/stream.c, daemon/stream.h: Update for new APIs
      * daemon/Makefile.am: Link to libvirt-net-rpc-server.la
      df0b57a9
  32. 25 6月, 2011 1 次提交
  33. 24 6月, 2011 1 次提交
    • D
      Defines the basics of a generic RPC protocol in XDR · 980a132a
      Daniel P. Berrange 提交于
      This patch defines the basics of a generic RPC protocol in XDR.
      This is wire ABI compatible with the original remote_protocol.x.
      It takes everything except for the RPC calls / events from that
      protocol
      
       - The basic header virNetMessageHeader (aka remote_message_header)
       - The error object virNetMessageError  (aka remote_error)
       - Two dummy objects virNetMessageDomain & virNetMessageNetwork
         sadly needed to keep virNetMessageError ABI compatible with
         the old remote_error
      
      The RPC protocol supports method calls, async events and
      bidirectional data streams as before
      
      * src/Makefile.am: Add rules for generating RPC code from
        protocol & define a new libvirt-net-rpc.la helper library
      * src/rpc/virnetprotocol.x: New generic RPC protocol
      980a132a
  34. 01 6月, 2011 1 次提交
  35. 16 5月, 2011 1 次提交
  36. 07 5月, 2011 1 次提交
    • D
      build: Remove all generated RPC files from GIT · 3496b7f5
      Daniel P. Berrange 提交于
      Stop storing the generated files for the remote protocol client
      and server in source control. The generated files will still be
      included in the result of 'make dist' to avoid end-users needing
      to generate the files
      Signed-off-by: NEric Blake <eblake@redhat.com>
      
      Unfortunately, this means that the strings marked for translation
      in generated files are not picked up by gnulib's syntax-check,
      I'm working on fixing that in gnulib.
      
      * .gitignore, cfg.mk, po/POTFILES.in: Reflect deletion.
      3496b7f5
  37. 18 4月, 2011 1 次提交
  38. 08 4月, 2011 1 次提交
    • E
      build: fix gitignore sorting · 02c39a2f
      Eric Blake 提交于
      Make it so we don't have to 'git add -f' particular files like
      po/POTFILES.in all the time (tested by fixing one of our
      special-case files as part of the patch).
      
      * .gnulib: Update to latest.
      * bootstrap: Resync from coreutils.
      * .gitignore: Sort whitelist entries correctly, including ignoring
      files rather than directories.
      * m4/virt-compile-warnings.m4: Convert tabs to space.
      02c39a2f
  39. 05 4月, 2011 1 次提交
    • D
      Remove acinclude.m4 file · 4825b521
      Daniel P. Berrange 提交于
      Split the bit acinclude.m4 file into smaller pieces named
      as m4/virt-XXXXX.m4
      
      * .gitignore: Ignore gettext related files
      * acinclude.m4: Delete
      * m4/virt-compile-warnings.m4: Checks for GCC compiler flags
      * m4/virt-pkgconfig-back-compat.m4: Backcompat check for
        pkgconfig program
      4825b521
  40. 29 3月, 2011 1 次提交