1. 02 2月, 2012 15 次提交
    • M
      02ee8745
    • P
      tests: dynamically replace dnsmasq path · 22ec6000
      Philipp Hahn 提交于
      The path to the dnsmasq binary can be configured while in the test data
      the path is hard-coded to /usr/bin/. This break the test suite if a the
      binary is located in a different location, like /usr/local/sbin/.
      
      Replace the hard coded path in the test data by a token, which is
      dynamically replaced in networkxml2argvtest with the configured path
      after the test data has been loaded.
      
      (Another option would have been to modify configure.ac to generate the
       test data during configure, but I do not know of an easy way do trick
       configure into mass-generate those test files without listing every
       single one, which I consider less flexible.)
      
      - unit-test the unit-test:
        #include <assert.h>
        #define TEST(in,token,rep,out) { char *buf = strdup(in); assert(!replaceTokens(&buf, token, rep) && !strcmp(buf, out)); free(buf); }
        TEST("", "AA", "B", "");
        TEST("A", "AA", "B", "A");
        TEST("AA", "AA", "B", "B");
        TEST("AAA", "AA", "B", "BA");
        TEST("AA", "AA", "BB", "BB");
        TEST("AA", "AA", "BBB", "BBB");
        TEST("<AA", "AA", "B", "<B");
        TEST("<AA", "AA", "BB", "<BB");
        TEST("<AA", "AA", "BBB", "<BBB");
        TEST("AA>", "AA", "B", "B>");
        TEST("AA>", "AA", "BB", "BB>");
        TEST("AA>", "AA", "BBB", "BBB>");
        TEST("<AA>", "AA", "B", "<B>");
        TEST("<AA>", "AA", "BB", "<BB>");
        TEST("<AA>", "AA", "BBB", "<BBB>");
        TEST("<AA|AA>", "AA", "B", "<B|B>");
        TEST("<AA|AA>", "AA", "BB", "<BB|BB>");
        TEST("<AA|AA>", "AA", "BBB", "<BBB|BBB>");
        TEST("<AAAA>", "AA", "B", "<BB>");
        TEST("<AAAA>", "AA", "BB", "<BBBB>");
        TEST("<AAAA>", "AA", "BBB", "<BBBBBB>");
        TEST("AAAA>", "AA", "B", "BB>");
        TEST("AAAA>", "AA", "BB", "BBBB>");
        TEST("AAAA>", "AA", "BBB", "BBBBBB>");
        TEST("<AAAA", "AA", "B", "<BB");
        TEST("<AAAA", "AA", "BB", "<BBBB");
        TEST("<AAAA", "AA", "BBB", "<BBBBBB");
        alarm(1); /* no infinite loop */
        TEST("A", "A", "A", "A");
        TEST("AA", "A", "A", "AA");
        alarm(0);
      Signed-off-by: NPhilipp Hahn <hahn@univention.de>
      22ec6000
    • E
      network: fix testsuite regression · 0aaf88e8
      Eric Blake 提交于
      I slightly botched commit be9fb5af - I converted '--arg=value' to
      '--arg value', which has no semantic change, but did trip up the
      testsuite.
      
      * src/network/bridge_driver.c (networkBuildDnsmasqArgv): Restore
      expected output.
      0aaf88e8
    • P
      tests: virnettlscontexttest needs gnutls-2.6.0 · 08f680ee
      Philipp Hahn 提交于
      virnettlscontexttest uses gnutls_x509_crt_set_subject_alt_name() and
      GNUTLS_FSAN_APPEND, which - according to
      <http://www.gnu.org/software/gnutls/manual/gnutls.html> - are only
      available since 2.6.0.
      
      Since libvirt still works fine with gnutls-1.0.25 from RHEL5, only
      enable the test when the version of GNUTLS is at least 2.6.0.
      Signed-off-by: NPhilipp Hahn <hahn@univention.de>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      08f680ee
    • P
      xen_xs: name xendConfigVersion magic numbers · 184fc07f
      Philipp Hahn 提交于
      libvirt supports 4 different versions of the user-land XenD daemon. When
      queried the daemon just returns its generation number, which is hard to
      match to the version of the Xen tools.
      
      Replace the magic generation numbers by named enum definitions to
      improve code readability.
      Signed-off-by: NPhilipp Hahn <hahn@univention.de>
      184fc07f
    • A
      network: Avoid memory leaks on networkBuildDnsmasqArgv · be9fb5af
      Alex Jia 提交于
      Detected by valgrind. Leaks introduced in commit 973af236.
      
      * src/network/bridge_driver.c: fix memory leaks on failure and successful path.
      
      * How to reproduce?
      % make -C tests check TESTS=networkxml2argvtest
      % cd tests && valgrind -v --leak-check=full ./networkxml2argvtest
      
      * Actual result:
      
      ==2226== 3 bytes in 1 blocks are definitely lost in loss record 1 of 24
      ==2226==    at 0x4A05FDE: malloc (vg_replace_malloc.c:236)
      ==2226==    by 0x39CF0FEDE7: __vasprintf_chk (in /lib64/libc-2.12.so)
      ==2226==    by 0x41DFF7: virVasprintf (stdio2.h:199)
      ==2226==    by 0x41E0B7: virAsprintf (util.c:1695)
      ==2226==    by 0x41A2D9: networkBuildDhcpDaemonCommandLine (bridge_driver.c:545)
      ==2226==    by 0x4145C8: testCompareXMLToArgvHelper (networkxml2argvtest.c:47)
      ==2226==    by 0x4156A1: virtTestRun (testutils.c:141)
      ==2226==    by 0x414332: mymain (networkxml2argvtest.c:123)
      ==2226==    by 0x414D97: virtTestMain (testutils.c:696)
      ==2226==    by 0x39CF01ECDC: (below main) (in /lib64/libc-2.12.so)
      ==2226==
      ==2226== 3 bytes in 1 blocks are definitely lost in loss record 2 of 24
      ==2226==    at 0x4A05FDE: malloc (vg_replace_malloc.c:236)
      ==2226==    by 0x39CF0FEDE7: __vasprintf_chk (in /lib64/libc-2.12.so)
      ==2226==    by 0x41DFF7: virVasprintf (stdio2.h:199)
      ==2226==    by 0x41E0B7: virAsprintf (util.c:1695)
      ==2226==    by 0x41A307: networkBuildDhcpDaemonCommandLine (bridge_driver.c:551)
      ==2226==    by 0x4145C8: testCompareXMLToArgvHelper (networkxml2argvtest.c:47)
      ==2226==    by 0x4156A1: virtTestRun (testutils.c:141)
      ==2226==    by 0x414332: mymain (networkxml2argvtest.c:123)
      ==2226==    by 0x414D97: virtTestMain (testutils.c:696)
      ==2226==    by 0x39CF01ECDC: (below main) (in /lib64/libc-2.12.so)
      ==2226==
      ==2226== 5 bytes in 1 blocks are definitely lost in loss record 4 of 24
      ==2226==    at 0x4A05FDE: malloc (vg_replace_malloc.c:236)
      ==2226==    by 0x39CF0FEDE7: __vasprintf_chk (in /lib64/libc-2.12.so)
      ==2226==    by 0x41DFF7: virVasprintf (stdio2.h:199)
      ==2226==    by 0x41E0B7: virAsprintf (util.c:1695)
      ==2226==    by 0x41A2AB: networkBuildDhcpDaemonCommandLine (bridge_driver.c:539)
      ==2226==    by 0x4145C8: testCompareXMLToArgvHelper (networkxml2argvtest.c:47)
      ==2226==    by 0x4156A1: virtTestRun (testutils.c:141)
      ==2226==    by 0x414332: mymain (networkxml2argvtest.c:123)
      ==2226==    by 0x414D97: virtTestMain (testutils.c:696)
      ==2226==    by 0x39CF01ECDC: (below main) (in /lib64/libc-2.12.so)
      ==2226==
      ==2226== LEAK SUMMARY:
      ==2226==    definitely lost: 11 bytes in 3 blocks
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      be9fb5af
    • E
      block rebase: initial qemu implementation · 9f902a2e
      Eric Blake 提交于
      This is a trivial implementation, which works with the current
      released qemu 1.0 with backports of preliminary block pull but
      no partial rebase.  Future patches will update the monitor handling
      to support an optional parameter for partial rebase; but as qemu
      1.1 is unreleased, it can be in later patches, designed to be
      backported on top of the supported API.
      
      * src/qemu/qemu_driver.c (qemuDomainBlockJobImpl): Add parameter,
      and adjust callers.  Drop redundant check.
      (qemuDomainBlockPull): Move guts...
      (qemuDomainBlockRebase): ...to new function.
      9f902a2e
    • E
      block rebase: wire up remote protocol · 8ee8fd65
      Eric Blake 提交于
      Nice and simple.
      
      * src/remote/remote_protocol.x (REMOTE_PROC_DOMAIN_BLOCK_REBASE):
      New RPC.
      * src/remote/remote_driver.c (remote_driver): Wire it up.
      * src/remote_protocol-structs: Regenerate.
      8ee8fd65
    • E
      block rebase: add new API virDomainBlockRebase · 99fd69c3
      Eric Blake 提交于
      Qemu is adding the ability to do a partial rebase.  That is, given:
      
      base <- intermediate <- current
      
      virDomainBlockPull will produce:
      
      current
      
      but qemu now has the ability to leave base in the chain, to produce:
      
      base <- current
      
      Note that current qemu can only do a forward merge, and only with
      the current image as the destination, which is fully described by
      this API without flags.  But in the future, it may be possible to
      enhance this API for additional scenarios by using flags:
      
      Merging the current image back into a previous image (that is,
      undoing a live snapshot), could be done by passing base as the
      destination and flags with a bit requesting a backward merge.
      
      Merging any other part of the image chain, whether forwards (the
      backing image contents are pulled into the newer file) or backwards
      (the deltas recorded in the newer file are merged back into the
      backing file), could also be done by passing a new flag that says
      that base should be treated as an XML snippet rather than an
      absolute path name, where the XML could then supply the additional
      instructions of which part of the image chain is being merged into
      any other part.
      
      * include/libvirt/libvirt.h.in (virDomainBlockRebase): New
      declaration.
      * src/libvirt.c (virDomainBlockRebase): Implement it.
      * src/libvirt_public.syms (LIBVIRT_0.9.10): Export it.
      * src/driver.h (virDrvDomainBlockRebase): New driver callback.
      * src/rpc/gendispatch.pl (long_legacy): Add exemption.
      * docs/apibuild.py (long_legacy_functions): Likewise.
      99fd69c3
    • P
      qemu: Add support for virDomainGetMetadata and virDomainSetMetadata · 21d13ddc
      Peter Krempa 提交于
      This patch adds support for the new api into the qemu driver to support
      modification and retrieval of domain description and title. This patch
      does not add support for modifying the <metadata> element.
      21d13ddc
    • P
      virsh: Add support for modifying domain description and titles · fad5cd21
      Peter Krempa 提交于
      This patch adds a new command "desc" to show and modify titles and
      description for the domains using the new API.
      
      This patch also adds a new flag for the "list" command to show titles in
      the domain list, to allow easy identification of VMs by storing a short
      description.
      
      Example:
      virsh # list --title
       Id Name                 State      Title
       -----------------------------------------------
         0 Domain-0             running    Mailserver 1
         2 fedora               paused
      fad5cd21
    • P
      API: Add api to set and get domain metadata · c471e55e
      Peter Krempa 提交于
      This patch adds API to modify domain metadata for running and stopped
      domains. The api supports changing description, title as well as the
      newly added <metadata> element. The API has support for storing data in
      the metadata element using xml namespaces.
      
      * include/libvirt/libvirt.h.in
      * src/libvirt_public.syms
              - add function headers
              - add enum to select metadata to operate on
              - export functions
      * src/libvirt.c
              - add public api implementation
      * src/driver.h
              - add driver support
      * src/remote/remote_driver.c
      * src/remote/remote_protocol.x
              - wire up the remote protocol
      * include/libvirt/virterror.h
      * src/util/virterror.c
              - add a new error message note that metadata for domain are
              missing
      c471e55e
    • P
      xml: Add element <title> to allow short description of domains · b79ba838
      Peter Krempa 提交于
      This patch adds a new element <title> to the domain XML. This attribute
      can hold a short title defined by the user to ease the identification of
      domains. The title may not contain newlines and should be reasonably short.
      
       *docs/formatdomain.html.in
       *docs/schemas/domaincommon.rng
              - add schema grammar for the new element and documentation
        *src/conf/domain_conf.c
        *src/conf/domain_conf.h
              - add field to hold the new attribute
              - add code to parse and create XML with the new attribute
      b79ba838
    • L
      build: add missing virStorageFileResize to libvirt_private.syms · 26e9fdc0
      Laine Stump 提交于
      This was forgotten when the function was originally written (not
      noticed because it wasn't used at the time). It's required for
      proper compilation with modules enabled after applying the recent
      virStorageVolResize patches.
      26e9fdc0
    • L
      build: add missing virCommandAddCap to libvirt_private.syms · f594cdda
      Laine Stump 提交于
      This was forgotten when the function was initially written (not
      noticed because it wasn't used at the time). It's required for proper
      compilation with modules enabled after applying the recent rawio
      patches.
      f594cdda
  2. 01 2月, 2012 21 次提交
  3. 31 1月, 2012 4 次提交
    • P
      XenXs: Update documentation · 098a987b
      Philipp Hahn 提交于
      Fix several references to now renamed functions and parameters when the
      functions were moved from src/xen/ to src/xenxs/.
      Signed-off-by: NPhilipp Hahn <hahn@univention.de>
      098a987b
    • L
      qemu: add "romfile" support to specify device boot ROM · 3801831c
      Laine Stump 提交于
      This patch addresses: https://bugzilla.redhat.com/show_bug.cgi?id=781562
      
      Along with the "rombar" option that controls whether or not a boot rom
      is made visible to the guest, qemu also has a "romfile" option that
      allows specifying a binary file to present as the ROM BIOS of any
      emulated or passthrough PCI device. This patch adds support for
      specifying romfile to both passthrough PCI devices, and emulated
      network devices that attach to the guest's PCI bus (just about
      everything other than ne2k_isa).
      
      One example of the usefulness of this option is described in the
      bugzilla report: 82576 sriov network adapters don't provide a ROM BIOS
      for the cards virtual functions (VF), but an image of such a ROM is
      available, and with this ROM visible to the guest, it can PXE boot.
      
      In libvirt's xml, the new option is configured like this:
      
         <hostdev>
           ...
           <rom file='/etc/fake/boot.bin'/>
           ...
         </hostdev
      
      (similarly for <interface>).
      3801831c
    • L
      qemu: (and conf) support rombar for network devices · 3284ac04
      Laine Stump 提交于
      When support for the rombar option was added, it was only added for
      PCI passthrough devices, configured with <hostdev>. The same option is
      available for any network device that is attached to the guest's PCI
      bus. This patch allows setting rombar for any PCI network device type.
      
      After adding cases to test this to qemuxml2argv-hostdev-pci-rombar.*,
      I decided to rename those files (to qemuxml2argv-pci-rom.*) to more
      accurately reflect the additional tests, and also noticed that up to
      now we've only been performing a domainschematest for that case, so I
      added the "pci-rom" test to both qemuxml2argv and qemuxml2xml (and in
      the process found some bugs whose fixes I squashed into previous
      commits of this series).
      3284ac04
    • L
      conf: relocate rombar and boot order parse/format · c01ba1a4
      Laine Stump 提交于
      Since these two items are now in the virDomainDeviceInfo struct, it
      makes sense to parse/format them in the functions written to
      parse/format that structure. Not all types of devices allow them, so
      two internal flags are added to indicate when it is appropriate to do
      so.
      
      I was lucky - only one test case needed to be re-ordered!
      c01ba1a4