1. 07 6月, 2016 2 次提交
  2. 27 5月, 2016 1 次提交
    • E
      maint: update to latest gnulib · 0cd64883
      Eric Blake 提交于
      Pulls in several portability fixes, including the fact that gnulib
      now only works on platforms with two's complement signed integers.
      Also makes for a smaller delta on the next update (we are waiting
      on a license change to unsetenv for the sake of mingw).
      
      * .gnulib: Update to latest.
      * bootstrap: Resync from upstream.
      * tests/virstringtest.c: Drop use of obsolete probes of integer
      properties.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      0cd64883
  3. 26 5月, 2016 3 次提交
    • D
      esx: Add VMCI device for virtualHW >= 7 · 5b36410f
      Dawid Zamirski 提交于
      This patch fixes an issue where vMotion fails when VMCI device is not
      present in the vmx file.
      5b36410f
    • D
      esx: add pciBridge devices when SCSI is used · 2b89f1d8
      Dawid Zamirski 提交于
      When a SCSI controller is present, ESX adds several pciBridge devices
      to vmx file. This fixes an error message where it refuses to create VM
      due to not enough PCI devices available. This applies only to virtualHW
      version >= 7.
      2b89f1d8
    • L
      conf: permit auto-assignment of controller indexes · 4d100c7a
      Laine Stump 提交于
      Hand-entering indexes for 20 PCI controllers is not as tedious as
      manually determining and entering their PCI addresses, but it's still
      annoying, and the algorithm for determining the proper index is
      incredibly simple (in all cases except one) - just pick the lowest
      unused index.
      
      The one exception is USB2 controllers because multiple controllers in
      the same group have the same index. For these we look to see if 1) the
      most recently added USB controller is also a USB2 controller, and 2)
      the group *that* controller belongs to doesn't yet have a controller
      of the exact model we're just now adding - if both are true, the new
      controller gets the same index, but in all other cases we just assign
      the lowest unused index.
      
      With this patch in place and combined with the automatic PCI address
      assignment, we can define a PCIe switch with several ports like this:
      
        <controller type='pci' model='pcie-root-port'/>
        <controller type='pci' model='pcie-switch-upstream-port'/>
        <controller type='pci' model='pcie-switch-downstream-port'/>
        <controller type='pci' model='pcie-switch-downstream-port'/>
        <controller type='pci' model='pcie-switch-downstream-port'/>
        <controller type='pci' model='pcie-switch-downstream-port'/>
        <controller type='pci' model='pcie-switch-downstream-port'/>
        ...
      
      These will each get a unique index, and PCI addresses that connect
      them together appropriately with no pesky numbers required.
      4d100c7a
  4. 25 5月, 2016 7 次提交
  5. 24 5月, 2016 10 次提交
  6. 23 5月, 2016 6 次提交
  7. 21 5月, 2016 2 次提交
    • C
      tests: qemu: test <address type='pci'/> with aarch64 · f3d5e255
      Cole Robinson 提交于
      This is an interesting test case since PCI isn't the default for
      aarch64.
      f3d5e255
    • L
      qemu: auto-assign addresses when <address type='pci'/> is specified · c026f8f1
      Laine Stump 提交于
      Rather than only assigning a PCI address when no address is given at
      all, also do it when the config says that the address type is 'pci',
      but it gives no address (virDeviceInfoPCIAddressWanted()).
      
      There are also several places after parsing but prior to address
      assignment where code previously expected that any info with address
      type='pci' would have a *valid* PCI address, which isn't always the
      case - now we check not only for type='pci', but also for a valid
      address (virDeviceInfoPCIAddressPresent()).
      
      The test case added in this patch was directly copied from Cole's patch titled:
      
          qemu: Wire up address type=pci auto_allocate
      c026f8f1
  8. 20 5月, 2016 9 次提交
    • M
      tests: Link virtestmock with probes · 997be5c2
      Michal Privoznik 提交于
      I've encountered this error while trying out this feature on some
      systems:
      
        $ VIR_TEST_FILE_ACCESS=1 ./virhashtest \
       libvirt.git/tests/.libs/lt-virhashtest: \
      symbol lookup error: libvirt.git/tests/.libs/virtestmock.so: \
      undefined symbol: libvirt_event_poll_purge_timeout_semaphore
      
      Problem is, linking just libvirt_utils to virmock.la is not
      enough. We might need to link libvirt_probes.lo too.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      997be5c2
    • M
      virtestmock: Mock stat() properly · 49c1a078
      Michal Privoznik 提交于
      There is a lot to explain, but I try to make it as short as
      possible. I'd start by pasting some parts of sys/stat.h:
      
      extern int stat (const char *__restrict __file,
      		 struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
      
      extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
      				  struct stat *__restrict __buf), stat64)
           __nonnull ((1, 2));
      
      __extern_inline int
      __NTH (stat (const char *__path, struct stat *__statbuf))
      {
        return __xstat (_STAT_VER, __path, __statbuf);
      }
      
      Only one of these is effective at once, due to some usage of
      the mess we are dealing with in here. So, basically, while
      compiling or linking stat() in our code can be transformed into
      some other func. Or a dragon.
      Now, if you read stat(2) manpage, esp. "C library/kernel
      differences" section, you'll learn that glibc uses some tricks
      for older applications to work. I haven't gotten around actual
      code that does this, but based on my observations, if 'stat'
      symbol is found, glibc assumes it's dealing with ancient
      application. Unfortunately, it can be just ours stat coming from
      our mock. Therefore, calling stat() from a test will end up in
      our mock. But since glibc is not exposing the symbol anymore, our
      call of real_stat() will SIGSEGV immediately as the pointer to
      function is NULL. Therefore, we should expose only those symbols
      we know glibc has.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      49c1a078
    • M
      tests: Drop VIR_MOCK_CALL_STAT · 43639790
      Michal Privoznik 提交于
      It wasn't as great idea as I thought. Thing around stat() are
      more complicated than that. Therefore we need to revert
      86d1705a plus drop use of the macro as introduced in
      later patches.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      43639790
    • J
      qemu: Utilize qemu secret objects for RBD auth/secret · a1344f70
      John Ferlan 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1182074
      
      If they're available and we need to pass secrets to qemu, then use the
      qemu domain secret object in order to pass the secrets for RBD volumes
      instead of passing the base64 encoded secret on the command line.
      
      The goal is to make AES secrets the default and have no user interaction
      required in order to allow using the AES mechanism. If the mechanism
      is not available, then fall back to the current plain mechanism using
      a base64 encoded secret.
      
      New APIs:
      
      qemu_domain.c:
        qemuDomainGetSecretAESAlias:
          Generate/return the secret object alias for an AES Secret Info type.
          This will be called from qemuDomainSecretAESSetup.
      
        qemuDomainSecretAESSetup: (private)
          This API handles the details of the generation of the AES secret
          and saves the pieces that need to be passed to qemu in order for
          the secret to be decrypted. The encrypted secret based upon the
          domain master key, an initialization vector (16 byte random value),
          and the stored secret. Finally, the requirement from qemu is the IV
          and encrypted secret are to be base64 encoded.
      
      qemu_command.c:
        qemuBuildSecretInfoProps: (private)
          Generate/return a JSON properties object for the AES secret to
          be used by both the command building and eventually the hotplug
          code in order to add the secret object. Code was designed so that
          in the future perhaps hotplug could use it if it made sense.
      
        qemuBuildObjectSecretCommandLine (private)
          Generate and add to the command line the -object secret for the
          secret. This will be required for the subsequent RBD reference
          to the object.
      
        qemuBuildDiskSecinfoCommandLine (private)
          Handle adding the AES secret object.
      
      Adjustments:
      
      qemu_domain.c:
        The qemuDomainSecretSetup was altered to call either the AES or Plain
        Setup functions based upon whether AES secrets are possible (we have
        the encryption API) or not, we have secrets, and of course if the
        protocol source is RBD.
      
      qemu_command.c:
        Adjust the qemuBuildRBDSecinfoURI API's in order to generate the
        specific command options for an AES secret, such as:
      
          -object secret,id=$alias,keyid=$masterKey,data=$base64encodedencrypted,
                  format=base64
          -drive file=rbd:pool/image:id=myname:auth_supported=cephx\;none:\
                 mon_host=mon1.example.org\:6321,password-secret=$alias,...
      
        where the 'id=' value is the secret object alias generated by
        concatenating the disk alias and "-aesKey0". The 'keyid= $masterKey'
        is the master key shared with qemu, and the -drive syntax will
        reference that alias as the 'password-secret'. For the -drive
        syntax, the 'id=myname' is kept to define the username, while the
        'key=$base64 encoded secret' is removed.
      
        While according to the syntax described for qemu commit '60390a21'
        or as seen in the email archive:
      
          https://lists.gnu.org/archive/html/qemu-devel/2016-01/msg04083.html
      
        it is possible to pass a plaintext password via a file, the qemu
        commit 'ac1d8878' describes the more feature rich 'keyid=' option
        based upon the shared masterKey.
      
      Add tests for checking/comparing output.
      
      NB: For hotplug, since the hotplug code doesn't add command line
          arguments, passing the encoded secret directly to the monitor
          will suffice.
      a1344f70
    • P
      tests: Allow multiple mock libraries · f0469c61
      Peter Krempa 提交于
      Make virtTestMain take variable number of libraries to mock.
      f0469c61
    • J
      util: Introduce encryption APIs · 1ce9c08a
      John Ferlan 提交于
      Introduce virCryptoHaveCipher and virCryptoEncryptData to handle
      performing encryption.
      
       virCryptoHaveCipher:
         Boolean function to determine whether the requested cipher algorithm
         is available. It's expected this API will be called prior to
         virCryptoEncryptdata. It will return true/false.
      
       virCryptoEncryptData:
         Based on the requested cipher type, call the specific encryption
         API to encrypt the data.
      
      Currently the only algorithm support is the AES 256 CBC encryption.
      
      Adjust tests for the API's
      1ce9c08a
    • J
      tests: Add mock for virRandomBytes · 6a3f4121
      John Ferlan 提交于
      Create a mock for virRandomBytes to generate a not so random value.
      This should be usable by other tests that need a not so random number
      to be generated by including the virrandommock at preload.
      
      The "random number" generated is based upon the size of the expected
      stream of bytes being returned where each byte in the result gets
      the index of the array - hence a 4 byte array returns 0x00010203.
      6a3f4121
    • N
      qemu: parse: Handle suffixes for -m memory · 701b0f18
      Nishith Shah 提交于
      According to QEMU docs, the '-m' option for specifying RAM is by default
      in MiB, and a suffix of "M" or "G" may be passed for values in MiB and
      GiB respectively. This commit adds support and a test for the same.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=812295Signed-off-by: NNishith Shah <nishithshah.2211@gmail.com>
      701b0f18
    • P
      qemu_command: move sasl parameter after port and addr definition · 858d7b6c
      Pavel Hrdina 提交于
      This is required for following patches where new listen types will be
      introduced.
      Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
      858d7b6c