1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-09-17 21:45:33 +03:00

Compare commits

...

792 Commits

Author SHA1 Message Date
Ján Tomko
415cc5c064 api: disallow virConnect*HypervisorCPU on read-only connections
These APIs can be used to execute arbitrary emulators.
Forbid them on read-only connections.

Fixes: CVE-2019-10168
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
(cherry picked from commit bf6c2830b6)
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2019-06-24 09:56:23 +02:00
Ján Tomko
fd16bd525a api: disallow virConnectGetDomainCapabilities on read-only connections
This API can be used to execute arbitrary emulators.
Forbid it on read-only connections.

Fixes: CVE-2019-10167
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
(cherry picked from commit 8afa68bac0)
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2019-06-24 09:56:23 +02:00
Ján Tomko
d025c10d54 api: disallow virDomainManagedSaveDefineXML on read-only connections
The virDomainManagedSaveDefineXML can be used to alter the domain's
config used for managedsave or even execute arbitrary emulator binaries.
Forbid it on read-only connections.

Fixes: CVE-2019-10166
Reported-by: Matthias Gerstner <mgerstner@suse.de>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
(cherry picked from commit db0b78457f)
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2019-06-24 09:56:23 +02:00
Ján Tomko
6a028b6e82 api: disallow virDomainSaveImageGetXMLDesc on read-only connections
The virDomainSaveImageGetXMLDesc API is taking a path parameter,
which can point to any path on the system. This file will then be
read and parsed by libvirtd running with root privileges.

Forbid it on read-only connections.

Fixes: CVE-2019-10161
Reported-by: Matthias Gerstner <mgerstner@suse.de>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
(cherry picked from commit aed6a032ce)
Signed-off-by: Ján Tomko <jtomko@redhat.com>

Conflicts:
  src/libvirt-domain.c
  src/remote/remote_protocol.x

Upstream commit 12a51f372 which introduced the VIR_DOMAIN_SAVE_IMAGE_XML_SECURE
alias for VIR_DOMAIN_XML_SECURE is not backported.
Just skip the commit since we now disallow the whole API on read-only
connections, regardless of the flag.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2019-06-24 09:56:23 +02:00
Daniel P. Berrangé
ec58805400 logging: restrict sockets to mode 0600
The virtlogd daemon's only intended client is the libvirtd daemon. As
such it should never allow clients from other user accounts to connect.
The code already enforces this and drops clients from other UIDs, but
we can get earlier (and thus stronger) protection against DoS by setting
the socket permissions to 0600

Fixes CVE-2019-10132

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
(cherry picked from commit e37bd65f99)
2019-05-21 13:30:02 +01:00
Daniel P. Berrangé
618358632b locking: restrict sockets to mode 0600
The virtlockd daemon's only intended client is the libvirtd daemon. As
such it should never allow clients from other user accounts to connect.
The code already enforces this and drops clients from other UIDs, but
we can get earlier (and thus stronger) protection against DoS by setting
the socket permissions to 0600

Fixes CVE-2019-10132

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
(cherry picked from commit f111e09468)
2019-05-21 13:30:01 +01:00
Daniel P. Berrangé
d1017aeee9 admin: reject clients unless their UID matches the current UID
The admin protocol RPC messages are only intended for use by the user
running the daemon. As such they should not be allowed for any client
UID that does not match the server UID.

Fixes CVE-2019-10132

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
(cherry picked from commit 96f41cd765)
2019-05-21 13:30:01 +01:00
Luyao Huang
35176b5c78 virDomainConfNWFilterInstantiate: initialize @xml to avoid random crash
If the code jump to the cleanup before assigning value to @xml
libvirtd may crash when it tries to free an uninitialized pointer.

backtrace:

0  0x00007ffff428d59c in free () from /lib64/libc.so.6
1  0x00007ffff721314a in virFree (ptrptr=ptrptr@entry=0x7fffc67f1b00) at util/viralloc.c:582
2  0x00007ffff7345ac4 in virDomainConfNWFilterInstantiate (vmname=<optimized out>,
   vmuuid=vmuuid@entry=0x7fffc0181ca8 "߉\237\\۔H\262\206z\340\302f\265\233z", net=<optimized out>,
   ignoreExists=ignoreExists@entry=true) at conf/domain_nwfilter.c:122
3  0x00007fffca5a77f6 in qemuProcessFiltersInstantiate (ignoreExists=true, def=0x7fffc0181ca0) at qemu/qemu_process.c:3028
4  qemuProcessReconnect (opaque=<optimized out>) at qemu/qemu_process.c:7653
5  0x00007ffff72c4895 in virThreadHelper (data=<optimized out>) at util/virthread.c:206
6  0x00007ffff45dcdd5 in start_thread () from /lib64/libpthread.so.0
7  0x00007ffff4305ead in clone () from /lib64/libc.so.6

Signed-off-by: Luyao Huang <lhuang@redhat.com>
(cherry picked from commit d7557f5f6f)
2018-07-06 14:31:47 +01:00
Daniel P. Berrangé
6aedf9bfad qemu: fix UNIX socket chardevs operating in client mode
When support was adding for passing a pre-opened listener socket to UNIX
chardevs, it accidentally passed the listener socket for client mode
chardevs too with predictable amounts of fail resulting. This affects
libvirt when using QEMU >= 2.12

Expand the unit test coverage to validate that we are only doing FD
passing when operating in server mode.

  https://bugzilla.redhat.com/show_bug.cgi?id=1598440

Tested-by: Richard W.M. Jones <rjones@redhat.com>
Reported-by: Richard W.M. Jones <rjones@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
(cherry picked from commit 1bc1a7e320)
2018-07-06 14:31:35 +01:00
Daniel P. Berrangé
78920738ca qemu: don't use chardev FD passing for vhostuser backend
QEMU chardevs have a bug which makes the vhostuser backend complain
about lack of support for FD passing when validating the chardev.
While this is ultimately QEMU's responsibility to fix, libvirt needs to
avoid tickling the bug.

Simply disabling chardev FD passing just for vhostuser's chardev is
the most prudent approach, avoiding need for a QEMU version number
check.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
(cherry picked from commit ed5aa85f37)
2018-07-06 14:31:29 +01:00
Daniel P. Berrangé
88924317f3 qemu: consolidate parameters of qemuBuildChrChardevStr into flags
There are two boolean parameters passed to qemuBuildChrChardevStr,
and soon there will be a third. It will be clearer to understand
from callers' POV if we use named flags instead.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
(cherry picked from commit 0140d4c59b)
2018-07-06 14:31:23 +01:00
Daniel P. Berrangé
941ca31e90 qemu: remove chardevStdioLogd param from vhostuser code path
The vhostuser network backend is only supported with the UNIX domain
socket chardev backend, so passing around chardevStdioLogd is not
required.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
(cherry picked from commit 4c76266bac)
2018-07-06 14:31:15 +01:00
Daniel P. Berrangé
3818514602 qemu: don't use chardev FD passing with standalone args
When using domxml-to-native, we must generate CLI args that can be used
in a standalone scenario. This means no FD passing can be used. To
achieve this we must clear the QEMU_CAPS_CHARDEV_FD_PASS capability bit.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
(cherry picked from commit 7ac08cc929)
2018-07-06 14:30:43 +01:00
Daniel Veillard
6a32f5b89d Release of libvirt-4.5.0
- docs/news.xml: updated for the release

Signed-off-by: Daniel Veillard <veillard@redhat.com>
2018-07-02 22:11:33 +02:00
Andrea Bolognani
04e10e8714 news: Update for 4.5.0 release
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
2018-07-02 17:42:30 +02:00
Jiri Denemark
5f99821911 qemu_migration: Check for active domain after talking to remote daemon
Once we called qemuDomainObjEnterRemote to talk to the destination
daemon during a peer to peer migration, the vm lock is released and we
only hold an async job. If the source domain dies at this point the
monitor EOF callback is allowed to do its job and (among other things)
clear all private data irrelevant for stopped domain. Thus when we call
qemuDomainObjExitRemote, the domain may already be gone and we should
avoid touching runtime private data (such as current job info).

In other words after acquiring the lock in qemuDomainObjExitRemote, we
need to check the domain is still alive. Unless we're doing offline
migration.

https://bugzilla.redhat.com/show_bug.cgi?id=1589730

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
2018-07-02 11:53:21 +02:00
Jiri Denemark
e05ed21623 qemu_migration: Rename 'offline' variable in SrcPerformPeer2Peer
The variable is used to store the offline migration capability of the
destination daemon. Let's call it 'dstOffline' so that we can later use
'offline' to indicate whether we were asked to do offline migration.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
2018-07-02 11:52:30 +02:00
Michal Privoznik
cb7a4ac4fb qemu: Allow cachetune only for KVM domains
https://bugzilla.redhat.com/show_bug.cgi?id=1541921

In TCG mode, there are no vCPU threads and thus there's nothing
to be placed into resctrl group. Forbid such configuration.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-28 17:06:52 +02:00
Jiri Denemark
57d90e3e05 qemu: Report error on unexpected job stats type
If we ever fail to properly set jobinfo->statsType,
qemuDomainJobInfoToParams would return -1 without setting an error.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
2018-06-28 15:27:59 +02:00
Stefan Berger
43b0b4f834 security: Add swtpm paths to the domain's AppArmor profile
This patch extends the AppArmor domain profile with file paths
the swtpm accesses for state, log, pid, and socket files.

Both, QEMU and swtpm, use this AppArmor profile.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Cc: Christian Ehrhardt <christian.ehrhardt@canonical.com>
2018-06-28 06:50:43 -04:00
Julio Faracco
f8c65481d5 nwfilter: variable 'obj' must be initialized inside nwfilterBindingCreateXML().
The function nwfilterBindingCreateXML() is failing to compile due to a
conditional branch which leads to an undefined 'obj' variable. So 'obj'
must have an initial value to avoid compilation errors. See the problem:

  CC       nwfilter/libvirt_driver_nwfilter_impl_la-nwfilter_driver.lo
nwfilter/nwfilter_driver.c:752:9: error: variable 'obj' is used uninitialized whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized]
    if (virNWFilterBindingCreateXMLEnsureACL(conn, def) < 0)
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
nwfilter/nwfilter_driver.c:779:10: note: uninitialized use occurs here
    if (!obj)
         ^~~
nwfilter/nwfilter_driver.c:752:5: note: remove the 'if' if its condition is always false
    if (virNWFilterBindingCreateXMLEnsureACL(conn, def) < 0)
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
nwfilter/nwfilter_driver.c:742:33: note: initialize the variable 'obj' to silence this warning
    virNWFilterBindingObjPtr obj;
                                ^
                                 = NULL

This commit initialized 'obj' with NULL to fix the error properly.

Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
2018-06-28 09:44:28 +02:00
Michal Privoznik
4ad54a417a conf: Forbid device alias change on device-update
https://bugzilla.redhat.com/show_bug.cgi?id=1585108

When updating a live device users might pass different alias than
the one the device has. Currently, this is silently ignored which
goes against our behaviour for other parts of the device where we
explicitly allow only certain changes and error out loudly on
anything else.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-27 16:43:09 +02:00
Michal Privoznik
5e9b150fe0 conf: Reintroduce action to virDomainDefCompatibleDevice
This was lost in c57f3fd2f8. But now we are going to
need it again (except the DETACH action where checking for device
compatibility does not make much sense anyway).

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-27 16:42:27 +02:00
Michal Privoznik
84de7fbfdb qemuDomainUpdateDeviceFlags: Parse device as live if needed
When updating device it's worth parsing live info too as users
might want to update it as well.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-27 15:57:49 +02:00
Pavel Hrdina
36e92adc7e spec: list new nwfilter schema files
Commit <41d619e99c2015eab2d56bea874e23ba9f52f829> introduced new RNG
schema files for nwfilter but forgot to update spec file.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
2018-06-27 10:42:52 +02:00
Cole Robinson
a7d6c48dad syms: Fix placement of virDomainGetBlkioParametersAssignFromDef
It's in the domain_addr.h section, but should be in the
domain_conf.h section

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2018-06-26 15:54:41 -04:00
Bjoern Walk
8a1acc7ebc qemu: hotplug: fix mdev attach for vfio-ccw
Mediated devices of model 'vfio-ccw' are using CCW addresses, so make
sure to call the correct address preparation code for the model.

Reviewed-by: Shalini Chellathurai Saroja <shalini@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Signed-off-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-26 14:57:32 -04:00
John Ferlan
5c73acec32 docs: Add news article for volume encryption modifications
Include both the domain and storage modifications in a "Removed
features" section as well as describing the improvement to allow
using a raw input volume to create the luks encrypted volume.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-26 14:02:43 -04:00
John Ferlan
39cef12a95 storage: Add support for using inputvol for encryption
Starting with QEMU 2.9, encryption convert processing requires
a multi-step process in order to generate an encrypted image from
some non encrypted raw image.

Processing requires to first create an encrypted image using the
sizing parameters from the input source and second to use the
--image-opts, -n, and --target-image-opts options along with inline
driver options to describe the input and output files, generating
two commands such as:

  $ qemu-img create -f luks \
      --object secret,id=demo.img_encrypt0,file=/path/to/secretFile \
      -o key-secret=demo.img_encrypt0 \
      demo.img 500K
  Formatting 'demo.img', fmt=luks size=512000 key-secret=demo.img_encrypt0
  $ qemu-img convert --image-opts -n --target-image-opts \
      --object secret,id=demo.img_encrypt0,file=/path/to/secretFile \
      driver=raw,file.filename=sparse.img \
      driver=luks,file.filename=demo.img,key-secret=demo.img_encrypt0
  $

This patch handles the convert processing by running the processing
in a do..while loop essentially reusing the existing create logic and
arguments to create the target vol from the inputvol and then converting
the inputvol using new arguments.

This then allows the following virsh command to work properly:

  virsh vol-create-from default encrypt1-luks.xml data.img --inputpool default

where encrypt1-luks.xml would provided the path and secret for
the new image, while data.img would be the source image.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-26 14:02:43 -04:00
John Ferlan
40f0e0348d storage: Remove storageBackendGenerateSecretData
Since we no longer support creating qcow2 encryption format
volumes, we no longer have to possibly create some secret and
have no real need for the function, so move the remaining
functionality to build the secret path back into the caller
storageBackendCreateQemuImg.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-26 14:02:43 -04:00
John Ferlan
9b753116f0 storage: Clean up storageBackendCreateQemuImgOpts
Since we only generate the @encinfo when there's a secret object
and thus we need to reference it in the options,

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-26 14:02:43 -04:00
John Ferlan
9fe597dd09 storage: Clean up storageBackendCreateQemuImgCheckEncryption
Remove the checks for qcow encryption since both callers (create
and resize) would have already disallowed usage.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-26 14:02:43 -04:00
John Ferlan
8f83af6823 storage: Disallow create/resize of qcow2 encrypted images
https://bugzilla.redhat.com/show_bug.cgi?id=1526382

Since commit c4eedd793 disallowed qcow2 encrypted images to be
used for domains, it no longer makes sense to allow a qcow2
encrypted volume to be created or resized.

Add a test that will exhibit the failure of creation as well
as the xml2xml validation of the format still being correct.

Update the documentation to note the removal of the capability
to create and use qcow/default encrypted volumes.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-26 14:02:43 -04:00
John Ferlan
a02d879858 tests: Remove qcow2 encryption from storagevol tests
We're about to disallow creation of a qcow2 encrypted storage
volume, so let's remove the qcow encryption element from the
tests which are testing whether other format='qcow2' related
features work properly.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-26 14:02:43 -04:00
John Ferlan
af0e6580cd storage: Rename encryption info variable for clarity
Change from @enc to @encinfo leaving @enc for the vol->target.encryption
in the storageBackendCreateQemuImgSetOptions code path.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-26 14:02:43 -04:00
John Ferlan
23e9aa7297 tests: Add luks creation examples to storagevolxml2argvtest
Add the storagevolxml2xmltest "luks" and "luks-cipher" tests
to the storagevolxml2argvtest.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-26 14:02:43 -04:00
John Ferlan
b056e09b28 storage: Don't allow encryption secretPath to be NULL
Allowing a NULL @secretPath for virStorageBackendCreateQemuImgCmdFromVol
would result in a generated command line with a dangling "file=" output.
So let's make sure the @secretPath exists before processing.

This means we should pass a dummy path from the storage test.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-26 14:02:43 -04:00
Cole Robinson
5b603a7870 domain_addr: Fix weird comment format
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2018-06-26 13:59:50 -04:00
Daniel P. Berrangé
f14c37ce4c nwfilter: convert virt drivers to use public API for nwfilter bindings
Remove the callbacks that the nwfilter driver registers with the domain
object config layer. Instead make the current helper methods call into
the public API for creating/deleting nwfilter bindings.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 18:17:23 +01:00
Daniel P. Berrangé
2d9318b6ce nwfilter: wire up new APIs for creating and deleting nwfilter bindings
This allows the virsh commands nwfilter-binding-create and
nwfilter-binding-delete to be used.

Note using these commands lets you delete filters that were
previously created automatically by the virt drivers, or add
filters for VM nics that were not there before. Generally it
is expected these new APIs will only be used by virt drivers.
It is the admin's responsibility to not shoot themselves in
the foot.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 18:17:21 +01:00
Daniel P. Berrangé
f61ea979a4 nwfilter: wire up new APIs for listing and querying filter bindings
Wire up the ListAll, LookupByPortDev and GetXMLDesc APIs to allow the
virsh nwfilter-binding-list & nwfilter-binding-dumpxml commands to
work.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 18:17:21 +01:00
Daniel P. Berrangé
3df907bfff nwfilter: remove virt driver callback layer for rebuilding filters
Now that the nwfilter driver keeps a list of bindings that it has
created, there is no need for the complex virt driver callbacks. It is
possible to simply iterate of the list of recorded filter bindings.

This means that rebuilding filters no longer has to acquire any locks on
the virDomainObj objects, as they're never touched.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 18:17:20 +01:00
Daniel P. Berrangé
57f5621f46 nwfilter: keep track of active filter bindings
Currently the nwfilter driver does not keep any record of what filter
bindings it has active. This means that when it needs to recreate
filters, it has to rely on triggering callbacks provided by the virt
drivers. This introduces a hash table recording the virNWFilterBinding
objects so the driver has a record of all active filters.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 18:17:13 +01:00
Daniel P. Berrangé
ec7c01832c virsh: add manpage docs for nwfilter-binding commands.
Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 18:16:50 +01:00
Anya Harter
c3427c4a85 qemu: Escape commas for qemuBuildSCSIiSCSIHostdevDrvStr
Add comma escaping for netsource. This is done here because
qemuBuildNetworkDriveStr has other external callers which
may not expect an escaped comma; however, this particular
command building path needs to perform the escaping for the
hostdev command line, so we do it now to ensure src->path
and src->host->name are covered.

Signed-off-by: Anya Harter <aharter@redhat.com>
2018-06-26 11:04:38 -04:00
Anya Harter
6b770f9a3b qemu: use virBuffer in qemuBuildSCSIiSCSIHostdevDrvStr
Instead of source to enable use of virBuffer functions in
string construction.

Signed-off-by: Anya Harter <aharter@redhat.com>
2018-06-26 11:04:38 -04:00
Michal Privoznik
2d5b332312 qemuDomainObjBeginJobInternal: Report agent job in error message
If a thread is unable to acquire a job (e.g. because of timeout)
an error is reported and the error message contains reference to
the other thread holding the job. Well, the error message should
report agent job too as it is yet another source of possible
failure.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-26 15:10:17 +02:00
Chen Hanxiao
9e6b432d01 set-lifecycle-action: add description of type and action
In [1], <type> are described as "on_poweroff", "on_reboot",
"on_crash". but we accept "poweroff", "reboot" and "crash".
This patch adds documentation for them.

[1]: https://libvirt.org/formatdomain.html#elementsEvents

Signed-off-by: Chen Hanxiao <chenhanxiao@gmail.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-26 14:10:17 +02:00
Daniel P. Berrangé
c21679fa3f conf: introduce a virNWFilterBindingObjListPtr struct
Introduce a new struct to act as the manager of a collection of
virNWFilterBindingObjPtr objects.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 11:22:07 +01:00
Daniel P. Berrangé
191b4396d3 conf: introduce a virNWFilterBindingObjPtr struct
Introduce a new struct to act as the stateful owner of the
virNWFilterBindingDefPtr objects.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 11:22:07 +01:00
Daniel P. Berrangé
c0fa7713b8 conf: report an error if nic needs filtering by no driver is present
If a <interface> includes a filter name but the nwfilter driver is not
present we silently do nothing. This is very bad, because an application
that thinks it is protected by malicious guest traffic will in fact be
vulnerable. Reporting an error gives the administrator the ability to
know there is a problem and fix it.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 11:22:07 +01:00
Daniel P. Berrangé
fca9afa084 nwfilter: convert DHCP address snooping code to virNWFilterBindingDefPtr
Use the virNWFilterBindingDefPtr struct in the DHCP address snooping code
directly.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 11:22:07 +01:00
Daniel P. Berrangé
5b6c02e292 nwfilter: convert IP address learning code to virNWFilterBindingDefPtr
Use the virNWFilterBindingDefPTr struct in the IP address learning code
directly.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 11:22:07 +01:00
Daniel P. Berrangé
d1a7c08eb1 nwfilter: convert the gentech driver code to use virNWFilterBindingDefPtr
Use the virNWFilterBindingDefPtr struct in the gentech driver code
directly.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 11:22:07 +01:00
Daniel P. Berrangé
278659fff6 virsh: add nwfilter binding commands
$ virsh nwfilter-binding-list
 Port Dev                              Filter
------------------------------------------------------------------
 vnet0                 clean-traffic
 vnet1                 clean-traffic

$ virsh nwfilter-binding-dumpxml vnet1
<filterbinding>
  <owner>
    <name>f25arm7</name>
    <uuid>12ac8b8c-4f23-4248-ae42-fdcd50c400fd</uuid>
  </owner>
  <portdev name='vnet1'/>
  <mac address='52:54:00:9d:81:b1'/>
  <filterref filter='clean-traffic'>
    <parameter name='MAC' value='52:54:00:9d:81:b1'/>
  </filterref>
</filterbinding>

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 11:22:07 +01:00
Daniel P. Berrangé
ede0924eb4 remote: add support for nwfilter binding objects
Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 11:22:07 +01:00
Daniel P. Berrangé
099812f59d access: add nwfilter binding object permissions
Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 11:22:07 +01:00
Daniel P. Berrangé
b57a9aecaf nwfilter: export port binding concept in the public API
When the daemons are split there will need to be a way for the virt
drivers and/or network driver to create and delete bindings between
network ports and network filters. This defines a set of public APIs
that are suitable for managing this facility.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 11:22:07 +01:00
Daniel P. Berrangé
41d619e99c schemas: add schema for nwfilter binding XML document
Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 11:22:07 +01:00
Daniel P. Berrangé
17b1ebf4ec conf: add support for parsing/formatting virNWFilterBindingDefPtr
A typical XML representation of the virNWFilterBindingDefPtr struct
looks like this:

  <filterbinding>
    <owner>
      <name>f25arm7</name>
      <uuid>12ac8b8c-4f23-4248-ae42-fdcd50c400fd</uuid>
    </owner>
    <portdev name='vnet1'/>
    <mac address='52:54:00:9d:81:b1'/>
    <filterref filter='clean-traffic'>
      <parameter name='MAC' value='52:54:00:9d:81:b1'/>
    </filterref>
  </filterbinding>

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 11:22:07 +01:00
Daniel P. Berrangé
7c7880dd98 conf: move virNWFilterBindingDefPtr into its own files
There's no code sharing between virNWFilterDef and
virNWFilterBindingDefPtr types, so it is clearer if they live in
separate source files and headers.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 11:22:07 +01:00
Daniel P. Berrangé
ce376228e9 conf: add missing virxml.h include for nwfilter_params.h
The nwfilter_params.h header references the xmlNodePtr type, so must
include the virxml.h header to get the libxml2 types defined.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 11:22:07 +01:00
Daniel P. Berrangé
ce1144960c conf: change virNWFilterBindingPtr to virNWFilterBindingDefPtr
We are going to want to expose the NWFilter binding concept in the
public API, so the virNWFilterBindingPtr type needs to be used there.
Our internal type will shortly gain an XML representation, so rename
it to virNWFilterBindingDefPtr which follows our normal conventions.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-26 11:22:07 +01:00
Andrea Bolognani
aa51063927 spec: Move SASL configuration file from -libs to -daemon
SASL authentication is configured server-side, so the sample
configuration file should be shipped along with the daemon
rather than with the libraries.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
2018-06-26 10:57:54 +02:00
Andrea Bolognani
b8736ed87e news: Update for HPT maxpagesize feature
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
2018-06-26 10:15:58 +02:00
Andrea Bolognani
a12e7a3944 qemu: Format HPT maxpagesize on the command line
This makes the feature fully functional.

https://bugzilla.redhat.com/show_bug.cgi?id=1571078

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
2018-06-26 10:15:56 +02:00
Andrea Bolognani
0ee6f885e0 conf: Parse and format HPT maxpagesize
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
2018-06-26 10:15:52 +02:00
Andrea Bolognani
15f9db5303 conf: Tweak HPT feature parsing and formatting
This doesn't seem very useful at the moment, but it will make
sense once we introduce another HPT-related setting.

The output XML is decoupled from the input XML in preparation
of future changes as well; while doing so, we can shave a few
lines off the latter.

This commit is best viewed with 'git show -w'.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
2018-06-26 10:15:50 +02:00
Andrea Bolognani
c2fef631ba conf: Reintroduce virDomainDef::hpt_resizing
We're going to introduce a second HPT-related setting soon,
at which point using a single location to store everything is
no longer going to cut it.

This mostly, but not completely, reverts 3dd1eb3b26.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
2018-06-26 10:15:47 +02:00
Andrea Bolognani
90e6e0fae8 qemu: Add capability for the HPT maxpagesize feature
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
2018-06-26 10:15:44 +02:00
Andrea Bolognani
0a527017c4 tests: Add replies for QEMU 3.0.0 on ppc64
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
2018-06-26 10:15:36 +02:00
Julio Faracco
794b576c2b util: fix mount issue by moving NULL value to "none" in syscall.
After running libvirt daemon with valgrind tools, some errors are
appearing when you try to start a domain. One example:

==18012== Syscall param mount(type) points to unaddressable byte(s)
==18012==    at 0x6FEE3CA: mount (syscall-template.S:78)
==18012==    by 0x531344D: virFileMoveMount (virfile.c:3828)
==18012==    by 0x27FE7675: qemuDomainBuildNamespace (qemu_domain.c:11501)
==18012==    by 0x2800C44E: qemuProcessHook (qemu_process.c:2870)
==18012==    by 0x52F7E1D: virExec (vircommand.c:726)
==18012==    by 0x52F7E1D: virCommandRunAsync (vircommand.c:2477)
==18012==    by 0x52F4EDD: virCommandRun (vircommand.c:2309)
==18012==    by 0x2800A731: qemuProcessLaunch (qemu_process.c:6235)
==18012==    by 0x2800D6B4: qemuProcessStart (qemu_process.c:6569)
==18012==    by 0x28074876: qemuDomainObjStart (qemu_driver.c:7314)
==18012==    by 0x280522EB: qemuDomainCreateWithFlags (qemu_driver.c:7367)
==18012==    by 0x55484BF: virDomainCreate (libvirt-domain.c:6531)
==18012==    by 0x12CDBD: remoteDispatchDomainCreate (remote_daemon_dispatch_stubs.h:4350)
==18012==    by 0x12CDBD: remoteDispatchDomainCreateHelper (remote_daemon_dispatch_stubs.h:4326)
==18012==  Address 0x0 is not stack'd, malloc'd or (recently) free'd

Some documentation recommends to use "none" when you don't have a
filesystem type to use. Specially, for bind and move actions.

Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
2018-06-26 08:05:57 +02:00
Eric Blake
0ec6343a06 snapshots: Clarify comments on snapshot role
Give some more details on what a snapshot is good for, to make
it easier to distinguish from the role of upcoming additions for
incremental backups.

Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-25 20:22:28 -05:00
Han Han
f78b73e68e docs: schema: Add missing <interleave> to devices
For input,hub,redirdev devices, their sub-elements should be interleaved.

input device: interleave for <driver>, <alias>, <address>
hub device: interleave for <alias>, <address>
redirdev device: interleave for <source>, <alias>, <address>, <boot>

Signed-off-by: Han Han <hhan@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-25 20:03:34 +02:00
w00251574
a03f5cddfc qemu: Fix memory leak in qemuDomainBlockJobSetSpeed()
fix 'device' leak in qemuDomainBlockJobSetSpeed

Signed-off-by: Jie Wang <wangjie88.huawei.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-25 19:46:20 +02:00
w00251574
d63f1c6ad9 qemu: monitor: Fix memory leak in qemuMonitorJSONNBDServerStart()
Exiting early through the return path did result in 'port_str'
being leaked.

Signed-off-by: Jie Wang <wangjie88.huawei.com>
2018-06-25 19:41:40 +02:00
Daniel P. Berrangé
b0c6300fc4 qemu: ensure FDs passed to QEMU for chardevs have correct SELinux labels
The UNIX socket FDs were we passing to QEMU inherited a label based on
libvirtd's context. QEMU is thus denied ability to access the UNIX
socket. We need to use the security manager to change our current
context temporarily when creating the UNIX socket FD.

Reviewed-by: Laine Stump <laine@laine.org>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-25 17:28:38 +01:00
Kashyap Chamarthy
a2913aed53 docs: formatdomain: Mention that 'urandom' is the recommended RNG backend
Since libvirt 1.3.4, any RNG source is accepted for the 'random'
backend.  However, '/dev/urandom' is the _recommended_ source of
entropy. Therefore we should mention that in the docs.

Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Kashyap Chamarthy <kchamart@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-25 12:20:39 +02:00
Michal Privoznik
a0d6894af1 qemuDomainObjBeginJobInternal: Log agent job too
If a thread is unable to start a job (e.g. because of timeout)
a warning is printed into the logs. So far, the message does not
contain agent job info. Add it as it might help future debugging.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2018-06-25 07:28:53 +02:00
Michal Privoznik
be108d934e news: Document recent agent job change
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-25 07:20:12 +02:00
Michal Privoznik
95cd4904e1 virDomainSnapshotDefParse: Prefer VIR_STEAL_PTR
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-25 07:19:53 +02:00
Weilun Zhu
f92d164c13 qemu: fix msg could be a wild pointer in qemuMonitorIOProcess()
As qemuMonitorJSONIOProcess will call qemuMonitorJSONIOProcessEvent
which unlocks the monitor mutex, there is some extreme situation,
eg qemu send message to monitor twice in a short time, where the
local viriable 'msg' of qemuMonitorIOProcess could be a wild point:

1. qemuMonitorSend() assign mon->msg to parameter 'msg', which is alse a
local variable of its caller qemuMonitorJSONCommandWithFd(), cause
eventloop to send message to monitor, then wait condition.
2. qemu send message to monitor for the first time immediately.
3. qemuMonitorIOProcess() is called, then wake up the qemuMonitorSend()
thread, but the qemuMonitorSend() thread stuck for a while as cpu pressure
or some other reasons, which means the qemu monitor is still unlocked.
4. qemu send event message to monitor for the second time,
such as RTC_CHANGE event
5. qemuMonitorIOProcess() is called again, the local viriable 'msg' is
assigned to mon->msg.
6. qemuMonitorIOProcess() call qemuMonitorJSONIOProcess() to deal with
the qemu event.
7. qemuMonitorJSONIOProcess() unlock the qemu monitor in the macro
'QEMU_MONITOR_CALLBACK', then qemuMonitorSend() thread get the mutex
and free the mon->msg, assign mon->msg to NULL.

Signed-off-by: Weilun Zhu <zhuweilun@huawei.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2018-06-22 10:40:59 +02:00
Pino Toscano
c92b6023e8 vmx: allow an odd number of vCPUs
Most probably this was a limitation in older ESX versions, and it seems
it does not exist anymore in more recent versions; see the following
thread:
https://www.redhat.com/archives/libvir-list/2018-May/msg02159.html
https://www.redhat.com/archives/libvir-list/2018-June/msg00043.html

Hence, allow an odd number (greater than 1) of vCPUs, since most
probably older versions of ESXi will error out anyway.

https://bugzilla.redhat.com/show_bug.cgi?id=1584091

Signed-off-by: Pino Toscano <ptoscano@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2018-06-22 10:37:24 +02:00
Anya Harter
1136fd4ebe qemu: Escape commas for qemuBuildDiskThrottling
Add comma escaping for disk->blkdeviotune.group_name.

Signed-off-by: Anya Harter <aharter@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-21 17:49:15 -04:00
Chen Hanxiao
fd51ab5f11 news: add cmdDomblkinfo --all option
Update news for cmdDomblkinfo --all option.

Signed-off-by: Chen Hanxiao <chenhanxiao@gmail.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-21 17:39:25 -04:00
Chen Hanxiao
62c3919328 cmdDomblkinfo: add --all to show all block devices info
This patch introduces --all to show all block devices info
of guests like:

virsh # domblkinfo w08 --all
Target     Capacity        Allocation      Physical
---------------------------------------------------
hda        42949672960     9878110208      9878110208
vda        10737418240     10736439296     10737418240

Target     Capacity        Allocation      Physical
---------------------------------------------------
hda        40.000 GiB      9.200 GiB       9.200 GiB
vda        10.000 GiB      9.999 GiB       10.000 GiB

For inactive domains using networked storage, a "-" will
be printed instead of the value since it's not possible
to determine the value without the storage connection.

Signed-off-by: Chen Hanxiao <chenhanxiao@gmail.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-21 17:39:22 -04:00
Chen Hanxiao
4afcaa8843 cmdDomblkinfo: introduce helper cmdDomblkinfoPrint
Introduce helper cmdDomblkinfoPrint for printing.

Signed-off-by: Chen Hanxiao <chenhanxiao@gmail.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-21 17:39:19 -04:00
Laine Stump
17b4734288 schema: allow a <rule> element with no subelements in a nwfilter
This is a regression in behavior caused by commit 37359814. It was
intended to limit the schema to allow only a single subelement of
<rule>, but it is also acceptable for <rule> to have no subelement at
all.

To prevent the same error from reoccurring in the future, the
examples/xml/nwfilter directory was added to the list of nwfilter
schema test directories.

Resolves: https://bugzilla.redhat.com/1593549

Signed-off-by: Laine Stump <laine@laine.org>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-21 04:04:49 -04:00
Laine Stump
205462b60b hyperv: erase "generated files" sentinel during make maintainer-clean
Re-generating of generated source files in the hyperv directory
depends on src/.hyperv_wmi_generator.stamp not existing, or having a
timestamp older than src/hyperv/hyperv_wmi_generator.py. "make
maintainer-clean" erases the generated files, but not this sentinel
file, so the erased files aren't regenerated during the next
make. Once we add it to the list of MAINTAINERCLEANFILES, it gets
deleted at the same time as the generated files, so make is able to
understand they need regeneration.

Signed-off-by: Laine Stump <laine@laine.org>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-21 04:04:13 -04:00
Laine Stump
34dc7f4b83 hyperv: fix typo in Makefile.am.inc
The problem has been around for quite awhile - the misspelling was
faithfully copied from src/Makefile.am to src/hyperv/Makefile.am.inc
in commit 253b528c.

Signed-off-by: Laine Stump <laine@laine.org>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-21 04:03:14 -04:00
John Ferlan
0c4408c832 qemu: Don't use asyncJob after stop during snapshot revert
https://bugzilla.redhat.com/show_bug.cgi?id=1591628

Attempting to use the FORCE flag for snapshot-revert was resulting
in failures because qemuProcessStart and qemuProcessStartCPUs were
using QEMU_ASYNC_JOB_START after a qemuProcessStop resulting in an
error when entering the monitor:

error: internal error: unexpected async job 6 type expected 0

So create a local @jobType, initialize to QEMU_ASYNC_JOB_START, and
change to QEMU_ASYNC_JOB_NONE if we end up in the --force path
where the qemuProcessStop is run before a Start and StartCPUs.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-20 18:43:09 -04:00
John Ferlan
e5d7064be0 qemu: Unset the genid start change flag for revert force
If the the snapshot revert involves a forced revert option, then
let's not cause startup to change the genid flag in order to signify
that we're still running the same/previous guest and not some
snapshot reversion.

Related to:
https://bugzilla.redhat.com/show_bug.cgi?id=1149445

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-20 18:42:49 -04:00
John Ferlan
3d94e45820 qemu: Use start_flags for RUNNING and PAUSED transitions
Use and set the @start_flags at the top of the RUNNING and PAUSED
transitions to GEN_VMID | PAUSED.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-20 18:42:44 -04:00
John Ferlan
7a32752ead qemu: Promote start_flags in qemuDomainRevertToSnapshot
Promote the @start_flags to the top of the function, a
subsequent patch needs to use it.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-20 18:42:40 -04:00
John Ferlan
eb3f6e5634 qemu: Adjust async job failure message
Make it clearer what asyncJob type was passed and what was expected.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-20 18:42:23 -04:00
Cole Robinson
279d6d1c70 qemu_command: vhost: cleanup error reporting
- Switch to cleanup: label and share free calls
- Don't overwrite qemuBuildNicDevStr error

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2018-06-20 14:26:37 -04:00
Cole Robinson
14781dcde6 qemu_command: replace vlan= with netdev= for legacy nic
VMs with hardcoded platform network devices are forced to use old
style '-net nic' command line config. Current we use qemu's vlan
option to hook this with the '-netdev' host side of things.

However since qemu 1.2 there is '-net nic,netdev=X' option for
explicitly referencing a netdev ID, which is more inline with
typical VM commandlines, so let's switch to that

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2018-06-20 14:26:21 -04:00
Cole Robinson
131ca8f4ff qemu_command: remove unused LegacyNicStr arg 'prefix'
Hardcode the only string that's passed in

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2018-06-20 14:26:29 -04:00
Cole Robinson
faf8a16d8e qemu_command: Rename BuildNicStr to BuildLegacyNicStr
Makes it less ambiguous

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2018-06-20 14:26:26 -04:00
Cole Robinson
3b1360f804 qemu_command: Make qemuBuildNicStr static
It doesn't have any external callers

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2018-06-20 14:26:21 -04:00
Cole Robinson
9bda139537 conf: Remove unused virDomainDefNewFull
The last usages were removed with the xend driver in 1dac5fbbbb

Reviewed-by: Erik Skultety <eskultet@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2018-06-20 14:00:13 -04:00
Michal Privoznik
2260f18cd7 qemu: Switch code to use new agent job APIs
There are two sets of functions here:
1) some functions talk on both monitor and agent monitor,
2) some functions only talk on agent monitor.

For functions from set 1) we need to use
qemuDomainObjBeginJobWithAgent() and for functions from set 2) we
need to use qemuDomainObjBeginAgentJob() only.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2018-06-20 13:24:17 +02:00
Michal Privoznik
cb2bc7a492 qemuDomainSnapshotCreateActiveExternal: Grab agent job
Now that we have agent job we can grab it while freezing/thawing
guest file system before/after doing snapshot.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2018-06-20 13:24:17 +02:00
Michal Privoznik
bd59e0d7c2 qemu: Introduce APIs for manipulating qemuDomainAgentJob
The point is to break QEMU_JOB_* into smaller pieces which
enables us to achieve higher throughput. For instance, if there
are two threads, one is trying to query something on qemu
monitor while the other is trying to query something on agent
monitor these two threads would serialize. There is not much
reason for that.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2018-06-20 13:24:17 +02:00
Michal Privoznik
4621350f6d qemu: Introduce qemuDomainAgentJob
Introduce guest agent specific job categories to allow threads to
run agent monitor specific jobs while normal monitor jobs can
also be running.

Alter _qemuDomainJobObj in order to duplicate certain fields that
will be used for guest agent specific tasks to increase
concurrency and throughput and reduce serialization.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2018-06-20 13:24:17 +02:00
Luyao Huang
df6f857fbf docs: Remove an extra space in the SEV xml element example
Signed-off-by: Luyao Huang <lhuang@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-20 13:18:25 +02:00
Luyao Huang
4446ce74fe qemu: process: Minor language improvement in one of the SEV debug msgs
Be more consistent and use 'preparing' instead of 'prepare' here.

Signed-off-by: Luyao Huang <lhuang@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-20 13:17:19 +02:00
Luyao Huang
e039a83064 qemu: process: Fix the return value in qemuProcessSEVCreateFile
When commit 6718132d enforced usage of the cleanup label, it forgot to
set the @ret variable to 0 on "success" exit path.

Signed-off-by: Luyao Huang <lhuang@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-20 13:14:26 +02:00
Erik Skultety
6d490ed0d8 qemu: sev: Don't jump to endjob if SEV measurement retrieval fails
If measurement retrieval fails we'd forget to call ExitMonitor to unlock
the monitor.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Reported-by: Luyao Huang <lhuang@redhat.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com>
2018-06-20 08:07:24 +02:00
Erik Skultety
54c54b56f4 qemu: sev: Use EnterMonitor instead of EnterMonitorAsync
Since it's being called with QEMU_ASYNC_JOB_NONE which is what
qemuDomainObjEnterMonitor is going to use with the internal helper,
let's use that one instead.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com>
2018-06-20 08:07:21 +02:00
Andrea Bolognani
b1acfaaf89 tests: Fix qemucapsfixreplies
Since e6be524508 we include the executed command along
with the reply in *.replies files, which breaks the
renumbering logic implemented in qemucapsfixreplies.

Adapt the script so that it works with the new format.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
2018-06-19 14:01:14 +02:00
Michal Privoznik
9486ed9071 virsh: Introduce --nowait to domstats
This new switch can be used to set
VIR_CONNECT_GET_ALL_DOMAINS_STATS_NOWAIT flag for stats
fetching API.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-19 07:08:13 +02:00
Michal Privoznik
0afbeb3740 Introduce VIR_CONNECT_GET_ALL_DOMAINS_STATS_NOWAIT
https://bugzilla.redhat.com/show_bug.cgi?id=1552092

If there's a long running job it might cause us to wait 30
seconds before we give up acquiring the job. This is problematic
to interactive applications that fetch stats repeatedly every few
seconds.

The solution is to introduce
VIR_CONNECT_GET_ALL_DOMAINS_STATS_NOWAIT flag which tries to
acquire job but does not wait if acquiring failed.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-19 07:08:13 +02:00
Michal Privoznik
f38ea75b99 qemu_domain: Introduce qemuDomainObjBeginJobNowait
The aim of this API is to allow the caller to do best effort.
Some functions can work even when acquiring the job fails (e.g.
qemuConnectGetAllDomainStats()). But what they can't bear is
delay if they have to wait up to 30 seconds for each domain that
is processing some other job.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-19 07:08:12 +02:00
Michal Privoznik
af0715bb61 qemuDomainObjBeginJobInternal: Remove spurious @ret assignment
The variable is initialized to -1 already. There's no way it can
be overwritten by the time control gets to the line I'm removing.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-19 07:08:12 +02:00
Michal Privoznik
dd92df93f4 qemu_domain: Document qemuDomainObjBeginJob
Provide a small comment on the function and its parameters.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-19 07:08:12 +02:00
Anya Harter
23f55840f5 qemu: Escape commas for qemuBuildGrapicsSPICECommandLine
Add comma escaping for cfg->spiceTLSx509certdir and
graphics->data.spice.rendernode.

Signed-off-by: Anya Harter <aharter@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-18 19:39:13 -04:00
Anya Harter
0234a2754b qemu: Escape commas for qemuBuildSmartcardCommandLine
Add comma escaping for smartcard->data.cert.file[i] and
smartcard->data.cert.database.

Signed-off-by: Anya Harter <aharter@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-18 19:39:08 -04:00
Anya Harter
97975bef32 qemu: Escape commas for qemuBuildChrChardevFileStr
Add comma escaping for fileval.

Signed-off-by: Anya Harter <aharter@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-18 19:39:02 -04:00
Anya Harter
452dac71cd qemu: Escape commas for qemuBuildChrChardevStr
Add comma escaping for dev->data.file.path in cases
VIR_DOMAIN_CHR_TYPE_DEV and VIR_DOMAIN_CHR_TYPE_PIPE.

Signed-off-by: Anya Harter <aharter@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-18 19:38:54 -04:00
Anya Harter
22b7247d48 tests: add test file for smartcard database
Add test case explicitly defining a smartcard host certificates
database via the following xml:

    <smartcard mode='host-certificates'>
      <database>/tmp/foo</database>
    </smartcard>

This case is not currently covered in the test suite.

Signed-off-by: Anya Harter <aharter@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-18 19:27:49 -04:00
John Ferlan
d43cedcb8e qemu: Fix qemuMonitorCreateObjectProps
Fix the return value status comparison checking for call to
virJSONValueObjectCreateVArgs introduced by commit id f0a23c0c3.

If a NULL arglist is passed, then a 0 is returned which is a
valid status and we only should fail when the return is < 0.

This resolves an issue seen for "virsh iothreadadd $dom $iothread"
where a "error: An error occurred, but the cause is unknown" error
was generated when trying to hotplug an IOThread to a domain since
qemuDomainHotplugAddIOThread passes a NULL arglist.

Signed-off-by: John Ferlan <jferlan@redhat.com>
2018-06-18 17:08:38 -04:00
John Ferlan
12f2545761 events: Remove ATTRIBUTE_NONNULL for virObjectEventStateQueue[Remote]
Commit aad3a0b5f altered virObjectEventStateQueueRemote to move
the "if (!event) return" call added in the previous commit 031eb8f6
to virObjectEventStateQueue. Neither commit altered the function
prototype which used ATTRIBUTE_NONNULL(2).

This caused Coverity build problems. Since @event is now checked,
just remove the ATTRIBUTE_NONNULL check from both prototypes.

Signed-off-by: John Ferlan <jferlan@redhat.com>
2018-06-18 17:03:51 -04:00
Michal Privoznik
edcd3ed4a4 qemuDomainDetachDeviceConfig: Don't free device from @dev
https://bugzilla.redhat.com/show_bug.cgi?id=1591561

For reasons I don't understand my original patch of 75f0fd5112
freed not only the chardev from domain but also the one from
passed virDomainDeviceDefPtr. This caused no troubles until now,
because those two pointers were separate, but after I've
introduced virDomainDetachDeviceAlias() they became the same
resulting in double free on detach.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-18 09:20:38 +02:00
Andrea Bolognani
2b43314d8c travis: Add MinGW builds
We build on Fedora Rawhide, same as on the CentOS CI
environment.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-15 17:45:27 +02:00
Andrea Bolognani
a76555d4c7 travis: Add CentOS 7 build
Now that we use pre-built Docker images, it's very easy
to extend our test matrix; adding CentOS 7 is a good start.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-15 17:45:25 +02:00
Andrea Bolognani
4016b46702 travis: Use pre-built Docker images
Instead of starting from the minimal Ubuntu 18.04 base
image and installing all requirements at build time,
use a Docker image that has been specifically tailored
at building libvirt and thus already includes all
required packages.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-15 17:45:23 +02:00
Andrea Bolognani
53783395bf travis: Drop Ubuntu 16.04 build
This will make further changes easier; all coverage
lost due to this will be reintroduced later on.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-15 17:43:55 +02:00
Erik Skultety
6688393c6b conf: Fix formatting of <sev> element in domain capabilities XML
We only formatted the <sev> element when QEMU supported the feature when
in fact we should always format the element to make clear that libvirt
knows about the feature and the fact whether it is or isn't supported
depends on QEMU version, in other words if QEMU doesn't support the
feature we're going to format the following into the domain capabilities
XML:

<sev supported='no'/>

This patch also adjusts the RNG schema accordingly in order to reflect
the proposed change.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-15 10:49:13 +02:00
Andrea Bolognani
dd72601d42 travis: Skip first compilation for Linux builds
We already perform a full build as part of distcheck, so
we can speed things up a bit by skipping the first
compilation.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-15 08:09:41 +02:00
Andrea Bolognani
a053cd5be2 travis: Fix error path
Without a proper separator, all commands in the error path
end up being interpreted as a single command, which is not
what we want.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-15 08:09:41 +02:00
Andrea Bolognani
aa3df9518d travis: Rename DOCKER_CMD to LINUX_CMD
The new name is arguably more informative, especially now
that we have MACOS_CMD and knowing that MINGW_CMD will
be introduced later on.

We still use DOCKER_CMD when calling Docker, and we assign
the actual script on a per-image basis. Having this
separation will help us when we introduce MinGW builds.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-15 08:09:41 +02:00
Andrea Bolognani
90206eac15 travis: Introduce MACOS_CMD
It mirrors the existing DOCKER_CMD, both in how it's defined
as part of the environment and how it's called by passing it
directly to the shell.

In addition to making the configuration more consistent, this
also allows us to move from having the macOS build script
divided into four steps, some of which have slightly different
semantics and the relationship between which is not immediately
obvious without consulting the documentation, to a single
straightforward shell invocation.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-15 08:09:41 +02:00
Andrea Bolognani
db8801f6ea travis: Don't duplicate Docker invocation
All variable parts are taken from the environment, so we
can exploit inheritance and avoid duplication. This will
become more important as we start building on additional
platforms.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-15 08:09:41 +02:00
Andrea Bolognani
38aa5a7a7f travis: Skip macOS upgrade
Upgrading takes quite a bit of time, doesn't offer any
real value and causes a lot of grief. Let's just skip it.

We need to install xz explicitly now, since it's required
to make dist and no longer being dragged in by Python 3.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-15 08:09:41 +02:00
Fabiano Fidêncio
b6445dccc9 xen_common: Split per-Vif logic from xenParseVif()
xenParseVif() does a lot of stuff and, in order to make things cleaner,
let's split it in two new functions:
- xenParseVif(): it's a new function that keeps the old name. It's
responsible for the whole per-Vif logic from the old xenParseVif();
- xenParseVifList(): it's basically the old xenParsePCI(), but now it
just iterates over the list of Vifs, calling xenParsePCI() per each Vif.

This patch is basically preparing the ground for the future when
typesafe virConf acessors will be used.

Signed-off-by: Fabiano Fidêncio <fabiano@fidencio.org>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-06-14 17:51:55 +02:00
Erik Skultety
43c9c9e429 news: Add the qemu VM reconnect segfault fix into bugfixes section
Signed-off-by: Erik Skultety <eskultet@redhat.com>
2018-06-14 17:40:55 +02:00
Michal Privoznik
a02526a045 qemuxml2argvtest: Don't leak TPM unix path
When testing a domain XML with TPM we overwrite UNIX socket path
to mimic what qemuTPMEmulatorPrepareHost() is doing (because
*PrepareHost() functions are not called from the test). But we
are not doing it fully - we need to set the chardev's type too so
that virDomainTPMDefFree() can free the path.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2018-06-14 14:25:42 +02:00
Ján Tomko
a349c6c21c qemu: ignore query-sev-capabilities errors
The query-sev-capabilities command fails if SEV is not compiled in,
even though both the command and -object sev-guest are present
in that case :/

Ignore the errors to avoid spamming the logs:
internal error: unable to execute QEMU command 'query-sev-capabilities': SEV feature is not available

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2018-06-14 10:51:29 +02:00
Pavel Hrdina
5e828d03bf virtportallocator: Change number of ports to 65536
USHRT_MAX is not good enough because the value is 65535 which specifies
the number of bits in bitmap.  The allowed port range is 0-65535 so we
need to increase the number.

We could have USHRT_MAX + 1 but let's define the number explicitly.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1590214

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
2018-06-14 09:52:21 +02:00
Ján Tomko
6bbb35eed8 rename more Sev functions to SEV
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Brijesh Singh <brijesh.singh@amd.com>
Tested-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-14 09:05:05 +02:00
Ján Tomko
6b90f4bb62 Rename virDomainSevDefPtr to virDomainSEVDefPtr
Some identifiers use Sev, some SEV. Prefer the latter.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Brijesh Singh <brijesh.singh@amd.com>
Tested-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-14 09:05:00 +02:00
Ján Tomko
6718132d78 qemuProcessSEVCreateFile: use a cleanup label
A common cleanup path for both the success and the error case.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Brijesh Singh <brijesh.singh@amd.com>
Tested-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-14 09:04:51 +02:00
Ján Tomko
2555749fd6 rename qemuBuildSevCreateFile to qemuProcessSEVCreateFile
Make the function prefix match the file it's in.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Brijesh Singh <brijesh.singh@amd.com>
Tested-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-14 09:04:43 +02:00
Ján Tomko
2382a23614 qemuDomainGetSEVMeasurement: fix possible leak
Free tmp even on failure.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Brijesh Singh <brijesh.singh@amd.com>
Tested-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-14 09:04:18 +02:00
Ján Tomko
dfc5696492 remove virQEMUCapsSetSEVCapabilities
It is only used in one place.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Brijesh Singh <brijesh.singh@amd.com>
Tested-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-14 09:03:11 +02:00
Michal Privoznik
4817687a7d conf: Rework virDomainSEVDefParseXML()
Firstly, this function changes node for relative XPaths but
doesn't restore the original one in case VIR_ALLOC(def) fails.
Secondly, @type is leaked. Thirdly, dh-cert and session
attributes are strdup()-ed needlessly, virXPathString already
does that so we can use the retval immediately.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-13 15:53:57 +02:00
Michal Privoznik
84e4046cd7 qemuBuildSevCommandLine: fix buffer leak
The buffer is not freed anywhere. Nor in the error paths. Also
the usage virCommand with respect to buffer is very odd.

==2504== 1,100 bytes in 1 blocks are definitely lost in loss record 167 of 175
==2504==    at 0x4C2CE3F: malloc (vg_replace_malloc.c:298)
==2504==    by 0x4C2F1BF: realloc (vg_replace_malloc.c:785)
==2504==    by 0x5D32EE2: virReallocN (viralloc.c:245)
==2504==    by 0x5D37278: virBufferGrow (virbuffer.c:150)
==2504==    by 0x5D3783E: virBufferVasprintf (virbuffer.c:408)
==2504==    by 0x5D377A9: virBufferAsprintf (virbuffer.c:381)
==2504==    by 0x57017C1: qemuBuildSevCommandLine (qemu_command.c:9707)
==2504==    by 0x57030F7: qemuBuildCommandLine (qemu_command.c:10324)
==2504==    by 0x575FA48: qemuProcessCreatePretendCmd (qemu_process.c:6644)
==2504==    by 0x11351A: testCompareXMLToArgv (qemuxml2argvtest.c:564)
==2504==    by 0x1392F7: virTestRun (testutils.c:180)
==2504==    by 0x137895: mymain (qemuxml2argvtest.c:2900)

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-13 15:53:25 +02:00
Michal Privoznik
c92c6cd2f9 qemuBuildSevCommandLine: s/obj/buf/
The variable points to a buffer not a domain object therefore its
current name is misleading.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-13 15:53:25 +02:00
Ján Tomko
e56ff8bc72 conf: prefer camelCase for launchSecurity
Adjust the documentation, parser and tests to change:
launch-security -> launchSecurity
reduced-phys-bits -> reducedPhysBits
dh-cert -> dhCert

Also fix the headline in formatdomain.html to be more generic,
and some leftover closing elements in the documentation.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Brijesh Singh <brijesh.singh@amd.com>
Tested-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-13 14:42:17 +02:00
Ján Tomko
a95b99d030 domaincaps: rename reduced-phys-bits to reducedPhysBits
We have enough elements using underscores instead of camelCase,
do not bring dashes into the mix.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Brijesh Singh <brijesh.singh@amd.com>
Tested-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-13 14:41:46 +02:00
Chen Hanxiao
39907c6c95 libvirt: fix a typo
s/httsp/https/

Signed-off-by: Chen Hanxiao <chenhanxiao@gmail.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2018-06-13 12:11:23 +02:00
Michal Privoznik
d1605b5d99 lib: Document limitation of virDomainInterfaceAddresses
https://bugzilla.redhat.com/show_bug.cgi?id=1588336

This API takes @source argument which tells it where to get
domain IP addresses from. However, not all sources are capable of
providing all the information we report, for instance ARP table
has no notion of IP address prefixes. Document this limitation.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Laine Stump <laine@laine.org>
2018-06-13 09:12:59 +02:00
Anya Harter
8bf612495d events: remove umlDomainEventQueue wrapper func
And replace all calls with virObjectEventStateQueue such that:

    umlDomainEventQueue(driver, event);

becomes:

    virObjectEventStateQueue(driver->domainEventState, event);

And remove NULL checking from all callers.

Signed-off-by: Anya Harter <aharter@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-06-13 08:43:03 +02:00
Anya Harter
b850492461 events: remove qemuDomainEventQueue wrapper func
And replace all calls with virObjectEventStateQueue such that:

    qemuDomainEventQueue(driver, event);

becomes:

    virObjectEventStateQueue(driver->domainEventState, event);

And remove NULL checking from all callers.

Signed-off-by: Anya Harter <aharter@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-06-13 08:42:58 +02:00
Anya Harter
148bed8eb2 events: remove libxlDomainEventQueue wrapper func
And replace all calls with virObjectEventStateQueue such that:

    libxlDomainEventQueue(driver, event);

becomes:

    virObjectEventStateQueue(driver->domainEventState, event);

And remove NULL checking from all callers.

Signed-off-by: Anya Harter <aharter@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-06-13 08:42:53 +02:00
Anya Harter
0e145a4f79 events: remove testObjectEventQueue wrapper func
And replace all calls with virObjectEventStateQueue such that:

    testObjectEventQueue(privconn, event);

becomes:

    virObjectEventStateQueue(privconn->eventState, event);

Signed-off-by: Anya Harter <aharter@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-06-13 08:42:42 +02:00
Cole Robinson
9f1b1194b0 libvirtd: Add service dependency on systemd-logind
At daemon startup we query logind for host PM support status. Without
a service dependency host startup can trigger libvirtd errors like:

error : virNodeSuspendSupportsTarget:336 : internal error: Cannot probe for
supported suspend types
warning : virQEMUCapsInit:949 : Failed to get host power management
capabilities

https://bugzilla.redhat.com/show_bug.cgi?id=1588288

Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2018-06-12 13:29:42 -04:00
Christian Ehrhardt
a15bab0c68 apparmor: fix vfio usage without initial hostdev
The base vfio has not much functionality but to provide a custom
container by opening this path.
See https://www.kernel.org/doc/Documentation/vfio.txt for more.

Systems with static hostdevs will get /dev/vfio/vfio by virt-aa-hotplug
right from the beginning. But if the guest initially had no hostdev at
all it will run into the following deny before the security module
labelling callbacks will make the actual vfio device (like /dev/vfio/93)
known.

Example of such a deny:
[ 2652.756712] audit: type=1400 audit(1491303691.719:25):
  apparmor="DENIED" operation="open"
  profile="libvirt-17a61b87-5132-497c-b928-421ac2ee0c8a"
  name="/dev/vfio/vfio" pid=8486 comm="qemu-system-x86"
  requested_mask="wr" denied_mask="wr" fsuid=64055 ouid=0

Bug-Ubuntu: https://bugs.launchpad.net/bugs/1678322
Bug-Ubuntu: https://bugs.launchpad.net/bugs/1775777

Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
Acked-by: Jamie Strandboge <jamie@canonical.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-12 16:09:25 +02:00
Daniel P. Berrangé
1a2d725047 qemu: add qemu_monitor_priv.h to sources list
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-12 10:16:41 +01:00
Daniel P. Berrangé
f26f99685e conf: remove duplicated typedefs for virDomainSevDef
The typedefs were present twice in the header file which causes failures
with some compilers, eg FreeBSD 10 CLang:

../../src/conf/domain_conf.h:2330:33: error: redefinition of typedef 'virDomainSevDef' is a C11 feature
+[-Werror,-Wtypedef-redefinition]
typedef struct _virDomainSevDef virDomainSevDef;
                                ^
../../src/conf/domain_conf.h:145:33: note: previous definition is here
typedef struct _virDomainSevDef virDomainSevDef;
                                ^

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-12 10:12:19 +01:00
intrigeri
1fff379ff6 AppArmor: allow virt-aa-helper read access to Nova's qcow backing files.
As reported on https://bugs.debian.org/892431, without this rule, when launching
a QEMU KVM instance, an error occurs immediately upon launching the QEMU
process such as:

  Could not open backing file: Could not open
  '/var/lib/nova/instances/_base/affe96668a4c64ef380ff1c71b4caec17039080e':
  Permission denied

The other instance disk images are already covered by the existing rule:

  /**/disk{,.*} r

Signed-off-by: intrigeri <intrigeri@boum.org>
2018-06-12 10:43:37 +02:00
Peter Krempa
e6be524508 tests: qemucapabilities: Test commands used to query capabilities
Use qemuMonitorTestNewFromFileFull which allows to test commands used
along with providing replies. This has two advantages:

1) It's easier to see which command was used when looking at the files
2) We check that the used commands are actually in the correct order

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-12 10:27:50 +02:00
Peter Krempa
e00ecd1bed tests: qemucapsprobemock: Prepare 'qemucapsprobe' for the new format
Change the output of qemucapsprobe to record the commands used for
querying. This allows to easily identify which reply belongs to which
command and also will allow to test whether we use stable queries.

This change includes changing dropping of the QMP greeting from the file
and reformatting of the query and output to stdout.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-12 10:27:50 +02:00
Peter Krempa
9369348eb8 tests: qemucapsprobemock: Fail if JSON reply from qemu can't be reformatted
Rather than skipping output on failure fail loudly.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-12 10:27:50 +02:00
Peter Krempa
0ed2716531 tests: qemucapsprobemock: Simplify and extract skipping of empty lines
The prettyfied output may sometimes contain empty lines which would
desynchonize the test monitor workers. The skipping code can be much
simplified though. Also a extract it so so that it's obvious what
it's doing and can be reused.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-12 10:27:50 +02:00
Peter Krempa
1025264ec5 tests: qemumonitor: Optimize control flow when concatenating replies
The test file can be broken up by newlines and is automatically
concatenated back. Fix the control flow so that the concatenation code
'continues' the loop rather than branching out.

Also add an anotation to the concatenation code.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-12 10:27:50 +02:00
Peter Krempa
dcea889b13 tests: qemumonitor: Simplify handling of end of file in full file test
On EOF, the loop can be terminated right away since most of it is
skipped anyways and the handling of the last command is repeated after
the loop.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-12 10:27:50 +02:00
Peter Krempa
215167042a tests: qemucapabilities: Reset command sequence before second probe
The test data for capabilities is obtained from two consecutive qemu
runs when the regular monitor object will be reset. Do the same for the
test monitor object which is not disposed between runs by calling
qemuMonitorResetCommandID.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-12 10:27:50 +02:00
Peter Krempa
cc8f8bfdee qemu: monitor: Add possibility to reset command sequence in tests
qemucapabilitiestest for simplicity uses one test monitor object for
simulating work of two separate inquiries of the qemu process. To allow
better testing in the future it will be required to reset the counter
so that it accurately simulates how qemu would behave.

This patch adds a private monitor API which allows to reset the counter
which will be usable only in tests.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-12 10:27:49 +02:00
Julio Faracco
bf72ab16e2 qemu: fix uninitialised variable in virQEMUDriverConfigLoadFile
Since virConfGetValueBool() can return earlier, the parameter 'value'
might be not initialised properly inside this method. Another proof:
Valgrind is returning this error during the libvirtd daemon startup:

==16199== Conditional jump or move depends on uninitialised value(s)
==16199==    at 0x27FFFEF4: virQEMUDriverConfigLoadFile (qemu_conf.c:809)
==16199==    by 0x2807665C: qemuStateInitialize (qemu_driver.c:654)
==16199==    by 0x5535428: virStateInitialize (libvirt.c:662)
==16199==    by 0x12AED8: daemonRunStateInit (remote_daemon.c:802)
==16199==    by 0x536DE18: virThreadHelper (virthread.c:206)
==16199==    by 0x6CB36DA: start_thread (pthread_create.c:463)
==16199==    by 0x6FEC88E: clone (clone.S:95)

Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-06-12 10:08:41 +02:00
Peter Krempa
b6d5be4688 conf: Extract formatting of 'mirror' disk sub-element
Move the code to a separate function.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-12 10:06:31 +02:00
Peter Krempa
d23bafc04a conf: Use virXMLFormatElement to format disk 'driver' element
Formatting of 'driver' already used a separate buffer but was part of
the main function. Separate it and remove bunch of unnecessary temporary
variables.

Note that some checks are removed but they are not really necessary
anyways.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-12 10:06:30 +02:00
Peter Krempa
0027ea3b0d conf: Use virXMLFormatElement to format disk IO tuning
Extract and refactor the code to use the new approach which allows to
delete a monster condition to check if the element needs to be
formatted.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-12 10:06:30 +02:00
Brijesh Singh
bfaa61c83c qemu: Implement the driver backend for virDomainGetLaunchSecurityInfo
This patch implements the internal driver API for launch event into
qemu driver. When SEV is enabled, execute 'query-sev-launch-measurement'
to get the measurement of memory encrypted through launch sequence.

Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-12 10:00:49 +02:00
Brijesh Singh
a12278a165 remote: Implement the remote protocol for launch security
Add remote support for launch security info.

Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-12 10:00:49 +02:00
Brijesh Singh
077c9a2504 libvirt: Introduce virDomainGetLaunchSecurityInfo public API
The API can be used outside the libvirt to get the launch security
information. When SEV is enabled, the API can be used to get the
measurement of the launch process.

Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-12 10:00:49 +02:00
Brijesh Singh
11ab77fe88 qemu: Add support to launch an SEV guest
QEMU >= 2.12 provides 'sev-guest' object which is used to launch encrypted
VMs on AMD platform using SEV feature. The various inputs required to
launch SEV guest is provided through the <launch-security> tag. A typical
SEV guest launch command line looks like this:

  -object sev-guest,id=sev0,cbitpos=47,reduced-phys-bits=5 ...\
  -machine memory-encryption=sev0 \

Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-12 10:00:49 +02:00
Brijesh Singh
a9caa98159 qemu/cgroup: Add /dev/sev in shared devices list
QEMU uses /dev/sev device while creating the SEV guest, lets add /dev/sev
in the list of devices allowed to be accessed by the QEMU.

Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-12 10:00:49 +02:00
Brijesh Singh
e5791a0306 conf: Introduce launch-security element in domain
The launch-security element can be used to define the security
model to use when launching a domain. Currently we support 'sev'.

When 'sev' is used, the VM will be launched with AMD SEV feature enabled.
SEV feature supports running encrypted VM under the control of KVM.
Encrypted VMs have their pages (code and data) secured such that only the
guest itself has access to the unencrypted version. Each encrypted VM is
associated with a unique encryption key; if its data is accessed to a
different entity using a different key the encrypted guests data will be
incorrectly decrypted, leading to unintelligible data.

Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-12 10:00:49 +02:00
Brijesh Singh
6596ac4235 qemu: Implement the driver backend for virNodeGetSEVInfo()
Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-12 10:00:38 +02:00
Brijesh Singh
e4db4dafe9 remote: Implement the remote protocol for virNodeGetSEVInfo()
Add remote support for virNodeGetSEVInfo().

Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-12 09:52:00 +02:00
Brijesh Singh
45422935c3 libvirt: Introduce virNodeGetSEVInfo public API
The API can be used by application to retrieve the Platform Diffie-Hellman
Key and Platform Certificate chain.

Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-12 09:52:00 +02:00
Brijesh Singh
5dca09c170 conf: Expose SEV feature in domain capabilities
Extend hypervisor capabilities to include sev feature. When available,
hypervisor supports launching an encrypted VM on AMD platform. The
sev feature tag provides additional details like Platform Diffie-Hellman
(PDH) key and certificate chain which can be used by the guest owner to
establish a cryptographic session with the SEV firmware to negotiate
keys used for attestation or to provide secret during launch.

Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-12 09:52:00 +02:00
Brijesh Singh
d4005609f3 qemu: Provide support to query the SEV capability
QEMU version >= 2.12 provides support for launching an encrypted VMs on
AMD x86 platform using Secure Encrypted Virtualization (SEV) feature.
This patch adds support to query the SEV capability from the qemu.

Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-12 09:51:59 +02:00
Anya Harter
2cbdf303dd events: remove remoteEventQueue wrapper function
And replace all calls with virObjectEventStateQueue such that:

    remoteEventQueue(priv, event, callbackID);

becomes:

    virObjectEventStateQueue(priv->eventState, event, callbackID);

Signed-off-by: Anya Harter <aharter@redhat.com>
2018-06-12 07:28:58 +02:00
Anya Harter
aad3a0b5f8 events: move NULL check to EventStateQueueRemote
Remove NULL check around call to virObjectEventStateQueueRemote in
remote_driver.c.

Signed-off-by: Anya Harter <aharter@redhat.com>
2018-06-12 07:28:35 +02:00
Anya Harter
031eb8f6dc events: add NULL check in virObjectEventStateQueue
And remove NULL checking from all callers.

Signed-off-by: Anya Harter <aharter@redhat.com>
2018-06-12 07:28:18 +02:00
John Ferlan
4e3a9daa66 qemu: Allow no address to be defined for virtio-scsi iothread attach
https://bugzilla.redhat.com/show_bug.cgi?id=1583623

When attaching a virtio-scsi with IOThreads for the config of a
live domain, allow the <address> to not be defined thus allowing
post parse processing to fill in the address. This allows parsing
of an individual device to succeed for attach config.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-11 18:46:07 -04:00
John Ferlan
0054c706e9 qemu: Alter error message when IOThread address not correct
Make the error a bit clearer that virtio-scsi IOThreads require
virtio pci or ccw controller address types.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-11 18:44:02 -04:00
John Ferlan
310051c847 qemu: Fix error for attach controller config for live guest
Fix the error message to indicate what exactly is failing - that
the controller index provided matches an existing controller.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-11 18:41:33 -04:00
John Ferlan
c1aaa253d2 conf: Check error from virXMLFormatElement call
Commit id 1bd5a08d added a call to virXMLFormatElement without
also checking the return status.

Found by Coverity.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Katerina Koukiou <kkoukiou@redhat.com>
2018-06-11 18:33:13 -04:00
John Ferlan
05c41f4f1d test: Check return status for libxlxml2domconfigtest
Commit id d8e8b63d introduced the test, but neglected to check for
error from virTestLoadFile in testCompareXMLToDomConfig.

Found by Coverity

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Katerina Koukiou <kkoukiou@redhat.com>
2018-06-11 18:33:13 -04:00
John Ferlan
30b2ebb284 test: Fix resource leak in qemumonitorjsontest
Introduced by commmit id 37bd4571c. Need to goto cleanup and
not return directly.

Found by Coverity

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Katerina Koukiou <kkoukiou@redhat.com>
2018-06-11 18:33:13 -04:00
John Ferlan
462abad2e7 qemu: Fix Coverity build for qemu_monitor
Commit id '7ef0471bf' added a new parameter to qemuMonitorOpen,
but didn't update the ATTTRIBUTE_NONNULL for the @cb (param 5).

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Katerina Koukiou <kkoukiou@redhat.com>
2018-06-11 18:33:13 -04:00
John Ferlan
6cfd49bd4f vbox: Fix resource leak
The @disk was allocated, filled in, and consumed on the normal path,
but for error/cleanup paths it would be leaked.  Rename to newHardDisk
and manage properly.

Found by Coverity

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Katerina Koukiou <kkoukiou@redhat.com>
2018-06-11 18:33:13 -04:00
John Ferlan
b8844727c9 vbox: Fix resource leak
Need to free the allocated hardDiskToOpen array. The contents of the
array are just pointers returned by virVBoxSnapshotConfHardDiskByLocation
and not allocated AFAICT so they don't need to also be freed as well.

Found by Coverity

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Katerina Koukiou <kkoukiou@redhat.com>
2018-06-11 18:33:13 -04:00
Chen Hanxiao
da5b1a9188 virstring: fix a typo
s/glibc's_asprintf/glibc's asprintf

Signed-off-by: Chen Hanxiao <chenhanxiao@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-06-11 16:00:34 +02:00
Fabiano Fidêncio
cb9868b521 xen_common: Split per-PCI logic from xenParsePCI()
xenParsePCI() does a lot of stuff and, in order to make things cleaner,
let's split it in two new functions:
- xenParsePCI(): it's a new function that keeps the old name. It's
responsible for the whole per-PCI logic from the old xenParsePCI();
- xenParsePCIList(): it's basically the old xenParsePCI(), but now it
just iterates over the list of PCIs, calling xenParsePCI() per each PCI.

This patch is basically preparing the ground for the future when
typesafe virConf acessors will be used.

Signed-off-by: Fabiano Fidêncio <fabiano@fidencio.org>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-06-11 15:13:45 +02:00
Fabiano Fidêncio
9c89500ec0 vmx: convert to typesafe virConf accessors
Signed-off-by: Fabiano Fidêncio <fabiano@fidencio.org>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-06-11 15:10:57 +02:00
Fabiano Fidêncio
7c2b32a691 xen_vm: convert to typesafe virConf accessors
Signed-off-by: Fabiano Fidêncio <fabiano@fidencio.org>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-06-11 14:56:49 +02:00
Fabiano Fidêncio
5d358df82a xen_xm: Split the per-disk logic from xenParseXMDisk()
xenParseXMDisk() does a lot of stuff and, in order to make things
cleaner, let's split it in two new functions:
- xenParseXMDisk(): it's a new function that keeps the old name. It's
responsible for the whole per-disk logic from the old xenParseXMDisk();
- xenParseXMDiskList(): it's basically the old xenParseXMDisk(), but
now it just iterates over the list of disks, calling xenParseXMDisk()
per each disk.

This patch is basically preparing the ground for the future when
typesafe virConf acessors will be used.

Signed-off-by: Fabiano Fidêncio <fabiano@fidencio.org>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-06-11 10:17:15 +02:00
Roman Bogorodskiy
057a78ea31 bhyve: tests: Add missing data files
Add missing data files for bhyve cpu topology tests that should have been
added in b66fda0a74.

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
2018-06-08 21:53:36 +04:00
Marc Hartmayer
fef4d132c4 qemu: Fix segmentation fault on reconnect
On start up of libvirtd the worker pool of the QEMU driver must be
initialized before trying to reconnect to all the running QEMU
instances. Otherwise segmentation faults can occur if there are QEMU
monitor events emitted.

 #0  __GI___pthread_mutex_lock
 #1  0x000003fffdba9e62 in virMutexLock
 #2  0x000003fffdbab2dc in virThreadPoolSendJob
 #3  0x000003ffd8343b70 in qemuProcessHandleSerialChanged
 #4  0x000003ffd836a776 in qemuMonitorEmitSerialChange
 #5  0x000003ffd8378e52 in qemuMonitorJSONHandleSerialChange
 #6  0x000003ffd8378930 in qemuMonitorJSONIOProcessEvent
 #7  0x000003ffd837edee in qemuMonitorJSONIOProcessLine
 #8  0x000003ffd837ef86 in qemuMonitorJSONIOProcess
 #9  0x000003ffd836757a in qemuMonitorIOProcess
 #10 0x000003ffd836863e in qemuMonitorIO
 #11 0x000003fffdb4033a in virEventPollDispatchHandles
 #12 0x000003fffdb4055e in virEventPollRunOnce
 #13 0x000003fffdb3e782 in virEventRunDefaultImpl
 #14 0x000003fffdc89400 in virNetDaemonRun
 #15 0x000000010002a816 in main

Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-08 13:29:18 +02:00
Martin Kletzander
6142758a57 util: Remove cbm_mask from virResctrlInfoPerType
It was used just temporarily to do a calculation, no need to keep that around.
Also use virBitmap in the code instead of reimplementing two of its existing
functions.  And move the counting part next to where the value is read.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 10:28:46 +02:00
Martin Kletzander
f1d7625e13 Move virCacheKernel enum implemetation from conf/ to util/
It will be used in that file later on, plus it makes sense for all the
implementations to be in same place.  Also comment each one of them nicely and
add a comment explaining why they all need to end with the same _LAST value.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 10:28:46 +02:00
Martin Kletzander
c95b9557b5 util: Initialize virResctrlInfo struct right away
There is no need to have virResctrlGetInfo() when it must be called after
virResctrlInfoNew() anyway, otherwise it's just an unusable object.  When we
wrap the logic inside the New() function we'll save some calls later as well.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 10:28:46 +02:00
Martin Kletzander
089c81b0e1 util: Reorder parts of virresctrl
Move description of the purpose of the file before any definition.

One empty line between related enum definitions.

All typedefs before all structs.  This is exception from the usual, but not the
only one, we already have something similar for some other structs.  This way we
can move contents between structs and reorder some parts nicely without moving
all definitions of one type before another one just so it's defined.

Define all classes in one place.

Have one initialization function for all classes in the file.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 10:28:46 +02:00
Martin Kletzander
657ddeff23 util: Use virFileFlock() in virresctrl
That way we get rid of the last preprocessor conditional so the code compiles on
all platforms.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 10:28:46 +02:00
Martin Kletzander
3593d36c33 util: Avoid needless preprocessor conditionals in virresctrl
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 10:28:46 +02:00
Martin Kletzander
5a0a5f7fb5 util: Introduce virFileFlock
We already have virFileLock(), but we are now using flock() in the code as
well (due to requirements for mutual exclusion between libvirt and other
programs using flock() as well), so let's have a function for that as well so we
don't need to have stubs for unsupported platforms in other files.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 10:28:46 +02:00
Martin Kletzander
f41bbfe0e5 util: Fix typo in error message %ud -> %u
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 10:28:46 +02:00
Martin Kletzander
c5159d66de util: Rename resctrl to alloc if it is virResctrlAllocPtr
Just to stay consistent.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 10:28:46 +02:00
Martin Kletzander
7a439dcb23 docs: Add TSEG support info into news.xml
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 10:28:46 +02:00
Martin Kletzander
d60b730b48 qemu: Add support for setting the TSEG size
The default is stable per machine type so there should be no need to keep that.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1469338

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 10:28:46 +02:00
Martin Kletzander
3ea32b635d qemu: Add capability flag for setting the extended tseg size
For getting the reply I queried the newest and oldest QEMU using
test/qemucapsprobe.  From the differences I only extracted the reply to the new
QMP command and discarded the rest.  For all the versions below the one which
added support for the new option I used the output from the oldest QEMU release
and for those that support it I used the output from the newest one.

In order to make doubly sure the reply is where it is supposed to be (the
replies files are very forgiving) I added the property to all the replies files,
reran the tests again and fixed the order in replies files so that all the
versions are reporting the new capability.  Then removed that one property.

After that I used test/qemucapsfixreplies to fix the reply IDs.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 10:28:46 +02:00
Martin Kletzander
1bd5a08d38 conf, schema, docs: Add support for TSEG size setting
TSEG (Top of Memory Segment) is one of many regions that SMM (System Management
Mode) can occupy.  This one, however is special, because a) most of the SMM code
lives in TSEG nowadays and b) QEMU just (well, some time ago) added support for
so called 'extended' TSEG.  The difference to the TSEG implemented in real q35's
MCH (Memory Controller Hub) is that it can offer one extra size to the guest OS
apart from the standard TSEG's 1, 2, and 8 MiB and that size can be selected in
1 MiB increments.  Maximum may vary based on QEMU and is way too big, so we
don't need to check for the maximum here.  Similarly to the memory size we'll
leave it to the hypervisor to try satisfying that and giving us an error message
in case it is not possible.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 10:28:46 +02:00
Martin Kletzander
3f2499d7d7 qemu: Relax check for SMM feature
One of the things that this is improving is the fact that instead of error
message (that was wrong) you get when starting a domain with SMM and i440fx we
allow the setting to go through.  SMM option exists and makes sense on i440fx as
well (basically whenever that _SMM_OPT capability is set).

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 10:28:46 +02:00
Martin Kletzander
343894b74b qemu: Move checks for SMM from command-line creation into validation phase
We are still hoping all of such checks will be moved there and this is one small
step in that direction.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 10:28:46 +02:00
Peter Krempa
e546785dce tests: qemuxml2argv: Make tests based on DO_TEST_CAPS_LATEST stable
To avoid problems with test cases specifying an alias machine type which
would change once capabilities for a newer version are added strip all
alias machine types for the DO_TEST_CAPS_LATEST based tests.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-08 09:28:58 +02:00
Peter Krempa
e1e8d0a9b7 util: storage: remove 'allow_probe' from virStorageFileGetMetadata
All callers pass 'false' now so it's no longer needed.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 09:26:38 +02:00
Peter Krempa
e0f8839b88 tests: storage: Drop duplicate tests with TEST_CHAIN
Now that all test cases with TEST_CHAIN were testing the same thing
twice drop one of them. Note that some of the cases were duplicate even
before dropping the image format probing tests.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 09:26:38 +02:00
Peter Krempa
655b95a01d tests: storage: Drop format probing from tests
Storage drivers now don't allow it so there's no need to test it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 09:26:38 +02:00
Peter Krempa
67d7d41615 tests: storage: Absorb ALLOW_PROBE flag into the TEST_CHAIN macro
The second set of arguments for TEST_CHAIN always specifies the
'ALLOW_PROBE' flag. Make it part of the macro.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 09:26:38 +02:00
Peter Krempa
300515b414 tests: virstoragetest: Add complementary test case for QED format
We have a test case for QED disk image with autodetection but not with
the format explicitly specified.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 09:26:38 +02:00
Peter Krempa
abccb2fdeb security: aa-helper: Remove the -p parameter
As the aa-helper binary is supposed to be used only with libvirt, we can
fully remove it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 09:26:37 +02:00
Peter Krempa
10bc2127c3 security: Remove VIR_SECURITY_MANAGER_ALLOW_DISK_PROBE
Nothing is setting that flag now so it can be removed. Note that
removing 'mgr' from 'load_profile' in the apparmor driver would create a
lot of churn.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 09:26:37 +02:00
Peter Krempa
69d0d15632 qemu: driver: Remove impossible code path in qemuDomainSnapshotCreateInactiveExternal
Previous patch naively removed all code relevant to disk format
checking. The semantics now dictate that the format check when creating
external snapshots is now impossible as we always fill in the format for
disks in domain definition in the post-parse callback.

Remove the impossible code path.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 09:26:37 +02:00
Peter Krempa
c95f50cb02 qemu: conf: Remove 'allow_disk_format_probing' config option
The option is insecure and it has been long enough for users to migrate
their disk files to use explicit format. Drop the option and related
code.

The config parser still parses it and rejects statup if it's still
present in the config in enabled state.

The augeas lens is also kept so that users can disable it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 09:26:37 +02:00
Peter Krempa
18d94e17f8 tests: Drop tests enabling allowDiskFormatProbing
Format probing will be dropped so remove the tests which will become
obsolete.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-08 09:26:37 +02:00
Daniel Nicoletti
13311be4a3 Add Virtlyst web application to apps.html
Signed-off-by: Daniel Nicoletti <dantti12@gmail.com>
2018-06-07 17:20:32 -04:00
Brijesh Singh
c04d452ef6 nwfilter: fix build error when pcap-config is not present
The compilation fails with the following error when pcap-config
is not present on the host:

nwfilter/nwfilter_learnipaddr.c:824:1: error: conflicting types for 'virNWFilterLearnIPAddress'
 virNWFilterLearnIPAddress(virNWFilterTechDriverPtr techdriver ATTRIBUTE_UNUSED,

 In file included from nwfilter/nwfilter_learnipaddr.c:57:0:
 nwfilter/nwfilter_learnipaddr.h:38:5: note: previous declaration of 'virNWFilterLearnIPAddress' was here
  int virNWFilterLearnIPAddress(virNWFilterTechDriverPtr techdriver,

Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-06-07 23:00:16 +02:00
Daniel P. Berrangé
ab4591f1f4 nwfilter: directly use poll to wait for packets instead of pcap_next
When a QEMU VM shuts down its TAP device gets deleted while nwfilter
IP address learning thread is still capturing packets. It is seen that
with TPACKET_V3 support in libcap, the pcap_next() call will not always
exit its poll() when the NIC is removed. This prevents the learning
thread from exiting which blocks the rest of libvirtd waiting on mutex
acquisition. By switching to do poll() in libvirt code, we can ensure
that we always exit the poll() at a time that is right for libvirt.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-07 16:59:33 +01:00
Daniel P. Berrangé
1e49132dde nwfilter: fix IP address learning
In a previous commit:

  commit d4bf8f4150
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   Wed Feb 14 09:43:59 2018 +0000

    nwfilter: handle missing switch enum cases

    Ensure all enum cases are listed in switch statements, or cast away
    enum type in places where we don't wish to cover all cases.

    Reviewed-by: John Ferlan <jferlan@redhat.com>
    Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

we changed a switch in the nwfilter learning thread so that it had
explict cases for all enum entries. Unfortunately the parameters in the
method had been declared with incorrect type. The "howDetect" parameter
does *not* accept "enum howDetect" values, rather it accepts a bitmask
of "enum howDetect" values, so it should have been an "int" type.

The caller always passes DETECT_STATIC|DETECT_DHCP, so essentially the
IP addressing learning was completely broken by the above change, as it
never matched any switch case, hitting the default leading to EINVAL.

Stop using a typedef for the parameter name this this is a bitmask,
not a plain enum value. Also stop using switch() since that's misleading
with bitmasks too.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-07 16:58:33 +01:00
Daniel P. Berrangé
331fcaced2 docs: remove git snapshot download links
The process used to build the snapshots no longer works because the box
it runs on is outdated. Analysing the web logs shows the majority of
traffic to these links is from search engine bots. With those removed,
there is about 1 hit per day from (probable) humans.

Most users needing a tarball are better served by using official
releases. Those needing latest code are better served by using git
checkout. The tarball snapshots are not compelling enough to invest time
in fixing the script that produces them.

Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-07 16:55:52 +01:00
Roman Bogorodskiy
0e361382cb news: Document bhyve guest CPU topology feature
Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-07 19:26:26 +04:00
Roman Bogorodskiy
b66fda0a74 bhyve: Add CPU topology support
Recently, bhyve started supporting specifying guest CPU topology.
It looks this way:

  bhyve -c cpus=C,sockets=S,cores=C,threads=T ...

The old behaviour was bhyve -c C, where C is a number of vCPUs, is
still supported.

So if we have CPU topology in the domain XML, use the new syntax,
otherwise keep the old behaviour.

Also, document this feature in the bhyve driver page.

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-07 19:26:26 +04:00
Roman Bogorodskiy
922c867f06 bhyve: Properly name bhyve help parsing function
Currently there's a function called bhyveProbeCapsRTC_UTC() that
parses bhyve capabilities from the bhyve help output (bhyve -h).
Right now it only checks the '-u' flag, but as there will be more
features detectable through this help output, give it more general
name: bhyveProbeCapsFromHelp().

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-07 19:26:26 +04:00
Ján Tomko
718ddf2fe7 schema: remove reference to brctl
ip(8) is the contemporary way of configuring bridges.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-06-07 16:30:59 +02:00
Andrea Bolognani
996b35fd3c travis: Whitespace fixes
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
2018-06-07 15:46:10 +02:00
Daniel P. Berrangé
01c0179fbe travis: switch to using Ubuntu 16.04 and 18.04
The container images provided by Travis only support Ubuntu 14.04,
however, Travis has ability to run docker, which allows the build
script to use arbitrary OS images. This takes advantage of that to
convert the build over to Ubuntu 16.04 and 18.04

This is using the official Ubuntu provided images and installing
extra build deps required, as we previously did with Travis container
images.

Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-07 14:11:39 +01:00
Martin Kletzander
5c22daea7b docs: Tiny fix for the SMM description
The default is actually `on` when `<smm/>` is specified.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-07 10:32:26 +02:00
Ján Tomko
598075e43d docs: document mandatory signoffs in governance.html
Amend the paragraphs about no CLAs and implicit license
agreements to mention mandatory Signed-off-by tags.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-07 09:29:29 +02:00
Ján Tomko
4a6e17038b virsh: fix help for detach-disk --print-xml
The help message was copied from attach-interface.
Introduced by commit <431e736>.

https://bugzilla.redhat.com/show_bug.cgi?id=1588295

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-06-07 09:21:14 +02:00
Michal Privoznik
2ddb6de39b qemu_tpm: Drop needles include of cap-ng.h
qemu_tpm.c is not calling any capng_* functions. Let's drop this
include then. This also fixes a build failure without capng.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-07 08:32:11 +02:00
John Ferlan
5babc51912 fdstream: Report error from the I/O thread
https://bugzilla.redhat.com/show_bug.cgi?id=1529059

Commit id 0fe4aa14 added the thread specific error message
reporting (or save) to virFDStreamEvent; however, as processing
goes via virStream{Send|SendHole|Recv} via calls from
daemonStreamHandle{WriteData|Hole|Read} the last error
gets reset in the main libvirt API's thus, whatever error
may have been set as last error will be cleared prior to
the error paths using it resulting in the generic error
on the client side.

For each of the paths that check threadQuit or threadErr,
check if threadErr was set and set it agian if there isn't
a last error (e.g. some other failure) set so that the
message can be provided back to the client.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-06 20:35:55 -04:00
Stefan Berger
6d21d9bccb util: Implement and use virFileIsRegular() rather than d_type
The dirent's d_type field is not portable to all platforms. So we have
to use stat() to determine the type of file for the functions that need
to be cross-platform. Fix virFileChownFiles() by calling the new
virFileIsRegular() function.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-06 12:51:18 -04:00
Daniel P. Berrangé
ed29219f21 Don't use enums in TPM struct fields
When using an enum in a struct field, the compiler is free to decide to
make it an unsigned type if it desires. This in turn leads to bugs when
code does

    if ((def->foo = virDomainFooTypeFromString(str)) < 0)
       ...

because 'def->foo' can't technically have an unsigned value from the
compiler's POV. While it is possible to add (int) casts in the code
example above, this is not desirable because it is easy to miss out
such casts. eg the code fixed here caused an error with clang builds

../../src/conf/domain_conf.c:12838:73: error: comparison of unsigned enum expression < 0 is always false [-Werror,-Wtautological-compare]
        if ((def->version = virDomainTPMVersionTypeFromString(version)) < 0) {
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-06 17:46:31 +01:00
Katerina Koukiou
fab2e49d3c storage: fix crash in luks encrypted volume creation
Fix the case when creating a luks encrypted volume
via an xml file without 'secret' element.
libvirtd was receiving SIGSEGV, now proper error is reported for
the missing element.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1468422

Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com>
2018-06-06 18:02:59 +02:00
Stefan Berger
f982c92c8f conf: Use virDomainChrSourceDefClear() rather than VIR_FREE()
Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-06 10:48:41 -04:00
Stefan Berger
ac23367c10 conf: Use resrc=tpm in case of TPM passthrough following docs
Fix the resrc field for the TPM passthrough case to show tpm.
This fixes the code to follow the documentation.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-06 10:48:41 -04:00
Stefan Berger
6f06a6c145 conf: Audit TPM emulator device at domain startup
Extend the existing auditing with auditing for the TPM emulator.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-06 10:48:41 -04:00
Stefan Berger
ff907a46dd qemu: Run swtpm_setup in unprivileged mode for a TPM 2.0
swtpm_setup can be run for a TPM 2 in unprivileged mode assuming
XDG_CONFIG_HOME has been set and the necessary configuration files
have been put into that directory.

For current reference also see this link:

https://github.com/stefanberger/swtpm/pull/63

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-06 10:48:41 -04:00
Stefan Berger
a55414f6ff news: Update news with new TPM emulator feature
Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-06 10:48:41 -04:00
Stefan Berger
3f1a707042 qemu: Add swtpm to emulator cgroup
Add the external swtpm to the emulator cgroup so that upper limits of CPU
usage can be enforced on the emulated TPM.

To enable this we need to have the swtpm write its process id (pid) into a
file. We then read it from the file to configure the emulator cgroup.

The PID file is created in /var/run/libvirt/qemu/swtpm:

[root@localhost swtpm]# ls -lZ /var/run/libvirt/qemu/swtpm/
total 4
-rw-r--r--. 1 tss  tss  system_u:object_r:qemu_var_run_t:s0          5 Apr 10 12:26 1-testvm-swtpm.pid
srw-rw----. 1 qemu qemu system_u:object_r:svirt_image_t:s0:c597,c632 0 Apr 10 12:26 1-testvm-swtpm.sock

The swtpm command line now looks as follows:

root@localhost testvm]# ps auxZ | grep swtpm | grep socket | grep -v grep
system_u:system_r:virtd_t:s0:c597,c632 tss 18697 0.0  0.0 28172 3892 ?       Ss   16:46   0:00 /usr/bin/swtpm socket --daemon --ctrl type=unixio,path=/var/run/libvirt/qemu/swtpm/1-testvm-swtpm.sock,mode=0600 --tpmstate dir=/var/lib/libvirt/swtpm/485d0004-a48f-436a-8457-8a3b73e28568/tpm1.2/ --log file=/var/log/swtpm/libvirt/qemu/testvm-swtpm.log --pid file=/var/run/libvirt/qemu/swtpm/1-testvm-swtpm.pid

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-06 10:48:41 -04:00
Stefan Berger
8737578d11 conf: Add support for choosing emulation of a TPM 2.0
This patch extends the TPM's device XML with TPM 2.0 support. This only works
for the emulator type backend and looks as follows:

    <tpm model='tpm-tis'>
      <backend type='emulator' version='2.0'/>
    </tpm>

The swtpm process now has --tpm2 as an additional parameter:

system_u:system_r:svirt_t:s0:c597,c632 tss 18477 11.8  0.0 28364  3868 ?        Rs   11:13  13:50 /usr/bin/swtpm socket --daemon --ctrl type=unixio,path=/var/run/libvirt/qemu/swtpm/testvm-swtpm.sock,mode=0660 --tpmstate dir=/var/lib/libvirt/swtpm/testvm/tpm2,mode=0640 --log file=/var/log/swtpm/libvirt/qemu/testvm-swtpm.log --tpm2 --pid file=/var/run/libvirt/qemu/swtpm/testvm-swtpm.pid

The version of the TPM can be changed and the state of the TPM is preserved.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-06 10:48:41 -04:00
Stefan Berger
2fc665bb11 security: Label the external swtpm with SELinux labels
In this patch we label the swtpm process with SELinux labels. We give it the
same label as the QEMU process has. We label its state directory and files
as well. We restore the old security labels once the swtpm has terminated.

The file and process labels now look as follows:

Directory: /var/lib/libvirt/swtpm

[root@localhost swtpm]# ls -lZ
total 4
rwx------. 2 tss  tss  system_u:object_r:svirt_image_t:s0:c254,c932 4096 Apr  5 16:46 testvm

[root@localhost testvm]# ls -lZ
total 8
-rw-r--r--. 1 tss tss system_u:object_r:svirt_image_t:s0:c254,c932 3648 Apr  5 16:46 tpm-00.permall

The log in /var/log/swtpm/libvirt/qemu is labeled as follows:

-rw-r--r--. 1 tss tss system_u:object_r:svirt_image_t:s0:c254,c932 2237 Apr  5 16:46 vtpm.log

[root@localhost 485d0004-a48f-436a-8457-8a3b73e28567]# ps auxZ | grep swtpm | grep ctrl | grep -v grep
system_u:system_r:svirt_t:s0:c254,c932 tss 25664 0.0  0.0 28172  3892 ?        Ss   16:57   0:00 /usr/bin/swtpm socket --daemon --ctrl type=unixio,path=/var/run/libvirt/qemu/swtpm/testvm-swtpm.sock,mode=0660 --tpmstate dir=/var/lib/libvirt/swtpm/testvm/tpm1.2 --log file=/var/log/swtpm/libvirt/qemu/testvm-swtpm.log

[root@localhost 485d0004-a48f-436a-8457-8a3b73e28567]# ps auxZ | grep qemu | grep tpm | grep -v grep
system_u:system_r:svirt_t:s0:c254,c932 qemu 25669 99.0  0.0 3096704 48500 ?    Sl   16:57   3:28 /bin/qemu-system-x86_64 [..]

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-06 10:48:41 -04:00
Stefan Berger
f264df2d9e tests: Add test cases for external swtpm TPM emulator
This patch adds extensions to existing test cases and specific test cases
for the tpm-emulator.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-06 10:48:41 -04:00
Stefan Berger
69122bc2f1 qemu: Add support for external swtpm TPM emulator
This patch adds support for an external swtpm TPM emulator. The XML for
this type of TPM looks as follows:

 <tpm model='tpm-tis'>
   <backend type='emulator'/>
 </tpm>

The XML will currently only start a TPM 1.2.

Upon first start, libvirt will run `swtpm_setup`, which will simulate the
manufacturing of a TPM and create certificates for it and write them into
NVRAM locations of the emulated TPM.

After that libvirt starts the swtpm TPM emulator using the `swtpm` executable.

Once the VM terminates, libvirt uses the swtpm_ioctl executable to gracefully
shut down the `swtpm` in case it is still running (QEMU did not send shutdown)
or clean up the socket file.

The above mentioned executables must be found in the PATH.

The executables can either be run as root or started as root and switch to
the tss user. The requirement for the tss user comes through 'tcsd', which
is used for the simulation of the manufacturing. Which user is used can be
configured through qemu.conf. By default 'tss' is used.

The swtpm writes out state into files. The state is kept in /var/lib/libvirt/swtpm:

[root@localhost libvirt]# ls -lZ | grep swtpm

drwx--x--x. 7 root root unconfined_u:object_r:virt_var_lib_t:s0 4096 Apr  5 16:22 swtpm

The directory /var/lib/libvirt/swtpm maintains per-TPM state directories.
(Using the uuid of the VM for that since the name can change per VM renaming but
 we need a stable directory name.)

[root@localhost swtpm]# ls -lZ
total 4
drwx------. 2 tss  tss  system_u:object_r:virt_var_lib_t:s0          4096 Apr  5 16:46 485d0004-a48f-436a-8457-8a3b73e28568

[root@localhost 485d0004-a48f-436a-8457-8a3b73e28568]# ls -lZ
total 4
drwx------. 2 tss tss system_u:object_r:virt_var_lib_t:s0 4096 Apr 10 21:34 tpm1.2

[root@localhost tpm1.2]# ls -lZ
total 8
-rw-r--r--. 1 tss tss system_u:object_r:virt_var_lib_t:s0 3648 Apr  5 16:46 tpm-00.permall

The directory /var/run/libvirt/qemu/swtpm/ hosts the swtpm.sock that
QEMU uses to communicate with the swtpm:

root@localhost domain-1-testvm]# ls -lZ
total 0
srw-------. 1 qemu qemu system_u:object_r:svirt_image_t:s0:c597,c632  0 Apr  6 10:24 1-testvm-swtpm.sock

The logfile for the swtpm is in /var/log/swtpm/libvirt/qemu:

[root@localhost-3 qemu]# ls -lZ
total 4
-rw-------. 1 tss tss unconfined_u:object_r:var_log_t:s0 2199 Apr  6 14:01 testvm-swtpm.log

The processes are labeled as follows:

[root@localhost 485d0004-a48f-436a-8457-8a3b73e28567]# ps auxZ | grep swtpm | grep socket | grep -v grep
system_u:system_r:virtd_t:s0-s0:c0.c1023 tss 18697 0.0  0.0 28172 3892 ?       Ss   16:46   0:00 /usr/bin/swtpm socket --daemon --ctrl type=unixio,path=/var/run/libvirt/qemu/swtpm/1-testvm-swtpm.sock,mode=0600 --tpmstate dir=/var/lib/libvirt/swtpm/485d0004-a48f-436a-8457-8a3b73e28568/tpm1.2 --log file=/var/log/swtpm/libvirt/qemu/testvm-swtpm.log

[root@localhost 485d0004-a48f-436a-8457-8a3b73e28567]# ps auxZ | grep qemu | grep tpm | grep -v grep
system_u:system_r:svirt_t:s0:c413,c430 qemu 18702 2.5  0.0 3036052 48676 ?     Sl   16:46   0:08 /bin/qemu-system-x86_64 [...]

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-06 10:48:41 -04:00
Stefan Berger
2a606b863e qemu: Extend QEMU with external TPM support
Implement functions for managing the storage of the external swtpm as well
as starting and stopping it. Also implement functions to use swtpm_setup,
which simulates the manufacturing of a TPM, which includes creation of
certificates for the device.

Further, the external TPM needs storage on the host that we need to set
up before it can be run. We can clean up the host once the domain is
undefined.

This patch also implements a small layer for external device support that
calls into the TPM device layer if a domain has an attached TPM. This is
the layer we will wire up later on.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-06 10:48:41 -04:00
Stefan Berger
d9c087f57d qemu: Extend qemu_conf with tpm-emulator support
Extend qemu_conf with user and group for running the tpm-emulator
and add directories to the configuration for the locations of the
log, state, and socket of the tpm-emulator.

Also add these new directories to the QEMU Makefile.inc.am and
the RPM spec file libvirt.spec.in.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-06 10:48:41 -04:00
Stefan Berger
a21c45c41d security: Add DAC and SELinux security for tpm-emulator
Extend the DAC and SELinux modules with support for the tpm-emulator.
We label the Unix socket that QEMU connects to after starting swtmp
with DAC and SELinux labels. We do not have to restore the labels in
this case since the tpm-emulator will remove the Unix socket when it
terminates.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-06 10:48:41 -04:00
Stefan Berger
eb46575a95 util: Implement virFileChownFiles()
Implement virFileChownFiles() which changes file ownership of all
files in a given directory.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-06 10:48:41 -04:00
Stefan Berger
b50edcd894 qemu: Extend QEMU capabilities with 'tpm-emulator'
Extend the QEMU capabilities with tpm-emulator support.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-06 10:48:41 -04:00
Stefan Berger
33af0b2b7c conf: Add support for external swtpm TPM emulator to domain XML
This patch adds support for an external swtpm TPM emulator. The XML for
this type of TPM looks as follows:

 <tpm model='tpm-tis'>
   <backend type='emulator'/>
 </tpm>

The XML will currently only define a TPM 1.2.

Extend the documentation.

Add a test case testing the XML parser and formatter.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-06 10:48:41 -04:00
John Ferlan
228ae70938 qemu: Fix double free in qemuDomainSecretAESClear
Commit id 02b031a4 added a secondary path from which the
incoming @secinfo would not be free'd until the private
data was freed in qemuDomainStorageSourcePrivateDispose.

However, by doing this the original intention to free
@*secinfo afterwards is lost and thus the pass by value
of the secinfo->s.aes (or secinfo->s.plain for its method)
results in not keeping the NULL setting in the various
secret.{username|iv|ciphertext} fields upon return to
qemuDomainSecretInfoClear and eventually will result in
a double free at domain destroy:

    raise ()
    abort ()
    __libc_message ()
    malloc_printerr ()
    _int_free ()
    virFree
    qemuDomainSecretAESClear
    qemuDomainSecretInfoClear
    qemuDomainSecretInfoFree
    qemuDomainStorageSourcePrivateDispose
    virObjectUnref
    virStorageSourceClear
    virStorageSourceFree
    virDomainDiskDefFree
    virDomainDefFree
    virDomainObjRemoveTransientDef
    qemuProcessStop
    qemuDomainDestroyFlags
    virDomainDestroy

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Peter Krempa <pkrempa@redhat.com>
2018-06-06 08:20:27 -04:00
Michal Privoznik
7d34949b07 qemuBuildNumaArgStr: Simplify @nodeBackends
Instead of array of pointers to individual buffers it can be
array of buffers directly. This also fixes the following memleak:

==22516== 96 bytes in 4 blocks are definitely lost in loss record 166 of 195
==22516==    at 0x4C2EF26: calloc (vg_replace_malloc.c:711)
==22516==    by 0x5D2C7D5: virAlloc (viralloc.c:144)
==22516==    by 0x56FAABD: qemuBuildNumaArgStr (qemu_command.c:7543)
==22516==    by 0x5701835: qemuBuildCommandLine (qemu_command.c:10112)
==22516==    by 0x575D794: qemuProcessCreatePretendCmd (qemu_process.c:6568)
==22516==    by 0x113338: testCompareXMLToArgv (qemuxml2argvtest.c:549)
==22516==    by 0x138CA3: virTestRun (testutils.c:180)
==22516==    by 0x136CD1: mymain (qemuxml2argvtest.c:2825)
==22516==    by 0x13AD58: virTestMain (testutils.c:1118)
==22516==    by 0x137351: main (qemuxml2argvtest.c:2874)

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-06 13:54:39 +02:00
Michal Privoznik
d0498881a0 virQEMUCapsFreeHostCPUModel: Don't always free host cpuData
This function exists because of 5276ec712a. But it is
missing initial check just like virQEMUCapsInitHostCPUModel()
has.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-06 13:27:18 +02:00
Daniel P. Berrangé
a9884d7062 tests: use a fixed NBD TLS certificate path
The default NBD TLS certificate path varies based on prefix given to
configure, causing tests to fail depending on build options.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-05 18:29:55 +01:00
ramyelkest
2b6667abbf all: Replace virGetLastError with virGetLastErrorCode where we can
Replace instances where we previously called virGetLastError just to
either get the code or to check if an error exists with
virGetLastErrorCode to avoid a validity pre-check.

Signed-off-by: Ramy Elkest <ramyelkest@gmail.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-05 18:44:05 +02:00
ramyelkest
50e96bb2a1 util: virerror: Introduce virGetLastError{Code,Domain} public APIs
Many places in the code call virGetLastError() just to check the
raised error code, or domain. However virGetLastError() can return
NULL, so the code has to check for that first. This patch therefore
introduces virGetLasError{Code,Domain} functions which always return a
valid error code or domain respectively, thus dropping the need to
perform any checks on the error object.

Signed-off-by: Ramy Elkest <ramyelkest@gmail.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-05 18:44:05 +02:00
ramyelkest
52d88d11db util: Prefer virGetLastErrorMessage over direct err->message usage
Signed-off-by: Ramy Elkest <ramyelkest@gmail.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-05 18:44:05 +02:00
Daniel P. Berrangé
3f4db69c2f po: don't install gmo files when --disable-nls is given
With --disable-nls is given we turn off use of gettext in the source
code, but mistakenly still installed the gmo files.

Reported-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-05 17:36:42 +01:00
Daniel P. Berrangé
fc06debd0c qemu: remove pointless connect retry logic in agent
When the agent code was first introduced back in

  commit c160ce3316
  Author: Daniel P. Berrange <berrange@redhat.com>
  Date:   Wed Oct 5 18:31:54 2011 +0100

    QEMU guest agent support

there was code that would loop and retry the connection when opening
the agent socket. At this time, the only thing done in between the
opening of the monitor socket & opening of the agent socket was a
call to set the monitor capabilities. This was a no-op on non-QMP
versions, so in theory there could be a race which let us connect
to the monitor while the agent socket was still not created by QEMU.

In the modern world, however, we long ago mandated the use of QMP
for managing QEMU, so we're guaranteed to have a set capabilities
QMP call. Once we've seen a reply to this, we're guaranteed that
QEMU has fully initialized all backends and is in its event loop.

We can thus be sure the QEMU agent socket is present and don't need
to retry connections to it, even without having the chardev FD passing
feature.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-05 17:30:57 +01:00
Daniel P. Berrangé
7ef0471bf7 qemu: don't retry connect() if doing FD passing
Since libvirt called bind() and listen() on the UNIX socket, it is
guaranteed that connect() will immediately succeed, if QEMU is running
normally. It will only fail if QEMU has closed the monitor socket by
mistake or if QEMU has exited, letting the kernel close it.

With this in mind we can remove the retry loop and timeout when
connecting to the QEMU monitor if we are doing FD passing. Libvirt can
go straight to sending the QMP greeting and will simply block waiting
for a reply until QEMU is ready.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-05 17:30:57 +01:00
Daniel P. Berrangé
30fb2276d8 qemu: support passing pre-opened UNIX socket listen FD
There is a race condition when spawning QEMU where libvirt has spawned
QEMU but the monitor socket is not yet open. Libvirt has to repeatedly
try to connect() to QEMU's monitor until eventually it succeeds, or
times out. We use kill() to check if QEMU is still alive so we avoid
waiting a long time if QEMU exited, but having a timeout at all is still
unpleasant.

With QEMU 2.12 we can pass in a pre-opened FD for UNIX domain or TCP
sockets. If libvirt has called bind() and listen() on this FD, then we
have a guarantee that libvirt can immediately call connect() and
succeed without any race.

Although we only really care about this for the monitor socket and agent
socket, this patch does FD passing for all UNIX socket based character
devices since there appears to be no downside to it.

We don't do FD passing for TCP sockets, however, because it is only
possible to pass a single FD, while some hostnames may require listening
on multiple FDs to cover IPv4 and IPv6 concurrently.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-05 17:30:28 +01:00
Daniel P. Berrangé
7cef131efe qemu: probe for -chardev 'fd' parameter for FD passing
QEMU >= 2.12 will support passing of pre-opened file descriptors for
socket based character devices.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-05 17:16:47 +01:00
Peter Krempa
d7ca39e0fb qemu: Fix detaching from persistent def in qemuDomainDetachDeviceAliasLiveAndConfig
The code that detaches the device from persistent definition copies the
persistent definition first so that it can easily be rolled back. The
actual detaching is then made in the copy which is assigned back on
success (if the live operation succeeded as well).

This is not the case in qemuDomainDetachDeviceAliasLiveAndConfig where
the definition was copied and put back, but the detaching happened from
the other object which was overwritten.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-06-05 15:05:57 +02:00
Michal Privoznik
234ce7d02f src: Drop most of #ifdef WITH_GNUTLS
Now that GnuTLS is a requirement, we can drop a lot of
conditionally built code. However, not all ifdef-s can go because
we still want libvirt_setuid to build without gnutls.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-05 14:32:36 +02:00
Michal Privoznik
fe9f235a4c tests: Always build TLS related tests
Since GnuTLS is required there is no way to go with !WITH_GNUTLS
branch and just distribute these files.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-05 14:32:32 +02:00
Michal Privoznik
3700dd53c3 src: Dissolve libvirt_gnutls.syms in libvirt_remote.syms
Now that GnuTLS is required these symbols are going to be present
all the time.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-05 14:32:30 +02:00
Michal Privoznik
4f15e75a9a src: Always build virnettlscontext into libvirt-net-rpc.la
Since GnuTLS is required there is no way to go with !WITH_GNUTLS
branch and just distribute these files.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-05 14:32:26 +02:00
Michal Privoznik
60d9ad6f1e configure: Require GnuTLS
We are building with GnuTLS everywhere because GnuTLS is widely
available. Also, it is desirable to prefer cryptographically
strong PRNG over "/dev/urandom" which is just a fallback.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-05 14:32:03 +02:00
John Ferlan
9b837963c5 storage: Add specific check for LUKS encryption support
Modify virStorageBackendLogicalLVCreate to ensure if encryption
is requested that only type LUKS is supported; otherwise, error.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-06-05 07:42:00 -04:00
Michal Privoznik
f785aa6c2b vircrypto: Drop virCryptoGenerateRandom
Now that virCryptoGenerateRandom() is plain wrapper over
virRandomBytes() we can drop it in favour of the latter.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-05 10:31:19 +02:00
Michal Privoznik
620a1c6a2a virUUIDGenerate don't fall back to virRandomBits
If virRandomBytes() fails there is no point calling
virRandomBits() because it uses virRandomBytes() internally
again.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-05 10:31:19 +02:00
Michal Privoznik
60da4a1148 virrandom: Make virRandomBits better
Now that we have strong PRNG generator implemented in
virRandomBytes() let's use that instead of gnulib's random_r.

Problem with the latter is in way we seed it: current UNIX time
and libvirtd's PID are not that random as one might think.
Imagine two hosts booting at the same time. There's a fair chance
that those hosts spawn libvirtds at the same time and with the
same PID. This will result in both daemons generating the same
sequence of say MAC addresses [1].

1: https://www.redhat.com/archives/libvirt-users/2018-May/msg00097.html

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-05 10:31:19 +02:00
Michal Privoznik
b87dda7549 virRandomBytes: Use gnutls_rnd whenever possible
While /dev/urandom is not terrible source of random data
gnutls_rnd is better. Prefer that one.

Also, since nearly every platform we build on already has gnutls
(if not all of them) this is going to be used by default.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-05 10:31:19 +02:00
Michal Privoznik
8981c750b1 virRandomBytes: Report error
Instead of having each caller report error move it into the
function. This way we can produce more accurate error messages
too.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-05 10:31:19 +02:00
Michal Privoznik
a6be5a4ce1 virRandomBytes: Prefer saferead over plain read
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-05 10:31:19 +02:00
Michal Privoznik
c3320d6518 virCryptoGenerateRandom: Don't allocate return buffer
To unify our vir*Random() functions we need to make
virCryptoGenerateRandom NOT allocate return buffer. It should
just fill given buffer with random data.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-05 10:31:19 +02:00
Michal Privoznik
a5865cdbea virCryptoGenerateRandom: Explain gnults error
When generating random stream using gnults fails an error is
reported. However, the error is not helpful as it contains only
an integer error code (a negative number). Use gnutls_strerror()
to turn the error code into a string explaining what went wrong.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-05 10:31:19 +02:00
Michal Privoznik
d4e66f7639 virCryptoGenerateRandom: rename ret
This function allocates a buffer, fills it in with random bytes
and then returns it. However, the buffer is held in @buf
variable, therefore having @ret variable which does not hold
return value of the function is misleading.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
2018-06-05 10:31:19 +02:00
Michal Privoznik
29592788f1 virRandomBytes: Fix return value
In libvirt when a function wants to return an error code it
should be a negative value. Returning a positive value (or zero)
means success. But virRandomBytes() does not follow this rule.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
2018-06-05 10:31:19 +02:00
Andrea Bolognani
0d42fa688b travis: Install and use ccache on macOS
As documented in [1], ccache needs to be installed and
configured explicitly on macOS.

[1] https://docs.travis-ci.com/user/caching/#ccache-cache

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-05 09:59:35 +02:00
Andrea Bolognani
f3f7cb73b9 travis: Move PATH to macOS-specific environment
Now that we have separate sections for each build
configuration, there's no reason to set PATH in the global
environment.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-05 09:59:25 +02:00
Jiri Denemark
91038dfb3b build: Don't install sysconfig files as scripts
The files are not scripts and should not be executable.

Broken by v4.0.0-294-g5f998681df.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
2018-06-05 09:39:24 +02:00
Jiri Denemark
4370ac84f8 qemu: Fix domain resume after failed migration
Libvirt relies on being able to kill the destination domain and resume
the source one during migration until we called "cont" on the
destination. Unfortunately, QEMU automatically activates block devices
at the end of migration even when it's called with -S. This wasn't a big
issue in the past since the guest is not running and thus no data are
written to the block devices. However, when QEMU introduced its internal
block device locks, we can no longer resume the source domain once the
destination domain already activated the block devices (and thus
acquired all locks) unless the destination domain is killed first.

Since it's impossible to synchronize the destination and the source
libvirt daemons after a failed migration, QEMU introduced a new
migration capability called "late-block-activate" which ensures QEMU
won't activate block devices until it gets "cont". The only thing we
need to do is to enable this capability whenever QEMU supports it.

https://bugzilla.redhat.com/show_bug.cgi?id=1568407

QEMU commit implementing the capability: v2.12.0-952-g0f073f44df

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 09:39:24 +02:00
Michal Privoznik
968aaff77a virDomainDefCopy: Skip ostype checks
When parsing domain XML the virCapsDomainData lookup is performed
in order to fill in missing def->os.arch and def->os.machine
strings. Well, when doing copy of already existing virDomainDef
we don't want any automagic fill in of defaults (and those two
strings are going to be provided at this point anyway by first
parse of the domain XML).

What is even worse is that we do not look up capabilities for
parsed emulator path rather some generic capabilities for parsed
arch. Therefore, if emulator points to qemu under non-default
path (say $HOME/qemu-system-arm) but there's no such qemu under
the default path (say /usr/bin/qemu-system-arm) the capabilities
lookup fails and creating the copy is denied.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 09:21:35 +02:00
Radostin Stoyanov
4e9d0ad7a0 virFileAccessibleAs: Remove redundant forkRet
The variable forkRet is not used after commit 25f8781

Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 09:18:47 +02:00
Filip Alac
6549c3a4d1 docs: news: Explain iommu_support improvement
Signed-off-by: Filip Alac <filipalac@gmail.com>
2018-06-05 09:11:29 +02:00
Filip Alac
dc34e78e21 capabilities: Extend capabilities with iommu_support
Signed-off-by: Filip Alac <filipalac@gmail.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-05 08:33:13 +02:00
Filip Alac
1597e155b2 qemu: hostdev: Move parts of qemuHostdevHostSupportsPassthroughVFIO() into separate function
Signed-off-by: Filip Alac <filipalac@gmail.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-06-05 08:33:13 +02:00
Peter Krempa
134c3ddb43 qemu: command: Refactor disk commandline formatting
Now that we have one place that sets up all disk-related objects to
qemuBlockStorageSourceAttachDataPtr we can easily reuse the data in the
command-line formatter by implementing a worker which will convert the
data.

A huge advantage is that it will be way easier to integrate this with
-blockdev later on.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:14:01 +02:00
Peter Krempa
006293afd0 qemu: command: Extract setup of one disk's command line
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:14:01 +02:00
Peter Krempa
fa028bd857 qemu: command: Rename qemuBuildDiskDriveCommandLine
It prepares all disk so use the plural form.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:14:01 +02:00
Peter Krempa
99239432d3 qemu: hotplug: Extract hotplug of TLS into qemuBlockStorageSourceAttachApply
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:14:01 +02:00
Peter Krempa
191780e856 qemu: hotplug: Extract hotplug of secrets into qemuBlockStorageSourceAttachApply
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:14:01 +02:00
Peter Krempa
1990a01e6e qemu: hotplug: Extract hotplug of PR into qemuBlockStorageSourceAttachApply
Introduce a new setup function for all the related configuration and
move the setup and attachment of the PR code.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:14:00 +02:00
Peter Krempa
ca174424ba qemu: Reuse qemuBlockStorageSourceAttachApply in disk hotplug
Create a new "Prepare" function and move the drive add code into the new
helpers. This will eventually allow to simplify and unify the attaching
code for use with blockdev at the same time as providing compatibility
with older qemus.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:14:00 +02:00
Peter Krempa
d5c5c841e0 qemu: alias: Rename qemuAliasFromDisk to qemuAliasDiskDriveFromDisk
Emphasize that it's for the 'drive' part of the disk.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:14:00 +02:00
Peter Krempa
389d966abf qemu: hotplug: Remove qemuDomainDelDiskSrcTLSObject
Replace access via wrapper by direct call to monitor API.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:14:00 +02:00
Peter Krempa
6e6d84163e qemu: Split handling of managed and unmanaged persistent reservations
Add code that will handle the managed persistent reservations object
separately from the unmanaged one. There is only one managed object so
handling it with disks is awkward and does not scale well when backing
chains come into view.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:14:00 +02:00
Peter Krempa
b3286a51de qemu: command: Return props as return value in qemuBuildPRManagerInfoProps
Also since we don't do any conditional formatting, fix the comment for
the function.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:14:00 +02:00
Peter Krempa
00bf6cc169 qemu: command: Pass in 'src' rather than 'disk' to qemuBuildPRManagerInfoProps
Everything is contained in the virStorageSourceStructure.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:14:00 +02:00
Peter Krempa
8ac8301366 util: storage: Add helper for determining whether a backing chain requires PR
With blockdev support we will need to introspect whether any of the
backing chain members requires PR rather just one of them. Add a helper
and reuse it in virDomainDefHasManagedPR.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:14:00 +02:00
Peter Krempa
3875459235 tests: qemublock: Test NBD with TLS in the JSON generator
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:14:00 +02:00
Peter Krempa
8ac9db0e54 qemu: domain: Add support for TLS for NBD
https://bugzilla.redhat.com/show_bug.cgi?id=1544869

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:14:00 +02:00
Peter Krempa
ca108ab789 qemu: conf: Add qemu.conf knobs for setting up TLS for NBD
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:14:00 +02:00
Peter Krempa
776d9bc3e8 qemu: Remove code for setting up disk passphrases
Now that the old qcow2 encryption is removed we can safely delete all
this code since it's not needed any more.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:14:00 +02:00
Peter Krempa
c4eedd7930 qemu: domain: Forbid storage with old QCOW2 encryption
The encryption was buggy and qemu actually dropped it upstream. Forbid
it for all versions since it would cause other problems too.

Problems with the old encryption include weak crypto, corruption of
images with blockjobs and a lot of usability problems.

This requires changing of the encryption type for the encrypted disk
tests.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:14:00 +02:00
Peter Krempa
c495905bff qemu: hotplug: Fix TLS setup on disk hotplug
We need to check if TLS is enabled as the variable is a tristate.
Currently we'd setup TLS even if it was explicitly turned off.
Thankfully TLS for disks was only used with the vxhs protocol so hardly
anybody would ever be able to hit the problem.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2018-06-05 08:14:00 +02:00
Peter Krempa
0b9451f9d6 util: storage: remove virStorageSource->tlsVerify
Disks are client-only so we don't need to have this variable. We also
always pass false for 'isListen' to qemuBuildTLSx509BackendProps for all
disk-related code-paths so the 'tlsVerify' is ignored anyways.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:59 +02:00
Peter Krempa
f18771d41c qemu: block: Add support for 'pr-manager' in qemuBlockStorageSourceGetFileProps
To keep feature parity, we need to be able to format the PR manager
alias when using blockdev.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:59 +02:00
Peter Krempa
d766021c60 qemu: Delete old unused code for adding objects to qemu
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:59 +02:00
Peter Krempa
805da1d577 qemu: Convert iothread hotplug to qemuMonitorCreateObjectProps
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:59 +02:00
Peter Krempa
c2f71bb295 qemu: hotplug: Refactor 'secret' props formatting to qemuMonitorCreateObjectProps
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:59 +02:00
Peter Krempa
9374c6e0a1 qemu: hotplug: Refactor tls-credential props formatting to qemuMonitorCreateObjectProps
Note that it's okay to pass NULL to qemuDomainDelTLSObjects in
qemuDomainAddTLSObjects as the tls-creds-x509 object was either not
created or qemu crashed.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:59 +02:00
Peter Krempa
80e301cd39 qemu: hotplug: Refactor shmem props formatting to qemuMonitorCreateObjectProps
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:59 +02:00
Peter Krempa
e50daa6331 qemu: hotplug: Refactor memory props formatting to qemuMonitorCreateObjectProps
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:59 +02:00
Peter Krempa
6ab7fd16d1 qemu: hotplug: Refactor RNG props formatting to use qemuMonitorCreateObjectProps
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:59 +02:00
Peter Krempa
e4a2bfe264 qemu: hotplug: Refactor PR props formatting to use qemuMonitorCreateObjectProps
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:59 +02:00
Peter Krempa
efd32528d0 util: qemu: Introduce helper for formatting command line from new object props
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:59 +02:00
Peter Krempa
f0a23c0c35 qemu: monitor: Add better APIs for adding of objects to qemu
Use the new monitor command internal API to allow wrapping of the object
name and alias into the JSON props so that they don't have to be passed
out of band.

The new API also takes a double pointer so that it can be cleared when
the value is consumed so that it does not need to happen in every single
caller.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:59 +02:00
Peter Krempa
bf26dd222f qemu: Rename virQEMUBuildObjectCommandlineFromJSON
s/virQEMUBuildObjectCommandlineFromJSON/virQEMUBuildObjectCommandlineFromJSONType/

The function adds the object of a certain type. Change the name so that
we make room for the generic function.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:59 +02:00
Peter Krempa
a47508d991 qemu: monitor: Rename qemuMonitorAddObject to qemuMonitorAddObjectType
The function adds the object of a certain type. Change the name so that
we make room for the generic function.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:59 +02:00
Peter Krempa
7317a83f60 qemu: command: Fix name of qemuBuildMemoryBackendStr
The function generates JSON properties rather than a string so rename
it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:59 +02:00
Peter Krempa
07119a2a6a tests: qemu: Rename disk-drive-network-tlsx509-vxhs test
Drop the 'vxhs' suffix so other network protocols using TLS can be
put into the same test.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:59 +02:00
Peter Krempa
903ba2e807 qemu: hotplug: Remove TLS alias generation from qemuDomainGetTLSObjects
Callers should generate the alias separately.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:59 +02:00
Peter Krempa
6dc2059abe qemu: hotplug: Drop 'secAlias' output parameter from qemuDomainGetTLSObjects
No callers are using it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:58 +02:00
Peter Krempa
4a9680432b qemu: hotplug: Remove misleading comment in qemuDomainGetTLSObjects
'secinfo' is present also for migrations. Delete the misleading comment.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:58 +02:00
Peter Krempa
8f1aac69f5 qemu: hotplug: Pass around existing secret object alias from qemuDomainAddChardevTLSObjects
Setting up the 'secinfo' for the TLS private key password also generates
the given alias, so we don't need to generate another one.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:58 +02:00
Peter Krempa
4e1330ab36 qemu: migration: Don't pass around secAlias
The alias of the secret for decrypting the TLS passphrase is useless
besides for TLS setup. Stop passing it around.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:58 +02:00
Peter Krempa
2cbc026b5d qemu: command: Always setup TLS environment if src->haveTLS is on
We make sure that the disk supports TLS when preparing the environment
so there's no need to duplicate checks.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:58 +02:00
Peter Krempa
867fb534a7 qemu: command: Pass in alias for TLS object to qemuBuildTLSx509CommandLine
Callers need to know the alias anyways so it does not make much sense to
generate it inside of this function.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:58 +02:00
Peter Krempa
8a5cd05b55 qemu: command: Don't generate alias for TLS private key password secret
qemuBuildTLSx509CommandLine has no business guessing which alias should
be used. The alias needs to be passed in.

Note that there's a lingering bad design of this, since the secret
object alias is based on the device name and not on the fact that the
secret is used for decrypting of the TLS private key. If we ever add
authentication for chardevs this will bite us.

Thankfully disk code does not support encrypted private keys for TLS so
it can be happily refactored there.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:58 +02:00
Peter Krempa
9083586b21 qemu: domain: Set up disk TLS alias when preparing TLS setup
Move the TLS object alias setup earlier. Also make sure that the alias
is not overwritten on hotplug.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:58 +02:00
Peter Krempa
da49ff2c01 qemu: hotplug: Allow passing in NULL 'tlsAlias' to qemuDomainGetTLSObjects
Some callers will not need to generate the alias again.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:58 +02:00
Peter Krempa
d23fd61836 qemu: hotplug: Don't mandate passing of 'secAlias' in qemuDomainGetTLSObjects
For some reason the function returned an error if secAlias was not
passed in. It's not an error, in fact it's desired.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:58 +02:00
Peter Krempa
7b19f63e5d conf: Don't encode matrix of storage protocols supporting TLS in the parser
Always parse the 'tls' source field and let the drivers decide whether
they support it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:58 +02:00
Peter Krempa
aa163d2513 qemu: domain: Forbid TLS setup for disk protocols not supporting it
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:58 +02:00
Peter Krempa
3f5054f145 qemu: domain: Use switch statement in qemuDomainPrepareDiskSourceTLS
Select protocol using a switch with all cases enumerated. This will
simplify checking unsupported protocols and adding new support.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:58 +02:00
Peter Krempa
8db9b4f9a7 qemu: domain: Process only one object in qemuDomainPrepareDiskSourceTLS
Remove the loop from qemuDomainPrepareDiskSourceTLS and rename it to
qemuDomainPrepareStorageSourceTLS. Currently there is no backing chain
to prepare so fixing one device is equivalent. In the future it will be
reused in a function which will do the looping.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:58 +02:00
Peter Krempa
2396774b6a qemu: domain: Separate setup of TLS for VXHS disks from qemuDomainPrepareDiskSourceTLS
Split out the code into a separate function so that all steps for a
storage protocol are contained and the original function is easily
extendable.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:58 +02:00
Peter Krempa
2e22a5618c qemu: domain: aggregate setup of disk drive options for -drive
When using blockdev the approach to base aliases will change. Add a
helper function that will aggregate all code which needs to be called
with the disk alias for the -drive to setup internal data.

qemuDomainSecretDiskPrepare wrapper is no longer necessary as the
contents were moved to a function which is designed to use the old
aliases.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:58 +02:00
Peter Krempa
88860bb9d9 qemu: domain: Split validation and setup of the virStorageSource
Remove the call to the validating function from the function which sets
stuff up.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:58 +02:00
Peter Krempa
9b6a636d49 qemu: domain: don't loop through images in qemuDomainPrepareDiskSourceChain
Convert the function to just prepare data for the disk. Callers need to
do the looping since there's more to do than just copy the data around.

The code path in qemuDomainPrepareDiskSource doesn't need to loop over
the chain yet, since there currently is no chain at this point. This
will be addressed later in the blockdev series where we will setup much
more stuff.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:58 +02:00
Peter Krempa
a522c3044b qemu: domain: Properly setup data relevant for top disk image
qemuDomainPrepareDiskSourceChain should set up the disk zero detection
mode only for the top level image. Since it's invoked also for the
middle of the chain we need to check that it's really only the top level
image.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:57 +02:00
Peter Krempa
3b5181b731 qemu: domain: Regenerate alias for the TLS x509 credential object
When restarting libvirt would previously lose the alias of the x509
certificate object. Upon unplug we would then not delete the
corresponding objects.

Restore the alias if we know it should be there.

Luckily for disks we don't support encrypted TLS environment, so there's
no need to regenerate the 'secret' alias for decryption.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:57 +02:00
Peter Krempa
1f1aa21cb9 qemu: domain: Store and restore TLS object alias of a disk
Libvirt uses the stored alias to detach the TLS x509 object on disk
unplug. As the alias was not stored, the object would not be detached
if unplugging disks after libvirtd restart.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:57 +02:00
Peter Krempa
5e8218fad7 qemu: hotplug: Use 'tlsAlias' to see whether to detach the disk
Using 'haveTLS' to do this is pointless if the alias is not set.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:57 +02:00
Peter Krempa
dbb4ff0919 qemu: hotplug: Don't try to infer secret object alias/presence
Now that we remember the alias we've used to attach the secret objects
we should reuse them rather than trying to infer them from the disk
configuration.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:57 +02:00
Peter Krempa
7c6b00b8fe qemu: domain: Regenerate auth/enc secret aliases when restoring status XML
Previously we did not store the aliases but rather re-generated them
when unplug was necessary. This is very cumbersome since the knowledge
when and which alias to use needs to be stored in the hotplug code as
well.

While this patch will not strictly improve this situation since there
still will be two places containing this code it at least will allow to
remove the mess from the disk-unplug code and will prevent introducing
more mess when adding blockdev support.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:57 +02:00
Peter Krempa
ecd785dd84 tests: qemustatusxml2xml: Add test data for re-generating LUKS/auth aliases
Add tests for upcoming re-generation of aliases for the secret objects
used by qemu when upgrading libvirt.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:57 +02:00
Peter Krempa
f95baa3813 qemu: Store and parse disk authentication and encryption secret alias
Rather than trying to figure out which alias was used, store it in the
status XML.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:13:49 +02:00
Peter Krempa
04c890cc8b qemu: domain: Don't delete aliases of secret objects associated with disks
We need to reference the secret objects by name when hot-unplugging
disks. Don't remove the alias so that it does not need to be
recalculated.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:11:12 +02:00
Peter Krempa
02b031a475 qemu: domain: Add helpers for partially clearing qemuDomainSecretInfoPtr
It's desired to keep the alias around to allow referencing of the secret
object used with qemu. Add set of APIs which will destroy all data
except the alias.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:11:12 +02:00
Peter Krempa
c750e1c491 qemu: domain: Use qemuDomainSecretInfoNewPlain only for unencrypted secrets
Move the logic that determines which secret shall be used into the
caller and make this function work only for plain secrets.

This untangles the control flow by only checking relevant data.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:11:12 +02:00
Peter Krempa
56bb7bb3b6 qemu: domain: Setup disk encryption password secret via new helper
The encryption secret is setup only for LUKS and thus requires the new
approach. Use qemuDomainSecretInfoNew for initializing it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:11:12 +02:00
Peter Krempa
7f08be4dfa qemu: domain: Add new function to set up encrypted secrets only
Some code paths can't use the unencrypted secret. Add a helper which
checks and sets up an encrypted secret only and reuse it when setting up
the secret to decrypt the TLS private key in qemuDomainSecretInfoTLSNew.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:11:12 +02:00
Peter Krempa
5882a6d72f qemu: domain: Rename and fix docs for qemuDomainSecretInfoNew
Rename it to qemuDomainSecretInfoNewPlain and annotate that it also may
set up a 'plain' secret in some cases. This will eventually be
refactored further.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:11:12 +02:00
Peter Krempa
a7f49b82bf qemu: domain: Rename qemuDomainSecretDiskCapable
The function checks whether the storage source requires authentication
secret setup. Rename it accordingly.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:11:12 +02:00
Peter Krempa
6a2faa1344 qemu: domain: Reuse code when preparing hostdev auth secrets
Use qemuDomainSecretStorageSourcePrepare in
qemuDomainSecretHostdevPrepare as it uses a virStorageSource to prepare
the authentication secret object data.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:11:12 +02:00
Peter Krempa
2d309f961e qemu: domain: Add helper to check if encrypted secrets can be used with a VM
This helper checks that the vm has the master key setup and libvirt
supports the given encryption algorithm.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:11:12 +02:00
Peter Krempa
538703ba6f tests: qemublock: Switch to qcow2+luks in test files
The next patch will forbid the old qcow2 encryption completely. Remove
it from the tests.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:11:12 +02:00
Peter Krempa
3bf1959524 tests: qemuxml2argv: Verify that disk secret alias is correct with user-aliases
Change the disk encryption type to qcow2+luks so that the appropriate
secret objects are generated. This tests that the proper alias is used
for the passphrase secret object.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:11:12 +02:00
Peter Krempa
e1b0c4bf65 tests: qemuxml2argv: Drop disk encryption from 'interface-server' test
The disk encryption part is no way relevant to the rest of the test so
drop it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-05 08:11:12 +02:00
Ján Tomko
09e44dcaaa qemu: implement vsock coldplug/coldunplug
https://bugzilla.redhat.com/show_bug.cgi?id=1291851

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-05 07:51:18 +02:00
Ján Tomko
f3d960391c qemu: implement vsock hotunplug
https://bugzilla.redhat.com/show_bug.cgi?id=1291851

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-05 07:51:18 +02:00
Ján Tomko
0b9d4970b4 conf: introduce virDomainVsockDefEquals
Introduce a function for comparing two vsock definitions.

https://bugzilla.redhat.com/show_bug.cgi?id=1291851

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-05 07:51:18 +02:00
Ján Tomko
8eaa31c3ad qemu: implement vsock hotplug
Allow hotplugging the vsock device.

https://bugzilla.redhat.com/show_bug.cgi?id=1291851

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-05 07:51:13 +02:00
Ján Tomko
7ecafb4a2b qemu: Add prefix for vsock vhostfd
Alter qemuBuildVsockDevStr to allow passing a prefix for
the vhostfd file descriptor name. Domain startup uses
the numeric value of fd without a prefix, but hotplug
will need to use a prefix because passed file descriptor
names cannot start with a number.

https://bugzilla.redhat.com/show_bug.cgi?id=1291851

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-05 07:34:11 +02:00
Ján Tomko
5048aa527a qemu: split out qemuBuildVsockDevStr
Split out the device string building to allow reuse for hotplug.

https://bugzilla.redhat.com/show_bug.cgi?id=1291851

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-05 07:34:10 +02:00
Jim Fehlig
076a2b4096 tests: xmconfigtest: add tests for cmdline formating
Commit 656151bf fixed formatting of the <cmdline> element. Perhaps it
would have been noticed and fixed earlier if we had a test. With this
change, all possible cases of formatting <cmdline> from xmconfig are
covered

1. no 'extra=' or 'root=' in xm.cfg
2. 'extra=' but no 'root=' in xm.cfg
3. 'root=' but no 'extra=' in xm.cfg
4. both 'root=' and 'extra=' in xm.cfg

Case 1 is covered by all existing paravirt tests since they have no
'extra=' or 'root='. Case 2 is covered by adding 'extra=' to a few
of the existing paravirt tests. Cases 3 and 4 are covered by new
tests that only test conversion of xm.cfg to xml.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-06-04 20:59:16 -06:00
Jim Fehlig
67c56f6e65 libxl: fix leaking logfile fds
Per-domain log files were introduced in commit a30b08b717. The FILE
objects associated with these log files are stored in a hash table
using domid as a key. When a domain is shutdown, destroyed, or
otherwise powered-off, the FILE object is removed from the hash table,
where the free function will close the FILE.

Unfortunately the call to remove the FILE from the hash table occurs
after setting domid=-1 in the libxlDomainCleanup() function. The
object is never removed from the hash table, the free function is
never called, and the underlying fd is leaked. Fix by removing the
FILE object from the hash table before setting domid=-1.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-04 16:07:39 -06:00
Jiri Denemark
a1b43af0ba Post-release version bump to 4.5.0
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
2018-06-04 23:13:13 +02:00
Daniel Veillard
b51249bffe Release of libvirt-4.4.0
* docs/news.xml: updated for release

Signed-off-by: Daniel Veillard <veillard@redhat.com>
2018-06-04 22:23:52 +02:00
Ján Tomko
8a7003f669 qemu: check for QEMU_CAPS_DEVICE_VHOST_VSOCK
My commit b8b42ca added support for formatting the vsock
command line without actually checking if it's supported.

Add it to the per-device validation function.

https://bugzilla.redhat.com/show_bug.cgi?id=1291851

Reported-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2018-06-04 21:42:40 +02:00
Martin Kletzander
52a4078921 docs: Use proper article in formatdomain.html.in
It's "a hard_limit", not "an hard_limit".  Probably that was just a typo.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
2018-06-04 15:33:19 +02:00
Jiri Denemark
e36b1f6583 qemu: Fix reporting completed migration stats on destination
This has been broken since commit v4.0.0-165-g93412bb827 which added
jobInfo->statsType enum to distinguish various statistics types. During
migration the type will always be QEMU_DOMAIN_JOB_STATS_TYPE_MIGRATION,
however the destination code consuming the statistics data from
migration cookie failed to properly set the type. So even though
everything was filled in, the type remained *_NONE and any attempt to
fetch the statistics data of a completed migration on the destination
host failed.

https://bugzilla.redhat.com/show_bug.cgi?id=1584071

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
2018-06-01 17:55:44 +02:00
Jiri Denemark
55e0cc2a42 spec: Fix requirement for "tc" on new distros
At least since Fedora 26 (maybe earlier, but we don't support older
Fedora releases), the "tc" tool is provided by a separate iproute-tc
package.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
2018-06-01 17:38:37 +02:00
Ján Tomko
19e5a81f21 news: add vsock
Document the addition of vsock.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Acked-by: Peter Krempa <pkrempa@redhat.com>
2018-06-01 14:31:44 +02:00
Ján Tomko
023ea2a869 conf: rename <vsock><source> to <vsock><cid>
To avoid the <source> vs. <target> confusion,
change <source auto='no' cid='3'/> to:
<cid auto='no' address='3'/>

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Acked-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-06-01 14:31:19 +02:00
Michal Privoznik
455e6d57b2 news: Document two new features introduced in this release
The first feature is SCSI persistent reservation, the other is
support for multihead screenshots.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-06-01 13:39:17 +02:00
Peter Krempa
105bcdde76 qemu: hotplug: Fix detach of disk with managed persistent reservations
In commit 8bebb2b735 I've refactored how the detach of disk with a
managed persistent reservations object is handled. After the commit if
any disk with a managed PR object would be removed libvirt would also
attempt to remove the shared 'pr-manager-helper' object potentially used
by other disks.

Thankfully this should not have practical impact as qemu should reject
deletion of the object if it was still used and the rest of the code is
correct.

Fix this by removing the disk from the definition earlier and checking
if the shared/managed pr-manager-helper object is still needed.

This basically splits the detach code for the managed PR object from the
unmanaged ones. The same separation will follow for the attachment code
as well as it greatly simplifies -blockdev support for this.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-05-31 16:41:40 +02:00
Michal Privoznik
5276ec712a testUpdateQEMUCaps: Don't leak host cpuData
When preparing qemuCaps for test cases the following is
happening:

qemuTestParseCapabilitiesArch() is called, which calls
virQEMUCapsLoadCache() which in turn calls
virQEMUCapsInitHostCPUModel() which sets qemuCaps->kvmCPU and
qemuCaps->tcgCPU.

But then the code tries to update the capabilities:

testCompareXMLToArgv() calls testUpdateQEMUCaps() which calls
virQEMUCapsInitHostCPUModel() again overwriting previously
allocated memory. The solution is to free host cpuData in
testUpdateQEMUCaps().

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2018-05-31 15:20:57 +02:00
Xiao Feng Ren
cc9c75f562 conf: fixup USB input bus check
This patch fixes the USB input bus check, the bug was introduced by commit 317badb

Signed-off-by: Xiao Feng Ren <renxiaof@linux.vnet.ibm.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-31 12:35:40 +02:00
Erik Skultety
e0fae78ad5 audit: Enforce enum switch type cast in virDomainAuditHostdev
There was a missing enum for mdev causing a strange 'unknown device type'
warning when hot-plugging mdev.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1583927

Signed-off-by: Erik Skultety <eskultet@redhat.com>
2018-05-31 12:09:50 +02:00
Michal Privoznik
879cff55ac qemuxml2argvtest: Don't initialize qemuCaps twice
There's no point in calling testInitQEMUCaps() (which sets
info.qemuCaps) only to overwrite (and leak) it on the very next
line.

==12962== 296 (208 direct, 88 indirect) bytes in 1 blocks are definitely lost in loss record 265 of 331
==12962==    at 0x4C2CF26: calloc (vg_replace_malloc.c:711)
==12962==    by 0x5D28D9F: virAllocVar (viralloc.c:560)
==12962==    by 0x5D96AB4: virObjectNew (virobject.c:239)
==12962==    by 0x56DB7C7: virQEMUCapsNew (qemu_capabilities.c:1480)
==12962==    by 0x112A5B: testInitQEMUCaps (qemuxml2argvtest.c:361)
==12962==    by 0x1371C8: mymain (qemuxml2argvtest.c:2871)
==12962==    by 0x13AD0B: virTestMain (testutils.c:1120)
==12962==    by 0x1372FD: main (qemuxml2argvtest.c:2883)

Removing the function call renders @gic argument unused therefore
it's removed from the macro (and all its callers).

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-31 11:33:45 +02:00
Michal Privoznik
5f18b9ba8d virDomainDefParseXML: Free @tmp when parsing genid
We need to free return value of virXPathString().

==12962== 37 bytes in 1 blocks are definitely lost in loss record 156 of 331
==12962==    at 0x4C2AF0F: malloc (vg_replace_malloc.c:299)
==12962==    by 0x91E8439: strdup (in /lib64/libc-2.25.so)
==12962==    by 0x5DBD551: virStrdup (virstring.c:977)
==12962==    by 0x5DD3E5E: virXPathString (virxml.c:84)
==12962==    by 0x5E178AB: virDomainDefParseXML (domain_conf.c:19110)
==12962==    by 0x5E1E985: virDomainDefParseNode (domain_conf.c:20885)
==12962==    by 0x5E1E7CB: virDomainDefParse (domain_conf.c:20827)
==12962==    by 0x5E1E871: virDomainDefParseFile (domain_conf.c:20853)

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-31 09:23:42 +02:00
Ján Tomko
f8466296e4 conf: fix vsock memory leaks
Introduced by:
commit d4abb7b45d
    conf: introduce <vsock> element
commit b8b42ca036
    qemu: add support for vhost-vsock-pci

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-30 16:06:04 +02:00
Ján Tomko
d9fcb4cfa1 qemu: free migEvent in qemuMigrationCapsCheck
We allocate a temporary bitmap but never free it.

Introduced by <commit 1f8a1a9>:
    qemu: Do not use qemuMonitorSetMigrationCapability

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-30 15:56:39 +02:00
Ján Tomko
f8c4868a52 tests: initialize some variables
Found by cppcheck:
[tests/metadatatest.c:284]: (error) Uninitialized variable: test
[tests/objecteventtest.c:855]: (error) Uninitialized variable: test

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2018-05-30 15:54:58 +02:00
Jiri Denemark
7f8e1cb68f spec: Fix permissions of nwfilter XMLs
The nwfilter XMLs in /etc are defined as %ghost in the spec file, which
means rpm will not install them, but it will record its existence and
permissions in the database. During installation the files are copied in
a %post scriptlet from /usr/share/libvirt/nwfilter, but once libvirtd is
restarted, it will rewrite the files to add generated UUIDs.

While RPM recorded 644 mode for the XMLs, libvirt saves them with 600
and thus any future attempt to verify the libvirt-daemon-config-nwfilter
package would fail. We need to tell RPM the ghost files are supposed to
have 600 permissions.

https://bugzilla.redhat.com/show_bug.cgi?id=1559284

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-05-30 11:21:28 +02:00
John Ferlan
57d6df39bd storage: Add capability to use LUKS encryption for disk backend
https://bugzilla.redhat.com/show_bug.cgi?id=1560946

Similar to the the Logical backend, use qemu-img on the created
disk partition device to set up for LUKS encryption. Secret mgmt
for the device can be complicated by a reboot possibly changing
the path to the device if the infrastructure changes.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Peter Krempa <pkrempa@redhat.com>
2018-05-29 10:48:51 -04:00
Ján Tomko
b8b42ca036 qemu: add support for vhost-vsock-pci
Create a new vsock endpoint by opening /dev/vhost-vsock,
set the requested CID via ioctl (or assign a free one if auto='yes'),
pass the file descriptor to QEMU and build the command line.

https://bugzilla.redhat.com/show_bug.cgi?id=1291851
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-29 15:42:04 +02:00
Ján Tomko
950c46f1a4 util: create virvsock.c
A file for vsock-related helper functions.
virVsockSetGuestCid to set an already-known CID,
virVsockAcquireGuestCid that will use the first available CID

https://bugzilla.redhat.com/show_bug.cgi?id=1291851

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-29 15:42:03 +02:00
Ján Tomko
f672fa3b1d Introduce QEMU_CAPS_DEVICE_VHOST_VSOCK
Add a new capability flag for vhost-vsock-device

https://bugzilla.redhat.com/show_bug.cgi?id=1291851

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-29 15:42:03 +02:00
Ján Tomko
c310a5567b qemu: add private data for vsock
Introduce a structure and a class that will be used to store
the private data.

https://bugzilla.redhat.com/show_bug.cgi?id=1291851

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-29 15:42:03 +02:00
Ján Tomko
d4abb7b45d conf: introduce <vsock> element
Add a new 'vsock' element for the vsock device.
The 'model' attribute is optional.
A <source cid> subelement should be used to specify the guest cid,
or <source auto='yes'/> should be used.

https://bugzilla.redhat.com/show_bug.cgi?id=1291851

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-29 15:42:03 +02:00
Ján Tomko
c20bb30e8d conf: add privateData to virDomainVsockDef
An object for storing driver-specific data in the vsock definition.

https://bugzilla.redhat.com/show_bug.cgi?id=1291851
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-29 15:42:03 +02:00
Ján Tomko
3858da2a14 Introduce virDomainVsockDef
A type to represent the new vsock device.
Also implement an allocation function to allow future addition
of private data.

https://bugzilla.redhat.com/show_bug.cgi?id=1291851

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-29 15:42:03 +02:00
John Ferlan
ff57a713a4 storage: Remove rwlocks during virStoragePoolObjListForEach
Remove the locks since they are unnecessary and would cause
a hang for a driver reload/restart when a transient pool was
previously active as a result of the call:

virStoragePoolUpdateInactive:
...
    if (!virStoragePoolObjGetConfigFile(obj)) {
        virStoragePoolObjRemove(driver->pools, obj);
...

stack trace:

Thread 17 (Thread 0x7fffcc574700 (LWP 12465)):
...pthread_rwlock_wrlock
...virRWLockWrite
...virObjectRWLockWrite
...virStoragePoolObjRemove
...virStoragePoolUpdateInactive
...storagePoolUpdateStateCallback
...virStoragePoolObjListForEachCb
...virHashForEach
...virStoragePoolObjListForEach
...storagePoolUpdateAllState
...storageStateInitialize
...virStateInitialize
...daemonRunStateInit
...virThreadHelper
...start_thread
...clone

Introduced by commit id 4b2e0ed6e3.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-29 08:36:30 -04:00
Peter Krempa
1bbb5dddbb qemu: domain: Pass 'qemuCaps' to post parse callbacks when parsing status XML
When status XML was parsed the post-parse callbacks could not access
qemu caps and potentially upgrade the definition according to the
present caps. Implement the callback to pass it in.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-05-29 10:23:24 +02:00
Peter Krempa
ac6f736ed1 conf: domain: Allow passing in 'parseOpaque' for post-parse of status XML
The status XML parser function virDomainObjParseXML could not pass in
parseOpaque into the post parse callbacks. Add a callback which will
allow hypervisor drivers to fill it from the 'virDomainObj' data.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-05-29 10:23:24 +02:00
Peter Krempa
ebd2983e25 conf: domain: Invoke post-parse callbacks after parsing private XML parts
When parsing status XML the post-parse callbacks can't access any
private data present in the status XML as the private bits were parsed
after invoking post-parse callbacks.

Move the invocation so that everything is parsed first.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-05-29 10:23:24 +02:00
Ján Tomko
fe9454c719 conf: remove 'bootHash' completely
Its only use is now to check for duplicate boot order values,
which is now also done in virDomainDefPostParseCommon.

Remove it completely.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-29 10:23:05 +02:00
Peter Krempa
a17b088218 conf: remove 'bootHash' from the post-parse infrastructure
As the function signature of virDomainDefPostParseInternal does not
differ from virDomainDefPostParse now, the wrapper can be dropped.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-29 10:22:39 +02:00
Ján Tomko
5b75a4a80d conf: introduce virDomainDefBootOrderPostParse
Move the check for boot elements into a separate function
and remove its dependency on the parser-supplied bootHash table.

Reconstructing the hash table from the domain definition
effectively duplicates the check for duplicate boot order
values, also present in virDomainDeviceBootParseXML.

Now it will also be run on domains created by other means than XML
parsing, since it will be run even for code paths that did not supply
the bootHash table before.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-29 10:22:08 +02:00
Ján Tomko
8e5e5a95a5 vmx: add VIR_DOMAIN_DEF_FEATURE_NO_BOOT_ORDER
Further patches will introduce validation and a default setting
of def->os.bootDevs in postParse.

Introduce a feature flag to opt out of this and set it in the vmx
driver, otherwise we would be adding it <boot dev='hd'/> into every
vmx config despite having no way to change it.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-29 10:09:32 +02:00
Michal Privoznik
16782dc329 qemu: Don't build cache= cmd line for scsi-block
Trying to set any cache for <disk device='lun'/> makes no sense.
Such disk translates into -device scsi-block on the command line
and the device lacks any cache setting because it's merely a
middle man between qemu and real SCSI device.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-28 17:29:20 +02:00
Jiri Denemark
75e7ab1ef5 news: Mention new CPU related APIs
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 16:00:20 +02:00
Jiri Denemark
8de7650ef1 qemu: Implement virConnectBaselineHypervisorCPU
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com>
2018-05-28 15:59:11 +02:00
Jiri Denemark
4eebaa4ca3 qemu_capabilities: Introduce virQEMUCapsGetCPUFeatures
The function creates a list of all (or migratable only) CPU features
supported by QEMU. It works by looking at the CPU model info returned by
query-cpu-model-expansion QMP command.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com>
2018-05-28 15:59:11 +02:00
Jiri Denemark
7fb950958a cpu: Add optional list of allowed features to virCPUBaseline
When computing a baseline CPU for a specific hypervisor we have to make
sure to include only CPU features supported by the hypervisor. Otherwise
the computed CPU could not be used for starting a new domain.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com>
2018-05-28 15:59:11 +02:00
Jiri Denemark
f277fb39b7 cpu: Update style in virCPUBaseline
To make it more consistent with the rest of the CPU driver code.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com>
2018-05-28 15:59:10 +02:00
Jiri Denemark
f8c9f6ea2d cpu: Add explicit arch parameter for virCPUBaseline
This is required for virCPUBaseline to accept a list of guest CPU
definitions since they do not have arch set.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com>
2018-05-28 15:59:10 +02:00
Jiri Denemark
388a5c1400 cpu_x86: Add support for passing guest CPUs to virCPUx86Baseline
Modern host CPU models from domain capabilities XMLs are reported as
guest CPU definitions with feature policies. This patch updates
virCPUx86Baseline to properly handle such CPU models.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 15:59:10 +02:00
Jiri Denemark
5ed6cf96bc cpu: Rename cpuBaseline as virCPUBaseline
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 15:59:10 +02:00
Jiri Denemark
6d27148ae1 virsh: Introduce new hypervisor-cpu-baseline command
This command is a virsh wrapper for virConnectBaselineHypervisorCPU.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 15:59:10 +02:00
Jiri Denemark
e60210345a remote: Implement virConnectBaselineHypervisorCPU
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 15:59:10 +02:00
Jiri Denemark
7d0a1efcd6 Introduce virConnectBaselineHypervisorCPU public API
The new API computes the most feature-rich CPU which is compatible with
all given CPUs and can be provided by the specified hypervisor. It is a
more useful version of virConnectBaselineCPU, which doesn't consider any
hypervisor capabilities when computing the best CPU.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com>
2018-05-28 15:58:05 +02:00
Jiri Denemark
748246f3f5 qemu: Implement virConnectCompareHypervisorCPU
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 15:58:05 +02:00
Jiri Denemark
8c4ccf9d2e virsh: Introduce new hypervisor-cpu-compare command
This command is a virsh wrapper for virConnectCompareHypervisorCPU.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com>
2018-05-28 15:58:05 +02:00
Jiri Denemark
bbe1ad5b6c remote: Implement virConnectCompareHypervisorCPU
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 15:58:05 +02:00
Jiri Denemark
24a41aa643 Introduce virConnectCompareHypervisorCPU public API
This new API compares the given CPU description with the CPU the
specified hypervisor is able to provide on the host. It is a more useful
version of virConnectCompareCPU, which compares the CPU definition with
the host CPU without considering any specific hypervisor and its
abilities.

https://bugzilla.redhat.com/show_bug.cgi?id=1559832
https://bugzilla.redhat.com/show_bug.cgi?id=1559835

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com>
2018-05-28 15:55:17 +02:00
Jiri Denemark
da3bfc9ffc qemu_capabilities: Introduce virQEMUCapsCacheLookupDefault
virConnectGetDomainCapabilities needs to lookup QEMU capabilities
matching a specified binary, architecture, virt type, and machine type
while using default values when any of the parameters are not provided
by the user. Let's extract the lookup code into
virQEMUCapsCacheLookupDefault to make it reusable.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 15:54:10 +02:00
Jiri Denemark
d0ff5ce43b vshExtractCPUDefXML: Accept domain capabilities XML
The domain capabilities XML contains host CPU model tailored to a
specific hypervisor and since it's enclosed in <mode name='host-model'>
element rather then the required <cpu> it's impossible to directly use
the host CPU model as an input to, e.g., cpu-compare command. To make
this more convenient, vshExtractCPUDefXML now accepts full domain
capabilities XML and automatically transforms the host CPU models into
the form accepted by libvirt APIs.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 15:54:10 +02:00
Jiri Denemark
95ef9ceea4 Improve documentation of virConnectGetCPUModelNames
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Kashyap Chamarthy <kchamart@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 15:54:10 +02:00
Jiri Denemark
ccbd59931f virsh: Enhance documentation of cpu-models command
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Kashyap Chamarthy <kchamart@redhat.com>
2018-05-28 15:54:10 +02:00
Jiri Denemark
f510f893fe virsh: Enhance documentation of cpu-compare command
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Kashyap Chamarthy <kchamart@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 15:54:10 +02:00
Jiri Denemark
c84726fbdd virsh: Extract common code from cmdCPU{Compare,Baseline}
Both cpu-compare and cpu-baseline commands accept more that just CPU
definition XML(s). For users' convenience they are able to extract the
CPU definition(s) even from domain XML or capabilities XML. The main
differences between the two commands is in the number of CPU definitions
they expect: cpu-compare wants only one CPU definition while
cpu-baseline expects one or more CPUs.

The extracted code forms a new vshExtractCPUDefXML function.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 15:54:10 +02:00
Jiri Denemark
361989bd18 virsh: Move cpu-{baseline,compare} commands
Similarly to cpu-models these two commands do not operate on a domain
and should be listed in the "Host and Hypervisor" commands section.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 15:54:10 +02:00
Michal Privoznik
b29fa23ea9 news: Document new API introduction
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 13:08:53 +02:00
Michal Privoznik
150d0930f8 qemu: Implement virDomainDetachDeviceAlias
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 13:08:52 +02:00
Michal Privoznik
5c81c342a7 qemu_hotplug: Allow asynchronous detach
The virDomainDetachDeviceAlias API is designed so that it only
sends detach request to qemu. It's user's responsibility to wait
for DEVICE_DELETED event, not libvirt's. Add @async flag to
qemuDomainDetach*Device() functions so that caller can chose if
detach is semi-synchronous (old virDomainDetachDeviceFlags()) or
fully asynchronous (new virDomainDetachDeviceFlags()).

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 13:08:52 +02:00
Michal Privoznik
a7837f92cc qemuDomainDetachDeviceLiveAndConfig: Avoid overwriting @ret
The fact that we are overwriting @ret multiple times makes it
difficult to see what is actually happening here. Follow our
traditional pattern where @ret is initialized to -1, and set to 0
only in case we know we succeeded.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 13:08:51 +02:00
Michal Privoznik
604f3ff0c0 qemuDomainDetachDeviceLiveAndConfig: Don't use driver->caps directly
Funny, we obtain driver caps at the beginning of the function,
but then for unknown reason access driver->caps directly.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 13:08:50 +02:00
Michal Privoznik
e73f6b4d66 qemu_hotplug: Use more gotos in qemuDomainDetach*Device
We are overwriting @ret a lot. It makes hard to see what is
actually going on. Use more gotos. Two functions are fixed here:
qemuDomainDetachShmemDevice() and qemuDomainDetachWatchdog().

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 13:08:49 +02:00
Michal Privoznik
ee87e5de36 qemuDomainDetachWatchdog: Don't release watchdog address twice
On watchdog unplug, when qemu doesn't support DEVICE_DELETED event
(or couple of other reasons) we do two things:

1) release watchdog device address,
2) call qemuDomainRemoveWatchdog() which does 1) again.

This is potentially dangerous.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 13:08:45 +02:00
Michal Privoznik
c2fa7e7ffc qemuDomainDetachShmemDevice: Don't release shmem address twice
On shmem unplug, when qemu doesn't support DEVICE_DELETED event
(or couple of other reasons) we do two things:

1) release shmem device address,
2) call qemuDomainRemoveShmemDevice() which does 1) again.

This is potentially dangerous.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 13:08:44 +02:00
Michal Privoznik
aac088d998 qemuDomainRemoveChrDevice: Release device address
Instead of releasing address only sometimes in
qemuDomainDetachChrDevice() let's release it whenever the device
is actually removed from the domain definition.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 13:08:43 +02:00
Michal Privoznik
856fb16492 virsh: Expose virDomainDetachDeviceAlias
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 13:08:42 +02:00
Michal Privoznik
18f2e9d500 remote: Implement virDomainDetachDeviceAlias
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 13:08:41 +02:00
Michal Privoznik
007f500a23 Introduce virDomainDetachDeviceAlias API
When detaching a device it can be uniquely identified by its
alias. Instead of misusing virDomainDetachDeviceFlags which has
the same signature introduce new function.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-28 13:08:38 +02:00
John Ferlan
4804a4db33 schema: Add missing block data for nodedev
https://bugzilla.redhat.com/show_bug.cgi?id=1566416

Commit id 'fe2af45b' added output for logical_block_size and
num_blocks for both removeable and fixed storage, but did not
update the nodedev capability causing virt-xml-validate to fail.
It's listed as optional only because it only prints if the
sizes are > 0. For a CDROM drive the values won't be formatted.

Update the nodedevxml2xmltest in order to output the values
for storage based on the logic from udevProcessRemoveableMedia
and udevProcessSD with respect to the logical_blocksize and
num_blocks calculations.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by Michal Privoznik <mprivozn@redhat.com>
2018-05-25 09:36:42 -04:00
John Ferlan
c1a0601deb schema: Fix capability grammar for pagesElem
https://bugzilla.redhat.com/show_bug.cgi?id=1572491

Commit id '02129b7c0' added a single pagesElem for slightly
different purposes. One usage was an output for host page size
listing and the other for NUMA supported page sizes. For the
former, only the pages unit and size are formatted, while for
the latter the pages unit, size, and availability data is formatted.

The virt-xml-validate would fail because it expected something
extra in the host page size output. So split up pagesElem a bit
and create pagesHost and pagesNuma for the differences.

Modify some capabilityschemadata output to have the output - even
though the results may not be realistic with respect to the
original incarnation of the data.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by Michal Privoznik <mprivozn@redhat.com>
2018-05-25 09:36:42 -04:00
John Ferlan
f97c4cc5e1 schema: Add microcode element to capability grammar
https://bugzilla.redhat.com/show_bug.cgi?id=1572491

Commit id 'd2440f3b5' added printing the <microcode> for the
capabilities, but didn't update the capabilities schema.

While at it, update capabilityschemadata for caps-test2
and caps-test3 to output some value for validation.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by Michal Privoznik <mprivozn@redhat.com>
2018-05-25 09:36:32 -04:00
John Ferlan
8d84578035 schema: Add vzmigr for host migrate transport capability
Commit id '0eced74f3' added vzmigr as a valid option for
virCapabilitiesAddHostMigrateTransport, but didn't update
the capabilities schema resulting in possible virt-xml-validate
failure.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by Michal Privoznik <mprivozn@redhat.com>
2018-05-25 09:33:51 -04:00
John Ferlan
4cfa9309dc schema: Add rdma for host migrate transport capability
https://bugzilla.redhat.com/show_bug.cgi?id=1572491

Commit id 'b3fd95e36' added rdma as a valid option for
virCapabilitiesAddHostMigrateTransport, but didn't update
the capabilities schema resulting in possible virt-xml-validate
failure.

While at it, update the capabilityschemadata for caps-qemu-kvm

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by Michal Privoznik <mprivozn@redhat.com>
2018-05-25 09:33:44 -04:00
John Ferlan
dcd9db75fe schema,tests: Use vpxmigr for host migrate transport capability
Commit id 'e4938ce2f' changed the esx_driver to use 'vpxmigr'
instead of esx for virCapabilitiesAddHostMigrateTransport, so
update the capabilities to allow virt-xml-validate to pass and
update the test to use the newer name.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by Michal Privoznik <mprivozn@redhat.com>
2018-05-25 09:33:39 -04:00
John Ferlan
7ed5984386 schema: Remove xenmigr from host migrate transport capability
Commit id '1dac5fbb' removed xenmigr as a capability option
for virCapabilitiesAddHostMigrateTransport but didn't update
the schema resulting in possible failure for virt-xml-validate.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by Michal Privoznik <mprivozn@redhat.com>
2018-05-25 09:33:32 -04:00
John Ferlan
39d76c6856 schema: Add physical sizing element for storagevol grammar
https://bugzilla.redhat.com/show_bug.cgi?id=1572491

Commit id '78661cb' added a physical output, but failed to update
the schema resulting in a failure from virt-xml-validate.

While at it - update the storagevolschemadata for the output.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by Michal Privoznik <mprivozn@redhat.com>
2018-05-25 09:32:37 -04:00
John Ferlan
e288080ae0 disk: Allow settling to occur after reading partitions
https://bugzilla.redhat.com/show_bug.cgi?id=1400475

In order to avoid a possible error as a result of kernel interactions
with the partition helper, let's use virWaitForDevices to force things
to settle down before attempting to open and read the partition. This
is related to https://bugzilla.redhat.com/show_bug.cgi?id=1264719.

Although perhaps overkill to have too many places to settle, since
we know that the act of reading the partitions via libvirt_parthelper
will cause udev activity/events - we just need to ensure udev has
been settled before proceding with usage of the device.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-25 08:26:41 -04:00
John Ferlan
509abc40d4 docs: Add news article for VM Generation ID
Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-25 08:15:58 -04:00
John Ferlan
0f358fcdca domcaps: Add 'genid' to domain capabilities
Report domaincaps <features><genid supported='yes'/> if the guest
config accepts <genid/> or <genid>$GUID</genid>.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-25 08:15:58 -04:00
John Ferlan
87973a45f9 qemu: Add VM Generation ID to qemu command line
https://bugzilla.redhat.com/show_bug.cgi?id=1149445

If the domain requests usage of the genid functionality,
then add the QEMU '-device vmgenid' to the command line
providing either the supplied or generated GUID value.

Add tests for both a generated and supplied GUID value.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-25 08:15:58 -04:00
John Ferlan
c445abb52d qemu: Alter VM Generation ID for specific startup/launch transitions
Before we generate the command line for qemu, if the domain about to
be launched desires to utilize the VM Generation ID functionality, then
handle both the regenerating the GUID value for backup recovery (restore
operation) and the startup after snapshot as both require a new GUID to
be generated to allow the guest operating system to recognize the VM
is re-executing something that has already executed before.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-25 08:15:47 -04:00
John Ferlan
3005002e0e qemu: Add VM Generation ID device capability
Add the query of the device objects for the vmgenid device

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-25 08:04:57 -04:00
John Ferlan
b50efe97ad conf: Add VM Generation ID parse/format support
The VM Generation ID is a mechanism to provide a unique 128-bit,
cryptographically random, and integer value identifier known as
the GUID (Globally Unique Identifier) to the guest OS. The value
is used to help notify the guest operating system when the virtual
machine is executed with a different configuration.

This patch adds support for a new "genid" XML element similar to
the "uuid" element. The "genid" element can have two forms "<genid/>"
or "<genid>$GUID</genid>". If the $GUID is not provided, libvirt
will generate one and save it in the XML.

Since adding support for a generated GUID (or UUID like) value to
be displayed modifying the xml2xml test to include virrandommock.so
is necessary since it will generate a "known" value.

Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-25 08:04:34 -04:00
Roland Schulz
c7151b0e4d tools: virsh: Add virshCellnoCompleter.
Signed-off-by: Roland Schulz <schullzroll@gmail.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-25 10:35:51 +02:00
Jiri Denemark
11a2550c27 spec: Enable libssh on future RHEL
Future RHEL will certainly be modern enough to support libssh.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
2018-05-25 09:45:15 +02:00
Lin Ma
b9eb0145eb news: Add the event name completion
Signed-off-by: Lin Ma <lma@suse.com>
2018-05-25 08:00:33 +02:00
Peter Krempa
dd943c741e qemu: domain: Use typecasted enum in qemuDomainDeviceDefPostParse
Rather than a lot of checks use a switch statement. This optimizes the
code as if one device is matched the rest will certainly not match.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-24 18:25:30 +02:00
Peter Krempa
43afdc3e3f qemu: domain: Extract panic device def post parse code
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-24 18:25:30 +02:00
Peter Krempa
9647a95c37 qemu: domain: Extract video device def post parse code
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-24 18:25:30 +02:00
Peter Krempa
91779733de qemu: domain: Extract network device def post parse code
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-24 18:25:30 +02:00
Peter Krempa
db4dd58d6c qemu: domain: Extract disk post parse code into a function
Later on, more stuff will be added so prevent the main function growing
out of control.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-24 18:25:30 +02:00
Roland Schulz
6a58e3102b Fix indentation of virshAllocpagesPagesizeCompleter arguments.
Signed-off-by: Roland Schulz <schullzroll@gmail.com>
2018-05-24 15:56:29 +02:00
Roland Schulz
455a1a054b Add virshAllocpagesPagesizeCompleter to opts_freepages.
Signed-off-by: Roland Schulz <schullzroll@gmail.com>
2018-05-24 15:45:21 +02:00
Lin Ma
83f1e64dd3 virsh: Add event name completion to 'nodedev-event' command
Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-24 15:26:10 +02:00
Lin Ma
a9f6b8fc8c virsh-nodedev: Rename and move vshEventCallback to virshNodedevEventCallback
The next patch will use it in virsh-completer.c for returning the name
list of nodedev events.

Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-24 15:26:10 +02:00
Lin Ma
cac6d413f9 virsh: Add event name completion to 'pool-event' command
Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-24 15:26:10 +02:00
Lin Ma
237fe904e9 virsh-pool: Rename and move vshEventCallback to virshPoolEventCallback
The next patch will use it in virsh-completer.c for returning the name
list of pool events.

Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-24 15:26:02 +02:00
Lin Ma
66d6608148 virsh: Add event name completion to 'event' command
Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-24 15:13:45 +02:00
Lin Ma
05642e8bd1 virsh: Move vshEventCallback structure definition to virsh-domain.h
The next patch will use it in virsh-completer.c for returning the
strings of domain event name. At the same time, rename it to
avoid possible name clashing.

Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-24 13:36:32 +02:00
Lin Ma
266965452a virsh: Add event name completion to 'secret-event' command
The patch code originally authored by Michal Privoznik, Please refer to
https://www.redhat.com/archives/libvir-list/2018-May/msg01022.html

Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-24 13:34:18 +02:00
Lin Ma
bee2331f2b virsh-secret: Rename vshEventCallback to virshSecretEventCallback
The next patch will use it in virsh-completer.c for returning the name
list of secret events.

The patch code originally authored by Michal Privoznik, Please refer to
https://www.redhat.com/archives/libvir-list/2018-May/msg01022.html

I splitted it to 2 patches with tiny change.

Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-24 13:32:25 +02:00
Peter Krempa
4c5154677a news: Add TLS non-shared storage migration
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2018-05-24 07:54:26 +02:00
Peter Krempa
c49013f26c qemu: monitor: Remove diskSecretLookup monitor event
After the text monitor was deleted this event can't be triggered.
Remove it and all the unnecessary code.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-23 15:44:13 +02:00
Peter Krempa
41f8888619 qemu: monitor: Remove dead code from text monitor
Remove all unused functions and cleanup headers.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-23 15:44:13 +02:00
Peter Krempa
01d8a67449 qemu: monitor: Drop calls to text monitor impl where possible
Drop all conditional calls which have JSON variants, now that we
guarantee JSON monitor.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-23 15:44:13 +02:00
Peter Krempa
788d6376da qemu: monitor: Drop JSON versions of savevm/delvm/loadvm
qemu did not QAPIfy these and the design and name will most probably
change. The replacements will not be compatible. Drop the JSON stubs and
annotate that there won't be a replacement.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-23 15:44:10 +02:00
Peter Krempa
10bc01056b qemu: monitor: Drop QEMU_CHECK_MONITOR_JSON... macros
Monitor is now JSON only. Drop the old cruft.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-23 15:43:35 +02:00
Peter Krempa
83da9832c2 tests: Drop qemumonitortest
We don't use the text monitor since we dropped support for pre-JSON
qemus. Drop the test so that we can later delete the text monitor
support.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-23 15:43:34 +02:00
Peter Krempa
58be5738fe qemu: monitor: Remove unused qemuMonitor(Add|Remove)HostNetwork
There are no callers for these. Remove them and the monitor
implementations.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-23 15:43:34 +02:00
Peter Krempa
b9571bc61b qemu: monitor: Drop fallback to text monitor for 'send-key' command
The QMP version was added in qemu commit e4c8f004c55d9da3eae3e14 which
is included in v1.3.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-23 15:43:34 +02:00
Peter Krempa
8f829a71b7 qemu: monitor: Drop fallback to text monitor for 'inject-nmi' command
The QMP version was added in qemu commit ab49ab5c488237f3656689 which
is included in v1.1.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-23 15:43:34 +02:00
Roland Schulz
e58739ad46 test driver: Make test capabilities report more hugepages per each NUMA node
Signed-off-by: Roland Schulz <schullzroll@gmail.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-23 15:27:40 +02:00
Roland Schulz
0babf84797 Fix memory leak issues in virshAllocpagesPagesizeCompleter.
Signed-off-by: Roland Schulz <schullzroll@gmail.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-23 15:27:40 +02:00
Peter Krempa
a8dc146a4d qemu: migration: Add support for transporting NBD over TLS
Implement the secure way to transport non-shared storage data across
migrations. The new approach uses blockdev-add to create the NBD client
so that the TLS secret object can be specified.

https://bugzilla.redhat.com/show_bug.cgi?id=1300772

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-23 13:18:25 +02:00
Peter Krempa
89ed82646c qemu: migration: Extract code responsible for calling drive-mirror
Separate the code relevant for this approach so that we can later add a
second implementation without making the function messy.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-23 13:18:25 +02:00
Peter Krempa
8bad8e7bf0 qemu: migration: Rename NBD migration functions
Drop the mention of 'drive mirror' from the function names and mention
NBD. This will help when adding the 'blockdev mirror' migration code
which will allow using TLS.

Additionally fix some of the function comments to make more sense

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-23 13:18:25 +02:00
Peter Krempa
99223c8cca test: Add status XML test for NBD tls storage migration
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-23 13:18:25 +02:00
Peter Krempa
93a3f9844f qemu: domain: Add private data for NBD migration storage source definition
Allow saving various aspects necessary to do NBD migration via blockdev
by storing a 'virStorageSource' in the disk private data meant to store
the NBD target of migration. Along with this add code to parse and
format it into the status XML.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-23 13:18:25 +02:00
Peter Krempa
35a8487ad9 qemu: domain: Extract parsing of NBD status XML
Extract the NBD portion of the 'job' status XML element parser into a
separate function.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-23 13:18:25 +02:00
Peter Krempa
0d6ec712d3 qemu: domain: Extract NBD disk migration private data formatting
We will be adding source data to it so extract it to a separate function.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-23 13:18:25 +02:00
Peter Krempa
ceb151b24b qemu: block: Add helpers for hot-adding virStorageSource via blockdev
These helpers add infrastructure which simplifies adding and rolling
back virStorageSources to a running qemu instance. Using of the helper
structure and separate functions allows for a much cleaner code in the
section dealing with the monitor.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-23 13:18:25 +02:00
Peter Krempa
d30fd1fc54 qemu: monitor: Introduce support for blockdev-mirror
drive-mirror allows only file targets. Introduce support for
blockdev-mirror that is able to copy to any BDS described by a node name
in qemu.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-23 13:18:25 +02:00
Peter Krempa
c7b66f2a59 qemu: monitor: Add implementation for blockdev-add and blockdev-del
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-23 13:18:25 +02:00
Peter Krempa
a6178a6610 qemu: monitor: Factor out and document code to format QMP command
Move formatting of the qemu command out of qemuMonitorJSONMakeCommandRaw
to qemuMonitorJSONMakeCommandInternal to allow greater reusability and
document the function better.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-23 13:18:25 +02:00
Peter Krempa
e969af4cec qemu: caps: Add capability for blockdev-add/blockdev-del
The capability also represents that 'blockdev-add' is functional. It's
necessary to detect it via presence of 'blockdev-del' since blockdev-add
did not have the unsupported 'x-blockdev-add' version previously and
thus would be marked as present even if we could not use it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-23 13:18:25 +02:00
Peter Krempa
d4e57c6f04 qemu: migration: Don't access disk members without lock
The initiation of a synchronous block job in the NBD storage migration
code was placed after entering the monitor thus after the lock on the VM
object was unlocked. Thankfully nothing bad could happen in this
situation since the migration job prevents any disk detaches or other
modifications of the domain object.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-23 13:18:23 +02:00
Peter Krempa
082266bf27 conf: domain: Export virDomainStorageSourceParse
It will be used when parsing the migration private data.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-23 13:18:23 +02:00
Peter Krempa
b8240fe704 qemu: block: Don't nest storage layer properties into format layer
Reference the storage via node name rather than inlining it. This is
the approach that will be used with -blockdev/blockdev-add since it
allows more control and is more future proof.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-23 13:18:23 +02:00
Filip Alac
cf9683cac0 docs: news: Add entry about the newly supported 'output' audio codec
Signed-off-by: Filip Alac <filipalac@gmail.com>
Signed-off-by: Erik Skultety <eskultet@redhat.com>
2018-05-23 09:51:53 +02:00
Filip Alac
8dd3a63184 tests: qemu: Extend the test suite with the 'output' sound codec
Affects qemuxml2xmltest and qemuxml2argvtest.

Signed-off-by: Filip Alac <filipalac@gmail.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-05-23 09:51:53 +02:00
Filip Alac
3b8d050911 qemu: capabilities: Add 'hda-output' sound codec to capabilities
Signed-off-by: Filip Alac <filipalac@gmail.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-05-23 09:51:53 +02:00
Filip Alac
fcb53e8ee1 conf: Introduce codec type 'output'
Introduce support for codec type 'output' ('hda-output' in QEMU) for ich6
and ich9 sound devices, which only advertises a line-out in the guest.
This has been available in QEMU since 0.14.

Signed-off-by: Filip Alac <filipalac@gmail.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-05-23 09:51:53 +02:00
Ján Tomko
b87222a909 qemu: only pass -sandbox off if supported
This way we don't rely on QEMU supplying the -sandbox option
without CONFIG_SECCOMP.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-23 09:45:48 +02:00
Ján Tomko
6dbe7243f9 Reintroduce QEMU_CAPS_SECCOMP_SANDBOX
Commit 766d5c1b deprecated the capability, because we were assuming
it for every QEMU binary. At the time of the introduction, there
was no way to probe for this via QMP.

However since QEMU 1.5.0 (which is the earliest version we support)
we can rely on the query-command-line-options command to detect this
feature.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-23 09:45:34 +02:00
Michal Privoznik
fa6bdf6afa qemu: Deny hugepages for non-existent NUMA nodes
https://bugzilla.redhat.com/show_bug.cgi?id=1534418

Just like ec982f6d92 denies hugepages for non-existent
guest NUMA nodes in case there are some nodes configured.
Unfortunately, when there are none, qemuBuildNumaArgStr() is not
called and thus we have to have check in qemuBuildMemPathStr()
too.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-23 09:00:20 +02:00
Roland Schulz
74e7c79066 Add NUMA support to virshAllocpagesPagesizeCompleter.
Signed-off-by: Roland Schulz <schullzroll@gmail.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-22 15:32:10 +02:00
Daniel P. Berrangé
9267342206 cpu: define the 'virt-ssbd' CPUID feature bit (CVE-2018-3639)
Some AMD processors only support a non-architectural means of
enabling Speculative Store Bypass Disable. To allow simplified
handling in virtual environments, hypervisors will expose an
architectural definition through CPUID bit 0x80000008_EBX[25].
This needs to be exposed to guest OS running on AMD x86 hosts to
allow them to protect against CVE-2018-3639.

Note that since this CPUID bit won't be present in the host CPUID
results on physical hosts, it will not be enabled automatically
in guests configured with "host-model" CPU unless using QEMU
version >= 2.9.0. Thus for older versions of QEMU, this feature
must be manually enabled using policy=force. Guests using the
"host-passthrough" CPU mode do not need special handling.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2018-05-22 13:13:27 +02:00
Daniel P. Berrangé
1dbca2ecca cpu: define the 'ssbd' CPUID feature bit (CVE-2018-3639)
New microcode introduces the "Speculative Store Bypass Disable"
CPUID feature bit. This needs to be exposed to guest OS to allow
them to protect against CVE-2018-3639.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2018-05-22 13:13:26 +02:00
Martin Kletzander
08e190fdda tools: Tiny clean-ups for two functions in virsh-completer.c
These two functions were duplicating some cleanup paths, so let's just merge
both cleanup and error paths together.  To distinguish whether we need to
clean-up the return value let's keep it in @tmp until the function is successful
in which case we set @ret to the value of @tmp and set @tmp to NULL.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-21 15:18:40 +02:00
Martin Kletzander
9e1a808e91 travis: Print test log file from distcheck as well
Since we started using `make distcheck` in travis, the part that's printing the
tests/test-suite.log file is rather pointless.  Let's check for both known
locations (keeping the previous one there on purpose) so that the output is
usable again.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-21 15:17:14 +02:00
Roland Schulz
3b90c3c463 Add virshAllocpagesPagesizeCompleter
Returns list of host page sizes from capabilities XML.

Signed-off-by: Roland Schulz <schullzroll@gmail.com>
2018-05-21 14:56:19 +02:00
Daniel P. Berrangé
47a1ca6e2c qemu: clarify message about block peek format restriction
Include the actual disk format in the error message to help the user see
what is wrong.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-21 11:30:52 +01:00
Daniel P. Berrangé
bb57a6a6bc qemu: include kernel version in QEMU log file
We currently print the libvirt and qemu version strings into the
per-guest logfile. It would be useful to know what kernel is running
too, so add that.

Reviewed-by: Kashyap Chamarthy <kchamart@redhat.com>
Tested-by: Kashyap Chamarthy <kchamart@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-21 10:32:52 +01:00
Jiri Denemark
b6dddb5408 spec: Fix build without QEMU
libvirt_qemu_probes.stp is only generated when QEMU driver is enabled.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
2018-05-21 10:33:39 +02:00
Ján Tomko
e565b9cd0c Remove type_sep parameter from qemuBuildHostNetStr
The last caller not passing a comma was removed by:
commit ad8a7c4f85
Author:     Ján Tomko <jtomko@redhat.com>
CommitDate: 2018-04-12 17:17:16 +0200

    qemu: deprecate QEMU_CAPS_NETDEV

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-21 09:35:32 +02:00
Peter Krempa
d3f4fc8684 qemu: command: Remove qemuBuildHasMasterKey
The thin wrapper is not necessary.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-18 09:00:05 +02:00
Peter Krempa
50192e990f qemu: command: Fix formatting of TLS backend properties
The JSON property generator should not escape commas as we do on the
command line. The JSON->commandline generator already does that.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-18 09:00:01 +02:00
Peter Krempa
82ca8ad6c1 tests: qemuxml2argv: Test TLS certificate path containing a comma
We have to escape commas when formatting them on the command line. Add a
test case of a TLS path containing a comma.

Note that the output is wrong, this test case is to prove there's a bug.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-18 08:59:57 +02:00
Peter Krempa
8f50120693 qemu: command: Optimize formatting of 'passwordid' in qemuBuildTLSx509BackendProps
Use the 'S' modifier for create the field optionally rather than calling
another JSON formatter function.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-18 08:59:45 +02:00
Michal Privoznik
9a33776715 qemu: Implement multiple screen support for virDomainScreenshot
According to virDomainScreenshot() documentation, screens are
numbered sequentially.  e.g. having two graphics cards, both with
four heads, screen ID 5 addresses the second head on the second
card.

But apart from that, there's nothing special happening here.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-17 17:13:11 +02:00
Michal Privoznik
04dcc6e0e0 qemu: Introduce QEMU_CAPS_SCREENDUMP_DEVICE
As of v2.12.0-rc0~32^2 QEMU is capable specifying which display
device and head should the screendump be taken from. Track this
capability so that we can use it later in our virDomainScreenshot
API.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-17 17:06:31 +02:00
Lin Ma
27e97d5c17 virsh: Add target name completion for block device options
Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-17 17:06:11 +02:00
Lin Ma
14dd3b63e9 virsh: Introduce virshDomainDiskTargetCompleter
Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-17 17:06:11 +02:00
Lin Ma
78809398df virsh-network: Add network name completion to 'net-uuid' command
Signed-off-by: Lin Ma <lma@suse.com>
2018-05-17 17:06:11 +02:00
Lin Ma
c5a9e6a9ac virsh-network: Add macro VIRSH_COMMON_OPT_NETWORK_FULL
Signed-off-by: Lin Ma <lma@suse.com>
2018-05-17 17:06:11 +02:00
Lin Ma
27631eac7a virsh-network: Add network name completion to 'net-event' command
Signed-off-by: Lin Ma <lma@suse.com>
2018-05-17 17:06:11 +02:00
Lin Ma
de97d5600c virsh-network: Create macros for VSH_OT_STRING "network" option
Signed-off-by: Lin Ma <lma@suse.com>
2018-05-17 17:06:11 +02:00
Lin Ma
a4bbd30400 virsh: Only return active domain names for block* command
Signed-off-by: Lin Ma <lma@suse.com>
2018-05-17 17:06:11 +02:00
Lin Ma
84d660607d virsh: Only return active domain names for 'reset' command
Signed-off-by: Lin Ma <lma@suse.com>
2018-05-17 17:06:11 +02:00
Lin Ma
7c07067c1d virsh: Remove 'id' text from help message for 'domrename' command
The inactive domains don't have any ID identifier, So adjust the help
message.

Signed-off-by: Lin Ma <lma@suse.com>
2018-05-17 17:06:11 +02:00
Martin Kletzander
96e947fd65 docs: Fix copy-paste error in formatdomaincaps
Reported-instead-of-fixing-immediately-by: Jiri Denemark <jdenemar@redhat.com>
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-05-17 15:27:38 +02:00
Nikolay Shirokovskiy
a62bb9bee2 qemu: erase synchronous block job cancel mentions in comments
Commit [1] dropped support for synchronous block job cancel.
This patch erases remnants from comments.

[1] commit 2350d101 "qemu: Remove support for legacy block jobs"

Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-17 14:04:33 +03:00
Shalini Chellathurai Saroja
c6e605dc0e tests: Update caps for QEMU 2.12.0 on s390x
Let us update the existing xml and replies files for QEMU 2.12.0 on
s390x.

Used a z14 using a QEMU 2.12 GA build and the following sequence:

  tests/qemucapsprobe /usr/bin/qemu-system-s390x > \
         tests/qemucapabilitiesdata/caps_2.12.0.s390x.replies

  VIR_TEST_REGENERATE_OUTPUT=1 tests/qemucapabilitiestest
  VIR_TEST_REGENERATE_OUTPUT=1 tests/domaincapstest

Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-16 14:19:57 -04:00
Daniel P. Berrangé
8fe30b2167 log: actually do substring matches with fnmatch
Historically we matched log filters with strstr(), and when switching to
fnmatch in cbb0fd3cfd, it was stated that
we would continue to match substrings, with "foo" being equivalent to
"*foo*". Unfortuntely I forget to provide the code to actually make that
happen. This fixes it to prepend and append "*". We don't bother to
check if the pattern already has a leading/trailing '*', because
"**foo**" will match the same as "*foo*".

Reviewed-by: Erik Skultety <eskultet@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-16 17:48:17 +01:00
Ján Tomko
fe8a06798d Remove check for gnutls/crypto.h
Assume its presence for gnutls >= 3.2.

Check introduced by <commit 7d21d6b>.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-16 10:40:40 +02:00
Ján Tomko
504b4f2669 Fix indentation in virCryptoHaveCipher
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-16 10:40:40 +02:00
Ján Tomko
fbb07a757b Remove explicit check for gnutls_cipher_encrypt
Introduced in gnutls 2.10, and we assume >= 3.2.

Commit 1ce9c08a added this check.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-16 10:40:40 +02:00
Ján Tomko
ac9ad77303 Remove explicit check for gnutls_rnd
Introduced in gnutls 2.12, but we require gnutls >= 3.2
Check added by commit <2d23d14>.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-16 10:40:40 +02:00
Ján Tomko
279a27d4aa Deprecate GNUTLS_GCRYPT
Now that we assume GnuTLS >= 3.0, we can ditch gcrypt support.
Introduced by <commit 6094b1f>.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-16 10:40:40 +02:00
Ján Tomko
eee8c852e0 Require GnuTLS >= 3.2.0
Ubuntu 14.04 which is not targetted as a supported platform [0]
already has 3.2.11

[0] https://libvirt.org/platforms.html

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-16 10:40:40 +02:00
Ján Tomko
698af20af2 Skip vircryptotest and virfilecachetest without gnutls
Fix make check without gnutls.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-16 10:40:40 +02:00
Ján Tomko
c25fbbec68 virCryptoHashBuf: return the length of the hash in bytes
virCryptoHashString also needs to know the size of the returned hash.
Return it if the hash conversion succeeded so the caller does not need
to access the hashinfo array.

This should make virCryptoHashString build without gnutls.
Also fixes the missing return value for the virCryptoHashBuf stub.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Suggested-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
2018-05-16 10:40:40 +02:00
Michal Privoznik
ed11d1662d virDomainMemoryDefParseXML: Don't leak discard
==1589== 7 bytes in 2 blocks are definitely lost in loss record 34 of 261
==1589==    at 0x4C2AF0F: malloc (vg_replace_malloc.c:299)
==1589==    by 0x8A82794: xmlStrndup (in /usr/lib64/libxml2.so.2.9.8)
==1589==    by 0x5DD8392: virXMLPropString (virxml.c:510)
==1589==    by 0x5E12427: virDomainMemoryDefParseXML (domain_conf.c:15704)
==1589==    by 0x5E207DE: virDomainDefParseXML (domain_conf.c:20351)
==1589==    by 0x5E2184F: virDomainDefParseNode (domain_conf.c:20636)
==1589==    by 0x5E216A1: virDomainDefParse (domain_conf.c:20580)
==1589==    by 0x5E21747: virDomainDefParseFile (domain_conf.c:20606)
==1589==    by 0x112F5F: testCompareXMLToArgv (qemuxml2argvtest.c:493)
==1589==    by 0x138780: virTestRun (testutils.c:180)
==1589==    by 0x117129: mymain (qemuxml2argvtest.c:937)
==1589==    by 0x13A83C: virTestMain (testutils.c:1120)

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com>
2018-05-16 07:50:51 +02:00
Peter Krempa
9b3cbd33a7 qemu: hotplug: Replace qemuDomainDiskNeedRemovePR
The function can be replaced by much simpler logic.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-05-16 06:32:29 +02:00
Peter Krempa
8bebb2b735 util: storage: Store PR manager alias in the definition
Rather than always re-generating the alias store it in the definition
and in the status XML.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-05-16 06:32:29 +02:00
Peter Krempa
26c72a76dc conf: domain: Add helper to check whether a domain def requires use of PR
Extract the lookup code so that it can be reused later.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-05-16 06:32:29 +02:00
Peter Krempa
b4f113ee44 qemu: command: Move check whether PR manager object props need to be built
Move it out of the format function and let the caller decide this.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-05-16 06:32:29 +02:00
Peter Krempa
8f7c25ae39 qemu: process: Change semantics of functions starting PR daemon
Libvirt only manages one PR daemon. This means that we don't need to
pass the 'disk' object and also rename the functions dealing with this
so that it's obvious we only deal with the managed PR daemon.

Signed-off-by: Peter Krempa <pkrempa@redhat st.com>
2018-05-16 06:32:29 +02:00
Peter Krempa
b571e7bad0 qemu: Assign managed PR path when preparing storage source
Rather than always checking which path to use pre-assign it when
preparing storage source.

This reduces the need to pass 'vm' around too much. For later use the
path can be retrieved from the status XML.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-05-16 06:32:28 +02:00
Peter Krempa
e31f490458 util: storage: Allow passing <source> also for managed PR case
To allow storing status information in the XML move the validation that
the 'path' is not valid for managed PR daemon case into
qemuDomainValidateStorageSource and allow parsing of the data even in
case when managed='yes'.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-05-16 06:32:28 +02:00
Peter Krempa
900fc66121 util: storage: Drop virStoragePRDefIsEnabled
The function now does not do anything useful. Replace it by the pointer
check.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-05-16 06:32:28 +02:00
Peter Krempa
e72b3f0bbe util: storage: Drop pointless 'enabled' form PR definition
Everything can be disabled by not using the parent element. There's no
need to store this explicitly. Additionally it does not add any value
since any configuration is dropped if enabled='no' is configured.

Drop the attribute and adjust the code accordingly.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-05-16 06:32:28 +02:00
Peter Krempa
1efda36765 qemu: Move validation of PR manager support
Disk source definition should be validated in
qemuDomainValidateStorageSource rather than in individual generators of
command line arguments.

Change to the XML2XML test is required since now the definition is
actually validated at define time.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-05-16 06:32:28 +02:00
Peter Krempa
64e3ae0d51 qemu: command: Fix comment for qemuBuildPRManagerInfoProps
The comment did not accurately describe the arguments.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-05-16 06:32:28 +02:00
Peter Krempa
b5aec60cc4 qemu: alias: Allow passing alias of parent when generating PR manager alias
For use with blockdev the PR manager will be bound to a virStorageSource
rather than a virDomainDiskDef, so we will need to use the correct
alias.

Allow passing a string rather than the whole disk.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-05-16 06:32:28 +02:00
Peter Krempa
90309bcdc5 qemu: hotplug: Fix spacing around addition operator
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-05-16 06:32:28 +02:00
John Ferlan
352e549450 storage_util: Introduce storageBackendDoCreateQemuImg
Extract out command line setup and run from storageBackendCreateQemuImg
as we'll need to run it twice soon.

Signed-off-by: John Ferlan <jferlan@redhat.com>
2018-05-15 16:57:24 -04:00
John Ferlan
e1e1fcf769 storage_util: Introduce storageBackendCreateQemuImgSetInput
Split up virStorageBackendCreateQemuImgCmdFromVol into two parts.
It's too long anyway and virStorageBackendCreateQemuImgCmdFromVol
should just handle the command line processing.

NB: Requires changing info.* into info->* references.

Signed-off-by: John Ferlan <jferlan@redhat.com>
2018-05-15 16:57:24 -04:00
John Ferlan
4b9055c930 storage_util: Move @type into _virStorageBackendQemuImgInfo
We're about to split up the code a bit more, so we'll need this
to be in the local struct.

Signed-off-by: John Ferlan <jferlan@redhat.com>
2018-05-15 16:57:24 -04:00
John Ferlan
b5c8c547b7 storage_util: Split preallocate set in storageBackendCreateQemuImgOpts
The only way preallocate could be set is if the info->format was
not RAW (see storageBackendCreateQemuImgSetBacking), so let's just
extract it from the if/else surrounding the application of the
encryption options.

Signed-off-by: John Ferlan <jferlan@redhat.com>
2018-05-15 16:57:24 -04:00
John Ferlan
c46fc572be storage_util: Split backing_fmt set in storageBackendCreateQemuImgOpts
The only way backing_fmts could be set is if the info->format was
not RAW (see storageBackendCreateQemuImgSetBacking), so let's just
extract it from the if/else surrounding the application of the
encryption options.

Signed-off-by: John Ferlan <jferlan@redhat.com>
2018-05-15 16:57:24 -04:00
John Ferlan
3d14408c17 storage_util: Remove luks distinction from secret path and alias
Remove the "luks" distinction as the code is about to become more
generic and be able to support qcow encryption as well.

Signed-off-by: John Ferlan <jferlan@redhat.com>
2018-05-15 16:57:24 -04:00
John Ferlan
9118e23f6d storage_util: Move secretPath generation
Move generation of secretPath to storageBackendGenerateSecretData
and simplify a bit since we know vol->target.encryption is set plus
we have a local @enc.

Signed-off-by: John Ferlan <jferlan@redhat.com>
2018-05-15 16:57:24 -04:00
John Ferlan
3d1db851ca storage_util: Generate the qcow secret earlier
Rather than having storageBackendCreateQemuImgCheckEncryption
perform the virStorageGenerateQcowEncryption, let's just do that
earlier during storageBackendCreateQemuImg so that the check
helper is just a check helper rather doing something different
based on whether the format is qcow[2] or raw based encryption.

This fixes an issue in the storageBackendResizeQemuImg processing
for qcow encryption where if a secret was not available for a
volume, a new secret will not be generated and instead an error
message will be generated.

Signed-off-by: John Ferlan <jferlan@redhat.com>
2018-05-15 16:55:09 -04:00
John Ferlan
9629fe258f storage_util: Rename virQEMUBuildLuksOpts
Rename to storageBackendCreateQemuImgOpts - which is what it's doing.

Signed-off-by: John Ferlan <jferlan@redhat.com>
2018-05-15 16:54:58 -04:00
John Ferlan
8fc9949caa storage_util: Remove unnecessary check
Commit id 'a48c71411' altered the logic a bit and didn't
remove an unnecessary check as info.encryption is true when
vol->target.encryption != NULL, so if we enter the if segment
with info.format == VIR_STORAGE_FILE_RAW && vol->target.encryption
!= NULL, then there's no way info.encryption could be false.

Signed-off-by: John Ferlan <jferlan@redhat.com>
2018-05-15 16:54:58 -04:00
John Ferlan
f78c814c5c storage_util: Cleanup usage of target.encryption
Remove the != NULL checks, use !! for setting info.encryption.

Signed-off-by: John Ferlan <jferlan@redhat.com>
2018-05-15 16:54:58 -04:00
John Ferlan
9cfd507367 storage_util: Some code cleanup
Perform some code cleanup in areas that are about to be altered.

Signed-off-by: John Ferlan <jferlan@redhat.com>
2018-05-15 16:54:58 -04:00
Maciej Wolny
33e75120cc docs: Update news.xml with QEMU SDL OpenGL Improvement
Signed-off-by: Maciej Wolny <maciej.wolny@codethink.co.uk>
2018-05-15 16:50:38 -04:00
Maciej Wolny
5038b30043 qemu: Add gl option to SDL graphics command line
Support OpenGL when using SDL backend via -sdl,gl=on. Add associated
tests.

NB: Usage of DO_TEST_CAPS_LATEST in qemuxml2argv doesn't work in
this case because -sdl gl is not introspectable.

Signed-off-by: Maciej Wolny <maciej.wolny@codethink.co.uk>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-15 16:50:38 -04:00
Maciej Wolny
3278a7bb26 qemu: Add QEMU_CAPS_SDL_GL to qemu capabilities
Support OpenGL acceleration capability when using SDL graphics.

Signed-off-by: Maciej Wolny <maciej.wolny@codethink.co.uk>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-15 16:50:38 -04:00
Maciej Wolny
fff9e25a2b conf: Add gl property to graphics of type sdl in domain config
Support OpenGL accelerated rendering when using SDL graphics in the
domain config. Add associated test and documentation.

Signed-off-by: Maciej Wolny <maciej.wolny@codethink.co.uk>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-15 16:50:38 -04:00
Maciej Wolny
9ac74d44a5 qemu_command: Remove outdated comment
Signed-off-by: Maciej Wolny <maciej.wolny@codethink.co.uk>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-15 16:50:38 -04:00
Maciej Wolny
4d18727ffe qemu_command: Move SDL command line building into helper
Create a function called `qemuBuildGraphicsSDLCommandLine` which is
called from qemuBuildGraphicsCommandLine.

Signed-off-by: Maciej Wolny <maciej.wolny@codethink.co.uk>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-15 16:50:38 -04:00
Daniel P. Berrangé
45b98aaaa0 util: fix misleading comment for virObjectLock
It only accepts a virObjecLockable, not a virObjecRWLockable

Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-15 18:43:01 +01:00
Jim Fehlig
ac4a12db71 libxl: don't set hasManagedSave when performing save
libxlDoDomainSave() is used in both the save and managedsave code
paths but was unconditionally setting hasManagedSave to true on
success. As a result, undefine would fail after a non-managed
save/restore operation. E.g.

virsh define; virsh start
virsh save; virsh restore
virsh shutdown
virsh undefine
error: Refusing to undefine while domain managed save image exists

Modify libxlDoDomainSave() to take an additional parameter to
specify managed vs non-managed save, and change callers to use it.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-15 11:03:04 -06:00
Michal Privoznik
f50ad2ff63 tests: Link mocks with libvirt.so
In a lot of our mocks (if not all of them) we use our internal
APIs (e.g. VIR_ALLOC). So far, we're relying on test binary that
links with the mock to drag in libvirt.so. Well, this works only
partially. Firstly, whatever binary we execute from tests will
fail (e.g. as Martin reported on the list ./qemucapsprobe fails
to execute qemu). Secondly, if there's a program that tries to
validate linking (like valgrind is doing) it fails because of
unresolved symbols.

Because of that we have to link our mocks with libvirt.so.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-15 14:02:52 +02:00
Filip Alac
656151bf5d xenconfig: xm: Fix checking for extra in parser
Parser assumed extra was always present when root was specified.
Fixed by handling root and extra separately.

Signed-off-by: Filip Alac <filipalac@gmail.com>
Reviewed-by: Jim Fehlig <jfehlig@suse.com>
2018-05-14 17:07:30 -06:00
Shalini Chellathurai Saroja
e387a1d796 news: documentation of new feature
Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-14 12:27:47 -04:00
Shalini Chellathurai Saroja
9c0981ea2e docs: documentation for vfio-ccw passthrough
Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-14 12:27:47 -04:00
Shalini Chellathurai Saroja
21442874cf qemu: command line generation for vfio-ccw device
Generates the QEMU command line for the vfio-ccw device.

Adds various functionality testing for vfio-ccw in libvirt:

1. Generation of QEMU command line from domain xml file
2. Generation of dump xml from domain xml file
3. Checks duplicate/invalid addresses for vfio-ccw devices.

Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com>
Reviewed-by: Stefan Zimmermann <stzi@linux.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-14 12:27:46 -04:00
Shalini Chellathurai Saroja
7224144400 qemu: vfio-ccw device address generation
Introduces the vfio-ccw model for mediated devices and prime vfio-ccw
devices such that CCW address will be generated.

Alters the qemuxml2xmltest for testing a basic mdev device using vfio-ccw.

Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com>
Reviewed-by: Stefan Zimmermann <stzi@linux.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-14 12:27:44 -04:00
Shalini Chellathurai Saroja
2b9690b62d util: virhostdev: add virHostdevIsMdevDevice()
Add the function virHostdevIsMdevDevice() which detects whether a
hostdev is a mediated device or not. Also, replace all existing
conditionals.

Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-14 12:12:06 -04:00
Shalini Chellathurai Saroja
263e65fd20 qemu: introduce vfio-ccw capability
Let us introduce the capability vfio-ccw for supporting the basic
channel I/O passthrough, which have been introduced in QEMU 2.10. The
current focus is to support dasd-eckd (cu_type/dev_type = 0x3990/0x3390)
as the target device.

Let us also introduce the capability QEMU_CAPS_CCW_CSSID_UNRESTRICTED
for virtual-css-bridge. This capability is based on the
cssid-unrestricted property which exists if QEMU no longer enforces
cssid restrictions based on ccw device types.

Vfio-ccw capability is dependent on the hidden virtual-css-bridge, so
that we are able to probe for the cssid-unrestriced property to make
sure the devices are visible to non-mcss-e enabled guests.

Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-14 12:12:02 -04:00
Shalini Chellathurai Saroja
f245a9791c qemu: introduce capability for virtual-css-bridge
Let us introduce the capability QEMU_CAPS_CCW for virtual-css-bridge
and replace QEMU_CAPS_VIRTIO_CCW with QEMU_CAPS_CCW in code segments
which identify support for ccw devices.

The virtual-css-bridge is part of the ccw support introduced in QEMU 2.7.
The QEMU_CAPS_CCW capability is based on the existence of the QEMU type.

Let us also add the capability QEMU_CAPS_CCW to the tests which
require support for ccw devices.

Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-14 11:26:15 -04:00
Ján Tomko
799011bbe7 vircrypto: Rely on GnuTLS for hash functions
Ditch the use of gnulib's digest functions in favor of GnuTLS,
which might be more likely to get FIPS-certified.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-14 14:05:21 +02:00
Ján Tomko
c038a3cfed esx: Use VIR_CRYPTO_HASH_SIZE_MD5
Do not rely on gnulib's MD5_DIGEST_SIZE from md5.h.

Include vircrypto.h and use VIR_CRYPTO_HASH_SIZE_MD5.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-14 14:05:21 +02:00
Ján Tomko
3ec34fd7a3 esx: use virCryptoHashBuf
Instead of using md5_buffer from gnulib directly.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-14 14:05:21 +02:00
Ján Tomko
0eeedd61a9 Introduce virCryptoHashBuf
A function that keeps the hash in binary form instead of converting
it to human-readable hexadecimal form.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-14 13:57:45 +02:00
Ján Tomko
95ba1c2f6e vircrypto: provide constants for hash sizes
The callers needing to know the size of the resulting digest
rely on _DIGEST_SIZE constants from gnulib.

Introduce VIR_CRYPTO_HASH_SIZE_ constants to remove the dependency.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-14 13:55:47 +02:00
Andrea Bolognani
57b8df9219 travis: Uninstall packages before upgrade
numpy (needed by cgal) started having the same issue with
linking as python, which makes upgrade and thus the entire
build fail on macOS.

Instead of playing more tricks with linking/unlinking, just
uninstall the problematic packages (and those dragging them
in) before doing anything else.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-14 12:33:04 +02:00
Michal Privoznik
2c4affd57e qemu: Implement memoryBacking/discard
https://bugzilla.redhat.com/show_bug.cgi?id=1480668

QEMU has this new feature memory-backend-file.discard-data=yes
which is a nifty optimization. Basically, when qemu is quitting
or on memory hotplug it calls munmap() and close() on the file
that is backing the memory. However, this does not mean kernel
won't stop touching that part of memory. It still might. With
this feature enabled we tell kernel: "we don't need this memory
nor data stored in it". This makes kernel drop the memory
immediately without trying to sync memory with the mapped file.

Unfortunately, this cannot be turned on by default because we
can't be sure when users really don't care about what happens to
data after qemu dies. So it has to be opt-in. As usual, there are
three places where one can configure memory attributes. This
patch adds the feature to all of them.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-14 09:42:21 +02:00
Michal Privoznik
2300c92fe0 conf: Introduce memoryBacking/discard
QEMU has possibility to call madvise(.., MADV_REMOVE) in some
cases. Expose this feature to users by new element/attribute
discard.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-14 09:42:20 +02:00
Michal Privoznik
0329075733 conf: Move virDomainMemtune formatting into a separate function
At the same time convert the code to use virXMLFormatElement.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-14 09:42:20 +02:00
Michal Privoznik
72c1770aa0 qemu_capabilities: Introduce QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD
This capability tracks if memory-backend-file has discard-data
attribute or not.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-14 09:42:20 +02:00
Michal Privoznik
8a94501e8c qemu_capabilities: Introduce QEMU_CAPS_QOM_LIST_PROPERTIES
This capability tracks if qemu has "qom-list-properties" monitor
command.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-14 09:42:20 +02:00
Michal Privoznik
d81cf424ca qemu_monitor: Introduce qemuMonitorGetObjectProps
Now that we've gotten rid of misleading names we can introduce
qemuMonitorGetObjectProps() function which queries -object
properties. Again, some parts of code can be reused.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-14 09:42:20 +02:00
Michal Privoznik
036120209b qemuMonitorJSONGetDeviceProps: Separate props processing
The code that processes list of device properties is going to be
reused. Therefore put it into a separate function.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-14 09:42:20 +02:00
Clementine Hayat
920a7d3336 bhyve: start using virDomainObjCheckActive
Signed-off-by: Clementine Hayat <clem@lse.epita.fr>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-14 08:58:33 +02:00
Clementine Hayat
3c311d7e9b lxc: start using virDomainObjCheckActive
Signed-off-by: Clementine Hayat <clem@lse.epita.fr>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-14 08:58:33 +02:00
Clementine Hayat
48d44efcc0 qemu: start using virDomainObjCheckActive
Signed-off-by: Clementine Hayat <clem@lse.epita.fr>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-14 08:58:33 +02:00
Ján Tomko
e8c0558414 virutil.c: do not include stdarg.h
Last functions using it were moved to virfile.c in commit <bfe7721>.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-14 08:41:58 +02:00
Ján Tomko
d80881db3f virutil.c: do not include ioctl.h
Added by commit 61674cc, but we have started using
set_nonblocking_flag from gnulib in commit da3c4714

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-14 08:41:49 +02:00
Fabian Freyer
51c030f839 bhyve: document support for wiring guest memory
Signed-off-by: Fabian Freyer <fabian.freyer@physik.tu-berlin.de>
Reviewed-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
2018-05-13 13:38:47 +04:00
Fabian Freyer
cb434b442a bhyve: add tests for wiring memory
Signed-off-by: Fabian Freyer <fabian.freyer@physik.tu-berlin.de>
Reviewed-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
2018-05-13 13:38:31 +04:00
Fabian Freyer
b181e44d9f bhyve: add support for wiring memory
The <memoryBacking><locked/></memoryBacking> element will now pass the
wired (-S) flag to the bhyve command.

Signed-off-by: Fabian Freyer <fabian.freyer@physik.tu-berlin.de>
Reviewed-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
2018-05-13 13:38:23 +04:00
Eric Blake
65dd2ac92d maint: typo fix in VIR_MIGRATE_PARAM_URI
s/filed/field/

Signed-off-by: Eric Blake <eblake@redhat.com>
2018-05-11 15:34:23 -05:00
Daniel P. Berrangé
8ccee910f5 log: update docs for daemons to improve user understanding
Strongly recommend against use of the log_levels setting since it
creates overly verbose logs and has a serious performance impact.

Describe the log filter syntax better and mention use of shell
glob syntax. Also provide more realistic example of good settings
to use. The libvirtd example is biased towards QEMU, but when the
drivers split off each daemon can get its own more appropriate
example.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-11 17:11:46 +01:00
Daniel P. Berrangé
cbb0fd3cfd log: support logging using shell wildcard syntax
Rather than specialcasing handling of the '*' character, use fnmatch()
to get normal shell wildcard syntax, as described in 'man glob(7)'.

To get an indication of the performance impact of using globs instead
of plain string matches, a test program was written. The list of all
260 log categories was extracted from the source. Then a typical log
filters setup was picked by creating an array of the strings "qemu",
"security", "util", "cgroup", "event", "object". Every filter string
was matched against every log category. Timing information showed that
using strstr() this took 8 microseconds, while fnmatch() took 114
microseconds.

IOW, fnmatch is 14 times slower than our existing strstr check. These
numbers show a worst case scenario that will never be hit, because it
is rare that every log category would have data output. The log category
matches are cached, so each category is only checked once no matter how
many log statements are emitted. IOW despite being slower, this will
be lost in the noise and have no consequence on real world logging
performance.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-11 17:08:06 +01:00
Daniel P. Berrangé
4a239d1509 log: rename virLogFlags to virLogFilterFlags to match docs
Reviewed-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-11 17:06:55 +01:00
Michal Privoznik
ebad530e9f virbuffer: Set child buffer indent properly
There's this macro virBufferSetChildIndent which sets offset of
child buffer from given parent buffer. However, it is calling
virBufferAdjustIndent() which only adds adjustment instead of
calling virBufferSetIndent() which clears out any adjustment
previously set.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-11 17:04:12 +02:00
Ján Tomko
b3f75d9980 tests: replace references to yajl
Use "libvirt not compiled with JSON support" instead of mentioning
yajl specifically.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-11 13:28:35 +02:00
Ján Tomko
50b4e9afe2 virJSONValue: remove unused 'protect' property
The last usage was removed by commit <167028e>

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-11 13:23:06 +02:00
Lin Ma
f33d02c11f virsh: Don't skip the first entry when the typed command share same prefix
Signed-off-by: Lin Ma <lma@suse.com>
2018-05-11 13:13:22 +02:00
Julio Faracco
c9da6cbec9 rpc: replacing ssh_get_publickey() by ssh_get_server_publickey().
After version 0.7.5, libssh deprecated the function scope
ssh_get_publickey() and moved to ssh_get_server_publickey(). So, Libvirt
is failing to compile using this new function name.

Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2018-05-11 10:38:17 +02:00
Julio Faracco
463fa9c762 m4: checking if ssh_get_server_publickey() exists.
This commit adds some checks inside libssh m4 checking to verify if
ssh_get_server_publickey is available. This new function scope replaces
the old ssh_get_publickey() from libssh 0.7.5 and below. Assuming that
some distros are not showing the right version of libssh. This is a
simple way to check which function is available.

Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2018-05-11 10:38:08 +02:00
Michal Privoznik
b0cd8045f0 qemu: Detect pr-manager-helper capability
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-11 09:26:47 +02:00
Michal Privoznik
eba6467fed qemu_hotplug: Hotunplug of reservations
If we are the last one to use pr-manager object we need to remove
it and also kill the qemu-pr-helper process.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-11 09:26:47 +02:00
Michal Privoznik
3f968fda7b qemu_hotplug: Hotplug of reservations
When attaching a disk that requires pr-manager we might need to
plug the pr-manager object and start the pr-helper process.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-11 09:26:47 +02:00
Michal Privoznik
053d9e30e7 qemu: Start PR daemon on domain startup
Before we exec() qemu we have to spawn pr-helper processes for
all managed reservations (well, technically there can only one).
The only caveat there is that we should place the process into
the same namespace and cgroup as qemu (so that it shares the same
view of the system). But we can do that only after we've forked.
That means calling the setup function between fork() and exec().

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-11 09:26:38 +02:00
Michal Privoznik
8be74af168 qemu: Introduce pr_helper to qemu.conf
Just like we allow users overriding path to bridge-helper
detected at compile time we can allow them to override path to
qemu-pr-helper.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-11 09:02:56 +02:00
Michal Privoznik
d13179fe8d qemu_cgroup: Allow /dev/mapper/control for PR
Just like in previous commit, qemu-pr-helper might want to open
/dev/mapper/control under certain circumstances. Therefore we
have to allow it in cgroups.

The change virdevmapper.c might look spurious but it isn't. After
6dd84f6850 any path that we're allowing in deivces CGroup is
subject to virDevMapperGetTargets() inspection. And libdevmapper
returns ENXIO for the path from subject.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-11 09:02:56 +02:00
Michal Privoznik
5bf89434ff qemu_ns: Allow /dev/mapper/control for PR
If qemu-pr-helper is compiled with multipath support the first
thing it does is open /dev/mapper/control. Since we're going
to be running it inside qemu namespace we need to create it
there. Unfortunately, we don't know if it was compiled with or
without multipath so we have to create it anyway.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-11 09:02:56 +02:00
Michal Privoznik
13fe558fb4 qemu: Generate pr cmd line at startup
For command line we need two things:

1) -object pr-manager-helper,id=$alias,path=$socketPath
2) -drive file.pr-manager=$alias

In -object pr-manager-helper we tell qemu which socket to connect
to, then in -drive file-pr-manager we just reference the object
the drive in question should use.

For managed PR helper the alias is always "pr-helper0" and socket
path "${vm->priv->libDir}/pr-helper0.sock".

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-11 09:02:56 +02:00
Michal Privoznik
3c28602759 qemu: Introduce pr-manager-helper capability
The capability tracks if qemu has pr-manager-helper object. At
this time don't actually detect if qemu has the capability. Not
just yet. Only after the code is written the feature will be
enabled.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-11 09:02:56 +02:00
Michal Privoznik
c7c9dea0a0 qemuDomainDiskChangeSupported: Deny changing reservations
Couple of reasons for that:

a) there's no monitor command to change path where the pr-helper
connects to, or
b) there's no monitor command to introduce a new pr-helper for a
disk that already exists.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-11 09:02:56 +02:00
Michal Privoznik
687730540e virstoragefile: Introduce virStoragePRDef
This is a definition that holds information on SCSI persistent
reservation settings. The XML part looks like this:

  <reservations enabled='yes' managed='no'>
    <source type='unix' path='/path/to/qemu-pr-helper.sock' mode='client'/>
  </reservations>

If @managed is set to 'yes' then the <source/> is not parsed.
This design was agreed on here:

https://www.redhat.com/archives/libvir-list/2017-November/msg01005.html

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-11 09:02:56 +02:00
John Ferlan
4a3d6ed5ee util: Clean up consumers of virJSONValueArraySize
Rather than have virJSONValueArraySize return a -1 when the input
is not an array and then splat an error message, let's check for
an array before calling and then change the return to be a size_t
instead of ssize_t.

That means using the helper virJSONValueIsArray as well as using a
more generic error message such as "Malformed <something> array".
In some cases we can remove stack variables and when we cannot,
those variables should be size_t not ssize_t. Alter a few references
of if (!value) to be if (value == 0) instead as well.

Some callers can already assume an array is being worked on based
on the previous call, so there's less to do.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-10 14:59:15 -04:00
Roland Schulz
91234b0573 qemu: Remove parameter 'driver' from qemuBlockJobUpdate
The pointer to the qemu driver is already included in domain object's
private data, so does not need to be passed as yet another parameter
when the domain object is already passed.

Also removes parameter 'driver' from functions which had it just because of
qemuBlockJobUpdate.

Signed-off-by: Roland Schulz <schullzroll@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-10 16:43:24 +02:00
Lin Ma
919bb45b56 virsh: Apply macro for current VSH_OT_ARGV "domain" options
Signed-off-by: Lin Ma <lma@suse.com>
2018-05-10 10:01:15 +02:00
Lin Ma
90396d795a virsh: Create macros for VSH_OT_ARGV "domain" option
Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-10 10:01:15 +02:00
Lin Ma
0d1c1a74b7 vshReadlineParse: Ignore vshReadlineOptionsGenerator for VSH_OT_ARGV options
Currently the VSH_OT_ARGV options don't support complete, But some of
VSH_OT_ARGV options are gonna support complete in upcoming patches.

Once applied the upcoming completion patches for VSH_OT_ARGV options, If
we don't ignore VSH_OT_ARGV here, The vshReadlineOptionsGenerator will
be called, Hence complete output will consist of the result by command
completer + the result by option completer, It's confusing.
e.g.
    $ virsh domstats --domain <TAB><TAB>
    --backing     --interface      --list-paused      --perf      --vcpu
    --balloon     leap42.3         --list-persistent  --raw       win10
    --block       --list-active    --list-running     sles12sp3
    --cpu-total   --list-inactive  --list-shutoff     sles15
    --enforce     --list-other     --list-transient   --state

After this patch and the upcoming completion patches:
    $ virsh domstats --domain <TAB><TAB>
    leap42.3    sles12sp3    sles15    win10

Signed-off-by: Lin Ma <lma@suse.com>
2018-05-10 10:01:15 +02:00
Lin Ma
ee6113aaea vshReadlineOptionsGenerator: Add already provided VSH_OT_ARGV options to list
It's helpful for users while they type certain kind of VSH_OT_ARGV options.
e.g.

$ virsh domstats --domain sles12sp3 --d<TAB>

Signed-off-by: Lin Ma <lma@suse.com>
2018-05-10 10:01:15 +02:00
Lin Ma
d86531daf2 virsh: Apply macro for current VSH_OT_STRING "domain" options
These VSH_OT_STRING "domain" options support domain name completion now.

Signed-off-by: Lin Ma <lma@suse.com>
2018-05-10 09:21:13 +02:00
Lin Ma
4be3b50dcc virsh: Create macros for VSH_OT_STRING "domain" option
Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-10 09:21:04 +02:00
Lin Ma
55948988e8 virsh: Conditionally Ignore the first entry in list of completions
The first entry in the returned array is the substitution for TEXT. It
causes unnecessary output if other commands or options share the same
prefix, e.g.

$ virsh des<TAB><TAB>
des      desc     destroy

or

$ virsh domblklist --d<TAB><TAB>
--d        --details  --domain

This patch fixes the above issue.

Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-10 09:05:46 +02:00
Lin Ma
f3097dc8b6 virsh: Add domain name completion to 'migrate-postcopy' command
Signed-off-by: Lin Ma <lma@suse.com>
2018-05-10 07:51:50 +02:00
Lin Ma
8379895227 virsh: Move the definition of macro VIRSH_COMMON_OPT_DOMAIN_FULL to virsh.h
centralize the definition of macro VIRSH_COMMON_OPT_DOMAIN_FULL to virsh.h
to avoid unnecessary duplicated definition

Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2018-05-10 07:51:37 +02:00
Ján Tomko
6c6795b4d7 Deprecate QEMU_CAPS_NESTING
Unused since commit <a7424fa>.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-09 13:55:04 +02:00
Peter Krempa
fc66d24066 qemu: domain: Replace qemuDomainFilePathIsHostCDROM with virFileIsCDROM
Use the new helper when checking that the VM needs to be tainted as a
host-cdrom passthrough.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Laine Stump <laine@laine.org>
2018-05-09 13:04:33 +02:00
Cole Robinson
fe0fe366bf spec: Remove Group: tags
It's only required on el5 which we don't support anymore. Everywhere
else it's not used for anything useful

https://fedoraproject.org/wiki/RPMGroups

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2018-05-08 09:50:55 -04:00
Igor Gnatenko
8a6e9c9b70 spec: Remove %clean section
None of currently supported distributions need that.
Last one was EL5 which is EOL for a while.

Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2018-05-08 09:50:58 -04:00
Igor Gnatenko
c6ffdff878 spec: Remove BuildRoot definition
None of currently supported distributions need that.
It was needed last for EL5 which is EOL now

Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2018-05-08 09:50:55 -04:00
David Kiarie
d894e49292 xenconfig: remove my name and email from files
Remove my name and email from these files

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: David Kiarie <davidkiarie4@gmail.com>
2018-05-08 13:45:51 +01:00
Peter Krempa
74fad50de4 util: file: Fix usage of STRPREFIX in virFileIsCDROM
STRPREFIX takes only two arguments, but the code it was adapted from
used function with 3 arguments.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-05-07 17:12:26 +02:00
Peter Krempa
55111f3508 tests: qemublock: Test handling of block devices
Make sure that 'host_device' is generated for type='block'.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 16:12:01 +02:00
Peter Krempa
ca916d7709 tests: qemublock: Test handling of all cache modes
The test cases would correspond to the following -drive command lines:

dir-fat-cache.xml:
-drive file=fat:/var/somefiles,if=none,id=drive-dummy,readonly=on,cache=directsync
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy,write-cache=off

file-backing_basic-cache-directsync.xml:
-drive file=/var/lib/libvirt/images/a,format=qcow2,if=none,id=drive-dummy,cache=directsync
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy,write-cache=off

file-backing_basic-cache-none.xml:
-drive file=/var/lib/libvirt/images/a,format=qcow2,if=none,id=drive-dummy,cache=none
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy,write-cache=on

file-backing_basic-cache-unsafe.xml:
-drive file=/var/lib/libvirt/images/a,format=qcow2,if=none,id=drive-dummy,cache=unsafe
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy,write-cache=on

file-backing_basic-cache-writeback.xml:
-drive file=/var/lib/libvirt/images/a,format=qcow2,if=none,id=drive-dummy,cache=writeback
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy,write-cache=on

file-backing_basic-cache-writethrough.xml:
-drive file=/var/lib/libvirt/images/a,format=qcow2,if=none,id=drive-dummy,cache=writethrough
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy,write-cache=off

network-qcow2-backing-chain-cache-unsafe.xml:
-drive file=rbd:rbdpool/rbdimg:id=testuser-rbd:auth_supported=cephx\;none:
        mon_host=host1.example.com\;host2.example.com,
        file.password-secret=node-a-s-secalias,format=qcow2,
        if=none,id=drive-dummy,cache=directsync
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy,write-cache=off

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 16:09:30 +02:00
Peter Krempa
24db3d9993 tests: qemublock: Test handling of 'unmap' and 'detect-zeroes' options
The test cases would correspond to the following -drive command lines:

file-backing_basic-detect.xml:
-drive file=/var/lib/libvirt/images/a,format=qcow,if=none,id=drive-dummy,detect-zeroes=on
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-backing_basic-unmap-detect.xml:
-drive file=/var/lib/libvirt/images/a,format=qcow,if=none,id=drive-dummy,discard=unmap,detect-zeroes=unmap
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-backing_basic-unmap-ignore.xml:
-drive file=/var/lib/libvirt/images/a,format=qcow,if=none,id=drive-dummy,discard=ignore,detect-zeroes=on
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-backing_basic-unmap.xml:
-drive file=/var/lib/libvirt/images/a,format=qcow,if=none,id=drive-dummy,discard=unmap
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 16:05:31 +02:00
Peter Krempa
18458e8fd1 tests: qemublock: Add test combining authentication and encryption
iscsi and rbd support authentication of the connection. Combine it with
encryption of qcow2.

The top level disk image would generate the following '-drive' cmdline:

-drive file=rbd:rbdpool/rbdimg:id=testuser-rbd:auth_supported=cephx\;none:
            mon_host=host1.example.com\;host2.example.com,
            file.password-secret=node-a-s-secalias,encrypt.format=luks,
            encrypt.key-secret=node-b-f-encalias,format=qcow2,
            if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 16:03:46 +02:00
Peter Krempa
2c71edcf90 tests: qemublock: basic qcow2 tests
Add tests for backing chain handling, including a very long chain which
is fully specified in the XML and an unterminated chain.

The top level disk image would generate the following '-drive':

file-qcow2-backing-chain-encryption.xml:
-drive file=/var/lib/libvirt/images/a,encrypt.format=luks,
    encrypt.key-secret=node-b-f-encalias,format=qcow2,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-qcow2-backing-chain-noopts.xml:
-drive file=/var/lib/libvirt/images/rhel7.3.1507297895,format=qcow2,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-qcow2-backing-chain-unterminated.xml:
-drive file=/var/lib/libvirt/images/rhel7.3.1507297895,format=qcow2,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 16:01:09 +02:00
Peter Krempa
23a7f94893 tests: qemublock: Add test for raw luks disk format
Apart from adding test data add a function which sets up fake secrets
for the test.

The top level disk image would generate the following '-drive' cmdline:

-drive file=/path/luks.img,key-secret=test1-encalias,format=luks,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:58:51 +02:00
Peter Krempa
ac71f4e6d5 tests: qemublock: Add test cases for 'aio' options of 'file' storage
Test that the 'aio' option is applied correctly for the 'file' protocol
backend and across the backing chain.

The top level disk image would generate the following '-drive' cmdline:

file-backing_basic-aio_threads:
-drive file=/var/lib/libvirt/images/a,format=qcow,if=none,id=drive-dummy,aio=threads
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-raw-aio_native:
-drive file=/path/to/i.img,format=raw,if=none,id=drive-dummy,cache=none,aio=native
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy,write-cache=on

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:57:52 +02:00
Peter Krempa
7e441e2e2c tests: qemublock: Add test-case for the 'vvfat' driver in qemu
Test mapping of the 'FAT' disk format to 'vvfat' in qemu.

The top level disk image would generate the following '-drive' cmdline:

dir-fat-readonly.xml:
-drive file=fat:/var/somefiles,if=none,id=drive-dummy,readonly=on
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

dir-fat-floppy.xml
-drive file=fat:floppy:/var/somefiles,if=none,id=drive-dummy,readonly=on

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:55:16 +02:00
Peter Krempa
b54af513d6 tests: qemublock: Add tests for basic backing chain formats
Formats supporting backing chain such as qed, vmdk, don't have any other
parameters than the backing store and 'qcow' has only encryption params
which will be tested extra. Add this test case so they are covered since
any further test cases will mainly care about 'qcow2' and 'raw'.

The top level disk image would generate the following '-drive' cmdline:

-drive file=/var/lib/libvirt/images/a,format=qed,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:53:57 +02:00
Peter Krempa
c4f0e16f5a tests: qemublock: Add tests for all other format without special options
Similarly to the 'raw' case add tests for bochs, cloop, dmg, ploop, vdi
vhd, and vpc. Covering all supported non-backing formats.

Note that the JSON name for 'ploop' maps to 'parallels' and 'vhd' maps
to 'vhdx'.

Files added here would result in the followint configs:

file-bochs-noopts.xml:
-drive file=/path/to/i.img,format=bochs,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-cloop-noopts.xml:
-drive file=/path/to/i.img,format=cloop,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-dmg-noopts.xml:
-drive file=/path/to/i.img,format=dmg,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-ploop-noopts.xml:
-drive file=/path/to/i.img,format=ploop,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-vdi-noopts.xml:
-drive file=/path/to/i.img,format=vdi,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-vhd-noopts.xml:
-drive file=/path/to/i.img,format=vhd,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-vpc-noopts.xml:
-drive file=/path/to/i.img,format=vpc,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:53:12 +02:00
Peter Krempa
5ce01b15e1 tests: qemublock: Add basic 'raw' file test
Test the JSON props generator with a very simple 'raw' image with no
other options. The node-names for the image are 31 bytes long so that we
validate our node name detector.

The top level disk image would generate the following '-drive' cmdline:

-drive file=/var/lib/libvirt/images/i.img,format=raw,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:51:45 +02:00
Peter Krempa
8f60653de3 tests: qemublock: Add testing of blockdev JSON property generator
Add a test infrastructure that will allow testing the JSON object
generator used for generating data to use with blockdev-add.

The resulting disk including the backing chain is validated to conform
to the QAPI schema and the expected output files.

The first test cases make sure that libvirt will not allow nodenames
exceeding 31 chars.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:48:10 +02:00
Peter Krempa
30a7721702 qemu: domain: Tolerate NULL 'cfg' in qemuDomainPrepareDiskSourceChain
The function will be reused in the test code where we don't care much
that the gluster debug level can't be populated from the qemu config.

Set the level only when 'cfg' is passed.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:42:33 +02:00
Peter Krempa
1e81f198bf qemu: domain: Export qemuDomainDeviceDefValidateDisk
It will be used in the qemublocktest.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:41:15 +02:00
Peter Krempa
5eb34251ad tests: Makefile: Sanitize entry for qemublocktest
Remove gnulib from _LDADD and move LDADDS to replace it. Also reformat
the _SOURCES so that they can be easily extended.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:40:21 +02:00
Peter Krempa
21498975d1 tests: qemublock: Rename variables in anticipation of new tests
New tests will add new data structures so rename the 'data' structure.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:38:59 +02:00
Peter Krempa
e17193acd2 qemu: block: Add support for creating 'format' layer for blockdev-add
When using blockdev-add and friends, libvirt will need to create also
properties for the qcow2/raw/... format handler in qemu. This patch adds
the infrastructure and implements all formats known to libvirt including
all properties which are expressed at the format level in qemu.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:38:03 +02:00
Peter Krempa
0e6b60dcac qemu: block: Always set discard for storage nodes
Enabling discard for the storage node allows the format drivers to
discard snapshots and other things, while configuration of the format
layer actually decides whether to actually discard data on request from
the host.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:36:53 +02:00
Peter Krempa
b51016c73c qemu: block: Format 'read-only' attribute for JSON disk protocol
This will be required when doing blockdev-add to conform with the
approach qemu choses to create the disks.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:36:41 +02:00
Peter Krempa
de5a15bc3d qemu: block: Format cache modes for disk storage backends
When used directly with blockdev-add/-blockdev the cache mode will need
to be specified directly for every image rather than just for the disk
itself. This implements the backing options 'direct' and 'no-flush'.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:34:11 +02:00
Peter Krempa
58505900c5 qemu: block: Validate node-names for use with qemu
qemu declares node-name as a 32 byte buffer and silently truncates
anything longer than that. This is unacceptable for libvirt, so we need
to make sure that we won't ever supply a node-name exceeding 31 chars.

Add a function which will do the validation and use it to validate
storage-protocol node names.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:33:38 +02:00
Peter Krempa
d94aa38ffb qemu: block: Propagate 'legacy' parameter when formatting disk backing
The gluster protocol in qemu uses two styles, one of which is legacy and
not covered by the QAPI schema.

To allow using of the new style in the blockdev-add code, add a
parameter for qemuBlockStorageSourceGetBackendProps which will switch
between the two modes.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:31:48 +02:00
Peter Krempa
01455fe87b qemu: block: Properly handle block storage in JSON generator
Block storage should actually be passed to qemu via 'host_device' or
'host_cdrom' according to the device type. There were no users of this
behaviour so we thankfully can change it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:30:47 +02:00
Peter Krempa
e5dc760d0c qemu: domain: Store whether a virStorageSource is a host CDROM drive
Use virFileIsCDROM to detect whether a block device is a cdrom drive and
store it in virStorageSource. This will be necessary to correctly create
the 'host_cdrom' backend in qemu when using -blockdev.

We assume that host_cdrom makes only sense when used directly as a raw
image, but if a backing chain would be put in front of it, libvirt will
use 'host_device' in that case.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:22:30 +02:00
Peter Krempa
f3282d1f9b util: file: Add helper to determine whether a path is a CDROM
Add detection mechanism which will allow to check whether a path to a
block device is a physical CDROM drive. This will be useful once we will
need to pass it to hypervisors.

The linux implementation uses an ioctl to do the detection, while the
fallback uses a simple string prefix match.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:17:06 +02:00
Peter Krempa
a33a3b1006 util: file: Use only one #ifdef for __linux__
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:07:33 +02:00
Peter Krempa
2b26ea1441 qemu: block: Add support for accessing directories via the 'vvfat' driver
Handle VIR_STORAGE_TYPE_DIR in qemuBlockStorageSourceGetBackendProps so
that a 'vvfat' driver is used, which emulates a FAT filesystem
containing the folders.

qemu requires us to add it as a storage layer, since a 'raw' layer is
usually put on top of it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:06:55 +02:00
Peter Krempa
c9b27af32d qemu: Move virtual FAT disk validation from command line builder
Move it to the validation callback and make it more robust. This will
also put the checks in the correct place to use with -blockdev.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 15:05:24 +02:00
Peter Krempa
043b9069c5 utils: storage: Mark that a virStorageSource is going to be used as a floppy
Add a flag denoting that a virStorageSource is going to be used as a
floppy image. This will be useful in cases where the user passes in
files which shall be exposed as an image to the guest.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 14:52:43 +02:00
Peter Krempa
bbf204dab7 qemu: block: Handle iomode property for json 'file' driver
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 14:51:28 +02:00
Peter Krempa
0304e675c0 qemu: block: Extract formatting of props for 'file' backend
'file' backend in qemu supports few more options than the current
implementation. Extract it so that changes don't pollute the code.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 14:50:54 +02:00
Peter Krempa
8a78f88a1a qemu: domain: Carefuly transfer configuration from disk to storage source
Some properties don't make sense to be configured for every single layer
of the backing chain, but to avoid needing to pass the disk structure we
will copy them to the individual virStorageSource.

Zero detection is applied only for the top layer image, while caching
and iomode for all layers.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 14:49:21 +02:00
Peter Krempa
d302b5896e util: storage: Add shadow copies of few disk properties to virStorageSource
Few things which are currently stored the virDomainDiskDef structure are
actually relevant for the storage source as well. Add the fields with a
note that they are just mirror of the values from the disk.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 14:47:43 +02:00
Peter Krempa
38fd7aec33 qemu: domain: Format storage source node names into private data
Save and restore node names if we know them or when we will be
generating them in the status XML.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 14:45:11 +02:00
Peter Krempa
3817fa10c4 storage: Properly track that backing chain members are readonly
Everything besides the top of the chain is readonly. Track this when
parsing the XML and detecting the chain from the disk. Also fix the
state when taking snapshots.

All other cases where the top image is changed already preserve the
readonly state from the original image.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 14:41:20 +02:00
Ján Tomko
5dbdd401e8 Deprecate QEMU_CAPS_TDF
This capability is unused since we stopped parsing -help output.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 10:33:13 +02:00
Ján Tomko
941c8b0d00 Deprecate QEMU_CAPS_NO_KVM_PIT
The -no-kvm-pit-reinjection option has been deprecated since
its introduction in QEMU 1.3. See commit <1569fa1>.

Drop the capability since all the QEMUs we support allow tuning
the kvm-pit properties via -global.

Also add the QEMU_CAPS_KVM_PIT_TICK_POLICY to the clock-catchup
tests, since expecting it to succeed with QEMU that does not
have kvm-pit makes no sense.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 10:33:13 +02:00
Ján Tomko
1c533759e1 qemuBuildMachineCommandLine: use a switch for virDomainVirtType
Enumerate all the cases and use virReportEnumRangeError.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 10:33:13 +02:00
Ján Tomko
a34f18cde0 qemu: remove qemuBuildObsoleteAccelArg
Since we started assuming QEMU_CAPS_MACHINE_OPT in
commit <69420756>, this function can only be reached
for unsupported virt types.

Replace the call with a virReportError.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 10:33:13 +02:00
Ján Tomko
e5261d8fe3 storage: remove qemu-img help scraping
We have been checking whether qemu-img supports the -o compat
option by scraping the -help output.

Since we require QEMU 1.5.0 now and this option was introduced in 1.1,
assume we support it and ditch the help parsing code along with the
extra qemu-img invocation.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 10:23:20 +02:00
Ján Tomko
74abb43aca tests: assume FMT_COMPAT for qemu-img tests
No point in testing outdated command lines.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 10:21:59 +02:00
Ján Tomko
3590ebdfd2 tests: delete most qemu-img test cases assuming FMT_OPTIONS
We have two leftover "capabilites" for qemu-img:
QEMU_IMG_BACKING_FORMAT_OPTIONS
QEMU_IMG_BACKING_FORMAT_OPTIONS_COMPAT

The former says we are able to specify the backing format via -o
(which has been the case for a long time now) and the second one
says we can use -o compat to specify the qcow2 version.

Since we require QEMU 1.5.0, we can always assume -o compat,
which was introduced in QEMU 1.1.

Drop the test cases using FMT_OPTIONS which have a FMT_COMPAT
counterpart to prepare for deprecating FMT_OPTIONS (and these flags)
completely.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-07 10:21:39 +02:00
Prafullkumar Tale
40b5c99a5b lxc: convert to typesafe virConf accessors in lxc_native.c
Signed-off-by: Prafullkumar Tale <talep158@gmail.com>
2018-05-04 17:49:05 +02:00
Lin Ma
fea03bd31d virsh: Simplify control flow for 'qemu-agent-command' command
Signed-off-by: Lin Ma <lma@suse.com>
2018-05-04 12:46:22 +02:00
Lin Ma
b9e3c8c5c0 virsh: Simplify control flow for 'desc' command
Just like the commit 8941c800, It does the similar thing.

Signed-off-by: Lin Ma <lma@suse.com>
2018-05-04 12:46:22 +02:00
Lin Ma
2273e408d9 virsh: Error out while domain not found for 'event' command
Signed-off-by: Lin Ma <lma@suse.com>
2018-05-04 12:46:22 +02:00
Lin Ma
b925e6625c virsh: Error out while domain not found for 'qemu-monitor-event' command
Signed-off-by: Lin Ma <lma@suse.com>
2018-05-04 12:46:22 +02:00
John Ferlan
b04629b629 conf: Clean up object referencing for Add and Remove
When adding a new object to the domain object list, there should
have been 2 virObjectRef calls made one for each list into which
the object was placed to match the 2 virObjectUnref calls that
would occur during Remove as part of virHashRemoveEntry when
virObjectFreeHashData is called when the element is removed from
the hash table as set up in virDomainObjListNew.

Some drivers (libxl, lxc, qemu, and vz) handled this inconsistency
by calling virObjectRef upon successful return from virDomainObjListAdd
in order to use virDomainObjEndAPI when done with the returned @vm.
While others (bhyve, openvz, test, and vmware) handled this via only
calling virObjectUnlock upon successful return from virDomainObjListAdd.

This patch will "unify" the approach to use virDomainObjEndAPI
for any @vm successfully returned from virDomainObjListAdd.

Because list removal is so tightly coupled with list addition,
this patch fixes the list removal algorithm to return the object
as entered - "locked and reffed".  This way, the callers can then
decide how to uniformly handle add/remove success and failure.
This removes the onus on the caller to "specially handle" the
@vm during removal processing.

The Add/Remove logic allows for some logic simplification such
as in libxl where we can Remove the @vm directly rather than
needing to set a @remove_dom boolean and removing after the
libxlDomainObjEndJob completes as the @vm is locked/reffed.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-05-03 19:09:03 -04:00
John Ferlan
faa148bc5d libxl: Add refcnt for args->conn during migration
Since the @dconn reference via args->conn will be used via a thread
or callback, let's make sure memory associated with it isn't free'd
unexpectedly before we use it. The Unref will be done when the object
is Dispose'd.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-05-03 19:09:03 -04:00
John Ferlan
8369ddfd1b libxl: Add refcnt for args->vm during migration
When adding the @vm to the @args for usage during a thread or
callback, let's add the reference to it at the time of adding to
ensure nothing else deletes it. The corresponding Unref is then
added to the Dispose function.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-05-03 19:09:03 -04:00
John Ferlan
2d2ed7b6f6 conf: Move and use virDomainObjListRemoveLocked
Rather than open code within virDomainObjListRemove, just call
the *Locked function.

Additionally, add comments to virDomainObjListRemove to describe
the usage model.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-05-03 19:09:03 -04:00
John Ferlan
7ae289203a conf: Use virDomainObjListFindBy*Locked for virDomainObjListAdd
Use the FindBy{UUID|Name}Locked helpers which will return a locked
and ref counted object rather than the direct virHashLookup and
virObjectLock of the returned object. We'll need to temporarily
virObjectUnref when we assign a new domain @def, but that will
change shortly when virDomainObjListAddObjLocked returns the
correct reference counted object.

Use the virDomainObjEndAPI in the error path to Unref/Unlock for
the corresponding Unref/Unlock of either the FindBy* return or
the virDomainObjNew since both return a reffed/locked object.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-05-03 19:09:03 -04:00
John Ferlan
cf5184d1e1 conf: Split FindBy{UUID|Name} into locked helpers
Create helpers virDomainObjListFindByUUIDLocked and
virDomainObjListFindByNameLocked to avoid the need
to lock the domain object list leaving that task
for the caller.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2018-05-03 19:09:03 -04:00
Cole Robinson
5d84835e09 tests: domaincapstest: Fix after iothreads addition
Introduced in 8525b9694. Some files weren't updated. I'm just
guessing on the bhyve ones

Signed-off-by: Cole Robinson <crobinso@redhat.com>
2018-05-03 17:34:41 -04:00
Cole Robinson
33455bc4ce domain_capabilities: Report <vmcoreinfo> support
Report <features><vmcoreinfo supported='yes'/> if the guest config
accepts <features><vmcoreinfo state='on'/>

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2018-05-03 16:37:41 -04:00
Cole Robinson
217d2656a5 conf: Add a comment warning about boolean feature XML
This is the old style and we really shouldn't be adding any more
examples like this. Add a comment to warn devs away

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2018-05-03 16:37:41 -04:00
Cole Robinson
c84be08156 conf: format/parse <vmcoreinfo> as tristate
<features><vmcoreinfo/> is a bare boolean XML property. We don't really
use this format anymore and instead prefer tristate <X state=on|off/>
since it's required for modeling on/off/default. If for example future
qemu started enabling vmcoreinfo by default we wouldn't have any way
for the user to turn this off.

Convert it to tristate. For writing XML this is semanticly the same,
<vmcoreinfo/> is processed as <vmcoreinfo state='on'/>.

For apps reading guest XML this is technically an API change,
as they might misinterpret <vmcoreinfo state='off'/>, however this
has only been present in libvirt since 3.10.0 and I don't think any
apps are dependent on this yet

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2018-05-03 16:37:41 -04:00
Martin Kletzander
8525b9694e qemu: Add I/O thread support info into domain capabilities
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
2018-05-03 22:31:37 +02:00
Martin Kletzander
25f4ee5179 xenconfig/: Remove spaces after casts
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-03 22:31:37 +02:00
Martin Kletzander
4c7315b4ab vz/: Remove spaces after casts
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-03 22:31:37 +02:00
Martin Kletzander
5298a202ca vmx/: Remove spaces after casts
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-03 22:31:37 +02:00
Martin Kletzander
8aece9bc9c uml/: Remove spaces after casts
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-03 22:31:37 +02:00
Martin Kletzander
86137d7135 test/: Remove spaces after casts
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-03 22:31:37 +02:00
Martin Kletzander
d80b84c68b storage/: Remove spaces after casts
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-03 22:31:37 +02:00
Martin Kletzander
156f03ec59 security/: Remove spaces after casts
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-03 22:31:37 +02:00
Martin Kletzander
b63d30d601 rpc/: Remove spaces after casts
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-03 22:31:37 +02:00
Martin Kletzander
5b912664c6 qemu/: Remove spaces after casts
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-03 22:31:37 +02:00
Martin Kletzander
221090dbda phyp/: Remove spaces after casts
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-03 22:31:37 +02:00
Martin Kletzander
cf057fbefb nwfilter/: Remove spaces after casts
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-03 22:31:37 +02:00
Martin Kletzander
6f8ec35aa1 network/: Remove spaces after casts
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-03 22:31:37 +02:00
Martin Kletzander
aa2c1a16ba lxc/: Remove spaces after casts
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-03 22:31:36 +02:00
Martin Kletzander
4d9114f70a hyperv/: Remove spaces after casts
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-03 22:31:36 +02:00
Martin Kletzander
9f8d3afdca esx/: Remove spaces after casts
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-03 22:31:36 +02:00
Martin Kletzander
76f253d866 access/: Remove spaces after casts
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2018-05-03 22:31:36 +02:00
Andrea Bolognani
0b86e23d25 tests: Drop DO_TEST_LINUX()
Now that mocking NUMA information works on FreeBSD, there are
no longer any test cases that need to be restricted to Linux
only.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 18:23:30 +02:00
Andrea Bolognani
77ac204d14 tests: Extend NUMA mocking
While the current amount of mocking works just fine on most of
our target platforms, it somehow causes issues when using Clang
on FreeBSD.

Work around the issue by mocking a couple more functions. It's
not pretty, but it makes qemuxml2argvtest pass on FreeBSD at
long last.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 18:23:30 +02:00
Andrea Bolognani
b5d4652e07 tests: Build virpcimock on FreeBSD too
There are only a couple remaining issues preventing it from
working on FreeBSD. Let's fix them.

With the mocking in place, qemumemlocktest and qemuxml2xmltest
can finally succeed on FreeBSD.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 18:23:30 +02:00
Andrea Bolognani
530cecdb7b tests: Fix mode_t usage with va_arg()
Clang complains about it:

  error: second argument to 'va_arg' is of promotable type
  'mode_t' (aka 'unsigned short'); this va_arg has undefined
  behavior because arguments will be promoted to 'int'
  [-Werror,-Wvarargs]

    mode = va_arg(ap, mode_t);
                      ^~~~~~

Work around the issue by passing int to va_arg() and casting
its return value to mode_t afterwards.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 18:23:30 +02:00
Andrea Bolognani
00d465bb4d syntax-check: Prohibit canonicalize_file_name()
We want to make sure our wrapper is used instead in order
to keep the test suite working.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 18:23:30 +02:00
Andrea Bolognani
3bfe72e3dd tests: Stop mocking canonicalize_file_name()
We're using virFileCanonicalizePath() everywhere now, so
mocking this function has become entirely pointless.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 18:23:30 +02:00
Andrea Bolognani
4267393198 all: Use virFileCanonicalizePath() instead of canonicalize_file_name()
The latter is impossible to mock on platforms that use the
gnulib implementation, such as FreeBSD, while the former
doesn't suffer from this limitation.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 18:23:30 +02:00
Andrea Bolognani
9190c37268 tests: Mock virFileCanonicalizePath()
We're going to need this later on.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 18:23:29 +02:00
Andrea Bolognani
026606caf2 util: Introduce virFileCanonicalizePath()
It's a trivial wrapper around canonicalize_file_name(),
which we need in order to fully mock file access on non-Linux
platforms.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 18:23:29 +02:00
Daniel P. Berrangé
b71ce433bc configure: remove bogus LIBVIRT_GETTEXT macro reference
The LIBVIRT_GETTEXT macro was an artifact of patch development and
was later renamed to LIBVIRT_CHECK_NLS. This cruft causes configure
to print out

./configure: line 75084: LIBVIRT_GETTEXT: command not found

but fortunately this is non-fatal

Reported-by: Martin Kletzander <mkletzan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 17:06:19 +01:00
Daniel P. Berrangé
23ed8eb21d nwfilter: pass vm name in when instantiating filters
The vm name is not needed for any functional requirement, but it will be
useful when debugging problems to identify which VM is associated with a
filter, since UUID is not human friendly.

Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 17:00:57 +01:00
Daniel P. Berrangé
593ba43f1f nwfilter: introduce virNWFilterBinding to decouple from virDomainNet
The virDomainNet struct contains everything related to configuring a
guest network device. Out of all of this info, only 5 fields are
relevant to configuring network filters. It will be more convenient for
future changes to the nwfilter driver if the relevant fields are kept in
a dedicated struct. Thus the virNWFilterBinding struct is created to
track this information.

Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 17:00:57 +01:00
Daniel P. Berrangé
1c425d735d nwfilter: fix leaking of filter parameters upon error
The filter parameters were not correctly free'd when an error hits while
adding to the hash table.

Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 17:00:57 +01:00
Daniel P. Berrangé
94d31e7c0e nwfilter: remove obsolete code related to firewalld
There is a bunch of left over code in the nwfilter driver related to
monitoring firewalld over dbus, that is no longer used since the
conversion to use virFirewall APIs.

Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 17:00:57 +01:00
Daniel P. Berrangé
fdc7ebfb54 nwfilter: make virNWFilterIPAddrLearnReq type private
The virNWFilterIPAddrLearnReq type should only be used by the IP address
learning code, so can live in the implementation file instead of header
file.

Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 17:00:57 +01:00
Daniel P. Berrangé
b6ac5a82b9 nwfilter: change methods returning virNWFilterIPAddrLearnReq to use bool
Various methods return a virNWFilterIPAddrLearnReq struct, but the
callers are only interested in whether the return value is non-NULL.
It is thus preferrable to just return a bool.

Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 17:00:57 +01:00
Daniel P. Berrangé
d60896321b nwfilter: remove virNWFilterHashTable typedefs entirely
All the code now just uses the virHashTablePtr type directly.

Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 17:00:57 +01:00
Daniel P. Berrangé
1cf16d755e nwfilter: remove methods that are trivial wrappers for virHash APIs
This removes the virNWFilterHashTableFree, virNWFilterHashTablePut
and virNWFilterHashTableRemove methods, in favour of just calling
the virHash APIs directly.

The virNWFilterHashTablePut method was unreasonably complex because
the virHashUpdateEntry already knows how to create the entry if it
does not currently exist.

Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 17:00:57 +01:00
Daniel P. Berrangé
77646d9478 nwfilter: remove pointless virNWFilterHashTable struct
The virNWFilterHashTable struct only contains a single virHashTable
member since

  commit 293d4fe2f1
  Author: Daniel P. Berrange <berrange@redhat.com>
  Date:   Mon Mar 24 16:35:23 2014 +0000

    Remove pointless storage of var names in virNWFilterHashTable

Thus, this struct wrapper adds no real value over just using the
virHashTable directly, but brings the complexity of needing to derefence
the hashtable to call virHash* APIs, and adds extra memory allocation
step.

To minimize code churn this just turns virNWFilterHashTable into a
typedef aliases virHashTable.

Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 17:00:57 +01:00
Stefan Berger
81cb05b7e8 qemu: Add tpm-crb QEMU device to the command line
Alter qemuBuildTPMDevStr to format the tpm-crb on the command line
and use the enum range checking for valid model.

Add a test case for the formation of the tpm-crb QEMU device
command line. The qemuxml2argvtest changes cannot use the newer
DO_TEST_CAPS_LATEST since building of the command line involves
calling qemuBuildTPMBackendStr which attempts to open the
path to the device (e.g. /dev/tmp0).

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-03 11:28:42 -04:00
Stefan Berger
9323c4bb88 qemu: Extend the capabilities with tpm-crb device
QEMU on x86_64 (since v2.12) can support tpm-crb devices.
Introduce qemu capabilities for this device.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-03 11:28:42 -04:00
Stefan Berger
fead27f4b3 conf: Enable TPM CRB interface in the domain XML
Enable the TPM CRB to be specified in the domain XML. This
now allows to describe the TPM device like this:

  <tpm model='tpm-crb'>
    <backend type='passthrough'>
      <device path='/dev/tpm0'/>
    </backend>
  </tpm>

Extend the XML schema to also allow tpm-crb.
Extend the documentation.
Add a test case for testing the XML parser and formatter.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-03 11:28:42 -04:00
Julio Faracco
054a66037d test: avoid slash characters to the new domain name.
As QEMU driver, test driver does not accept slashes inside domain names.
This commit fixes this problem checking slashes inside the new name when
'domrename' is executed.

Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-03 11:25:01 -04:00
Julio Faracco
4e1a970219 qemu: avoid slash characters to the new domain name.
The 'domrename' command needs to check if the new domain name contains
the slash character. This character is not accepted by libvirt XML
definition because it is an invalid char (see Cole's commit b1fc6a7b7).
This commit enhace the 'domrename' command adding this check.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1333232

Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
2018-05-03 11:25:01 -04:00
Daniel P. Berrangé
d2f5bb714f storagefile: conditional build of virStorageFileLoadBackendModule
The virStorageFileLoadBackendModule method is only used if either
fs or gluster storage is built in, which doesn't happen on mingw
leading to warning of an unused static function.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 15:42:59 +01:00
Daniel P. Berrangé
564fdad9cb tests: unlink libxl-driver.log
The libxlxml2domconfigtest causes a libxl-driver.log file to be created
which breaks make distchck if libxl is enabled. Delete the log file at
the end of the test.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 14:26:08 +01:00
Daniel P. Berrangé
01888af0e2 storage: create separate loadable modules for storage file drivers
The storage file drivers are currently loaded as a side effect of
loading the storage driver. This is a bogus dependancy because the
storage file code has no interaction with the storage drivers, and
even ultimately be running in a completely separate daemon.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 13:17:59 +01:00
Daniel P. Berrangé
1421e7168c util: refactor storage file checks to allow error reporting
The virStorageFileSupportsSecurityDriver and
virStorageFileSupportsAccess currently just return a boolean
value. This is ok because they don't have any failure scenarios
but a subsequent patch is going to introduce potential failure
scenario. This changes their return type from a boolean to an
int with values -1, 0, 1.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 13:16:00 +01:00
Daniel P. Berrangé
c444505c99 util: fix virStorageFileGetBackingStoreStr error handling
The virStorageFileGetBackingStoreStr method has overloaded the NULL
return value to indicate both no backing available and a fatal
error dealing with it.

The caller is thus not able to correctly propagate the error
messages.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 13:15:51 +01:00
Daniel P. Berrangé
dbf28572c8 storage: split fs storage file code from storage driver backend
The storage file code needs to be run in the hypervisor drivers, while
the storage backend code needs to be run in the storage driver. Split
the source code as a preparatory step for creating separate loadable
modules.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 12:51:38 +01:00
Daniel P. Berrangé
f78cbe9424 storage: remove unused imports of libxml headers
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 12:49:57 +01:00
Daniel P. Berrangé
7568fc730f storage: split gluster storage file code from storage driver backend
The storage file code needs to be run in the hypervisor drivers, while
the storage backend code needs to be run in the storage driver. Split
the source code as a preparatory step for creating separate loadable
modules.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 12:49:22 +01:00
Daniel P. Berrangé
8b0f721f2e util: create new virmodule.{c,h} files for dlopen support code
The driver.{c,h} files are primarily targetted at loading hypervisor
drivers and some helper functions in that area. It also, however,
contains a generically useful function for loading extension modules
that is called by the storage driver. Split that functionality off
into a new virmodule.{c,h} file to isolate it.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 12:47:43 +01:00
Ville Skyttä
1f2f055bc3 docs: Grammar and spelling fixes
Signed-off-by: Ville Skyttä <ville.skytta@iki.fi>
2018-05-03 12:40:37 +01:00
Daniel P. Berrangé
78c5dfab42 rpm: set wireshark plugin directory from pkg-config
The wireshark plugin directory moved again in Fedora 29, and will
move again every time wireshark do a new minor release. Call out
to pkg-config to find the right directory to use in the RPM file
list.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 12:17:31 +01:00
Daniel P. Berrangé
9d3859d9d7 rpm: libvirt-daemon-driver-libxl must obsolete libvirt-daemon-driver-xen
Snce the xen driver was deleted we need to ensure that the old
libvirt-daemon-driver-xen sub-RPM gets removed on upgrade. We
achieve this my making libvirt-daemon-driver-libxl obsolete it.

We don't add a Provides: too, because libvirt-daemon-driver-libxl
is not a functionally identical replacement, since we don't want
to satisfy deps for 3rd party apps that have a Requires on the
libvirt-daemon-driver-xen RPM.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-05-03 11:18:42 +01:00
Maciej Wolny
12fd47bced tests/Makefile.am: use LIBTOOL variable instead of hardcoded name
Fixes "can't find libtool" error when running valgrind checks.

Signed-off-by: Maciej Wolny <maciej.wolny@codethink.co.uk>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2018-05-02 19:05:20 +02:00
Ján Tomko
bf70a48e22 conf: remove unused VIR_DOMAIN_FS_RAM_DEFAULT_USAGE
Unused since its introduction in commit <76b644c>.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-02 16:03:00 +02:00
Erik Skultety
c376c76996 docs: schema: Add missing <interleave> element to panic device
Panic device has 2 optional sub-elements - <alias> and <address> the
order of which should be interchangeable in the XML.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1456165

Signed-off-by: Erik Skultety <eskultet@redhat.com>
2018-05-02 14:52:09 +02:00
Ján Tomko
538a7d30c2 Makefile: fix typo
s/atttribute/attribute/

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-02 14:47:46 +02:00
Ján Tomko
e7359ff36d Post-release version bump to 4.4.0
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2018-05-02 14:35:05 +02:00
Daniel Veillard
1cc820560f Release of libvirt-4.3.0
* docs/news.xml: updated for the release

Signed-off-by: Daniel Veillard <veillard@redhat.com>
2018-05-02 14:26:33 +02:00
Peter Krempa
764a7483f1 news: Mention changes TLS non-shared-storage migration
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-05-02 09:44:00 +02:00
Peter Krempa
9cee8f3f7e qemu: migration: Use TLS environment for NBD server if requested
Use the TLS env for migration when starting the NBD server if TLS is
enabled for migration.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-04-30 14:58:05 +02:00
Peter Krempa
17d34b482b qemu: monitor: Add 'tls-creds' parameter to 'nbd-server-start' command
To allow encryption of the non-shared storage migration NBD connection
we will need to instantiated the NBD server with the TLS env.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-04-30 14:57:53 +02:00
Peter Krempa
51541809b8 qemu: caps: Add capability for TLS transport in the NBD server
The NBD server in qemu supports TLS transport. Detect this capability.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-04-30 14:57:38 +02:00
Peter Krempa
ed1c45b0ba qemu: migration: Don't crash on access to 'current' job
When a VM is destroyed while being migrated (waiting in
qemuMigrationSrcWaitForCompletion) the private object cleanup code frees
the 'current' job info. Since the migration code attempts to setup
various aspects of the current job even on failure this results into a
crash.

Job data is cleared in qemuDomainObjPrivateDataClear since commit
888aa4b6b9

Fix this by skipping all of the code which requires the qemu process to
be alive if the VM is not active any more.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2018-04-30 14:43:42 +02:00
Daniel P. Berrangé
45f9905a3f po: delete bogus translations from various languages
For unknown reasons about 21 languages had the same 212 msgid entries
copied into the msgstr field without having any translation applied.
This bogus non-translated data has now been purged from Zanata.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-04-30 10:40:58 +01:00
Daniel P. Berrangé
fd4581ad1e Refresh translations to drop unused strings
Refresh transaltion po files to drop msgid/msgstr entries that are no
longer required due to deletion/refactoring of source code.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-04-30 10:40:58 +01:00
Peter Krempa
b2b2998a4b qemu: migration: Forbid 'nbd' migration of non-shared storage if TLS is requested
Since libvirt is currently not able to setup the NBD migration stream
secured by TLS we should not allow such migration since data would be
transferred unencrypted.

This will break compatibility of TLS migration if non-shared storage is
requested but the security implications are more severe.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-04-30 07:44:39 +02:00
Laine Stump
ce5aebeacd nwfilter: increase pcap buffer size to be compatible with TPACKET_V3
When an nwfilter rule sets the parameter CTRL_IP_LEARNING to "dhcp",
this turns on the "dhcpsnoop" thread, which uses libpcap to monitor
traffic on the domain's tap device and extract the IP address from the
DHCP response.

If libpcap on the host is built with HAVE_TPACKET3 defined (to enable
support for TPACKET_V3), the dhcpsnoop code's initialization of the
libpcap socket would fail with the following error:

  virNWFilterSnoopDHCPOpen:1134 : internal error: pcap_setfilter: can't remove kernel filter: Bad file descriptor

It turns out that this was because TPACKET_V3 requires a larger buffer
size than libvirt was setting (we were setting it to 128k). Changing
the buffer size to 256k eliminates the error, and the dhcpsnoop thread
once again works properly.

A fuller explanation of why TPACKET_V3 requires such a large buffer,
for future git spelunkers:

libpcap calls setsockopt(... SOL_PACKET, PACKET_RX_RING...) to setup a
ring buffer for receiving packets; two of the attributes sent to this
API are called tp_frame_size, and tp_frame_nr. If libpcap was built
with HAVE_TPACKET3 defined, tp_trame_size is set to MAXIMUM_SNAPLEN
(defined in libpcap sources as 262144) and tp_frame_nr is set to:

 [the buffer size we set, i.e. PCAP_BUFFERSIZE i.e. 262144] / tp_frame_size.

So if PCAP_BUFFERSIZE < MAXIMUM_SNAPLEN, then tp_frame_nr (the number
of frames in the ring buffer) is 0, which is nonsensical. This same
value is later used as a multiplier to determine the size for a call
to malloc() (which would also fail).

(NB: if HAVE_TPACKET3 is *not* defined, then tp_frame_size is set to
the snaplen set by the user (in our case 576) plus a small amount to
account for ethernet headers, so 256k is far more than adequate)

Since the TPACKET_V3 code in libpcap actually reads multiple packets
into each frame, it's not a problem to have only a single frame
(especially when we are monitoring such infrequent traffic), so it's
okay to set this relatively small buffer size (in comparison to the
default, which is 2MB), which is important since every guest using
dhcp snooping in a nwfilter rule will hold 2 of these buffers for the
entire life of the guest.

Thanks to Christian Ehrhardt for discovering that buffer size was the
problem (this was not at all obvious from the error that was logged!)

Resolves: https://bugzilla.redhat.com/1547237
Fixes: https://bugs.launchpad.net/libvirt/+bug/1758037

Signed-off-by: Laine Stump <laine@laine.org>
Reviewed-by: Christian Ehrhardt <christian.ehrhardt@canonical.com> (V1)
Reviewed-by: John Ferlan <jferlan@redhat.com>
Tested-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
2018-04-27 17:38:53 -04:00
Daniel P. Berrangé
6dd3679603 Revert "news: Update the news file with the log filter wildcard improvement"
This reverts commit 209d4d6f42.

The wildcard feature has been temporarily removed pending re-impl.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-04-27 16:27:45 +01:00
Daniel P. Berrangé
d32c0f9afe Revert "util: virlog: Introduce wildcard to log filters"
This reverts commit 8daa593b07.

There are two undesirable aspects to the impl

  - Only a bare wildcard is permitted
  - The wildcard match is not performed in the order listed

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2018-04-27 16:26:56 +01:00
Peter Krempa
96fc9fc509 qemu: migration: Set the 'set' boolean in qemuMigrationParamsSetString
The code setting TLS parameters verifies that TLS is supported by
looking at the dump of parameters which will be reset after migration,
but sets the parameters in the list of new parameters. As
qemuMigrationParamsSetString did not set the 'set' property, the TLS
parameters would not be used.

This is a regression after the series refactoring migration parameters
and it resulted into TLS not being used even when requested.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-04-27 15:14:05 +02:00
Peter Krempa
d49c6e4623 qemu: migration: Move and unexport qemuMigrationParamsSetString
The function is not used outside of the src/qemu/qemu_migration_params.c
file so unexport it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2018-04-27 15:14:02 +02:00
Martin Kletzander
f94e5b2157 logging: Don't inhibit shutdown in system daemon
That is a job of libvirtd and virtlogd has a dependency on it, so that will
prevent it properly.  Doing it one extra time in virtlogd might also cause AVC
denials because it is not allowed to call that dbus method.

Caused by commit df34363d58.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1547250

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2018-04-26 17:40:57 +02:00
796 changed files with 69683 additions and 44281 deletions

View File

@@ -1,128 +1,98 @@
sudo: false
language: c
cache: ccache
sudo: required
language: generic
branches:
except:
- /^.*-maint$/
- /^.*-maint$/
matrix:
include:
- compiler: gcc
dist: trusty
- services:
- docker
env:
- PYTHON=$(which python2)
- DISTCHECK_CONFIGURE_FLAGS="--with-init-script=upstart"
- compiler: clang
dist: trusty
env:
- PYTHON=$(which python3)
- IMAGE="ubuntu-18"
- DISTCHECK_CONFIGURE_FLAGS="--with-init-script=systemd"
- DOCKER_CMD="$LINUX_CMD"
- services:
- docker
env:
- IMAGE="centos-7"
- DISTCHECK_CONFIGURE_FLAGS="--with-init-script=upstart"
- DOCKER_CMD="$LINUX_CMD"
- services:
- docker
env:
- IMAGE="fedora-rawhide"
- MINGW="mingw32"
- DOCKER_CMD="$MINGW_CMD"
- services:
- docker
env:
- IMAGE="fedora-rawhide"
- MINGW="mingw64"
- DOCKER_CMD="$MINGW_CMD"
- compiler: clang
language: c
os: osx
before_install:
- brew update
- brew unlink python
- brew upgrade
- brew install rpcgen yajl
env:
- PATH="/usr/local/opt/gettext/bin:/usr/local/opt/ccache/libexec:/usr/local/opt/rpcgen/bin:$PATH"
script:
# We can't run make distcheck/syntax-check because they
# fail on macOS, but doing 'install' and 'dist' gives us
# some useful coverage
- make -j3 && make -j3 install && make -j3 dist
/bin/sh -xc "$MACOS_CMD"
addons:
apt:
# Please keep this list sorted alphabetically
packages:
- augeas-tools
- autoconf
- automake
- autopoint
- bash-completion
- ccache
- dnsmasq-base
- dwarves
- ebtables
- gcc
- gettext
- glusterfs-client
- libacl1-dev
- libapparmor-dev
- libattr1-dev
- libaudit-dev
- libavahi-client-dev
- libblkid-dev
- libc6-dev
- libcap-ng-dev
- libc-dev-bin
- libcurl4-gnutls-dev
- libdbus-1-dev
- libdevmapper-dev
- libfuse-dev
- libgnutls-dev
- libnetcf-dev
- libnl-3-dev
- libnl-route-3-dev
- libnuma-dev
- libopenwsman-dev
- libparted-dev
- libpcap-dev
- libpciaccess-dev
- librbd-dev
- libreadline-dev
- libsanlock-dev
- libsasl2-dev
- libselinux1-dev
- libssh2-1-dev
- libssh-dev
- libtirpc-dev
- libtool
- libudev-dev
- libxen-dev
- libxml2-dev
- libxml2-utils
- libyajl-dev
- lvm2
- make
# - nfs-common # broken on trusty since build #807 (2018-01-09)
- open-iscsi
- parted
- patch
- perl
- pkgconf
- policykit-1
- qemu-utils
- radvd
- scrub
- sheepdog
- systemtap-sdt-dev
- xsltproc
- zfs-fuse
script:
- docker run
-v $(pwd):/build
-w /build
-e VIR_TEST_DEBUG="$VIR_TEST_DEBUG"
-e MINGW="$MINGW"
-e DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS"
"libvirt/buildenv-$IMAGE"
/bin/sh -xc "$DOCKER_CMD"
git:
submodules: true
env:
global:
# The custom $PATH is just to pick up some extra binaries installed
# through homebrew on macOS and it's completely harmless on Linux
- PATH="/usr/local/opt/gettext/bin:/usr/local/opt/rpcgen/bin:$PATH"
- VIR_TEST_DEBUG=1
before_script:
- ./autogen.sh --prefix=$(pwd)/install-root
script:
- make -j3 && make -j3 syntax-check && make -j3 distcheck DISTCHECK_CONFIGURE_FLAGS=$DISTCHECK_CONFIGURE_FLAGS
after_failure:
- echo '============================================================================'
- 'if [ -f $(pwd)/tests/test-suite.log ]; then
cat $(pwd)/tests/test-suite.log;
else
echo "=== NO LOG FILE FOUND ===";
fi'
- LINUX_CMD="
./autogen.sh &&
make -j3 syntax-check &&
make -j3 distcheck DISTCHECK_CONFIGURE_FLAGS=\"\$DISTCHECK_CONFIGURE_FLAGS\" ||
(
echo '=== LOG FILE(S) START ===';
find -name test-suite.log | xargs cat;
echo '=== LOG FILE(S) END ===';
exit 1
)
"
- MINGW_CMD="
NOCONFIGURE=1 ./autogen.sh &&
\$MINGW-configure &&
make -j3 ||
(
echo '=== LOG FILE(S) START ===';
find -name test-suite.log | xargs cat;
echo '=== LOG FILE(S) END ===';
exit 1
)
"
# We can't run 'distcheck' or 'syntax-check' because they fail on
# macOS, but doing 'install' and 'dist' gives us some useful coverage
- MACOS_CMD="
brew update &&
brew install ccache rpcgen xz yajl &&
./autogen.sh --prefix=\$(pwd)/install-root &&
make -j3 &&
make -j3 install &&
make -j3 dist ||
(
echo '=== LOG FILE(S) START ===';
find -name test-suite.log | xargs cat;
echo '=== LOG FILE(S) END ===';
exit 1
)
"
notifications:
irc:

View File

@@ -37,8 +37,6 @@ connect
configmake
count-leading-zeros
count-one-bits
crypto/md5
crypto/sha256
dirname-lgpl
environ
execinfo
@@ -92,7 +90,6 @@ pthread
pthread_sigmask
recv
regex
random_r
sched
secure_getenv
send

10
cfg.mk
View File

@@ -462,6 +462,13 @@ sc_prohibit_ctype_h:
halt='use c-ctype.h instead of ctype.h' \
$(_sc_search_regexp)
# We have our own wrapper for mocking purposes
sc_prohibit_canonicalize_file_name:
@prohibit='\<canonicalize_file_name\(' \
exclude='exempt from syntax-check' \
halt='use virFileCanonicalizePath() instead of canonicalize_file_name()' \
$(_sc_search_regexp)
# Insist on correct types for [pug]id.
sc_correct_id_types:
@prohibit='\<(int|long) *[pug]id\>' \
@@ -1208,6 +1215,9 @@ exclude_file_name_regexp--sc_prohibit_nonreentrant = \
exclude_file_name_regexp--sc_prohibit_select = \
^cfg\.mk$$
exclude_file_name_regexp--sc_prohibit_canonicalize_file_name = \
^cfg\.mk$$
exclude_file_name_regexp--sc_prohibit_raw_allocation = \
^(docs/hacking\.html\.in|src/util/viralloc\.[ch]|examples/.*|tests/(securityselinuxhelper|(vircgroup|nss)mock|commandhelper)\.c|tools/wireshark/src/packet-libvirt\.c)$$

View File

@@ -36,7 +36,6 @@
# undef WITH_DEVMAPPER
# undef WITH_DTRACE_PROBES
# undef WITH_GNUTLS
# undef WITH_GNUTLS_GCRYPT
# undef WITH_LIBSSH
# undef WITH_MACVTAP
# undef WITH_NUMACTL
@@ -62,7 +61,6 @@
# undef WITH_DEVMAPPER
# undef WITH_DTRACE_PROBES
# undef WITH_GNUTLS
# undef WITH_GNUTLS_GCRYPT
# undef WITH_LIBSSH
# undef WITH_MACVTAP
# undef WITH_NUMACTL

View File

@@ -16,7 +16,7 @@ dnl You should have received a copy of the GNU Lesser General Public
dnl License along with this library. If not, see
dnl <http://www.gnu.org/licenses/>.
AC_INIT([libvirt], [4.3.0], [libvir-list@redhat.com], [], [https://libvirt.org])
AC_INIT([libvirt], [4.5.0], [libvir-list@redhat.com], [], [https://libvirt.org])
AC_CONFIG_SRCDIR([src/libvirt.c])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_HEADERS([config.h])
@@ -216,7 +216,6 @@ fi
# RPC, we don't need several libraries.
if test "$with_remote" = "no" ; then
with_libvirtd=no
with_gnutls=no
with_ssh2=no
with_sasl=no
with_libssh=no
@@ -250,7 +249,6 @@ LIBVIRT_ARG_DBUS
LIBVIRT_ARG_FIREWALLD
LIBVIRT_ARG_FUSE
LIBVIRT_ARG_GLUSTER
LIBVIRT_ARG_GNUTLS
LIBVIRT_ARG_HAL
LIBVIRT_ARG_LIBPCAP
LIBVIRT_ARG_LIBSSH
@@ -641,6 +639,14 @@ if test "$with_linux" = "yes"; then
[[#include <linux/devlink.h>]])
fi
dnl
dnl check for VHOST_VSOCK_SET_GUEST_CID
dnl
if test "$with_linux" = "yes"; then
AC_CHECK_DECLS([VHOST_VSOCK_SET_GUEST_CID], [], [],
[[#include <linux/vhost.h>]])
fi
dnl Allow perl/python overrides
AC_PATH_PROGS([PYTHON], [python3 python2 python])
if test -z "$PYTHON"; then
@@ -734,8 +740,6 @@ if test "$enable_test_locking" = "yes"; then
fi
AM_CONDITIONAL([WITH_CIL],[test "$enable_test_locking" = "yes"])
LIBVIRT_GETTEXT
dnl Cygwin, MinGW and MSVC checks
LIBVIRT_WIN_CHECK_COMMON
LIBVIRT_WIN_CHECK_CYGWIN

View File

@@ -396,7 +396,7 @@ polkit.addRule(function(action, subject) {
To achieve this we need to write a rule which checks
whether the <code>connect_driver</code> attribute
is <code>LXC</code> and the <code>domain_name</code>
attribute is <code>demo</code>, and match on a action
attribute is <code>demo</code>, and match on an action
name of <code>org.libvirt.api.domain.getattr</code>. Using
the javascript rules format, this ends up written as
</p>

View File

@@ -155,7 +155,7 @@
</ul>
</li>
<li><b>Enumeration</b> [virConnectList..., virConnectNumOf...]
<p>Used to enumerate a set of object available to an given
<p>Used to enumerate a set of object available to a given
hypervisor connection such as:</p>
<ul>
<li>

View File

@@ -466,6 +466,21 @@
minutes. The only requirements for the users are a Web browser and
a lightweight remote viewer.
</dd>
<dt><a href="https://github.com/cutelyst/Virtlyst">Virtlyst</a></dt>
<dd>
Virtlyst is an open source web application built with C++11, Cutelyst and Qt.
It features:
<ul>
<li>Low memory usage (around 5 MiB of RAM)</li>
<li>Look and feel easily customized with HTML templates that use the Django syntax</li>
<li>VNC/Spice console directly in the browser using websockets on the same HTTP port</li>
<li>Host and Domain statistics graphs (CPU, Memory, IO, Network)</li>
<li>Connect to multiple libvirtd instances (over local Unix domain socket, SSH, TCP and TLS)</li>
<li>Manage Storage Pools, Storage Volumes, Networks, Interfaces, and Secrets</li>
<li>Create and launch VMs</li>
<li>Configure VMs with easy panels or go pro and edit the VM's XML</li>
</ul>
</dd>
</dl>
<h2><a id="mobile">Mobile applications</a></h2>

View File

@@ -264,7 +264,7 @@
<dt><code>reason</code></dt>
<dd>The reason which caused the resource to be assigned to happen</dd>
<dt><code>resrc</code></dt>
<dd>The type of resource assigned. Set to <code>tpm</code></dd>
<dd>The type of resource assigned. Set to <code>tpm</code> or <code>tpm-emulator</code></dd>
<dt><code>device</code></dt>
<dd>The path of the host TPM device assigned to the guest</dd>
</dl>

View File

@@ -80,7 +80,7 @@
and future growth of the project, that there are a people
who evangalise the work created by the project. This can
take many forms, writing blog posts (about usage of features,
personal user experiances, areas for future work, and more),
personal user experiences, areas for future work, and more),
syndicating docs and blogs via social media, giving user
group and/or conference talks about libvirt.</li>
<li><strong>User assistance</strong>. Since documentation

View File

@@ -433,21 +433,6 @@
<li><a href="https://libvirt.org/sources/">libvirt.org HTTPS server</a></li>
</ul>
<h2><a id="hourly">Hourly development snapshots</a></h2>
<p>
Once an hour, an automated snapshot is made from the git server
source tree. These snapshots should be usable, but we make no guarantees
about their stability; furthermore, they should NOT be
considered formal releases, and they may have transient security
problems that will not be assigned a CVE.
</p>
<ul>
<li><a href="ftp://libvirt.org/libvirt/libvirt-git-snapshot.tar.xz">libvirt.org FTP server</a></li>
<li><a href="https://libvirt.org/sources/libvirt-git-snapshot.tar.xz">libvirt.org HTTP server</a></li>
</ul>
<h2><a id="schedule">Primary release schedule</a></h2>
<p>
@@ -457,7 +442,7 @@
(first release in the middle of Jan, then skip the Feb release), giving
a total of 11 releases a year. The Python and Perl modules will aim to
release at the same time as the core libvirt module. Other modules have
independant ad-hoc releases with no fixed time schedle.
independent ad-hoc releases with no fixed time schedule.
</p>
<h2><a id="numbering">Release numbering</a></h2>

View File

@@ -239,7 +239,7 @@ to let a guest boot or start a guest using:</p>
<pre>start --console domname</pre>
<p><b>NB:</b> An bootloader configured to require user interaction will prevent
<p><b>NB:</b> A bootloader configured to require user interaction will prevent
the domain from starting (and thus <code>virsh console</code> or <code>start
--console</code> from functioning) until the user interacts with it manually on
the VM host. Because users typically do not have access to the VM host,
@@ -430,6 +430,36 @@ supports Intel e1000 network adapter emulation. It's supported in libvirt
&lt;model type='<b>e1000</b>'/&gt;
&lt;/interface&gt;
...
</pre>
<h3><a id="wired">Wiring guest memory</a></h3>
<p><span class="since">Since 4.4.0</span>, it's possible to specify that guest memory should
be wired and cannot be swapped out as follows:</p>
<pre>
&lt;domain type="bhyve"&gt;
...
&lt;memoryBacking&gt;
&lt;locked/&gt;
&lt;/memoryBacking&gt;
...
&lt;/domain&gt;
</pre>
<h3><a id="cputopology">CPU topology</a></h3>
<p><span class="since">Since 4.5.0</span>, it's possible to specify guest CPU topology, if bhyve
supports that. Support for specifying guest CPU topology was added to bhyve in
<a href="http://svnweb.freebsd.org/changeset/base/332298">r332298</a> for <i>-CURRENT</i>.
Example:</p>
<pre>
&lt;domain type="bhyve"&gt;
...
&lt;cpu&gt;
&lt;topology sockets='1' cores='2' threads='1'/&gt;
&lt;/cpu&gt;
...
&lt;/domain&gt;
</pre>
</body>

View File

@@ -437,7 +437,7 @@ ethernet0.checkMACAddress = "false"
<dl>
<dt><code>auto</code></dt>
<dd>
This isn't a actual controller model. If specified the ESX driver
This isn't an actual controller model. If specified the ESX driver
tries to detect the SCSI controller model referenced in the
<code>.vmdk</code> file and use it. Autodetection fails when a
SCSI controller has multiple disks attached and the SCSI controller

View File

@@ -429,7 +429,7 @@ be considered secure against exploits of the host OS. The sVirt SELinux
driver provides a way to secure containers even when the "user" namespace
is not used. The cost is that writing a policy to allow execution of
arbitrary OS is not practical. The SELinux sVirt policy is typically
tailored to work with an simpler application confinement use case,
tailored to work with a simpler application confinement use case,
as provided by the "libvirt-sandbox" project.
</p>

View File

@@ -334,9 +334,28 @@
<pre>
$ ls /sys/class/mdev_bus/&lt;device&gt;/mdev_supported_types</pre>
<p>
Before creating a mediated device, unbind the device from the respective
device driver, eg. subchannel I/O driver for a CCW device. Then bind the
device to the respective VFIO driver. For a CCW device, also unbind the
corresponding subchannel of the CCW device from the subchannel I/O driver
and then bind the subchannel (instead of the CCW device) to the vfio_ccw
driver. The below example shows the unbinding and binding steps for a CCW
device.
</p>
<pre>
device="0.0.1234"
subchannel="0.0.0123"
echo $device &gt; /sys/bus/ccw/devices/$device/driver/unbind
echo $subchannel &gt; /sys/bus/css/devices/$subchannel/driver/unbind
echo $subchannel &gt; /sys/bus/css/drivers/vfio_ccw/bind
</pre>
<p>
To manually instantiate a mediated device, use one of the following as a
reference:
reference. For a CCW device, use the subchannel ID instead of the device
ID.
</p>
<pre>

View File

@@ -396,7 +396,8 @@ chmod o+x /path/to/directory
/dev/null, /dev/full, /dev/zero,
/dev/random, /dev/urandom,
/dev/ptmx, /dev/kvm, /dev/kqemu,
/dev/rtc, /dev/hpet, /dev/net/tun
/dev/rtc, /dev/hpet, /dev/net/tun,
/dev/sev
</pre>
<p>

View File

@@ -29,7 +29,7 @@ set specifically to a connection with</p>
call it with the error information</li><li>otherwise call <a href="html/libvirt-virterror.html#virDefaultErrorFunc">virDefaultErrorFunc</a>
which is the default error function of the library issuing the error
on stderr</li><li>save the error in the connection for later retrieval with <a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a></li></ol></li>
<li>otherwise like when failing to create an hypervisor connection:
<li>otherwise like when failing to create a hypervisor connection:
<ol><li>if there is a global callback set with <a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a>,
call it with the error information</li><li>otherwise call <a href="html/libvirt-virterror.html#virDefaultErrorFunc">virDefaultErrorFunc</a>
which is the default error function of the library issuing the error

View File

@@ -11,7 +11,7 @@
<ul>
<li>The virtual network driver
<br /><br />
This provides a isolated bridge device (ie no physical NICs
This provides an isolated bridge device (ie no physical NICs
enslaved). Guest TAP devices are attached to this bridge.
Guests can talk to each other and the host, and optionally the
wider world.

View File

@@ -34,6 +34,7 @@
&lt;domain type='kvm' id='1'&gt;
&lt;name&gt;MyGuest&lt;/name&gt;
&lt;uuid&gt;4dea22b3-1d52-d8f3-2516-782e98ab3fa0&lt;/uuid&gt;
&lt;genid&gt;43dc0cf8-809b-4adb-9bea-a9abb5f3d90e&lt;/genid&gt;
&lt;title&gt;A short description - title - of the domain&lt;/title&gt;
&lt;description&gt;Some human readable description&lt;/description&gt;
&lt;metadata&gt;
@@ -61,6 +62,32 @@
specification. <span class="since">Since 0.0.1, sysinfo
since 0.8.7</span></dd>
<dt><code>genid</code></dt>
<dd><span class="since">Since 4.4.0</span>, the <code>genid</code>
element can be used to add a Virtual Machine Generation ID which
exposes a 128-bit, cryptographically random, integer value identifier,
referred to as a Globally Unique Identifier (GUID) using the same
format as the <code>uuid</code>. The value is used to help notify
the guest operating system when the virtual machine is re-executing
something that has already executed before, such as:
<ul>
<li>VM starts executing a snapshot</li>
<li>VM is recovered from backup</li>
<li>VM is failover in a disaster recovery environment</li>
<li>VM is imported, copied, or cloned</li>
</ul>
The guest operating system notices the change and is then able to
react as appropriate by marking its copies of distributed databases
as dirty, re-initializing its random number generator, etc.
<p>
The libvirt XML parser will accept both a provided GUID value
or just &lt;genid/&gt; in which case a GUID will be generated
and saved in the XML. For the transitions such as above, libvirt
will change the GUID before re-executing.</p></dd>
<dt><code>title</code></dt>
<dd>The optional element <code>title</code> provides space for a
short description of the domain. The title should not contain
@@ -622,7 +649,7 @@
<code>order</code> allows to specify the order to add the online vcpus.
For hypervisors/platforms that require to insert multiple vcpus at once
the order may be duplicated accross all vcpus that need to be
the order may be duplicated across all vcpus that need to be
enabled at once. Specifying order is not necessary, vcpus are then
added in an arbitrary order. If order info is used, it must be used for
all online vcpus. Hypervisors may clear or update ordering information
@@ -1016,6 +1043,7 @@
&lt;source type="file|anonymous"/&gt;
&lt;access mode="shared|private"/&gt;
&lt;allocation mode="immediate|ondemand"/&gt;
&lt;discard/&gt;
&lt;/memoryBacking&gt;
...
&lt;/domain&gt;
@@ -1057,7 +1085,7 @@
of memory, which means a malicious guest allocating large amounts of
locked memory could cause a denial-of-service attack on the host.
Because of this, using this option is discouraged unless your workload
demands it; even then, it's highly recommended to set an
demands it; even then, it's highly recommended to set a
<code>hard_limit</code> (see
<a href="#elementsMemoryTuning">memory tuning</a>) on memory allocation
suitable for the specific environment at the same time to mitigate
@@ -1070,6 +1098,14 @@
numa node by <code>memAccess</code></dd>
<dt><code>allocation</code></dt>
<dd>Specify when allocate the memory</dd>
<dt><code>discard</code></dt>
<dd>When set and supported by hypervisor the memory
content is discarded just before guest shuts down (or
when DIMM module is unplugged). Please note that this is
just an optimization and is not guaranteed to work in
all cases (e.g. when hypervisor crashes).
<span class="since">Since 4.4.0</span> (QEMU/KVM only)
</dd>
</dl>
@@ -1608,7 +1644,7 @@
&lt;cpu&gt;
...
&lt;numa&gt;
&lt;cell id='0' cpus='0-3' memory='512000' unit='KiB'/&gt;
&lt;cell id='0' cpus='0-3' memory='512000' unit='KiB' discard='yes'/&gt;
&lt;cell id='1' cpus='4-7' memory='512000' unit='KiB' memAccess='shared'/&gt;
&lt;/numa&gt;
...
@@ -1634,6 +1670,13 @@
<code>memAccess</code> can control whether the memory is to be
mapped as "shared" or "private". This is valid only for
hugepages-backed memory and nvdimm modules.
Each <code>cell</code> element can have an optional
<code>discard</code> attribute which fine tunes the discard
feature for given numa node as described under
<a href="#elementsMemoryBacking">Memory Backing</a>.
Accepted values are <code>yes</code> and <code>no</code>.
<span class='since'>Since 4.4.0</span>
</p>
<p>
@@ -1879,7 +1922,13 @@
&lt;pvspinlock state='on'/&gt;
&lt;gic version='2'/&gt;
&lt;ioapic driver='qemu'/&gt;
&lt;hpt resizing='required'/&gt;
&lt;hpt resizing='required'&gt;
&lt;maxpagesize unit='MiB'&gt;16&lt;/maxpagesize&gt;
&lt;/hpt&gt;
&lt;vmcoreinfo state='on'/&gt;
&lt;smm state='on'&gt;
&lt;tseg unit='MiB'&gt;48&lt;/tseg&gt;
&lt;/smm&gt;
&lt;/features&gt;
...</pre>
@@ -2035,10 +2084,55 @@
<span class="since">Since 1.2.16</span>
</dd>
<dt><code>smm</code></dt>
<dd>Enable System Management Mode. Possible values are
<code>on</code> and <code>off</code>. The default is left
for hypervisor to decide.
<dd>
<p>
Depending on the <code>state</code> attribute (values <code>on</code>,
<code>off</code>, default <code>on</code>) enable or disable
System Management Mode.
<span class="since">Since 2.1.0</span>
</p><p> Optional sub-element <code>tseg</code> can be used to specify
the amount of memory dedicated to SMM's extended TSEG. That offers a
fourth option size apart from the existing ones (1 MiB, 2 MiB and 8
MiB) that the guest OS (or rather loader) can choose from. The size
can be specified as a value of that element, optional attribute
<code>unit</code> can be used to specify the unit of the
aforementioned value (defaults to 'MiB'). If set to 0 the extended
size is not advertised and only the default ones (see above) are
available.
</p><p>
<b>If the VM is booting you should leave this option alone, unless you
are very certain you know what you are doing.</b>
</p><p>
This value is configurable due to the fact that the calculation cannot
be done right with the guarantee that it will work correctly. In
QEMU, the user-configurable extended TSEG feature was unavailable up
to and including <code>pc-q35-2.9</code>. Starting with
<code>pc-q35-2.10</code> the feature is available, with default size
16 MiB. That should suffice for up to roughly 272 VCPUs, 5 GiB guest
RAM in total, no hotplug memory range, and 32 GiB of 64-bit PCI MMIO
aperture. Or for 48 VCPUs, with 1TB of guest RAM, no hotplug DIMM
range, and 32GB of 64-bit PCI MMIO aperture. The values may also vary
based on the loader the VM is using.
</p><p>
Additional size might be needed for significantly higher VCPU counts
or increased address space (that can be memory, maxMemory, 64-bit PCI
MMIO aperture size; roughly 8 MiB of TSEG per 1 TiB of address space)
which can also be rounded up.
</p><p>
Due to the nature of this setting being similar to "how much RAM
should the guest have" users are advised to either consult the
documentation of the guest OS or loader (if there is any), or test
this by trial-and-error changing the value until the VM boots
successfully. Yet another guiding value for users might be the fact
that 48 MiB should be enough for pretty large guests (240 VCPUs and
4TB guest RAM), but it is on purpose not set as default as 48 MiB of
unavailable RAM might be too much for small guests (e.g. with 512 MiB
of RAM).
</p><p>
See <a href="#elementsMemoryAllocation">Memory Allocation</a>
for more details about the <code>unit</code> attribute.
<span class="since">Since 4.5.0</span> (QEMU only)
</p>
</dd>
<dt><code>ioapic</code></dt>
<dd>Tune the I/O APIC. Possible values for the
@@ -2057,11 +2151,16 @@
support; and <code>required</code>, which prevents the guest from
starting unless both the guest and the host support HPT resizing. If
the attribute is not defined, the hypervisor default will be used.
<span class="since">Since 3.10.0</span> (QEMU/KVM only)
<span class="since">Since 3.10.0</span> (QEMU/KVM only).
<p>The optional <code>maxpagesize</code> subelement can be used to
limit the usable page size for HPT guests. Common values are 64 KiB,
16 MiB and 16 GiB; when not specified, the hypervisor default will
be used. <span class="since">Since 4.5.0</span> (QEMU/KVM only).</p>
</dd>
<dt><code>vmcoreinfo</code></dt>
<dd>Enable QEMU vmcoreinfo device to let the guest kernel save debug
details. <span class="since">Since 3.10.0</span> (QEMU only)
details. <span class="since">Since 4.4.0</span> (QEMU only)
</dd>
</dl>
@@ -2565,7 +2664,10 @@
&lt;/disk&gt;
&lt;disk type='block' device='lun'&gt;
&lt;driver name='qemu' type='raw'/&gt;
&lt;source dev='/dev/sda'/&gt;
&lt;source dev='/dev/sda'&gt;
&lt;reservations managed='no'&gt;
&lt;source type='unix' path='/path/to/qemu-pr-helper' mode='client'/&gt;
&lt;/reservations&gt;
&lt;target dev='sda' bus='scsi'/&gt;
&lt;address type='drive' controller='0' bus='0' target='3' unit='0'/&gt;
&lt;/disk&gt;
@@ -2739,7 +2841,13 @@
is mandatory to specify which volume/image will be used.
</p>
<p>For "nbd", the <code>name</code> attribute is optional.
<p>For "nbd", the <code>name</code> attribute is optional. TLS
transport for NBD can be enabled by setting the <code>tls</code>
attribute to <code>yes</code>. For the QEMU hypervisor, usage of
a TLS environment can also be globally controlled on the host by
the <code>nbd_tls</code> and <code>nbd_tls_x509_cert_dir</code> in
/etc/libvirt/qemu.conf.
('tls' <span class="since">Since 4.5.0</span>)
</p>
<p>For "iscsi" (<span class="since">since 1.0.4</span>), the
@@ -2927,6 +3035,30 @@
See the
<a href="formatstorageencryption.html">Storage Encryption</a>
page for more information.
<p/>
Note that the 'qcow' format of encryption is broken and thus is no
longer supported for use with disk images.
(<span class="since">Since libvirt 4.5.0</span>)
</dd>
<dt><code>reservations</code></dt>
<dd><span class="since">Since libvirt 4.4.0</span>, the
<code>reservations</code> can be a sub-element of the
<code>source</code> element for storage sources (QEMU driver only).
If present it enables persistent reservations for SCSI
based disks. The element has one mandatory attribute
<code>managed</code> with accepted values <code>yes</code> and
<code>no</code>. If <code>managed</code> is enabled libvirt prepares
and manages any resources needed. When the persistent reservations
are unmanaged, then the hypervisor acts as a client and the path to
the server socket must be provided in the child element
<code>source</code>, which currently accepts only the following
attributes:
<code>type</code> with one value <code>unix</code>,
<code>path</code> path to the socket, and
finally <code>mode</code> which accepts one value
<code>client</code> specifying the role of hypervisor.
It's recommended to allow libvirt manage the persistent
reservations.
</dd>
</dl>
@@ -4058,7 +4190,7 @@
pcie-switch-upstream-port, and of course for this to work
properly, you will need to decrease the pcie-expander-bus'
busNr accordingly so that there are enough unused bus
numbers above it to accomodate giving out one bus number for
numbers above it to accommodate giving out one bus number for
the upstream-port and one for each downstream-port (in
addition to the pcie-root-port and the pcie-expander-bus
itself).
@@ -4212,7 +4344,7 @@
<dd>This is the fully qualified path of the file associated
with the lockspace. The offset specifies where the lease
is stored within the file. If the lock manager does not
require a offset, just pass 0.
require an offset, just pass 0.
</dd>
</dl>
@@ -4310,6 +4442,12 @@
&lt;address uuid='c2177883-f1bb-47f0-914d-32a22e3a8804'/&gt;
&lt;/source&gt;
&lt;/hostdev&gt;
&lt;hostdev mode='subsystem' type='mdev' model='vfio-ccw'&gt;
&lt;source&gt;
&lt;address uuid='9063cba3-ecef-47b6-abcf-3fef4fdcad85'/&gt;
&lt;/source&gt;
&lt;address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0001'/&gt;
&lt;/hostdev&gt;
&lt;/devices&gt;
...</pre>
@@ -4361,10 +4499,13 @@
<dd>For mediated devices (<span class="since">Since 3.2.0</span>)
the <code>model</code> attribute specifies the device API which
determines how the host's vfio driver will expose the device to the
guest. Currently, only <code>model='vfio-pci'</code> is supported.
There are also some implications on the usage of guest's address type
depending on the <code>model</code> attribute, see the
<code>address</code> element below.</dd>
guest. Currently, <code>model='vfio-pci'</code> and
<code>model='vfio-ccw'</code> (<span class="since">Since 4.4.0</span>)
is supported. Refer <a href="drvnodedev.html#MDEV">MDEV</a> to create
a mediated device on the host. There are also some implications on the
usage of guest's address type depending on the <code>model</code>
attribute, see the <code>address</code> element below.
</dd>
</dl>
<p>
Note: The <code>managed</code> attribute is only used with
@@ -4496,7 +4637,8 @@
devices defining an allocation of resources on the physical parent device,
the address type used must conform to the <code>model</code> attribute
of element <code>hostdev</code>, e.g. any address type other than PCI for
<code>vfio-pci</code> device API will result in an error.
<code>vfio-pci</code> device API or any address type other than CCW for
<code>vfio-ccw</code> device API will result in an error.
<a href="#elementsAddress">See above</a> for more details on the address
element.</dd>
<dt><code>driver</code></dt>
@@ -4867,7 +5009,7 @@
(<span class="since">Since 0.10.0</span>). For example, in order
to work properly with both an 802.1Qbh switch and an Open vSwitch
switch, you may choose to specify no type, but both
an <code>profileid</code> (in case the switch is 802.1Qbh) and
a <code>profileid</code> (in case the switch is 802.1Qbh) and
an <code>interfaceid</code> (in case the switch is Open vSwitch)
(you may also omit the other attributes, such as managerid,
typeid, or profileid, to be filled in from the
@@ -6161,6 +6303,12 @@ qemu-kvm -net nic,model=? /dev/null
and an optional <code>fullscreen</code> attribute accepting values
<code>yes</code> or <code>no</code>.
</p>
<p>
You can use a <code>gl</code> with the <code>enable="yes"</code>
property to enable OpenGL support in SDL. Likewise you can
explicitly disable OpenGL support with <code>enable="no"</code>.
</p>
</dd>
<dt><code>vnc</code></dt>
<dd>
@@ -6174,7 +6322,7 @@ qemu-kvm -net nic,model=? /dev/null
set to an empty string, then VNC access is disabled. The
<code>keymap</code> attribute specifies the keymap to use. It is
possible to set a limit on the validity of the password by giving
an timestamp <code>passwdValidTo='2010-04-09T15:51:00'</code>
a timestamp <code>passwdValidTo='2010-04-09T15:51:00'</code>
assumed to be in UTC. The <code>connected</code> attribute allows
control of connected client during password changes. VNC accepts
<code>keep</code> value only <span class="since">since 0.9.3</span>.
@@ -6216,7 +6364,7 @@ qemu-kvm -net nic,model=? /dev/null
<code>passwd</code> attribute is set to an empty string, then
SPICE access is disabled. The <code>keymap</code> attribute
specifies the keymap to use. It is possible to set a limit on
the validity of the password by giving an timestamp
the validity of the password by giving a timestamp
<code>passwdValidTo='2010-04-09T15:51:00'</code> assumed to be
in UTC.
</p>
@@ -7331,9 +7479,18 @@ qemu-kvm -net nic,model=? /dev/null
with <code>ich6</code> model can have optional
sub-elements <code>&lt;codec&gt;</code> to attach various audio
codecs to the audio device. If not specified, a default codec
will be attached to allow playback and recording. Valid values
are 'duplex' (advertise a line-in and a line-out) and 'micro'
(advertise a speaker and a microphone).
will be attached to allow playback and recording.
</p>
<p>
Valid values are:
</p>
<p>
<ul>
<li>'duplex' - advertise a line-in and a line-out </li>
<li>'micro' - advertise a speaker and a microphone </li>
<li>'output' - advertise a line-out
<span class="since">Since 4.4.0</span></li>
</ul>
</p>
<pre>
@@ -7588,12 +7745,16 @@ qemu-kvm -net nic,model=? /dev/null
<dt><code>random</code></dt>
<dd>
<p>
This backend type expects a non-blocking character device as
input. The file name is specified as contents of the
<code>backend</code> element. <span class='since'>Since 1.3.4</span>
any path is accepted. Before that /dev/random and /dev/hwrng were
the only accepted paths. When no file name is specified the hypervisor
default is used. For qemu, the default is /dev/random
This backend type expects a non-blocking character device
as input. The file name is specified as contents of the
<code>backend</code> element. <span class='since'>Since
1.3.4</span> any path is accepted. Before that
<code>/dev/random</code> and <code>/dev/hwrng</code> were
the only accepted paths. When no file name is specified,
the hypervisor default is used. For QEMU, the default is
<code>/dev/random</code>. However, the recommended source
of entropy is <code>/dev/urandom</code> (as it doesn't
have the limitations of <code>/dev/random</code>).
</p>
</dd>
<dt><code>egd</code></dt>
@@ -7625,7 +7786,8 @@ qemu-kvm -net nic,model=? /dev/null
<p>
The TPM device enables a QEMU guest to have access to TPM
functionality.
functionality. The TPM device may either be a TPM 1.2 or
a TPM 2.0.
</p>
<p>
The TPM passthrough device type provides access to the host's TPM
@@ -7647,6 +7809,26 @@ qemu-kvm -net nic,model=? /dev/null
&lt;/tpm&gt;
&lt;/devices&gt;
...
</pre>
<p>
The emulator device type gives access to a TPM emulator providing
TPM functionality for each VM. QEMU talks to it over a Unix socket. With
the emulator device type each guest gets its own private TPM.
<span class="since">'emulator' since 4.5.0</span>
</p>
<p>
Example: usage of the TPM Emulator
</p>
<pre>
...
&lt;devices&gt;
&lt;tpm model='tpm-tis'&gt;
&lt;backend type='emulator' version='2.0'&gt;
&lt;/backend&gt;
&lt;/tpm&gt;
&lt;/devices&gt;
...
</pre>
<dl>
<dt><code>model</code></dt>
@@ -7655,6 +7837,9 @@ qemu-kvm -net nic,model=? /dev/null
The <code>model</code> attribute specifies what device
model QEMU provides to the guest. If no model name is provided,
<code>tpm-tis</code> will automatically be chosen.
<span class="since">Since 4.4.0</span>, another available choice
is the <code>tpm-crb</code>, which should only be used when the
backend device is a TPM 2.0.
</p>
</dd>
<dt><code>backend</code></dt>
@@ -7678,6 +7863,29 @@ qemu-kvm -net nic,model=? /dev/null
</p>
</dd>
</dl>
<dl>
<dt><code>emulator</code></dt>
<dd>
<p>
For this backend type the 'swtpm' TPM Emulator must be installed on the
host. Libvirt will automatically start an independent TPM emulator
for each QEMU guest requesting access to it.
</p>
</dd>
</dl>
</dd>
<dt><code>version</code></dt>
<dd>
<p>
The <code>version</code> attribute indicates the version
of the TPM. By default a TPM 1.2 is created. This attribute
only works with the <code>emulator</code> backend. The following
versions are supported:
</p>
<ul>
<li>'1.2' : creates a TPM 1.2</li>
<li>'2.0' : creates a TPM 2.0</li>
</ul>
</dd>
</dl>
@@ -7855,7 +8063,7 @@ qemu-kvm -net nic,model=? /dev/null
<pre>
...
&lt;devices&gt;
&lt;memory model='dimm' access='private'&gt;
&lt;memory model='dimm' access='private' discard='yes'&gt;
&lt;target&gt;
&lt;size unit='KiB'&gt;524287&lt;/size&gt;
&lt;node&gt;0&lt;/node&gt;
@@ -7909,6 +8117,20 @@ qemu-kvm -net nic,model=? /dev/null
</p>
</dd>
<dt><code>discard</code></dt>
<dd>
<p>
An optional attribute <code>discard</code>
(<span class="since">since 4.4.0</span>) that provides
capability to fine tune discard of data on per module
basis. Accepted values are <code>yes</code> and
<code>no</code>. The feature is described here:
<a href="#elementsMemoryBacking">Memory Backing</a>.
This attribute is allowed only for
<code>model='dimm'</code>.
</p>
</dd>
<dt><code>source</code></dt>
<dd>
<p>
@@ -8059,6 +8281,26 @@ qemu-kvm -net nic,model=? /dev/null
</dd>
</dl>
<h3><a id="vsock">Vsock</a></h3>
<p>A vsock host/guest interface. The <code>model</code> attribute
defaults to <code>virtio</code>.
The optional attribute <code>address</code> of the <code>cid</code>
element specifies the CID assigned to the guest. If the attribute
<code>auto</code> is set to <code>yes</code>, libvirt
will assign a free CID automatically on domain startup.
<span class="since">Since 4.4.0</span></p>
<pre>
...
&lt;devices&gt;
&lt;vsock model='virtio'&gt;
&lt;cid auto='no' address='3'/&gt;
&lt;/vsock&gt;
&lt;/devices&gt;
...</pre>
<h3><a id="seclabel">Security label</a></h3>
<p>
@@ -8227,6 +8469,121 @@ qemu-kvm -net nic,model=? /dev/null
<p>Note: DEA/TDEA is synonymous with DES/TDES.</p>
<h3><a id="sev">Launch Security</a></h3>
<p>
The contents of the <code>&lt;launchSecurity type='sev'&gt;</code> element
is used to provide the guest owners input used for creating an encrypted
VM using the AMD SEV feature (Secure Encrypted Virtualization).
SEV is an extension to the AMD-V architecture which supports running
encrypted virtual machine (VMs) under the control of KVM. Encrypted
VMs have their pages (code and data) secured such that only the guest
itself has access to the unencrypted version. Each encrypted VM is
associated with a unique encryption key; if its data is accessed to a
different entity using a different key the encrypted guests data will
be incorrectly decrypted, leading to unintelligible data.
For more information see various input parameters and its format see the SEV API spec
<a href="https://support.amd.com/TechDocs/55766_SEV-KM%20API_Specification.pdf"> https://support.amd.com/TechDocs/55766_SEV-KM%20API_Specification.pdf </a>
<span class="since">Since 4.4.0</span>
</p>
<pre>
&lt;domain&gt;
...
&lt;launchSecurity type='sev'&gt;
&lt;policy&gt;0x0001&lt;/policy&gt;
&lt;cbitpos&gt;47&lt;/cbitpos&gt;
&lt;reducedPhysBits&gt;1&lt;/reducedPhysBits&gt;
&lt;dhCert&gt;RBBBSDDD=FDDCCCDDDG&lt;/dhCert&gt;
&lt;session&gt;AAACCCDD=FFFCCCDSDS&lt;/session&gt;
&lt;/launchSecurity&gt;
...
&lt;/domain&gt;
</pre>
<dl>
<dt><code>cbitpos</code></dt>
<dd>The required <code>cbitpos</code> element provides the C-bit (aka encryption bit)
location in guest page table entry. The value of <code>cbitpos</code> is
hypervisor dependent and can be obtained through the <code>sev</code> element
from the domain capabilities.
</dd>
<dt><code>reducedPhysBits</code></dt>
<dd>The required <code>reducedPhysBits</code> element provides the physical
address bit reducation. Similar to <code>cbitpos</code> the value of <code>
reduced-phys-bit</code> is hypervisor dependent and can be obtained
through the <code>sev</code> element from the domain capabilities.
</dd>
<dt><code>policy</code></dt>
<dd>The required <code>policy</code> element provides the guest policy
which must be maintained by the SEV firmware. This policy is enforced by
the firmware and restricts what configuration and operational commands
can be performed on this guest by the hypervisor. The guest policy
provided during guest launch is bound to the guest and cannot be changed
throughout the lifetime of the guest. The policy is also transmitted
during snapshot and migration flows and enforced on the destination platform.
The guest policy is a 4 unsigned byte with the fields shown in Table:
<table class="top_table">
<tr>
<th> Bit(s) </th>
<th> Description </th>
</tr>
<tr>
<td> 0 </td>
<td> Debugging of the guest is disallowed when set </td>
</tr>
<tr>
<td> 1 </td>
<td> Sharing keys with other guests is disallowed when set </td>
</tr>
<tr>
<td> 2 </td>
<td> SEV-ES is required when set</td>
</tr>
<tr>
<td> 3 </td>
<td> Sending the guest to another platform is disallowed when set</td>
</tr>
<tr>
<td> 4 </td>
<td> The guest must not be transmitted to another platform that is
not in the domain when set. </td>
</tr>
<tr>
<td> 5 </td>
<td> The guest must not be transmitted to another platform that is
not SEV capable when set. </td>
</tr>
<tr>
<td> 6:15 </td>
<td> reserved </td>
</tr>
<tr>
<td> 16:32 </td>
<td> The guest must not be transmitted to another platform with a
lower firmware version. </td>
</tr>
</table>
</dd>
<dt><code>dhCert</code></dt>
<dd>The optional <code>dhCert</code> element provides the guest owners
base64 encoded Diffie-Hellman (DH) key. The key is used to negotiate a
master secret key between the SEV firmware and guest owner. This master
secret key is then used to establish a trusted channel between SEV
firmware and guest owner.
</dd>
<dt><code>session</code></dt>
<dd>The optional <code>session</code> element provides the guest owners
base64 encoded session blob defined in the SEV API spec.
See SEV spec LAUNCH_START section for the session blob format.
</dd>
</dl>
<h2><a id="examples">Example configs</a></h2>
<p>

View File

@@ -81,7 +81,7 @@
<h3><a id="elementsCPUAllocation">CPU Allocation</a></h3>
<p>Before any devices capability occurs, there might be a info on domain
<p>Before any devices capability occurs, there might be info on domain
wide capabilities, e.g. virtual CPUs:</p>
<pre>
@@ -208,6 +208,22 @@
</dd>
</dl>
<h3><a id="elementsIothreads">I/O Threads</a></h3>
<p>
The <code>iothread</code> elements indicates whether or not
<a href="formatdomain.html#elementsIOThreadsAllocation">I/O threads</a>
are supported.
</p>
<pre>
&lt;domainCapabilities&gt;
...
&lt;iothread supported='yes'/&gt;
...
&lt;domainCapabilities&gt;
</pre>
<h3><a id="elementsDevices">Devices</a></h3>
<p>
@@ -417,6 +433,12 @@
&lt;value&gt;3&lt;/value&gt;
&lt;/enum&gt;
&lt;/gic&gt;
&lt;vmcoreinfo supported='yes'/&gt;
&lt;genid supported='yes'/&gt;
&lt;sev&gt;
&lt;cbitpos&gt;47&lt;/cbitpos&gt;
&lt;reduced-phys-bits&gt;1&lt;/reduced-phys-bits&gt;
&lt;/sev&gt;
&lt;/features&gt;
&lt;/domainCapabilities&gt;
</pre>
@@ -441,5 +463,39 @@
<code>gic</code> element.</dd>
</dl>
<h4><a id="elementsvmcoreinfo">vmcoreinfo</a></h4>
<p>Reports whether the vmcoreinfo feature can be enabled.</p>
<h4><a id="elementsgenid">genid</a></h4>
<p>Reports whether the genid feature can be used by the domain.</p>
<h4><a id="elementsSEV">SEV capabilities</a></h4>
<p>AMD Secure Encrypted Virtualization (SEV) capabilities are exposed under
the <code>sev</code> element.
SEV is an extension to the AMD-V architecture which supports running
virtual machines (VMs) under the control of a hypervisor. When supported,
guest owner can create a VM whose memory contents will be transparently
encrypted with a key unique to that VM.</p>
<p>
For more details on SEV feature see:
<a href="https://support.amd.com/TechDocs/55766_SEV-KM%20API_Specification.pdf">
SEV API spec</a> and <a href="http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2013/12/AMD_Memory_Encryption_Whitepaper_v7-Public.pdf">
SEV White Paper</a>
</p>
<dl>
<dt><code>cbitpos</code></dt>
<dd>When memory encryption is enabled, one of the physical address bits
(aka the C-bit) is utilized to mark if a memory page is protected. The
C-bit position is Hypervisor dependent.</dd>
<dt><code>reducedPhysBits</code></dt>
<dd>When memory encryption is enabled, we lose certain bits in physical
address space. The number of bits we lose is hypervisor dependent.</dd>
</dl>
</body>
</html>

View File

@@ -51,7 +51,7 @@
<p>
This secret is associated with a volume, whether the format is either
for a "qcow" or a "luks" encrypted volume. Each volume will have a
for a "luks" encrypted volume. Each volume will have a
unique secret associated with it and it is safe to delete the
secret after the volume is deleted. The
<code>&lt;usage type='volume'&gt;</code> element must contain a
@@ -83,16 +83,6 @@ Secret value set
#
</pre>
<p>
The volume type secret can be supplied in domain XML for a qcow storage
volume <a href="formatstorageencryption.html">encryption</a> as follows:
</p>
<pre>
&lt;encryption format='qcow'&gt;
&lt;secret type='passphrase' uuid='0a81f5b2-8403-7b23-c8d6-21ccc2f80d6f'/&gt;
&lt;/encryption&gt;
</pre>
<p>
The volume type secret can be supplied either in volume XML during
creation of a <a href="formatstorage.html#StorageVol">storage volume</a>
@@ -120,6 +110,16 @@ Secret value set
#
</pre>
<p>
The volume type secret can be supplied in domain XML for a luks storage
volume <a href="formatstorageencryption.html">encryption</a> as follows:
</p>
<pre>
&lt;encryption format='luks'&gt;
&lt;secret type='passphrase' uuid='f52a81b2-424e-490c-823d-6bd4235bc57'/&gt;
&lt;/encryption&gt;
</pre>
<h3><a id="CephUsageType">Usage type "ceph"</a></h3>
<p>
This secret is associated with a Ceph RBD (rados block device).

View File

@@ -39,23 +39,14 @@
specified <code>uuid</code>.
</p>
<h3><a id="StorageEncryptionDefault">"default" format</a></h3>
<p>
<code>&lt;encryption format="default"/&gt;</code> can be specified only
when creating a qcow volume. If the volume is successfully created, the
encryption formats, parameters and secrets will be auto-generated by
libvirt and the attached <code>encryption</code> tag will be updated.
The unmodified contents of the <code>encryption</code> tag can be used
in later operations with the volume, or when setting up a domain that
uses the volume.
</p>
<h3><a id="StorageEncryptionQcow">"qcow" format</a></h3>
<p>
The <code>qcow</code> format specifies that the built-in encryption
support in <code>qcow</code>- or <code>qcow2</code>-formatted volume
images should be used. A single
<code>&lt;secret type='passphrase'&gt;</code> element is expected. If
the <code>secret</code> element is not present during volume creation,
a secret is automatically generated and attached to the volume.
<span class="since">Since 4.5.0,</span> encryption formats
<code>default</code> and <code>qcow</code> may no longer be used
to create an encrypted volume. Usage of qcow encrypted volumes
in QEMU began phasing out in QEMU 2.3 and by QEMU 2.9 creation
of a qcow encrypted volume via qemu-img required usage of secret
objects, but that support was not added to libvirt.
</p>
<h3><a id="StorageEncryptionLuks">"luks" format</a></h3>
<p>
@@ -122,15 +113,6 @@
<h2><a id="example">Examples</a></h2>
<p>
Here is a simple example, specifying use of the <code>qcow</code> format:
</p>
<pre>
&lt;encryption format='qcow'&gt;
&lt;secret type='passphrase' uuid='c1f11a6d-8c5d-4a3e-ac7a-4e171c5e0d4a' /&gt;
&lt;/encryption&gt;</pre>
<p>
Assuming a <a href="formatsecret.html#VolumeUsageType">
<code>luks volume type secret</code></a> is already defined,

View File

@@ -141,13 +141,17 @@
than having the interest and ability to provide a contribution. The
libvirt project <strong>does not require</strong> any
<em>"Contributor License Agreement"</em>
to be signed prior to engagement with the community.
to be signed prior to engagement with the community. However for
contributing patches, providing a 'Signed-off-by' line with the
author's legal name and e-mail address to demonstrate agreement
and compliance with the <a href="https://developercertificate.org/">
Developer Certificate of Origin</a> is required.
</p>
<p>
In making a contribution to the project, the community member is
implicitly stating that they accept the terms of the license under
which the work they are contributing to is distributed. They are
In making a non-patch contribution to the project, the community
member is implicitly stating that they accept the terms of the license
under which the work they are contributing to is distributed. They are
also implicitly stating that they have the legal right to make the
contribution, if doing so on behalf of a broader organization /
company. Most of the project's code is distributed under the GNU

View File

@@ -133,7 +133,7 @@
</dd>
<dt><code>serial</code></dt>
<dd>
This is an number that starts from 1 and increases
This is a number that starts from 1 and increases
each time a method call packet is sent. A reply or
stream packet will have a serial number matching the
original method call packet serial. Events always

View File

@@ -76,7 +76,7 @@ SANLOCKOPTS="-w 0"
configuration file for each libvirt driver that is using
sanlock. For QEMU, we will edit <code>/etc/libvirt/qemu-sanlock.conf</code>
There is one mandatory parameter that needs to be set,
the <code>host_id</code>. This is a integer between
the <code>host_id</code>. This is an integer between
1 and 2000, which must be set to a <strong>unique</strong>
value on each host running virtual machines.
</p>

View File

@@ -33,7 +33,322 @@
-->
<libvirt>
<release version="v4.3.0" date="unreleased">
<release version="v4.5.0" date="2018-07-02">
<section title="New features">
<change>
<summary>
qemu: Provide TPM emulator support
</summary>
<description>
Support QEMU's TPM emulator based on swtpm. Each QEMU guest gets
its own virtual TPM.
</description>
</change>
<change>
<summary>
bhyve: Support specifying guest CPU topology
</summary>
<description>
Bhyve's guest CPU topology could be specified using the
<code>&lt;cpu&gt;&lt;topology ../&gt;&lt;/cpu&gt;</code> element.
</description>
</change>
<change>
<summary>
qemu: Add support for extended TSEG size
</summary>
<description>
Support specifying extended TSEG size for SMM in QEMU.
</description>
</change>
<change>
<summary>
qemu: Add support for SEV guests
</summary>
<description>
SEV (Secure Encrypted Virtualization) is a feature available on AMD
CPUs that encrypts the guest memory and makes it inaccessible even
to the host OS.
</description>
</change>
</section>
<section title="Removed features">
<change>
<summary>
Remove support for qcow/default encrypted volumes
</summary>
<description>
Disallow using a qcow encrypted volume for the guest and
disallow creation of the qcow or default encrypted volume
from the storage driver. Support for qcow encrypted volumes
has been phasing out since QEMU 2.3 and by QEMU 2.9 creation
of a qcow encrypted volume via qemu-img required usage of
secret objects, but that support was never added to libvirt.
</description>
</change>
<change>
<summary>
Make GnuTLS mandatory
</summary>
<description>
Building without GnuTLS is no longer possible.
</description>
</change>
<change>
<summary>
qemu: Remove allow_disk_format_probing configuration option
</summary>
<description>
The option represented a security risk when used with malicious
disk images, so users were recommended against enabling it; with
this release, it's been removed altogether.
</description>
</change>
</section>
<section title="Improvements">
<change>
<summary>
capabilities: Provide info about host IOMMU support
</summary>
<description>
Capabilities XML now provide information about host IOMMU support.
</description>
</change>
<change>
<summary>
virsh: Add --all to domblkinfo command
</summary>
<description>
Alter the <code>domblkinfo</code> command to add the option
--all in order to display the size details of each domain
block device from one command in a output table.
</description>
</change>
<change>
<summary>
qemu: Allow concurrent access to monitor and guest agent
</summary>
<description>
Historically libvirt prevented concurrent accesses to
the qemu monitor and the guest agent. Therefore two
independent calls (one querying the monitor and the
other querying guest agent) would serialize which hurts
performance. The code was reworked to allow two
independent calls run at the same time.
</description>
</change>
<change>
<summary>
qemu: Allow configuring the page size for HPT pSeries guests
</summary>
<description>
For HPT pSeries guests, the size of the host pages used to back guest
memory and the usable guest page sizes are connected; the new setting
can be used to request that a certain page size is available in the
guest.
</description>
</change>
<change>
<summary>
Add support to use an raw input volume for encryption
</summary>
<description>
It is now possible to provide a raw input volume as input for
to generate a luks encrypted volume via either virsh vol-create-from
or virStorageVolCreateXMLFrom.
</description>
</change>
<change>
<summary>
qemu: Add support for vsock hot (un)plug and cold (un)plug
</summary>
</change>
<change>
<summary>
qemu: Add support for NBD over TLS
</summary>
<description>
NBD volumes can now be accessed securely.
</description>
</change>
<change>
<summary>
qemu: Implement FD passing for Unix sockets
</summary>
<description>
Instead of having QEMU open the socket and then connecting to it,
which is inherently racy, starting with QEMU 2.12 we can open the
socket ourselves and pass it to QEMU, avoiding race conditions.
</description>
</change>
<change>
<summary>
virsh: Introduce --nowait option for domstat command
</summary>
<description>
When this option is specified, virsh will try to fetch the guest
stats but abort instead of stalling if they can't be retrieved right
away.
</description>
</change>
</section>
<section title="Bug fixes">
<change>
<summary>
qemu: Fix a potential libvirtd crash on VM reconnect
</summary>
<description>
Initialization of the driver worker pool needs to come before libvirtd
trying to reconnect to all machines, since one of the QEMU processes
migh have already emitted events which need to be handled prior to
us getting to the worker pool initialization.
</description>
</change>
<change>
<summary>
qemu: Fix domain resume after failed migration
</summary>
<description>
Recent versions of QEMU activate block devices before the guest CPU
has been started, which makes it impossible to roll back a failed
migration. Use the <code>late-block-activate</code> migration
capability if supported to avoid the issue.
</description>
</change>
<change>
<summary>
vmx: Permit guests to have an odd number of vCPUs
</summary>
<description>
An odd number of vCPUs greater than 1 was forbidden in the past,
but current versions of ESXi have lifted that restriction.
</description>
</change>
</section>
</release>
<release version="v4.4.0" date="2018-06-04">
<section title="New features">
<change>
<summary>
bhyve: Support locking guest memory
</summary>
<description>
Bhyve's guest memory may be wired using the
<code>&lt;memoryBacking&gt;&lt;locked/&gt;&lt;/memoryBacking&gt;</code>
element.
</description>
</change>
<change>
<summary>
qemu: Provide VFIO channel I/O passthrough support
</summary>
<description>
Support passthrough devices that use channel I/O based mechanism in
a QEMU virtual machine.
</description>
</change>
<change>
<summary>
qemu: Add support for migration of VMs with non-shared storage over TLS
</summary>
<description>
It's now possible to use the VIR_MIGRATE_TLS flag together with
VIR_MIGRATE_NON_SHARED_DISK. The connection is then secured using the
TLS environment which is setup for the migration connection.
</description>
</change>
<change>
<summary>
Add support for VM Generation ID
</summary>
<description>
The VM Generatation ID exposes a 128-bit, cryptographically
random, integer value identifier, referred to as a Globally
Unique Identifier (GUID) to the guest in order to notify the
guest operating system when the virtual machine is executed
with a different configuration. Add a new domain XML processing
and a domain capabilities feature.
</description>
</change>
<change>
<summary>
Introduce virDomainDetachDeviceAlias
</summary>
<description>
This new API enables users to detach device using only its alias.
</description>
</change>
<change>
<summary>
Introduce new virConnectCompareHypervisorCPU and virConnectBaselineHypervisorCPU APIs
</summary>
<description>
Unlike the old virConnectCompareCPU and virConnectBaselineCPU APIs,
both new APIs consider capabilities of a specific hypervisor.
</description>
</change>
<change>
<summary>
Introduce SCSI persistent reservations support
</summary>
<description>
The QEMU driver gained support for qemu-pr-helper which enables
guests to issue SCSI commands for persistent reservation.
</description>
</change>
<change>
<summary>
qemu: Implement multiple screen support for virDomainScreenshot
</summary>
<description>
While the virDomainScreenshot API supported multihead video cards,
the implementation was missing. But now that QEMU implemented it
libvirt has done as well.
</description>
</change>
<change>
<summary>
qemu: add support for vhost-vsock-device
</summary>
<description>
A new vsock device was introduced, allowing communication between
the guest and the host via the AF_VSOCK family.
</description>
</change>
</section>
<section title="Improvements">
<change>
<summary>
qemu: Add suport for OpenGL rendering with SDL
</summary>
<description>
Domains using SDL as a graphics backend will now be able to use
OpenGL accelerated rendering.
</description>
</change>
<change>
<summary>
qemu: Add support for 'output' audio codec
</summary>
<description>
Support QEMU's 'hda-output' codec advertising only a line-out for ich6
and ich9 sound devices.
</description>
</change>
<change>
<summary>
virsh: Enhance event name completion
</summary>
<description>
Implement event name completion for some commands (e.g. event,
secret-event, pool-event and nodedev-event)
</description>
</change>
</section>
<section title="Bug fixes">
</section>
</release>
<release version="v4.3.0" date="2018-05-02">
<section title="New features">
<change>
<summary>
@@ -80,28 +395,6 @@
supported. In fact, kernel has been supporting this since 4.10.
</description>
</change>
<change>
<summary>
logging: Introduce wildcard to log filters
</summary>
<description>
In an effort to deprecate the log_level variable in favour of the log
filters, introduce a wildcard filter, e.g. '1:*'. This change is most
noticeable during runtime using virt-admin, where the only way to
mimic the log_level's functionality has been to specify a number of
filters which can be a bit painful.
</description>
</change>
<change>
<summary>
qemu: Optionally disable ROM loading for PCI devices
</summary>
<description>
The <code>enabled</code> attribute of the <code>rom</code>
sub-element, usable for PCI devices, can be used for situations
where loading a PCI ROM is not desiderable.
</description>
</change>
</section>
<section title="Bug fixes">
<change>
@@ -179,6 +472,18 @@
</change>
</section>
<section title="Bug fixes">
<change>
<summary>
qemu: TLS migration now enforces use of TLS for the NBD connection
</summary>
<description>
When the VIR_MIGRATE_TLS flag was used with the migration API libvirt
did not ensure that the NBD connection was using TLS as well. The code
now rejects such migration as the TLS transport for NBD is not ready
yet, but prevents a false sense of security that TLS would be used.
The support TLS for NBD will be added soon.
</description>
</change>
</section>
</release>
<release version="v4.1.0" date="2018-03-05">
@@ -1208,7 +1513,7 @@
<description>
The <code>vgaconf</code> attribute was added to <code>video</code>'s
<code>driver</code> element. Possible values are: <code>on</code>,
<code>off</code>, and <code>io</code>. It controlls the way how
<code>off</code>, and <code>io</code>. It controls the way how
bhyve exposes video devices to its guests; various guest OSes might
require different settings to boot properly.
</description>

View File

@@ -39,6 +39,9 @@
<optional>
<ref name='power_management'/>
</optional>
<optional>
<ref name='iommu_support'/>
</optional>
<optional>
<ref name='migration'/>
</optional>
@@ -102,6 +105,13 @@
<text/>
</element>
</optional>
<optional>
<element name='microcode'>
<attribute name='version'>
<ref name='positiveInteger'/>
</attribute>
</element>
</optional>
<element name='topology'>
<attribute name='sockets'>
<ref name='positiveInteger'/>
@@ -122,7 +132,7 @@
</element>
</zeroOrMore>
<zeroOrMore>
<ref name='pagesElem'/>
<ref name='pagesHost'/>
</zeroOrMore>
</define>
@@ -148,6 +158,16 @@
</element>
</define>
<define name='iommu_support'>
<element name='iommu'>
<optional>
<attribute name='support'>
<ref name='virYesNo'/>
</attribute>
</optional>
</element>
</define>
<define name='migration'>
<element name='migration_features'>
<optional>
@@ -160,9 +180,10 @@
<oneOrMore>
<element name='uri_transport'>
<choice>
<value>esx</value>
<value>vpxmigr</value>
<value>tcp</value>
<value>xenmigr</value>
<value>rdma</value>
<value>vzmigr</value>
</choice>
</element>
</oneOrMore>
@@ -195,7 +216,7 @@
</optional>
<zeroOrMore>
<ref name='pagesElem'/>
<ref name='pagesNuma'/>
</zeroOrMore>
<optional>
@@ -476,17 +497,25 @@
</data>
</define>
<define name='pagesElem'>
<define name='pagesHost'>
<element name='pages'>
<optional>
<attribute name='unit'>
<ref name='unit'/>
</attribute>
</optional>
<attribute name='size'>
<ref name='unsignedInt'/>
</attribute>
<ref name='pagesElem'/>
</element>
</define>
<define name='pagesNuma'>
<element name='pages'>
<ref name='pagesElem'/>
<ref name='unsignedInt'/>
</element>
</define>
<define name='pagesElem'>
<optional>
<attribute name='unit'>
<ref name='unit'/>
</attribute>
</optional>
<attribute name='size'>
<ref name='unsignedInt'/>
</attribute>
</define>
</grammar>

View File

@@ -129,6 +129,11 @@
</choice>
</attribute>
</optional>
<optional>
<attribute name="discard">
<ref name="virYesNo"/>
</attribute>
</optional>
<optional>
<element name="distances">
<oneOrMore>

View File

@@ -28,6 +28,9 @@
<optional>
<ref name='vcpu'/>
</optional>
<optional>
<ref name='iothreads'/>
</optional>
<optional>
<ref name='os'/>
</optional>
@@ -53,6 +56,13 @@
</element>
</define>
<define name='iothreads'>
<element name='iothreads'>
<ref name='supported'/>
<empty/>
</element>
</define>
<define name='loader'>
<element name='loader'>
<ref name='supported'/>
@@ -173,6 +183,9 @@
<element name='features'>
<interleave>
<ref name='gic'/>
<ref name='vmcoreinfo'/>
<ref name='vmgenid'/>
<ref name='sev'/>
</interleave>
</element>
</define>
@@ -184,6 +197,32 @@
</element>
</define>
<define name='vmcoreinfo'>
<element name='vmcoreinfo'>
<ref name='supported'/>
</element>
</define>
<define name='vmgenid'>
<element name='genid'>
<ref name='supported'/>
</element>
</define>
<define name='sev'>
<element name='sev'>
<ref name='supported'/>
<optional>
<element name='cbitpos'>
<data type='unsignedInt'/>
</element>
<element name='reducedPhysBits'>
<data type='unsignedInt'/>
</element>
</optional>
</element>
</define>
<define name='value'>
<zeroOrMore>
<element name='value'>

View File

@@ -5,6 +5,7 @@
<include href='storagecommon.rng'/>
<include href='networkcommon.rng'/>
<include href='cputypes.rng'/>
<include href='nwfilter_params.rng'/>
<!--
description and title element, may be placed anywhere under the root
@@ -77,6 +78,9 @@
<optional>
<ref name='keywrap'/>
</optional>
<optional>
<ref name='launchSecurity'/>
</optional>
</interleave>
</element>
</define>
@@ -436,6 +440,40 @@
</element>
</define>
<define name="launchSecurity">
<element name="launchSecurity">
<attribute name="type">
<value>sev</value>
</attribute>
<interleave>
<element name="cbitpos">
<data type='unsignedInt'/>
</element>
<element name="reducedPhysBits">
<data type='unsignedInt'/>
</element>
<element name="policy">
<ref name='hexuint'/>
</element>
<optional>
<element name="handle">
<ref name='unsignedInt'/>
</element>
</optional>
<optional>
<element name="dhCert">
<data type="string"/>
</element>
</optional>
<optional>
<element name="session">
<data type="string"/>
</element>
</optional>
</interleave>
</element>
</define>
<!--
Enable or disable perf events for the domain. For each
of the events the following rules apply:
@@ -502,6 +540,14 @@
<ref name="UUID"/>
</element>
</optional>
<optional>
<element name="genid">
<choice>
<ref name="UUID"/>
<empty/>
</choice>
</element>
</optional>
</interleave>
</define>
<define name="idmap">
@@ -633,6 +679,11 @@
</attribute>
</element>
</optional>
<optional>
<element name="discard">
<empty/>
</element>
</optional>
</interleave>
</element>
</optional>
@@ -1530,6 +1581,9 @@
<optional>
<ref name="encryption"/>
</optional>
<optional>
<ref name="reservations"/>
</optional>
<zeroOrMore>
<ref name='devSeclabel'/>
</zeroOrMore>
@@ -1690,6 +1744,11 @@
<optional>
<attribute name="name"/>
</optional>
<optional>
<attribute name="tls">
<ref name="virYesNo"/>
</attribute>
</optional>
<ref name="diskSourceNetworkHost"/>
<optional>
<ref name="encryption"/>
@@ -2434,18 +2493,6 @@
</attribute>
</optional>
</define>
<define name="reconnect">
<element name="reconnect">
<attribute name="enabled">
<ref name="virYesNo"/>
</attribute>
<optional>
<attribute name="timeout">
<ref name="unsignedInt"/>
</attribute>
</optional>
</element>
</define>
<!--
An interface description can either be of type bridge in which case
@@ -2494,24 +2541,7 @@
<value>vhostuser</value>
</attribute>
<interleave>
<element name="source">
<attribute name="type">
<value>unix</value>
</attribute>
<attribute name="path">
<ref name="absFilePath"/>
</attribute>
<attribute name="mode">
<choice>
<value>server</value>
<value>client</value>
</choice>
</attribute>
<optional>
<ref name="reconnect"/>
</optional>
<empty/>
</element>
<ref name="unixSocketSource"/>
<ref name="interface-options"/>
</interleave>
</group>
@@ -3031,6 +3061,14 @@
<ref name="virYesNo"/>
</attribute>
</optional>
<optional>
<element name="gl">
<attribute name="enable">
<ref name="virYesNo"/>
</attribute>
<empty/>
</element>
</optional>
</group>
<group>
<attribute name="type">
@@ -3837,6 +3875,7 @@
<choice>
<value>duplex</value>
<value>micro</value>
<value>output</value>
</choice>
</attribute>
</element>
@@ -4115,7 +4154,10 @@
<element name="tpm">
<optional>
<attribute name="model">
<value>tpm-tis</value>
<choice>
<value>tpm-tis</value>
<value>tpm-crb</value>
</choice>
</attribute>
</optional>
<ref name="tpm-backend"/>
@@ -4134,6 +4176,23 @@
</attribute>
<ref name="tpm-passthrough-device"/>
</group>
<group>
<attribute name="type">
<value>emulator</value>
</attribute>
</group>
</choice>
<choice>
<group>
<optional>
<attribute name="version">
<choice>
<value>1.2</value>
<value>2.0</value>
</choice>
</attribute>
</optional>
</group>
</choice>
</element>
</define>
@@ -4150,6 +4209,34 @@
</optional>
</define>
<define name="vsock">
<element name="vsock">
<optional>
<attribute name="model">
<value>virtio</value>
</attribute>
</optional>
<interleave>
<optional>
<element name="cid">
<optional>
<attribute name="auto">
<ref name="virYesNo"/>
</attribute>
</optional>
<optional>
<attribute name="address">
<ref name="unsignedInt"/>
</attribute>
</optional>
</element>
</optional>
<optional>
<ref name="address"/>
</optional>
</interleave>
</element>
</define>
<define name="iommu">
<element name="iommu">
<attribute name="model">
@@ -4184,51 +4271,53 @@
<define name="input">
<element name="input">
<optional>
<element name="driver">
<ref name="virtioOptions"/>
</element>
</optional>
<choice>
<group>
<attribute name="type">
<choice>
<value>tablet</value>
<value>mouse</value>
<value>keyboard</value>
</choice>
</attribute>
<optional>
<attribute name="bus">
<interleave>
<optional>
<element name="driver">
<ref name="virtioOptions"/>
</element>
</optional>
<choice>
<group>
<attribute name="type">
<choice>
<value>ps2</value>
<value>usb</value>
<value>xen</value>
<value>virtio</value>
<value>tablet</value>
<value>mouse</value>
<value>keyboard</value>
</choice>
</attribute>
</optional>
</group>
<group>
<attribute name="type">
<value>passthrough</value>
</attribute>
<attribute name="bus">
<value>virtio</value>
</attribute>
<element name="source">
<attribute name="evdev">
<ref name="absFilePath"/>
<optional>
<attribute name="bus">
<choice>
<value>ps2</value>
<value>usb</value>
<value>xen</value>
<value>virtio</value>
</choice>
</attribute>
</optional>
</group>
<group>
<attribute name="type">
<value>passthrough</value>
</attribute>
</element>
</group>
</choice>
<optional>
<ref name="alias"/>
</optional>
<optional>
<ref name="address"/>
</optional>
<attribute name="bus">
<value>virtio</value>
</attribute>
<element name="source">
<attribute name="evdev">
<ref name="absFilePath"/>
</attribute>
</element>
</group>
</choice>
<optional>
<ref name="alias"/>
</optional>
<optional>
<ref name="address"/>
</optional>
</interleave>
</element>
</define>
<define name="hub">
@@ -4236,12 +4325,14 @@
<attribute name="type">
<value>usb</value>
</attribute>
<optional>
<ref name="alias"/>
</optional>
<optional>
<ref name="address"/>
</optional>
<interleave>
<optional>
<ref name="alias"/>
</optional>
<optional>
<ref name="address"/>
</optional>
</interleave>
</element>
</define>
<define name="redirdev">
@@ -4252,16 +4343,18 @@
<attribute name="type">
<ref name="qemucdevSrcTypeChoice"/>
</attribute>
<ref name="qemucdevSrcDef"/>
<optional>
<ref name="alias"/>
</optional>
<optional>
<ref name="address"/>
</optional>
<optional>
<ref name="deviceBoot"/>
</optional>
<interleave>
<ref name="qemucdevSrcDef"/>
<optional>
<ref name="alias"/>
</optional>
<optional>
<ref name="address"/>
</optional>
<optional>
<ref name="deviceBoot"/>
</optional>
</interleave>
</element>
</define>
<define name="redirfilter">
@@ -4475,7 +4568,10 @@
<value>mdev</value>
</attribute>
<attribute name="model">
<value>vfio-pci</value>
<choice>
<value>vfio-pci</value>
<value>vfio-ccw</value>
</choice>
</attribute>
<element name="source">
<ref name="mdevaddress"/>
@@ -4694,6 +4790,9 @@
<optional>
<ref name="iommu"/>
</optional>
<optional>
<ref name="vsock"/>
</optional>
</interleave>
</element>
</define>
@@ -4791,6 +4890,11 @@
<attribute name="state">
<ref name="virOnOff"/>
</attribute>
<optional>
<element name="tseg">
<ref name="scaledInteger"/>
</element>
</optional>
</optional>
</element>
</optional>
@@ -5024,19 +5128,30 @@
<define name="hpt">
<element name="hpt">
<attribute name="resizing">
<choice>
<value>enabled</value>
<value>disabled</value>
<value>required</value>
</choice>
</attribute>
<optional>
<attribute name="resizing">
<choice>
<value>enabled</value>
<value>disabled</value>
<value>required</value>
</choice>
</attribute>
</optional>
<optional>
<element name="maxpagesize">
<ref name='scaledInteger'/>
</element>
</optional>
</element>
</define>
<define name="vmcoreinfo">
<element name="vmcoreinfo">
<empty/>
<optional>
<attribute name="state">
<ref name="virOnOff"/>
</attribute>
</optional>
</element>
</define>
@@ -5143,6 +5258,11 @@
</choice>
</attribute>
</optional>
<optional>
<attribute name="discard">
<ref name="virYesNo"/>
</attribute>
</optional>
<interleave>
<optional>
<ref name="memorydev-source"/>
@@ -5288,22 +5408,6 @@
</element>
</define>
<define name="filterref-node-attributes">
<attribute name="filter">
<data type="NCName"/>
</attribute>
<zeroOrMore>
<element name="parameter">
<attribute name="name">
<ref name="filter-param-name"/>
</attribute>
<attribute name="value">
<ref name="filter-param-value"/>
</attribute>
</element>
</zeroOrMore>
</define>
<define name="deviceBoot">
<element name="boot">
<attribute name="order">
@@ -6030,16 +6134,6 @@
<param name="pattern">[a-zA-Z0-9_\.\+\-/]+</param>
</data>
</define>
<define name="filter-param-name">
<data type="string">
<param name="pattern">[a-zA-Z0-9_]+</param>
</data>
</define>
<define name="filter-param-value">
<data type="string">
<param name="pattern">[a-zA-Z0-9_\.:]+</param>
</data>
</define>
<define name="spaprvioReg">
<data type="string">
<param name="pattern">(0x)?[0-9a-fA-F]{1,16}</param>
@@ -6070,12 +6164,14 @@
</choice>
</attribute>
</optional>
<optional>
<ref name="alias"/>
</optional>
<optional>
<ref name="address"/>
</optional>
<interleave>
<optional>
<ref name="alias"/>
</optional>
<optional>
<ref name="address"/>
</optional>
</interleave>
</element>
</define>
<define name="rawIO">

View File

@@ -130,7 +130,8 @@
<ref name="virOnOff"/>
</attribute>
</optional>
<!-- Bridge forward delay (see 'brctl setfd') -->
<!-- Bridge forward delay
(see 'ip link set <dev> type bridge forward_delay') -->
<optional v:since="2">
<attribute name="delay"><ref name="timeval"/></attribute>
</optional>

View File

@@ -578,6 +578,7 @@
<text/>
</element>
</optional>
<ref name='blockData'/>
</element>
</define>
@@ -585,6 +586,18 @@
<element name='size'>
<ref name='unsignedLong'/>
</element>
<ref name='blockData'/>
</define>
<define name='blockData'>
<optional>
<element name='logical_block_size'>
<ref name='unsignedLong'/>
</element>
<element name='num_blocks'>
<ref name='unsignedLong'/>
</element>
</optional>
</define>
<define name='capdrm'>

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<include href='basictypes.rng'/>
<include href='nwfilter_params.rng'/>
<start>
<ref name="filter"/>
</start>
@@ -20,6 +21,7 @@
<element name="rule">
<ref name="rule-node-attributes"/>
<choice>
<empty/>
<element name="mac">
<ref name="match-attribute"/>
<ref name="common-l2-attributes"/>
@@ -245,22 +247,6 @@
</optional>
</define>
<define name="filterref-node-attributes">
<attribute name="filter">
<data type="NCName"/>
</attribute>
<zeroOrMore>
<element name="parameter">
<attribute name="name">
<ref name="filter-param-name"/>
</attribute>
<attribute name="value">
<ref name="filter-param-value"/>
</attribute>
</element>
</zeroOrMore>
</define>
<define name="rule-node-attributes">
<attribute name="action">
<ref name='action-type'/>
@@ -937,18 +923,6 @@
</choice>
</define>
<define name="filter-param-name">
<data type="string">
<param name="pattern">[a-zA-Z0-9_]+</param>
</data>
</define>
<define name="filter-param-value">
<data type="string">
<param name="pattern">[a-zA-Z0-9_\.:]+</param>
</data>
</define>
<define name='action-type'>
<choice>
<value>drop</value>

View File

@@ -0,0 +1,32 @@
<?xml version="1.0"?>
<!-- network-related definitions used in multiple grammars -->
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<define name="filterref-node-attributes">
<attribute name="filter">
<data type="NCName"/>
</attribute>
<zeroOrMore>
<element name="parameter">
<attribute name="name">
<ref name="filter-param-name"/>
</attribute>
<attribute name="value">
<ref name="filter-param-value"/>
</attribute>
</element>
</zeroOrMore>
</define>
<define name="filter-param-name">
<data type="string">
<param name="pattern">[a-zA-Z0-9_]+</param>
</data>
</define>
<define name="filter-param-value">
<data type="string">
<param name="pattern">[a-zA-Z0-9_\.:]+</param>
</data>
</define>
</grammar>

View File

@@ -0,0 +1,49 @@
<?xml version="1.0"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<!-- domain-related definitions used in multiple grammars -->
<include href='basictypes.rng'/>
<include href='nwfilter_params.rng'/>
<start>
<ref name="filterbinding"/>
</start>
<define name="filterbinding">
<element name="filterbinding">
<interleave>
<element name="owner">
<element name="name">
<text/>
</element>
<element name="uuid">
<ref name="UUID"/>
</element>
</element>
<element name="portdev">
<attribute name="name"/>
<empty/>
</element>
<optional>
<element name="linkdev">
<attribute name="name"/>
<empty/>
</element>
</optional>
<element name="mac">
<attribute name="address">
<ref name="uniMacAddr"/>
</attribute>
<empty/>
</element>
<element name="filterref">
<ref name="filterref-node-attributes"/>
</element>
</interleave>
</element>
</define>
</grammar>

View File

@@ -39,6 +39,53 @@
</element>
</define>
<define name="reconnect">
<element name="reconnect">
<attribute name="enabled">
<ref name="virYesNo"/>
</attribute>
<optional>
<attribute name="timeout">
<ref name="unsignedInt"/>
</attribute>
</optional>
</element>
</define>
<define name='unixSocketSource'>
<element name="source">
<attribute name="type">
<value>unix</value>
</attribute>
<attribute name="path">
<ref name="absFilePath"/>
</attribute>
<attribute name="mode">
<choice>
<value>server</value>
<value>client</value>
</choice>
</attribute>
<optional>
<ref name="reconnect"/>
</optional>
<empty/>
</element>
</define>
<define name='reservations'>
<element name='reservations'>
<optional>
<attribute name='managed'>
<ref name='virYesNo'/>
</attribute>
</optional>
<optional>
<ref name='unixSocketSource'/>
</optional>
</element>
</define>
<define name='secret'>
<element name='secret'>
<attribute name='type'>

View File

@@ -56,6 +56,11 @@
<ref name='scaledInteger'/>
</element>
</optional>
<optional>
<element name='physical'>
<ref name='scaledInteger'/>
</element>
</optional>
</interleave>
</define>

View File

@@ -759,7 +759,7 @@
This provides a pool based on Virtuozzo storage. Virtuozzo Storage is
a highly available distributed software-defined storage with built-in
replication and disaster recovery. More detailed information about
Virtuozzo storage and its managment can be found here:
Virtuozzo storage and its management can be found here:
<a href="https://openvz.org/Virtuozzo_Storage">Virtuozzo Storage</a>).
</p>

View File

@@ -199,7 +199,7 @@
return an error indicating it is not supported. Likewise libvirt will
make reasonable efforts to keep API calls working across hypervisor
releases even if the underlying implementation changes. In cases where
this is impossible, an suitable error will be reported. The list of
this is impossible, a suitable error will be reported. The list of
APIs which have implementations <a href="hvsupport.html">is detailed separately</a>.
</p>

View File

@@ -158,6 +158,11 @@
/usr/{lib,lib64}/qemu/*.so mr,
/usr/lib/@{multiarch}/qemu/*.so mr,
# swtpm
/{usr/,}bin/swtpm rmix,
/usr/{lib,lib64}/libswtpm_libtpms.so mr,
/usr/lib/@{multiarch}/libswtpm_libtpms.so mr,
# for save and resume
/{usr/,}bin/dash rmix,
/{usr/,}bin/dd rmix,
@@ -193,6 +198,9 @@
deny /dev/shm/lttng-ust-wait-* r,
deny /run/shm/lttng-ust-wait-* r,
# for vfio hotplug on systems without static vfio (LP: #1775777)
/dev/vfio/vfio rw,
# required for sasl GSSAPI plugin
/etc/gss/mech.d/ r,
/etc/gss/mech.d/* r,

View File

@@ -50,6 +50,7 @@ profile virt-aa-helper /usr/{lib,lib64}/libvirt/virt-aa-helper {
@{HOME}/** r,
/var/lib/libvirt/images/ r,
/var/lib/libvirt/images/** r,
/var/lib/nova/instances/_base/* r
/{media,mnt,opt,srv}/** r,
# For virt-sandbox
/{,var/}run/libvirt/**/[sv]d[a-z] r,

View File

@@ -31,15 +31,17 @@
/**
* virDomainSnapshot:
*
* a virDomainSnapshot is a private structure representing a snapshot of
* a domain.
* A virDomainSnapshot is a private structure representing a snapshot of
* a domain. A snapshot captures the state of the domain at a point in
* time, with the intent that the guest can be reverted back to that
* state at a later time.
*/
typedef struct _virDomainSnapshot virDomainSnapshot;
/**
* virDomainSnapshotPtr:
*
* a virDomainSnapshotPtr is pointer to a virDomainSnapshot private structure,
* A virDomainSnapshotPtr is pointer to a virDomainSnapshot private structure,
* and is the type used to reference a domain snapshot in the API.
*/
typedef virDomainSnapshot *virDomainSnapshotPtr;

View File

@@ -837,7 +837,7 @@ typedef enum {
* the destination host has multiple interfaces and a specific interface is
* required to transmit migration data.
*
* This filed may not be used when VIR_MIGRATE_TUNNELLED flag is set.
* This field may not be used when VIR_MIGRATE_TUNNELLED flag is set.
*/
# define VIR_MIGRATE_PARAM_URI "migrate_uri"
@@ -2022,6 +2022,9 @@ int virDomainDetachDeviceFlags(virDomainPtr domain,
int virDomainUpdateDeviceFlags(virDomainPtr domain,
const char *xml, unsigned int flags);
int virDomainDetachDeviceAlias(virDomainPtr domain,
const char *alias, unsigned int flags);
typedef struct _virDomainStatsRecord virDomainStatsRecord;
typedef virDomainStatsRecord *virDomainStatsRecordPtr;
struct _virDomainStatsRecord {
@@ -2052,6 +2055,8 @@ typedef enum {
VIR_CONNECT_GET_ALL_DOMAINS_STATS_SHUTOFF = VIR_CONNECT_LIST_DOMAINS_SHUTOFF,
VIR_CONNECT_GET_ALL_DOMAINS_STATS_OTHER = VIR_CONNECT_LIST_DOMAINS_OTHER,
VIR_CONNECT_GET_ALL_DOMAINS_STATS_NOWAIT = 1 << 29, /* report statistics that can be obtained
immediately without any blocking */
VIR_CONNECT_GET_ALL_DOMAINS_STATS_BACKING = 1 << 30, /* include backing chain for block stats */
VIR_CONNECT_GET_ALL_DOMAINS_STATS_ENFORCE_STATS = 1U << 31, /* enforce requested stats */
} virConnectGetAllDomainStatsFlags;
@@ -4764,4 +4769,21 @@ int virDomainSetLifecycleAction(virDomainPtr domain,
unsigned int action,
unsigned int flags);
/**
* Launch Security API
*/
/**
* VIR_DOMAIN_LAUNCH_SECURITY_SEV_MEASUREMENT:
*
* Macro represents the launch measurement of the SEV guest,
* as VIR_TYPED_PARAM_STRING.
*/
# define VIR_DOMAIN_LAUNCH_SECURITY_SEV_MEASUREMENT "sev-measurement"
int virDomainGetLaunchSecurityInfo(virDomainPtr domain,
virTypedParameterPtr *params,
int *nparams,
unsigned int flags);
#endif /* __VIR_LIBVIRT_DOMAIN_H__ */

View File

@@ -432,6 +432,48 @@ typedef virNodeCPUStats *virNodeCPUStatsPtr;
typedef virNodeMemoryStats *virNodeMemoryStatsPtr;
/**
*
* SEV Parameters
*/
/**
* VIR_NODE_SEV_PDH:
*
* Macro represents the Platform Diffie-Hellman key, as VIR_TYPED_PARAMS_STRING.
*/
# define VIR_NODE_SEV_PDH "pdh"
/**
* VIR_NODE_SEV_CERT_CHAIN:
*
* Macro represents the platform certificate chain that includes the platform
* endorsement key (PEK), owner certificate authority (OCD) and chip
* endorsement key (CEK), as VIR_TYPED_PARAMS_STRING.
*/
# define VIR_NODE_SEV_CERT_CHAIN "cert-chain"
/**
* VIR_NODE_SEV_CBITPOS:
*
* Macro represents the CBit Position used by hypervisor when SEV is enabled.
*/
# define VIR_NODE_SEV_CBITPOS "cbitpos"
/**
* VIR_NODE_SEV_REDUCED_PHYS_BITS:
*
* Macro represents the number of bits we lose in physical address space
* when SEV is enabled in the guest.
*/
# define VIR_NODE_SEV_REDUCED_PHYS_BITS "reduced-phys-bits"
int virNodeGetSEVInfo (virConnectPtr conn,
virTypedParameterPtr *params,
int *nparams,
unsigned int flags);
/**
* virConnectFlags
*
@@ -640,6 +682,13 @@ typedef enum {
int virConnectCompareCPU(virConnectPtr conn,
const char *xmlDesc,
unsigned int flags);
int virConnectCompareHypervisorCPU(virConnectPtr conn,
const char *emulator,
const char *arch,
const char *machine,
const char *virttype,
const char *xmlCPU,
unsigned int flags);
int virConnectGetCPUModelNames(virConnectPtr conn,
const char *arch,
@@ -660,6 +709,14 @@ char *virConnectBaselineCPU(virConnectPtr conn,
const char **xmlCPUs,
unsigned int ncpus,
unsigned int flags);
char *virConnectBaselineHypervisorCPU(virConnectPtr conn,
const char *emulator,
const char *arch,
const char *machine,
const char *virttype,
const char **xmlCPUs,
unsigned int ncpus,
unsigned int flags);
int virNodeGetFreePages(virConnectPtr conn,

View File

@@ -43,6 +43,23 @@ typedef struct _virNWFilter virNWFilter;
*/
typedef virNWFilter *virNWFilterPtr;
/**
* virNWFilterBinding:
*
* a virNWFilterBinding is a private structure representing a network
* filter binding to a port
*/
typedef struct _virNWFilterBinding virNWFilterBinding;
/**
* virNWFilterBindingPtr:
*
* a virNWFilterBindingPtr is pointer to a virNWFilterBinding private
* structure, this is the type used to reference a network filter
* port binding in the API.
*/
typedef virNWFilterBinding *virNWFilterBindingPtr;
/*
* List NWFilters
@@ -92,4 +109,26 @@ int virNWFilterGetUUIDString (virNWFilterPtr nwfilter,
char * virNWFilterGetXMLDesc (virNWFilterPtr nwfilter,
unsigned int flags);
virNWFilterBindingPtr virNWFilterBindingLookupByPortDev(virConnectPtr conn,
const char *portdev);
const char * virNWFilterBindingGetPortDev(virNWFilterBindingPtr binding);
const char * virNWFilterBindingGetFilterName(virNWFilterBindingPtr binding);
int virConnectListAllNWFilterBindings(virConnectPtr conn,
virNWFilterBindingPtr **bindings,
unsigned int flags);
virNWFilterBindingPtr virNWFilterBindingCreateXML(virConnectPtr conn,
const char *xml,
unsigned int flags);
char * virNWFilterBindingGetXMLDesc(virNWFilterBindingPtr binding,
unsigned int flags);
int virNWFilterBindingDelete(virNWFilterBindingPtr binding);
int virNWFilterBindingRef(virNWFilterBindingPtr binding);
int virNWFilterBindingFree(virNWFilterBindingPtr binding);
#endif /* __VIR_LIBVIRT_NWFILTER_H__ */

View File

@@ -321,6 +321,8 @@ typedef enum {
to guest-sync command (DEPRECATED)*/
VIR_ERR_LIBSSH = 98, /* error in libssh transport driver */
VIR_ERR_DEVICE_MISSING = 99, /* fail to find the desired device */
VIR_ERR_INVALID_NWFILTER_BINDING = 100, /* invalid nwfilter binding */
VIR_ERR_NO_NWFILTER_BINDING = 101, /* no nwfilter binding */
} virErrorNumber;
/**
@@ -344,6 +346,8 @@ void virResetLastError (void);
void virResetError (virErrorPtr err);
void virFreeError (virErrorPtr err);
int virGetLastErrorCode (void);
int virGetLastErrorDomain (void);
const char * virGetLastErrorMessage (void);
virErrorPtr virConnGetLastError (virConnectPtr conn);

View File

@@ -184,9 +184,14 @@
%if 0%{?fedora}
%define with_wireshark 0%{!?_without_wireshark:1}
%endif
%if 0%{?fedora} || 0%{?rhel} > 7
%define wireshark_plugindir %(pkg-config --variable plugindir wireshark)
%else
%define wireshark_plugindir %{_libdir}/wireshark/plugins
%endif
# Enable libssh transport for new enough distros
%if 0%{?fedora}
%if 0%{?fedora} || 0%{?rhel} > 7
%define with_libssh 0%{!?_without_libssh:1}
%endif
@@ -249,8 +254,6 @@ Name: libvirt
Version: @VERSION@
Release: 1%{?dist}%{?extra_release}
License: LGPLv2+
Group: Development/Libraries
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
URL: https://libvirt.org/
%if %(echo %{version} | grep -q "\.0$"; echo $?) == 1
@@ -463,7 +466,6 @@ the libvirtd server exporting the virtualization support.
%package docs
Summary: API reference and website documentation
Group: Development/Libraries
%description docs
Includes the API reference for the libvirt C library, and a complete
@@ -471,7 +473,6 @@ copy of the libvirt.org website documentation.
%package daemon
Summary: Server side daemon and supporting files for libvirt library
Group: Development/Libraries
# All runtime requirements for the libvirt package (runtime requrements
# for subpackages are listed later in those subpackages)
@@ -481,8 +482,14 @@ Requires: %{name}-libs = %{version}-%{release}
# for modprobe of pci devices
Requires: module-init-tools
# for /sbin/ip & /sbin/tc
Requires: iproute
# tc is provided by iproute-tc since at least Fedora 26
%if 0%{?fedora} || 0%{?rhel} > 7
Requires: iproute-tc
%endif
Requires: avahi-libs
%if 0%{?fedora} || 0%{?rhel} >= 7
Requires: polkit >= 0.112
@@ -518,7 +525,6 @@ for specific drivers.
%package daemon-config-network
Summary: Default configuration files for the libvirtd daemon
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
Requires: libvirt-daemon-driver-network = %{version}-%{release}
@@ -528,7 +534,6 @@ Default configuration files for setting up NAT based networking
%package daemon-config-nwfilter
Summary: Network filter configuration files for the libvirtd daemon
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release}
@@ -538,7 +543,6 @@ Network filter configuration files for cleaning guest traffic
%package daemon-driver-network
Summary: Network driver plugin for the libvirtd daemon
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
Requires: dnsmasq >= 2.41
Requires: radvd
@@ -555,7 +559,6 @@ bridge capabilities.
%package daemon-driver-nwfilter
Summary: Nwfilter driver plugin for the libvirtd daemon
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
Requires: iptables
%if 0%{?rhel} && 0%{?rhel} < 7
@@ -571,7 +574,6 @@ iptables and ip6tables capabilities
%package daemon-driver-nodedev
Summary: Nodedev driver plugin for the libvirtd daemon
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
# needed for device enumeration
%if 0%{?fedora} || 0%{?rhel} >= 7
@@ -588,7 +590,6 @@ capabilities.
%package daemon-driver-interface
Summary: Interface driver plugin for the libvirtd daemon
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
%if (0%{?fedora} || 0%{?rhel} >= 7)
Requires: netcf-libs >= 0.2.2
@@ -602,7 +603,6 @@ netcf library
%package daemon-driver-secret
Summary: Secret driver plugin for the libvirtd daemon
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
%description daemon-driver-secret
@@ -611,7 +611,6 @@ an implementation of the secret key APIs.
%package daemon-driver-storage-core
Summary: Storage driver plugin including base backends for the libvirtd daemon
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
Requires: nfs-utils
# For mkfs
@@ -628,7 +627,6 @@ iSCSI, and multipath storage.
%package daemon-driver-storage-logical
Summary: Storage driver plugin for lvm volumes
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
Requires: lvm2
@@ -639,7 +637,6 @@ volumes using lvm.
%package daemon-driver-storage-disk
Summary: Storage driver plugin for disk
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
Requires: parted
Requires: device-mapper
@@ -651,7 +648,6 @@ volumes using the host disks.
%package daemon-driver-storage-scsi
Summary: Storage driver plugin for local scsi devices
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
%description daemon-driver-storage-scsi
@@ -661,7 +657,6 @@ host devices.
%package daemon-driver-storage-iscsi
Summary: Storage driver plugin for iscsi
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
Requires: iscsi-initiator-utils
@@ -672,7 +667,6 @@ volumes using the host iscsi stack.
%package daemon-driver-storage-mpath
Summary: Storage driver plugin for multipath volumes
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
Requires: device-mapper
@@ -684,7 +678,6 @@ multipath storage using device mapper.
%if %{with_storage_gluster}
%package daemon-driver-storage-gluster
Summary: Storage driver plugin for gluster
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
%if 0%{?fedora}
Requires: glusterfs-client >= 2.0.1
@@ -702,7 +695,6 @@ volumes using libgfapi.
%if %{with_storage_rbd}
%package daemon-driver-storage-rbd
Summary: Storage driver plugin for rbd
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
%description daemon-driver-storage-rbd
@@ -714,7 +706,6 @@ volumes using the ceph protocol.
%if %{with_storage_sheepdog}
%package daemon-driver-storage-sheepdog
Summary: Storage driver plugin for sheepdog
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
Requires: sheepdog
@@ -727,7 +718,6 @@ sheepdog volumes using.
%if %{with_storage_zfs}
%package daemon-driver-storage-zfs
Summary: Storage driver plugin for ZFS
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
# Support any conforming implementation of zfs
Requires: /sbin/zfs
@@ -741,7 +731,6 @@ ZFS volumes.
%package daemon-driver-storage
Summary: Storage driver plugin including all backends for the libvirtd daemon
Group: Development/Libraries
Requires: libvirt-daemon-driver-storage-core = %{version}-%{release}
Requires: libvirt-daemon-driver-storage-disk = %{version}-%{release}
Requires: libvirt-daemon-driver-storage-logical = %{version}-%{release}
@@ -770,7 +759,6 @@ parted and more.
%if %{with_qemu}
%package daemon-driver-qemu
Summary: QEMU driver plugin for the libvirtd daemon
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
# There really is a hard cross-driver dependency here
Requires: libvirt-daemon-driver-network = %{version}-%{release}
@@ -795,7 +783,6 @@ QEMU
%if %{with_lxc}
%package daemon-driver-lxc
Summary: LXC driver plugin for the libvirtd daemon
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
# There really is a hard cross-driver dependency here
Requires: libvirt-daemon-driver-network = %{version}-%{release}
@@ -813,7 +800,6 @@ the Linux kernel
%if %{with_uml}
%package daemon-driver-uml
Summary: Uml driver plugin for the libvirtd daemon
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
%description daemon-driver-uml
@@ -826,7 +812,6 @@ User Mode Linux
%if %{with_vbox}
%package daemon-driver-vbox
Summary: VirtualBox driver plugin for the libvirtd daemon
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
%description daemon-driver-vbox
@@ -839,8 +824,8 @@ VirtualBox
%if %{with_libxl}
%package daemon-driver-libxl
Summary: Libxl driver plugin for the libvirtd daemon
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
Obsoletes: libvirt-daemon-driver-xen < 4.3.0
%description daemon-driver-libxl
The Libxl driver plugin for the libvirtd daemon, providing
@@ -853,7 +838,6 @@ Libxl
%if %{with_qemu_tcg}
%package daemon-qemu
Summary: Server side daemon & driver required to run QEMU guests
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
Requires: libvirt-daemon-driver-qemu = %{version}-%{release}
@@ -874,7 +858,6 @@ capabilities of the QEMU TCG emulators
%if %{with_qemu_kvm}
%package daemon-kvm
Summary: Server side daemon & driver required to run KVM guests
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
Requires: libvirt-daemon-driver-qemu = %{version}-%{release}
@@ -895,7 +878,6 @@ capabilities of the KVM hypervisor
%if %{with_lxc}
%package daemon-lxc
Summary: Server side daemon & driver required to run LXC guests
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
Requires: libvirt-daemon-driver-lxc = %{version}-%{release}
@@ -915,7 +897,6 @@ capabilities of LXC
%if %{with_uml}
%package daemon-uml
Summary: Server side daemon & driver required to run UML guests
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
Requires: libvirt-daemon-driver-uml = %{version}-%{release}
@@ -936,7 +917,6 @@ capabilities of UML
%if %{with_libxl}
%package daemon-xen
Summary: Server side daemon & driver required to run XEN guests
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
%if %{with_libxl}
@@ -958,7 +938,6 @@ capabilities of XEN
%if %{with_vbox}
%package daemon-vbox
Summary: Server side daemon & driver required to run VirtualBox guests
Group: Development/Libraries
Requires: libvirt-daemon = %{version}-%{release}
Requires: libvirt-daemon-driver-vbox = %{version}-%{release}
@@ -976,7 +955,6 @@ capabilities of VirtualBox
%package client
Summary: Client side utilities of the libvirt library
Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release}
Requires: readline
Requires: ncurses
@@ -998,7 +976,6 @@ capabilities of recent versions of Linux (and other OSes).
%package libs
Summary: Client side libraries
Group: Development/Libraries
# So remote clients can access libvirt over SSH tunnel
# (client invokes 'nc' against the UNIX socket on the server)
Requires: nc
@@ -1012,7 +989,6 @@ Shared libraries for accessing the libvirt daemon.
%package admin
Summary: Set of tools to control libvirt daemon
Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release}
Requires: readline
%if %{with_bash_completion}
@@ -1025,7 +1001,6 @@ The client side utilities to control the libvirt daemon.
%if %{with_bash_completion}
%package bash-completion
Summary: Bash completion script
Group: Development/Libraries
%description bash-completion
Bash completion script stub.
@@ -1034,7 +1009,6 @@ Bash completion script stub.
%if %{with_wireshark}
%package wireshark
Summary: Wireshark dissector plugin for libvirt RPC transactions
Group: Development/Libraries
Requires: wireshark >= 1.12.6-4
Requires: %{name}-libs = %{version}-%{release}
@@ -1045,7 +1019,6 @@ Wireshark dissector plugin for better analysis of libvirt RPC traffic.
%if %{with_lxc}
%package login-shell
Summary: Login shell for connecting users to an LXC container
Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release}
%description login-shell
@@ -1056,7 +1029,6 @@ namespaces.
%package devel
Summary: Libraries, includes, etc. to compile with the libvirt library
Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release}
Requires: pkgconfig
@@ -1066,7 +1038,6 @@ Include header files & development libraries for the libvirt C library.
%if %{with_sanlock}
%package lock-sanlock
Summary: Sanlock lock manager plugin for QEMU driver
Group: Development/Libraries
Requires: sanlock >= 2.4
#for virt-sanlock-cleanup require augeas
Requires: augeas
@@ -1080,7 +1051,6 @@ driver
%package nss
Summary: Libvirt plugin for Name Service Switch
Group: Development/Libraries
Requires: libvirt-daemon-driver-network = %{version}-%{release}
%description nss
@@ -1384,8 +1354,10 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/connection-driver/*.la
rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/connection-driver/*.a
rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/storage-backend/*.la
rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/storage-backend/*.a
rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/storage-file/*.la
rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/storage-file/*.a
%if %{with_wireshark}
rm -f $RPM_BUILD_ROOT%{_libdir}/wireshark/plugins/libvirt.la
rm -f $RPM_BUILD_ROOT%{wireshark_plugindir}/libvirt.la
%endif
install -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/lib/libvirt/dnsmasq/
@@ -1403,6 +1375,8 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml
install -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/libvirt/nwfilter/
cp -a $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter/*.xml \
$RPM_BUILD_ROOT%{_datadir}/libvirt/nwfilter/
# libvirt saves these files with mode 600
chmod 600 $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter/*.xml
# Strip auto-generated UUID - we need it generated per-install
sed -i -e "/<uuid>/d" $RPM_BUILD_ROOT%{_datadir}/libvirt/networks/default.xml
@@ -1446,13 +1420,13 @@ mv $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-%{version} libvirt-docs
%ifarch %{power64} s390x x86_64 ia64 alpha sparc64
mv $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_probes.stp \
$RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_probes-64.stp
%if %{with_qemu}
mv $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_qemu_probes.stp \
$RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_qemu_probes-64.stp
%endif
%endif
%clean
rm -fr %{buildroot}
%check
cd tests
# These tests don't current work in a mock build root
@@ -1799,6 +1773,7 @@ exit 0
%config(noreplace) %{_sysconfdir}/libvirt/libvirtd.conf
%config(noreplace) %{_sysconfdir}/libvirt/virtlogd.conf
%config(noreplace) %{_sysconfdir}/libvirt/virtlockd.conf
%config(noreplace) %{_sysconfdir}/sasl2/libvirt.conf
%config(noreplace) %{_prefix}/lib/sysctl.d/60-libvirtd.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd
@@ -1886,6 +1861,7 @@ exit 0
%attr(0755, root, root) %{_libexecdir}/libvirt_parthelper
%{_libdir}/%{name}/connection-driver/libvirt_driver_storage.so
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_fs.so
%{_libdir}/%{name}/storage-file/libvirt_storage_file_fs.so
%files daemon-driver-storage-disk
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_disk.so
@@ -1905,6 +1881,7 @@ exit 0
%if %{with_storage_gluster}
%files daemon-driver-storage-gluster
%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_gluster.so
%{_libdir}/%{name}/storage-file/libvirt_storage_file_gluster.so
%endif
%if %{with_storage_rbd}
@@ -1935,6 +1912,8 @@ exit 0
%{_datadir}/augeas/lenses/libvirtd_qemu.aug
%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug
%{_libdir}/%{name}/connection-driver/libvirt_driver_qemu.so
%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/swtpm/
%dir %attr(0711, root, root) %{_localstatedir}/log/swtpm/libvirt/qemu/
%endif
%if %{with_lxc}
@@ -2029,8 +2008,10 @@ exit 0
%{_bindir}/virt-host-validate
%{_datadir}/systemtap/tapset/libvirt_probes*.stp
%{_datadir}/systemtap/tapset/libvirt_qemu_probes*.stp
%{_datadir}/systemtap/tapset/libvirt_functions.stp
%if %{with_qemu}
%{_datadir}/systemtap/tapset/libvirt_qemu_probes*.stp
%endif
%if %{with_bash_completion}
%{_datadir}/bash-completion/completions/virsh
@@ -2071,6 +2052,8 @@ exit 0
%{_datadir}/libvirt/schemas/networkcommon.rng
%{_datadir}/libvirt/schemas/nodedev.rng
%{_datadir}/libvirt/schemas/nwfilter.rng
%{_datadir}/libvirt/schemas/nwfilter_params.rng
%{_datadir}/libvirt/schemas/nwfilterbinding.rng
%{_datadir}/libvirt/schemas/secret.rng
%{_datadir}/libvirt/schemas/storagecommon.rng
%{_datadir}/libvirt/schemas/storagepool.rng
@@ -2080,8 +2063,6 @@ exit 0
%{_datadir}/libvirt/test-screenshot.png
%config(noreplace) %{_sysconfdir}/sasl2/libvirt.conf
%files admin
%{_mandir}/man1/virt-admin.1*
%{_bindir}/virt-admin
@@ -2096,7 +2077,7 @@ exit 0
%if %{with_wireshark}
%files wireshark
%{_libdir}/wireshark/plugins/libvirt.so
%{wireshark_plugindir}/libvirt.so
%endif
%files nss

View File

@@ -57,6 +57,11 @@ AC_DEFUN([LIBVIRT_DRIVER_CHECK_QEMU], [
[/usr/libexec:/usr/lib/qemu:/usr/lib])
AC_DEFINE_UNQUOTED([QEMU_BRIDGE_HELPER], ["$QEMU_BRIDGE_HELPER"],
[QEMU bridge helper])
AC_PATH_PROG([QEMU_PR_HELPER], [qemu-pr-helper],
[/usr/bin/qemu-pr-helper],
[/usr/bin:/usr/libexec])
AC_DEFINE_UNQUOTED([QEMU_PR_HELPER], ["$QEMU_PR_HELPER"],
[QEMU PR helper])
])
AC_DEFUN([LIBVIRT_DRIVER_RESULT_QEMU], [

View File

@@ -17,56 +17,12 @@ dnl License along with this library. If not, see
dnl <http://www.gnu.org/licenses/>.
dnl
AC_DEFUN([LIBVIRT_ARG_GNUTLS],[
LIBVIRT_ARG_WITH_FEATURE([GNUTLS], [gnutls], [check], [2.2.0])
])
AC_DEFUN([LIBVIRT_CHECK_GNUTLS],[
LIBVIRT_CHECK_PKG([GNUTLS], [gnutls], [2.2.0])
LIBVIRT_CHECK_PKG([GNUTLS], [gnutls], [3.2.0])
if test "$with_gnutls" = "yes" ; then
dnl Double probe: gnutls >= 2.12 had a configure option for gcrypt and
dnl gnutls >= 3.0 uses only nettle. Our goal is to avoid gcrypt if we
dnl can prove gnutls uses nettle, but it is a safe fallback to use gcrypt
dnl if we can't prove anything.
GNUTLS_GCRYPT=
if $PKG_CONFIG --exists 'gnutls >= 3.0'; then
GNUTLS_GCRYPT="no"
else
GNUTLS_GCRYPT="probe"
fi
if test "$GNUTLS_GCRYPT" = "probe"; then
case $($PKG_CONFIG --libs --static gnutls) in
*gcrypt*) GNUTLS_GCRYPT=yes ;;
*nettle*) GNUTLS_GCRYPT=no ;;
*) GNUTLS_GCRYPT=unknown ;;
esac
fi
if test "$GNUTLS_GCRYPT" = "yes" || test "$GNUTLS_GCRYPT" = "unknown"; then
GNUTLS_LIBS="$GNUTLS_LIBS -lgcrypt"
dnl We're not using gcrypt deprecated features so define
dnl GCRYPT_NO_DEPRECATED to avoid deprecated warnings
GNUTLS_CFLAGS="$GNUTLS_CFLAGS -DGCRYPT_NO_DEPRECATED"
AC_DEFINE_UNQUOTED([WITH_GNUTLS_GCRYPT], 1,
[set to 1 if it is known or assumed that GNUTLS uses gcrypt])
fi
OLD_CFLAGS="$CFLAGS"
OLD_LIBS="$LIBS"
CFLAGS="$CFLAGS $GNUTLS_CFLAGS"
LIBS="$LIBS $GNUTLS_LIBS"
AC_CHECK_HEADERS([gnutls/crypto.h], [], [], [[
#include <gnutls/gnutls.h>
]])
AC_CHECK_FUNCS([gnutls_rnd])
AC_CHECK_FUNCS([gnutls_cipher_encrypt])
CFLAGS="$OLD_CFLAGS"
LIBS="$OLD_LIBS"
fi
dnl Require gnutls >= 3.2.0 because of 3.2.11 in Ubuntu 14.04
dnl That should have all the functions we use (in >= 2.12)
dnl and also use nettle, because it's >= 3.0
])
AC_DEFUN([LIBVIRT_RESULT_GNUTLS],[

View File

@@ -23,6 +23,19 @@ AC_DEFUN([LIBVIRT_ARG_LIBSSH],[
AC_DEFUN([LIBVIRT_CHECK_LIBSSH],[
LIBVIRT_CHECK_PKG([LIBSSH], [libssh], [0.7])
if test "$with_libssh" = "yes" ; then
old_CFLAGS="$CFLAGS"
old_LIBS="$LIBS"
CFLAGS="$CFLAGS $LIBSSH_CFLAGS"
LIBS="$LIBS $LIBSSH_LIBS"
AC_CHECK_FUNC([ssh_get_server_publickey],
[],
[AC_DEFINE_UNQUOTED([ssh_get_server_publickey], [ssh_get_publickey],
[ssh_get_publickey is deprecated and replaced by ssh_get_server_publickey.])])
CFLAGS="$old_CFLAGS"
LIBS="$old_LIBS"
fi
])
AC_DEFUN([LIBVIRT_RESULT_LIBSSH],[

View File

@@ -61,6 +61,7 @@ AC_DEFUN([LIBVIRT_CHECK_NLS],[
msgfmt_is_gnu=no
fi
AC_MSG_RESULT([$msgfmt_is_gnu])
AM_CONDITIONAL([ENABLE_NLS], [test "x$enable_nls" = "xyes"])
AM_CONDITIONAL([HAVE_GNU_GETTEXT_TOOLS],
[test "x$XGETTEXT" != "xno" && test "x$MSGFMT" != "xno" && \
test "x$MSGMERGE" != "xno" && test "x$msgfmt_is_gnu" != "xno"])

View File

@@ -89,6 +89,8 @@ $(srcdir)/%.gmo: $(srcdir)/%.po
endif HAVE_GNU_GETTEXT_TOOLS
if ENABLE_NLS
# Cannot use 'localedir' since this conflicts with autoconf.
langinstdir = $(datadir)/locale
@@ -105,3 +107,5 @@ uninstall-hook:
d=$(DESTDIR)$(langinstdir)/$$lang/LC_MESSAGES; \
rm -f $$d/$(DOMAIN).mo; \
done
endif ENABLE_NLS

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Afrikaans\n"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Amharic\n"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Angika\n"

View File

@@ -4,12 +4,13 @@
#
# Translators:
# Daniel <veillard@redhat.com>, 2011.
# Daniel Berrange <dan-zanata@berrange.com>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"PO-Revision-Date: 2015-02-26 05:20-0500\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2018-04-24 04:33-0400\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Arabic (http://www.transifex.com/projects/p/fedora/language/"
"ar/)\n"
@@ -20,742 +21,3 @@ msgstr ""
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
"X-Generator: Zanata 3.9.6\n"
msgid ""
"\n"
" DESCRIPTION\n"
msgstr ""
"\n"
" DESCRIPTION\n"
msgid ""
"\n"
" OPTIONS\n"
msgstr ""
"\n"
" OPTIONS\n"
#, c-format
msgid ""
"\n"
"(Time: %.3f ms)\n"
"\n"
msgstr ""
"\n"
"(Time: %.3f ms)\n"
"\n"
msgid " NAME\n"
msgstr " NAME\n"
#, c-format
msgid "%s: %d: failed to allocate %d bytes"
msgstr "%s: %d: failed to allocate %d bytes"
msgid "(re)connect to hypervisor"
msgstr "(re)connect to hypervisor"
#, c-format
msgid "--%s <number>"
msgstr "--%s <number>"
#, c-format
msgid "--%s <string>"
msgstr "--%s <string>"
msgid "CPU Affinity:"
msgstr "CPU Affinity:"
msgid "CPU frequency:"
msgstr "CPU frequency:"
msgid "CPU model:"
msgstr "CPU model:"
msgid "CPU socket(s):"
msgstr "CPU socket(s):"
msgid "CPU time:"
msgstr "CPU time:"
msgid "CPU(s):"
msgstr "CPU(s):"
msgid "CPU:"
msgstr "CPU:"
#, c-format
msgid "Cannot extract running %s hypervisor version\n"
msgstr "Cannot extract running %s hypervisor version\n"
msgid "Change the current memory allocation in the guest domain."
msgstr "Change the current memory allocation in the guest domain."
msgid "Change the maximum memory allocation limit in the guest domain."
msgstr "Change the maximum memory allocation limit in the guest domain."
msgid ""
"Connect to local hypervisor. This is built-in command after shell start up."
msgstr ""
"Connect to local hypervisor. This is built-in command after shell start up."
msgid "Core dump a domain."
msgstr "Core dump a domain."
msgid "Core(s) per socket:"
msgstr "Core(s) per socket:"
msgid "Create a domain."
msgstr "Create a domain."
msgid "Define a domain."
msgstr "Define a domain."
msgid "Display the system version information."
msgstr "Display the system version information."
#, c-format
msgid "Domain %s created from %s\n"
msgstr "Domain %s created from %s\n"
#, c-format
msgid "Domain %s defined from %s\n"
msgstr "Domain %s defined from %s\n"
#, c-format
msgid "Domain %s destroyed\n"
msgstr "Domain %s destroyed\n"
#, c-format
msgid "Domain %s has been undefined\n"
msgstr "Domain %s has been undefined\n"
#, c-format
msgid "Domain %s is being rebooted\n"
msgstr "Domain %s is being rebooted\n"
#, c-format
msgid "Domain %s is being shutdown\n"
msgstr "Domain %s is being shutdown\n"
#, c-format
msgid "Domain %s resumed\n"
msgstr "Domain %s resumed\n"
#, c-format
msgid "Domain %s started\n"
msgstr "Domain %s started\n"
#, c-format
msgid "Domain %s suspended\n"
msgstr "Domain %s suspended\n"
msgid "Domain is already active"
msgstr "Domain is already active"
#, c-format
msgid "Domain restored from %s\n"
msgstr "Domain restored from %s\n"
#, c-format
msgid "Failed to core dump domain %s to %s"
msgstr "Failed to core dump domain %s to %s"
#, c-format
msgid "Failed to create domain from %s"
msgstr "Failed to create domain from %s"
#, c-format
msgid "Failed to define domain from %s"
msgstr "Failed to define domain from %s"
#, c-format
msgid "Failed to destroy domain %s"
msgstr "Failed to destroy domain %s"
msgid "Failed to list active domains"
msgstr "Failed to list active domains"
msgid "Failed to list inactive domains"
msgstr "Failed to list inactive domains"
#, c-format
msgid "Failed to reboot domain %s"
msgstr "Failed to reboot domain %s"
#, c-format
msgid "Failed to restore domain from %s"
msgstr "Failed to restore domain from %s"
#, c-format
msgid "Failed to resume domain %s"
msgstr "Failed to resume domain %s"
#, c-format
msgid "Failed to save domain %s to %s"
msgstr "Failed to save domain %s to %s"
#, c-format
msgid "Failed to shutdown domain %s"
msgstr "Failed to shutdown domain %s"
#, c-format
msgid "Failed to start domain %s"
msgstr "Failed to start domain %s"
#, c-format
msgid "Failed to suspend domain %s"
msgstr "Failed to suspend domain %s"
#, c-format
msgid "Failed to undefine domain %s"
msgstr "Failed to undefine domain %s"
msgid "GET operation failed"
msgstr "GET operation failed"
#, c-format
msgid "GET operation failed: %s"
msgstr "GET operation failed: %s"
msgid "Id"
msgstr "Id"
msgid "Id:"
msgstr "Id:"
msgid "Max memory:"
msgstr "Max memory:"
msgid "Memory size:"
msgstr "Memory size:"
msgid "NUMA cell(s):"
msgstr "NUMA cell(s):"
msgid "Name"
msgstr "Name"
msgid "Name:"
msgstr "Name:"
msgid "No error message provided"
msgstr "No error message provided"
msgid "OS Type:"
msgstr "OS Type:"
msgid "POST operation failed"
msgstr "POST operation failed"
#, c-format
msgid "POST operation failed: %s"
msgstr "POST operation failed: %s"
msgid "Pin domain VCPUs to host physical CPUs."
msgstr "Pin domain VCPUs to host physical CPUs."
msgid "Restore a domain."
msgstr "Restore a domain."
msgid "Resume a previously suspended domain."
msgstr "Resume a previously suspended domain."
msgid "Returns basic information about the domain virtual CPUs."
msgstr "Returns basic information about the domain virtual CPUs."
msgid "Returns basic information about the domain."
msgstr "Returns basic information about the domain."
msgid "Returns basic information about the node."
msgstr "Returns basic information about the node."
msgid "Returns list of domains."
msgstr "Returns list of domains."
msgid "Run a reboot command in the target domain."
msgstr "Run a reboot command in the target domain."
msgid "Run shutdown in the target domain."
msgstr "Run shutdown in the target domain."
#, c-format
msgid "Running hypervisor: %s %d.%d.%d\n"
msgstr "Running hypervisor: %s %d.%d.%d\n"
msgid "State"
msgstr "State"
msgid "State:"
msgstr "State:"
msgid "Suspend a running domain."
msgstr "Suspend a running domain."
msgid "Thread(s) per core:"
msgstr "Thread(s) per core:"
msgid ""
"Type: 'help' for help with commands\n"
" 'quit' to quit\n"
"\n"
msgstr ""
"Type: 'help' for help with commands\n"
" 'quit' to quit\n"
"\n"
msgid "UUID:"
msgstr "UUID:"
msgid "Used memory:"
msgstr "Used memory:"
#, c-format
msgid "Using API: %s %d.%d.%d\n"
msgstr "Using API: %s %d.%d.%d\n"
msgid "VCPU:"
msgstr "VCPU:"
#, c-format
msgid ""
"Welcome to %s, the virtualization interactive terminal.\n"
"\n"
msgstr ""
"Welcome to %s, the virtualization interactive terminal.\n"
"\n"
msgid "cannot parse vbd filename, missing driver name"
msgstr "cannot parse vbd filename, missing driver name"
msgid "cannot parse vbd filename, missing driver type"
msgstr "cannot parse vbd filename, missing driver type"
msgid "change maximum memory limit"
msgstr "change maximum memory limit"
msgid "change memory allocation"
msgstr "change memory allocation"
msgid "change number of virtual CPUs"
msgstr "change number of virtual CPUs"
#, c-format
msgid "command '%s' doesn't support option --%s"
msgstr "command '%s' doesn't support option --%s"
#, c-format
msgid "command '%s' requires --%s option"
msgstr "command '%s' requires --%s option"
#, c-format
msgid "command '%s' requires <%s> option"
msgstr "command '%s' requires <%s> option"
msgid "configuration file syntax error"
msgstr "configuration file syntax error"
#, c-format
msgid "configuration file syntax error: %s"
msgstr "configuration file syntax error: %s"
msgid "convert a domain id or UUID to domain name"
msgstr "convert a domain id or UUID to domain name"
msgid "convert a domain name or UUID to domain id"
msgstr "convert a domain name or UUID to domain id"
msgid "convert a domain name or id to domain UUID"
msgstr "convert a domain name or id to domain UUID"
msgid "could not connect to Xen Store"
msgstr "could not connect to Xen Store"
#, c-format
msgid "could not connect to Xen Store %s"
msgstr "could not connect to Xen Store %s"
msgid "could not use Xen hypervisor entry"
msgstr "could not use Xen hypervisor entry"
#, c-format
msgid "could not use Xen hypervisor entry %s"
msgstr "could not use Xen hypervisor entry %s"
msgid "crashed"
msgstr "crashed"
msgid "create a domain from an XML file"
msgstr "create a domain from an XML file"
msgid "define (but don't start) a domain from an XML file"
msgstr "define (but don't start) a domain from an XML file"
#, c-format
msgid "domain %s exists already"
msgstr "domain %s exists already"
msgid "domain id or name"
msgstr "domain id or name"
msgid "domain id or uuid"
msgstr "domain id or uuid"
msgid "domain information"
msgstr "domain information"
msgid "domain information in XML"
msgstr "domain information in XML"
msgid "domain information incomplete, missing domid"
msgstr "domain information incomplete, missing domid"
msgid "domain information incomplete, missing name"
msgstr "domain information incomplete, missing name"
msgid "domain information incomplete, missing uuid"
msgstr "domain information incomplete, missing uuid"
msgid "domain information incomplete, vbd has no dev"
msgstr "domain information incomplete, vbd has no dev"
msgid "domain information incomplete, vbd has no src"
msgstr "domain information incomplete, vbd has no src"
msgid "domain information incorrect domid not numeric"
msgstr "domain information incorrect domid not numeric"
msgid "domain name or uuid"
msgstr "domain name or uuid"
msgid "domain name, id or uuid"
msgstr "domain name, id or uuid"
msgid "domain state"
msgstr "domain state"
msgid "dump the core of a domain to a file for analysis"
msgstr "dump the core of a domain to a file for analysis"
msgid "error"
msgstr "error"
msgid "error: "
msgstr "error: "
#, c-format
msgid "expected syntax: --%s <%s>"
msgstr "expected syntax: --%s <%s>"
msgid "expecting a name"
msgstr "expecting a name"
msgid "expecting a separator"
msgstr "expecting a separator"
msgid "expecting a separator in list"
msgstr "expecting a separator in list"
msgid "expecting a value"
msgstr "expecting a value"
msgid "expecting an assignment"
msgstr "expecting an assignment"
msgid "failed to connect to Xen Store"
msgstr "failed to connect to Xen Store"
msgid "failed to connect to the hypervisor"
msgstr "failed to connect to the hypervisor"
#, c-format
msgid "failed to get domain '%s'"
msgstr "failed to get domain '%s'"
msgid "failed to get domain UUID"
msgstr "failed to get domain UUID"
msgid "failed to get hypervisor type"
msgstr "failed to get hypervisor type"
msgid "failed to get node information"
msgstr "failed to get node information"
msgid "failed to get the hypervisor version"
msgstr "failed to get the hypervisor version"
msgid "failed to get the library version"
msgstr "failed to get the library version"
#, c-format
msgid "failed to open %s for reading"
msgstr "failed to open %s for reading"
msgid "failed to open configuration file for reading"
msgstr "failed to open configuration file for reading"
msgid "failed to open file"
msgstr "failed to open file"
msgid "failed to parse Xend domain information"
msgstr "failed to parse Xend domain information"
msgid "failed to parse configuration file"
msgstr "failed to parse configuration file"
#, c-format
msgid "failed to parse configuration file %s"
msgstr "failed to parse configuration file %s"
msgid "failed to read configuration file"
msgstr "failed to read configuration file"
#, c-format
msgid "failed to read configuration file %s"
msgstr "failed to read configuration file %s"
msgid "failed to read from Xen Daemon"
msgstr "failed to read from Xen Daemon"
msgid "failed to save content"
msgstr "failed to save content"
msgid "failed to serialize S-Expr"
msgstr "failed to serialize S-Expr"
#, c-format
msgid "failed to serialize S-Expr: %s"
msgstr "failed to serialize S-Expr: %s"
msgid "failed to write configuration file"
msgstr "failed to write configuration file"
#, c-format
msgid "failed to write configuration file: %s"
msgstr "failed to write configuration file: %s"
msgid "getting time of day"
msgstr "getting time of day"
#, c-format
msgid "got unknown HTTP error code %d"
msgstr "got unknown HTTP error code %d"
msgid "gracefully shutdown a domain"
msgstr "gracefully shutdown a domain"
msgid "hypervisor connection URI"
msgstr "hypervisor connection URI"
msgid "in shutdown"
msgstr "in shutdown"
msgid "internal error"
msgstr "internal error"
msgid "invalid connection pointer in"
msgstr "invalid connection pointer in"
#, c-format
msgid "invalid connection pointer in %s"
msgstr "invalid connection pointer in %s"
msgid "invalid domain pointer in"
msgstr "invalid domain pointer in"
#, c-format
msgid "invalid domain pointer in %s"
msgstr "invalid domain pointer in %s"
#, c-format
msgid "library call %s failed, possibly not supported"
msgstr "library call %s failed, possibly not supported"
msgid "library call failed, possibly not supported"
msgstr "library call failed, possibly not supported"
msgid "list domains"
msgstr "list domains"
msgid "list inactive & active domains"
msgstr "list inactive & active domains"
msgid "list inactive domains"
msgstr "list inactive domains"
msgid "missing \""
msgstr "missing \""
msgid "missing devices information"
msgstr "missing devices information"
#, c-format
msgid "missing devices information for %s"
msgstr "missing devices information for %s"
msgid "missing kernel information"
msgstr "missing kernel information"
msgid "missing operating system information"
msgstr "missing operating system information"
#, c-format
msgid "missing operating system information for %s"
msgstr "missing operating system information for %s"
msgid "missing root device information"
msgstr "missing root device information"
#, c-format
msgid "missing root device information in %s"
msgstr "missing root device information in %s"
msgid "missing source information for device"
msgstr "missing source information for device"
#, c-format
msgid "missing source information for device %s"
msgstr "missing source information for device %s"
msgid "missing target information for device"
msgstr "missing target information for device"
#, c-format
msgid "missing target information for device %s"
msgstr "missing target information for device %s"
msgid "name of the inactive domain"
msgstr "name of the inactive domain"
msgid "no state"
msgstr "no state"
msgid "no valid connection"
msgstr "no valid connection"
msgid "node information"
msgstr "node information"
msgid "number"
msgstr "number"
msgid "number of virtual CPUs"
msgstr "number of virtual CPUs"
msgid "offline"
msgstr "offline"
msgid "operation failed"
msgstr "operation failed"
#, c-format
msgid "operation failed: %s"
msgstr "operation failed: %s"
msgid "operation forbidden for read only access"
msgstr "operation forbidden for read only access"
msgid "out of memory"
msgstr "out of memory"
msgid "parser error"
msgstr "parser error"
msgid "paused"
msgstr "paused"
msgid "print help"
msgstr "print help"
msgid "quit this interactive terminal"
msgstr "quit this interactive terminal"
msgid "read-only connection"
msgstr "read-only connection"
msgid "reboot a domain"
msgstr "reboot a domain"
msgid "restore a domain from a saved state in a file"
msgstr "restore a domain from a saved state in a file"
msgid "resume a domain"
msgstr "resume a domain"
msgid "running"
msgstr "running"
msgid "save a domain state to a file"
msgstr "save a domain state to a file"
msgid "show version"
msgstr "show version"
msgid "shut off"
msgstr "shut off"
msgid "start a (previously defined) inactive domain"
msgstr "start a (previously defined) inactive domain"
msgid "string"
msgstr "string"
msgid "suspend a domain"
msgstr "suspend a domain"
msgid "the state to restore"
msgstr "the state to restore"
msgid "this domain exists already"
msgstr "this domain exists already"
msgid "too many drivers registered"
msgstr "too many drivers registered"
#, c-format
msgid "too many drivers registered in %s"
msgstr "too many drivers registered in %s"
#, c-format
msgid "unexpected data '%s'"
msgstr "unexpected data '%s'"
msgid "unknown OS type"
msgstr "unknown OS type"
#, c-format
msgid "unknown OS type %s"
msgstr "unknown OS type %s"
#, c-format
msgid "unknown command: '%s'"
msgstr "unknown command: '%s'"
msgid "unknown host"
msgstr "unknown host"
#, c-format
msgid "unknown host %s"
msgstr "unknown host %s"
#, c-format
msgid "unsupported option '-%c'. See --help."
msgstr "unsupported option '-%c'. See --help."
msgid "unterminated number"
msgstr "unterminated number"
msgid "unterminated string"
msgstr "unterminated string"
msgid "vcpu number"
msgstr "vcpu number"
msgid "warning"
msgstr "warning"
msgid "where to dump the core"
msgstr "where to dump the core"
msgid "where to save the data"
msgstr "where to save the data"

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Asturian\n"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Baluchi\n"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Belarusian\n"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2015-02-26 07:16-0500\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Bulgarian (http://www.transifex.com/projects/p/fedora/"
@@ -153,12 +153,6 @@ msgstr "Създаване на домейн."
msgid "Create a network."
msgstr "Създаване на мрежа."
#, c-format
msgid "Credit scheduler weight parameter (%d) is out of range (1-65535)"
msgstr ""
"Параметъра за тежест на кредита на разпределителя (%d) е извън интервала "
"(1-65535)"
msgid "Define a domain."
msgstr "Дефиниране на домейн."
@@ -691,9 +685,6 @@ msgstr "информация за домейн"
msgid "domain information in XML"
msgstr "информация за домейн в XML"
msgid "domain information incomplete, missing domid"
msgstr "информацията за домейна е непълна, липсва domid"
msgid "domain information incomplete, missing kernel & bootloader"
msgstr ""
"информацията за домейна е непълна, липсва ядро и програма за начално "
@@ -702,18 +693,12 @@ msgstr ""
msgid "domain information incomplete, missing name"
msgstr "информацията за домейна е непълна, липсва име"
msgid "domain information incomplete, missing uuid"
msgstr "информацията за домейна е непълна, липсва uuid"
msgid "domain information incomplete, vbd has no dev"
msgstr "информацията за домейна е непълна, vbd няма dev"
msgid "domain information incomplete, vbd has no src"
msgstr "информацията за домейна е непълна, vbd няма src"
msgid "domain information incorrect domid not numeric"
msgstr "информацията за домейна е невярна, domid не е число"
msgid "domain name or uuid"
msgstr "име на домейн или uuid"
@@ -754,9 +739,6 @@ msgstr "очаква се стойност"
msgid "expecting an assignment"
msgstr "очаква се присвояване"
msgid "failed to connect to Xen Store"
msgstr "неуспешно свързване към xen хранилище"
msgid "failed to connect to the hypervisor"
msgstr "неуспех при свързване с хипервайзора"
@@ -812,9 +794,6 @@ msgstr "неуспешно отваряне на файл"
msgid "failed to open the log file. check the log file path"
msgstr "неуспех при отваряне на дневника. проверете пътя на файла"
msgid "failed to parse Xend domain information"
msgstr "неуспешен разбор на информацията за Xend домейн"
msgid "failed to parse configuration file"
msgstr "грешка при разбор на конфигурационния файл"
@@ -829,9 +808,6 @@ msgstr "грешка при четене на конфигурационния
msgid "failed to read configuration file %s"
msgstr "грешка при четене на конфигурационния файл %s"
msgid "failed to read from Xen Daemon"
msgstr "неуспешно четене от xen демона"
msgid "failed to save content"
msgstr "неуспешен запис на файл"

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"PO-Revision-Date: 2015-02-26 06:53-0500\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2018-04-24 06:13-0400\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Bengali (http://www.transifex.com/projects/p/fedora/language/"
"bn/)\n"
@@ -19,742 +19,3 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.9.6\n"
msgid ""
"\n"
" DESCRIPTION\n"
msgstr ""
"\n"
" DESCRIPTION\n"
msgid ""
"\n"
" OPTIONS\n"
msgstr ""
"\n"
" OPTIONS\n"
#, c-format
msgid ""
"\n"
"(Time: %.3f ms)\n"
"\n"
msgstr ""
"\n"
"(Time: %.3f ms)\n"
"\n"
msgid " NAME\n"
msgstr " NAME\n"
#, c-format
msgid "%s: %d: failed to allocate %d bytes"
msgstr "%s: %d: failed to allocate %d bytes"
msgid "(re)connect to hypervisor"
msgstr "(re)connect to hypervisor"
#, c-format
msgid "--%s <number>"
msgstr "--%s <number>"
#, c-format
msgid "--%s <string>"
msgstr "--%s <string>"
msgid "CPU Affinity:"
msgstr "CPU Affinity:"
msgid "CPU frequency:"
msgstr "CPU frequency:"
msgid "CPU model:"
msgstr "CPU model:"
msgid "CPU socket(s):"
msgstr "CPU socket(s):"
msgid "CPU time:"
msgstr "CPU time:"
msgid "CPU(s):"
msgstr "CPU(s):"
msgid "CPU:"
msgstr "CPU:"
#, c-format
msgid "Cannot extract running %s hypervisor version\n"
msgstr "Cannot extract running %s hypervisor version\n"
msgid "Change the current memory allocation in the guest domain."
msgstr "Change the current memory allocation in the guest domain."
msgid "Change the maximum memory allocation limit in the guest domain."
msgstr "Change the maximum memory allocation limit in the guest domain."
msgid ""
"Connect to local hypervisor. This is built-in command after shell start up."
msgstr ""
"Connect to local hypervisor. This is built-in command after shell start up."
msgid "Core dump a domain."
msgstr "Core dump a domain."
msgid "Core(s) per socket:"
msgstr "Core(s) per socket:"
msgid "Create a domain."
msgstr "Create a domain."
msgid "Define a domain."
msgstr "Define a domain."
msgid "Display the system version information."
msgstr "Display the system version information."
#, c-format
msgid "Domain %s created from %s\n"
msgstr "Domain %s created from %s\n"
#, c-format
msgid "Domain %s defined from %s\n"
msgstr "Domain %s defined from %s\n"
#, c-format
msgid "Domain %s destroyed\n"
msgstr "Domain %s destroyed\n"
#, c-format
msgid "Domain %s has been undefined\n"
msgstr "Domain %s has been undefined\n"
#, c-format
msgid "Domain %s is being rebooted\n"
msgstr "Domain %s is being rebooted\n"
#, c-format
msgid "Domain %s is being shutdown\n"
msgstr "Domain %s is being shutdown\n"
#, c-format
msgid "Domain %s resumed\n"
msgstr "Domain %s resumed\n"
#, c-format
msgid "Domain %s started\n"
msgstr "Domain %s started\n"
#, c-format
msgid "Domain %s suspended\n"
msgstr "Domain %s suspended\n"
msgid "Domain is already active"
msgstr "Domain is already active"
#, c-format
msgid "Domain restored from %s\n"
msgstr "Domain restored from %s\n"
#, c-format
msgid "Failed to core dump domain %s to %s"
msgstr "Failed to core dump domain %s to %s"
#, c-format
msgid "Failed to create domain from %s"
msgstr "Failed to create domain from %s"
#, c-format
msgid "Failed to define domain from %s"
msgstr "Failed to define domain from %s"
#, c-format
msgid "Failed to destroy domain %s"
msgstr "Failed to destroy domain %s"
msgid "Failed to list active domains"
msgstr "Failed to list active domains"
msgid "Failed to list inactive domains"
msgstr "Failed to list inactive domains"
#, c-format
msgid "Failed to reboot domain %s"
msgstr "Failed to reboot domain %s"
#, c-format
msgid "Failed to restore domain from %s"
msgstr "Failed to restore domain from %s"
#, c-format
msgid "Failed to resume domain %s"
msgstr "Failed to resume domain %s"
#, c-format
msgid "Failed to save domain %s to %s"
msgstr "Failed to save domain %s to %s"
#, c-format
msgid "Failed to shutdown domain %s"
msgstr "Failed to shutdown domain %s"
#, c-format
msgid "Failed to start domain %s"
msgstr "Failed to start domain %s"
#, c-format
msgid "Failed to suspend domain %s"
msgstr "Failed to suspend domain %s"
#, c-format
msgid "Failed to undefine domain %s"
msgstr "Failed to undefine domain %s"
msgid "GET operation failed"
msgstr "GET operation failed"
#, c-format
msgid "GET operation failed: %s"
msgstr "GET operation failed: %s"
msgid "Id"
msgstr "Id"
msgid "Id:"
msgstr "Id:"
msgid "Max memory:"
msgstr "Max memory:"
msgid "Memory size:"
msgstr "Memory size:"
msgid "NUMA cell(s):"
msgstr "NUMA cell(s):"
msgid "Name"
msgstr "Name"
msgid "Name:"
msgstr "Name:"
msgid "No error message provided"
msgstr "No error message provided"
msgid "OS Type:"
msgstr "OS Type:"
msgid "POST operation failed"
msgstr "POST operation failed"
#, c-format
msgid "POST operation failed: %s"
msgstr "POST operation failed: %s"
msgid "Pin domain VCPUs to host physical CPUs."
msgstr "Pin domain VCPUs to host physical CPUs."
msgid "Restore a domain."
msgstr "Restore a domain."
msgid "Resume a previously suspended domain."
msgstr "Resume a previously suspended domain."
msgid "Returns basic information about the domain virtual CPUs."
msgstr "Returns basic information about the domain virtual CPUs."
msgid "Returns basic information about the domain."
msgstr "Returns basic information about the domain."
msgid "Returns basic information about the node."
msgstr "Returns basic information about the node."
msgid "Returns list of domains."
msgstr "Returns list of domains."
msgid "Run a reboot command in the target domain."
msgstr "Run a reboot command in the target domain."
msgid "Run shutdown in the target domain."
msgstr "Run shutdown in the target domain."
#, c-format
msgid "Running hypervisor: %s %d.%d.%d\n"
msgstr "Running hypervisor: %s %d.%d.%d\n"
msgid "State"
msgstr "State"
msgid "State:"
msgstr "State:"
msgid "Suspend a running domain."
msgstr "Suspend a running domain."
msgid "Thread(s) per core:"
msgstr "Thread(s) per core:"
msgid ""
"Type: 'help' for help with commands\n"
" 'quit' to quit\n"
"\n"
msgstr ""
"Type: 'help' for help with commands\n"
" 'quit' to quit\n"
"\n"
msgid "UUID:"
msgstr "UUID:"
msgid "Used memory:"
msgstr "Used memory:"
#, c-format
msgid "Using API: %s %d.%d.%d\n"
msgstr "Using API: %s %d.%d.%d\n"
msgid "VCPU:"
msgstr "VCPU:"
#, c-format
msgid ""
"Welcome to %s, the virtualization interactive terminal.\n"
"\n"
msgstr ""
"Welcome to %s, the virtualization interactive terminal.\n"
"\n"
msgid "cannot parse vbd filename, missing driver name"
msgstr "cannot parse vbd filename, missing driver name"
msgid "cannot parse vbd filename, missing driver type"
msgstr "cannot parse vbd filename, missing driver type"
msgid "change maximum memory limit"
msgstr "change maximum memory limit"
msgid "change memory allocation"
msgstr "change memory allocation"
msgid "change number of virtual CPUs"
msgstr "change number of virtual CPUs"
#, c-format
msgid "command '%s' doesn't support option --%s"
msgstr "command '%s' doesn't support option --%s"
#, c-format
msgid "command '%s' requires --%s option"
msgstr "command '%s' requires --%s option"
#, c-format
msgid "command '%s' requires <%s> option"
msgstr "command '%s' requires <%s> option"
msgid "configuration file syntax error"
msgstr "configuration file syntax error"
#, c-format
msgid "configuration file syntax error: %s"
msgstr "configuration file syntax error: %s"
msgid "convert a domain id or UUID to domain name"
msgstr "convert a domain id or UUID to domain name"
msgid "convert a domain name or UUID to domain id"
msgstr "convert a domain name or UUID to domain id"
msgid "convert a domain name or id to domain UUID"
msgstr "convert a domain name or id to domain UUID"
msgid "could not connect to Xen Store"
msgstr "could not connect to Xen Store"
#, c-format
msgid "could not connect to Xen Store %s"
msgstr "could not connect to Xen Store %s"
msgid "could not use Xen hypervisor entry"
msgstr "could not use Xen hypervisor entry"
#, c-format
msgid "could not use Xen hypervisor entry %s"
msgstr "could not use Xen hypervisor entry %s"
msgid "crashed"
msgstr "crashed"
msgid "create a domain from an XML file"
msgstr "create a domain from an XML file"
msgid "define (but don't start) a domain from an XML file"
msgstr "define (but don't start) a domain from an XML file"
#, c-format
msgid "domain %s exists already"
msgstr "domain %s exists already"
msgid "domain id or name"
msgstr "domain id or name"
msgid "domain id or uuid"
msgstr "domain id or uuid"
msgid "domain information"
msgstr "domain information"
msgid "domain information in XML"
msgstr "domain information in XML"
msgid "domain information incomplete, missing domid"
msgstr "domain information incomplete, missing domid"
msgid "domain information incomplete, missing name"
msgstr "domain information incomplete, missing name"
msgid "domain information incomplete, missing uuid"
msgstr "domain information incomplete, missing uuid"
msgid "domain information incomplete, vbd has no dev"
msgstr "domain information incomplete, vbd has no dev"
msgid "domain information incomplete, vbd has no src"
msgstr "domain information incomplete, vbd has no src"
msgid "domain information incorrect domid not numeric"
msgstr "domain information incorrect domid not numeric"
msgid "domain name or uuid"
msgstr "domain name or uuid"
msgid "domain name, id or uuid"
msgstr "domain name, id or uuid"
msgid "domain state"
msgstr "domain state"
msgid "dump the core of a domain to a file for analysis"
msgstr "dump the core of a domain to a file for analysis"
msgid "error"
msgstr "error"
msgid "error: "
msgstr "error: "
#, c-format
msgid "expected syntax: --%s <%s>"
msgstr "expected syntax: --%s <%s>"
msgid "expecting a name"
msgstr "expecting a name"
msgid "expecting a separator"
msgstr "expecting a separator"
msgid "expecting a separator in list"
msgstr "expecting a separator in list"
msgid "expecting a value"
msgstr "expecting a value"
msgid "expecting an assignment"
msgstr "expecting an assignment"
msgid "failed to connect to Xen Store"
msgstr "failed to connect to Xen Store"
msgid "failed to connect to the hypervisor"
msgstr "failed to connect to the hypervisor"
#, c-format
msgid "failed to get domain '%s'"
msgstr "failed to get domain '%s'"
msgid "failed to get domain UUID"
msgstr "failed to get domain UUID"
msgid "failed to get hypervisor type"
msgstr "failed to get hypervisor type"
msgid "failed to get node information"
msgstr "failed to get node information"
msgid "failed to get the hypervisor version"
msgstr "failed to get the hypervisor version"
msgid "failed to get the library version"
msgstr "failed to get the library version"
#, c-format
msgid "failed to open %s for reading"
msgstr "failed to open %s for reading"
msgid "failed to open configuration file for reading"
msgstr "failed to open configuration file for reading"
msgid "failed to open file"
msgstr "failed to open file"
msgid "failed to parse Xend domain information"
msgstr "failed to parse Xend domain information"
msgid "failed to parse configuration file"
msgstr "failed to parse configuration file"
#, c-format
msgid "failed to parse configuration file %s"
msgstr "failed to parse configuration file %s"
msgid "failed to read configuration file"
msgstr "failed to read configuration file"
#, c-format
msgid "failed to read configuration file %s"
msgstr "failed to read configuration file %s"
msgid "failed to read from Xen Daemon"
msgstr "failed to read from Xen Daemon"
msgid "failed to save content"
msgstr "failed to save content"
msgid "failed to serialize S-Expr"
msgstr "failed to serialize S-Expr"
#, c-format
msgid "failed to serialize S-Expr: %s"
msgstr "failed to serialize S-Expr: %s"
msgid "failed to write configuration file"
msgstr "failed to write configuration file"
#, c-format
msgid "failed to write configuration file: %s"
msgstr "failed to write configuration file: %s"
msgid "getting time of day"
msgstr "getting time of day"
#, c-format
msgid "got unknown HTTP error code %d"
msgstr "got unknown HTTP error code %d"
msgid "gracefully shutdown a domain"
msgstr "gracefully shutdown a domain"
msgid "hypervisor connection URI"
msgstr "hypervisor connection URI"
msgid "in shutdown"
msgstr "in shutdown"
msgid "internal error"
msgstr "internal error"
msgid "invalid connection pointer in"
msgstr "invalid connection pointer in"
#, c-format
msgid "invalid connection pointer in %s"
msgstr "invalid connection pointer in %s"
msgid "invalid domain pointer in"
msgstr "invalid domain pointer in"
#, c-format
msgid "invalid domain pointer in %s"
msgstr "invalid domain pointer in %s"
#, c-format
msgid "library call %s failed, possibly not supported"
msgstr "library call %s failed, possibly not supported"
msgid "library call failed, possibly not supported"
msgstr "library call failed, possibly not supported"
msgid "list domains"
msgstr "list domains"
msgid "list inactive & active domains"
msgstr "list inactive & active domains"
msgid "list inactive domains"
msgstr "list inactive domains"
msgid "missing \""
msgstr "missing \""
msgid "missing devices information"
msgstr "missing devices information"
#, c-format
msgid "missing devices information for %s"
msgstr "missing devices information for %s"
msgid "missing kernel information"
msgstr "missing kernel information"
msgid "missing operating system information"
msgstr "missing operating system information"
#, c-format
msgid "missing operating system information for %s"
msgstr "missing operating system information for %s"
msgid "missing root device information"
msgstr "missing root device information"
#, c-format
msgid "missing root device information in %s"
msgstr "missing root device information in %s"
msgid "missing source information for device"
msgstr "missing source information for device"
#, c-format
msgid "missing source information for device %s"
msgstr "missing source information for device %s"
msgid "missing target information for device"
msgstr "missing target information for device"
#, c-format
msgid "missing target information for device %s"
msgstr "missing target information for device %s"
msgid "name of the inactive domain"
msgstr "name of the inactive domain"
msgid "no state"
msgstr "no state"
msgid "no valid connection"
msgstr "no valid connection"
msgid "node information"
msgstr "node information"
msgid "number"
msgstr "number"
msgid "number of virtual CPUs"
msgstr "number of virtual CPUs"
msgid "offline"
msgstr "offline"
msgid "operation failed"
msgstr "operation failed"
#, c-format
msgid "operation failed: %s"
msgstr "operation failed: %s"
msgid "operation forbidden for read only access"
msgstr "operation forbidden for read only access"
msgid "out of memory"
msgstr "out of memory"
msgid "parser error"
msgstr "parser error"
msgid "paused"
msgstr "paused"
msgid "print help"
msgstr "print help"
msgid "quit this interactive terminal"
msgstr "quit this interactive terminal"
msgid "read-only connection"
msgstr "read-only connection"
msgid "reboot a domain"
msgstr "reboot a domain"
msgid "restore a domain from a saved state in a file"
msgstr "restore a domain from a saved state in a file"
msgid "resume a domain"
msgstr "resume a domain"
msgid "running"
msgstr "running"
msgid "save a domain state to a file"
msgstr "save a domain state to a file"
msgid "show version"
msgstr "show version"
msgid "shut off"
msgstr "shut off"
msgid "start a (previously defined) inactive domain"
msgstr "start a (previously defined) inactive domain"
msgid "string"
msgstr "string"
msgid "suspend a domain"
msgstr "suspend a domain"
msgid "the state to restore"
msgstr "the state to restore"
msgid "this domain exists already"
msgstr "this domain exists already"
msgid "too many drivers registered"
msgstr "too many drivers registered"
#, c-format
msgid "too many drivers registered in %s"
msgstr "too many drivers registered in %s"
#, c-format
msgid "unexpected data '%s'"
msgstr "unexpected data '%s'"
msgid "unknown OS type"
msgstr "unknown OS type"
#, c-format
msgid "unknown OS type %s"
msgstr "unknown OS type %s"
#, c-format
msgid "unknown command: '%s'"
msgstr "unknown command: '%s'"
msgid "unknown host"
msgstr "unknown host"
#, c-format
msgid "unknown host %s"
msgstr "unknown host %s"
#, c-format
msgid "unsupported option '-%c'. See --help."
msgstr "unsupported option '-%c'. See --help."
msgid "unterminated number"
msgstr "unterminated number"
msgid "unterminated string"
msgstr "unterminated string"
msgid "vcpu number"
msgstr "vcpu number"
msgid "warning"
msgstr "warning"
msgid "where to dump the core"
msgstr "where to dump the core"
msgid "where to save the data"
msgstr "where to save the data"

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2015-02-26 07:10-0500\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Bengali (India) (http://www.transifex.com/projects/p/libvirt/"
@@ -102,10 +102,6 @@ msgstr ""
msgid " NAME\n"
msgstr " NAME\n"
#, c-format
msgid "%d status from xen daemon: %s:%s"
msgstr "xen ডেমন থেকে %d অবস্থা প্রাপ্ত হয়েছে: %s:%s"
#, c-format
msgid "%s\n"
msgstr "%s\n"
@@ -163,10 +159,6 @@ msgstr "%s: লগ ফাইল লিখতে ব্যর্থ: %s"
msgid "%s: initialization failed\n"
msgstr "%s: প্রারম্ভ ব্যর্থ হয়েছে\n"
#, c-format
msgid "%s: invalid path"
msgstr "%s: অবৈধ পাথ"
#, c-format
msgid ""
"%s: temporary filename contains shell meta or other unacceptable characters "
@@ -545,10 +537,6 @@ msgstr "চলমান %s হাইপার-ভাইসরের সংস্
msgid "Cannot find CPU model with PVR 0x%08x"
msgstr "CPU মডেল PVR 0x%08x সমেত খুঁজে পাওয়া যাবে না"
#, c-format
msgid "Cannot find QEMU binary %s"
msgstr "QEMU বাইনারি %s অনুসন্ধান করতে ব্যর্থ"
#, c-format
msgid "Cannot find UML kernel %s"
msgstr "UML কার্নেল %s অনুসন্ধান করতে ব্যর্থ"
@@ -560,9 +548,6 @@ msgstr "নিরাপত্তা ড্রাইভার '%s' খুঁজ
msgid "Cannot find suitable CPU model for given data"
msgstr "প্রদত্ত তথ্য অনুযায়ী প্রযোজ্য কোনো CPU মডেল পাওয়া যায়নি"
msgid "Cannot modify live config if domain is inactive"
msgstr "ডোমেইন নিষ্ক্রিয় থাকলে লাইভ কনফিগ পরিবর্তন করা সম্ভব নয়"
msgid "Cannot open /dev/urandom"
msgstr "/dev/urandom খুলতে ব্যর্থ"
@@ -654,10 +639,6 @@ msgstr "মাউন্ট করা নেম-স্পেস, শেয়ার
msgid "Cannot use host name '%s' in network '%s'"
msgstr "হোস্ট নাম '%s' নেটওয়ার্ক '%s' এ ব্যবহার করা যায় না"
#, c-format
msgid "Cap %s too big for destination"
msgstr "গন্তব্যের ক্ষেত্রে Cap %s অত্যাধিক বড়"
msgid "Capacity"
msgstr "ধারণক্ষমতা"
@@ -956,11 +937,6 @@ msgstr "উপস্থিত ভলিউম থেকে একটি ভল
msgid "Create a vol."
msgstr "একটি ভলিউম নির্মাণ করুন।"
#, c-format
msgid "Credit scheduler weight parameter (%d) is out of range (1-65535)"
msgstr ""
"ক্রেডিট স্কেডিউলারের weight পরামিতির (%d) মান নির্দিষ্ট সীমা বহির্ভূত (1-65535)"
msgid "DNS HOST records cannot be modified, only added or deleted"
msgstr "DNS HOST রেকর্ড সংশোধন করা যাবে না, শুধুমাত্র যোগ করা বা মোছা যাবে"
@@ -1099,10 +1075,6 @@ msgstr "ডোমেইন %s পুনরায় বুট করা হচ্
msgid "Domain %s is being shutdown\n"
msgstr "ডোমেইন %s বন্ধ করা হচ্ছে\n"
#, c-format
msgid "Domain %s isn't running."
msgstr "ডোমেইন %s বর্তমানে চলছে না।"
#, c-format
msgid "Domain %s marked as autostarted\n"
msgstr "ডোমেইন %s স্বয়ংক্রিয়রূপে প্রারম্ভকারী রূপে চিহ্নিত করা হয়েছে\n"
@@ -1217,12 +1189,6 @@ msgstr "%s-র জন্য ব্যবহারকারীর নাম ল
msgid "Enter username for %s [%s]"
msgstr "%s [%s]-র জন্য ব্যবহারকারীর নাম লিখুন"
msgid "Error adding file to config cache"
msgstr "কনফিগ ক্যাশের মধ্যে ফাইল যোগ করতে ত্রুটি"
msgid "Error adding file to config list"
msgstr "কনফিগ তালিকার মধ্যে ফাইল যোগ করতে ত্রুটি"
msgid "Error creating initial configuration"
msgstr "প্রারম্ভিক কনফিগারেশন নির্মাণ করতে ব্যর্থ"
@@ -1230,9 +1196,6 @@ msgstr "প্রারম্ভিক কনফিগারেশন নির
msgid "Error from child process creating '%s'"
msgstr "'%s' নির্মাণকারী চাইল্ড প্রসেস থেকে উৎপন্ন ত্রুটি"
msgid "Error looking up domain"
msgstr "ডোমেইন অনুসন্ধান করতে ত্রুটি"
#, c-format
msgid "Error opening file %s"
msgstr "ফাইল %s লোড করতে সমস্যা"
@@ -1518,9 +1481,6 @@ msgstr "UUID নির্মাণ করতে ব্যর্থ"
msgid "Failed to get UUID of created secret"
msgstr "নির্মিত গোপনীয় তথ্যের UUID প্রাপ্ত করতে ব্যর্থ"
msgid "Failed to get a scheduler name"
msgstr "সিডিউলারের নাম প্রাপ্ত করতে ব্যর্থ"
#, c-format
msgid "Failed to get block stats %s %s"
msgstr "ব্লক সংক্রান্ত পরিসংখ্যান প্রাপ্ত করতে ব্যর্থ %s %s"
@@ -1698,9 +1658,6 @@ msgstr "ডোমেইন %s পুনরায় বুট করতে ব্
msgid "Failed to reconnect to the hypervisor"
msgstr "হাইপার-ভাইসরের সাথে পুনরায় সংযোগ করতে ব্যর্থ"
msgid "Failed to redefine sexpr"
msgstr "sexpr পুনরায় নির্ধারণ করতে ব্যর্থ"
#, c-format
msgid "Failed to refresh pool %s"
msgstr "পুল %s নতুন করে নির্মাণ করতে ব্যর্থ"
@@ -2127,9 +2084,6 @@ msgstr ""
msgid "Invalid netmask '%s' in network '%s'"
msgstr "অবৈধ netmask '%s', '%s' নেটওয়ার্কে"
msgid "Invalid parameter count"
msgstr "অবৈধ পরামিতি সংখ্যা"
msgid "Invalid parameter to virXPathBoolean()"
msgstr "virXPathBoolean()-র অবৈধ পরামিতি"
@@ -3576,12 +3530,6 @@ msgstr "সর্বমোট"
msgid "Trailing backslash"
msgstr "ট্রেলিং ব্যাকস্ল্যাশ"
#, c-format
msgid ""
"Transport '%s' in URI scheme is not supported, try again without the "
"transport part"
msgstr "পরিবহন '%s' URI স্কিমে সমর্থিত নয়, পরিবহন অংশ ছাড়া অাবার চেষ্টা করুন"
msgid "Tunnelled migration requested but invalid RPC method called"
msgstr "টানেল মাইগ্রেশনের অনুরোধ জানানো হয়েছে কিন্তু অবৈধ RPC মেথড কল করা হয়েছে"
@@ -3622,9 +3570,6 @@ msgstr "<uuid> এবং <sysinfo> এর মধ্যে UUID গরমিল"
msgid "UUID:"
msgstr "UUID:"
msgid "Unable to attach network devices without vlan"
msgstr "vlan বিনা নেটওয়ার্ক ডিভাইস সংযুক্ত করতে ব্যর্থ"
msgid "Unable to become session leader"
msgstr "সেশানের অধিকর্তা হতে ব্যর্থ"
@@ -3711,10 +3656,6 @@ msgstr "CPU মিলের অপ্রত্যাশিত নিয়ম %d"
msgid "Unexpected CPU mode %d"
msgstr "অপ্রত্যাশিত CPU মোড %d"
#, c-format
msgid "Unexpected LXC URI path '%s', try lxc:///"
msgstr "অপ্রত্যাশিত LXC URI পাথ '%s', lxc:/// প্রচেষ্টা করুন"
#, c-format
msgid "Unexpected disk sgio mode '%d'"
msgstr "অপ্রত্যাশিত ডিস্ক sgio মোড '%d'"
@@ -3817,9 +3758,6 @@ msgstr "অজানা প্রোটোকল '%s'"
msgid "Unknown release: %s"
msgstr "অজানা রিলিজ: %s"
msgid "Unknown scheduler"
msgstr "অজানা সময়নির্ধারণকারী"
#, c-format
msgid "Unknown source mode '%s'"
msgstr "অজানা ধরনের সোর্স মোড '%s'"
@@ -3953,10 +3891,6 @@ msgstr "ভলিউম %s মুছে ফেলা হয়েছে\n"
msgid "Volume path '%s' did not start with parent pool source device name."
msgstr "'%s' ভলিউম পাথের প্রারম্ভে ঊর্ধ্বতন পুল উৎস ডিভাইসের নাম অনুপস্থিত।"
#, c-format
msgid "Weight %s too big for destination"
msgstr "গন্তব্যের ক্ষেত্রে weight %s অত্যাধিক বড়"
#, c-format
msgid ""
"Welcome to %s, the virtualization interactive terminal.\n"
@@ -4026,16 +3960,6 @@ msgstr "সক্রিয় ডোমেইনের কাজ পরিত্য
msgid "active"
msgstr "সক্রিয়"
msgid "adding watch @introduceDomain"
msgstr "watch @introduceDomain যোগ করা হচ্ছে"
msgid "adding watch @releaseDomain"
msgstr "watch @releaseDomain যোগ করা হচ্ছে"
#, c-format
msgid "adding watch on %s"
msgstr "%s-র জন্য watch (ওয়াচ) যোগ করা হচ্ছে"
#, c-format
msgid "address type='%s' not supported in hostdev interfaces"
msgstr "ঠিকানা ধরন='%s' hostdev ইন্টারফেসে সমর্থিত নয়"
@@ -4173,15 +4097,6 @@ msgstr "cputune কোটা মান পার্জ করা যাবে
msgid "can't parse cputune shares value"
msgstr "cputune অংশীদারি মান পার্জ করা যাবে না"
msgid "can't retrieve config entry for domain to overwrite"
msgstr "নতুন করে লেখার জন্য চিহ্নিত ডোমেইনের এন্ট্রি উদ্ধার করতে ব্যর্থ"
msgid "can't retrieve config file for domain"
msgstr "ডোমেইনের জন্য কনফিগ ফাইল উদ্ধার করতে ব্যর্থ"
msgid "can't retrieve config filename for domain to overwrite"
msgstr "নতুন করে লেখার জন্য চিহ্নিত ডোমেইনের কনফিগ ফাইলের নাম উদ্ধার করতে ব্যর্থ"
#, c-format
msgid "can't update '%s' section of network '%s'"
msgstr "'%s' বিভাগ অাপডেট করা যাবে না, '%s' নেটওয়ার্কের"
@@ -4395,15 +4310,9 @@ msgstr "সোর্স ছাড়া '%s' ডিস্কের জন্য
msgid "cannot get CPU affinity of process %d"
msgstr "%d প্রসেসের জন্য CPU অ্যাফিনিটি প্রাপ্ত করতে ব্যর্থ"
msgid "cannot get VCPUs info"
msgstr "VCPU-র তথ্য প্রাপ্ত করা সম্ভব নয়"
msgid "cannot get current time"
msgstr "বর্তমান সময় প্রাপ্ত করতে ব্যর্থ"
msgid "cannot get domain details"
msgstr "ডোমেইন সংক্রান্ত বিবরণ প্রাপ্ত করা সম্ভব নয়"
#, c-format
msgid "cannot get file context of '%s'"
msgstr "'%s'-র ফাইল context প্রাপ্ত করতে ব্যর্থ"
@@ -4414,9 +4323,6 @@ msgstr "হোস্ট CPU-র ক্ষমতা প্রাপ্ত কর
msgid "cannot get interface flags on macvtap tap"
msgstr "macvtap tap-র ক্ষেত্রে ইন্টারফেস ফ্ল্যাগ প্রাপ্ত করতে ব্যর্থ"
msgid "cannot get time of day"
msgstr "দিনের বর্তমান সময় সংগ্রহ করতে ব্যর্থ"
msgid "cannot get vCPU placement & pCPU time"
msgstr "vCPU স্থাপনাও ও pCPU-র সময় প্রাপ্ত করতে ব্যর্থ"
@@ -4688,10 +4594,6 @@ msgstr "dir '%s' পড়তে ব্যর্থ"
msgid "cannot read domain image '%s'"
msgstr "ডোমেইনের ইমেজ '%s' পড়তে ব্যর্থ"
#, c-format
msgid "cannot read file %s"
msgstr "%s ফাইল পড়তে ব্যর্থ"
#, c-format
msgid "cannot read header '%s'"
msgstr "হেডার '%s' পড়তে ব্যর্থ"
@@ -4790,10 +4692,6 @@ msgstr "'%s' stat করতে ব্যর্থ"
msgid "cannot stat file '%s'"
msgstr "ফাইল '%s' stat করতে ব্যর্থ"
#, c-format
msgid "cannot stat: %s"
msgstr "stat করতে ব্যর্থ : %s"
#, c-format
msgid "cannot statvfs path '%s'"
msgstr "পাথ '%s' statvfs করতে ব্যর্থ"
@@ -4920,9 +4818,6 @@ msgstr "কনফিগারেশন ফাইলের মধ্যে সি
msgid "configuration file syntax error: %s"
msgstr "কনফিগারেশন ফাইলের মধ্যে সিন্টেক্স সংক্রান্ত সমস্যা: %s"
msgid "conn, or private data is NULL"
msgstr "conn, অথবা ব্যক্তিগত তথ্য NULL"
msgid "connect to the guest console"
msgstr "গেস্ট কনসোলের সাথে সংযোগ স্থাপন করুন"
@@ -5007,9 +4902,6 @@ msgstr "ইনপুট পাথ '%s' খুলতে ব্যর্থ"
msgid "could not parse weight %s"
msgstr "%s ওজন পার্জ করা গেল না"
msgid "could not read CPU flags"
msgstr "CPU ফ্ল্যাগ পড়তে ব্যর্থ"
#, c-format
msgid "could not remove profile for '%s'"
msgstr "'%s'-র প্রোফাইল মুছে ফেলতে ব্যর্থ"
@@ -5289,33 +5181,18 @@ msgstr "XML-র মধ্যে ডোমেইন সংক্রান্ত
msgid "domain information incomplete, missing HVM loader"
msgstr "ডোমেইন সংক্রান্ত তথ্য অসম্পূর্ণ, HVM লোডার অনুপস্থিত"
msgid "domain information incomplete, missing cpu_cap"
msgstr "ডোমেইন সংক্রান্ত তথ্য অসম্পূর্ণ, cpu_cap অনুপস্থিত"
msgid "domain information incomplete, missing cpu_weight"
msgstr "ডোমেইন সংক্রান্ত তথ্য অসম্পূর্ণ, cpu_weight অনুপস্থিত"
msgid "domain information incomplete, missing domid"
msgstr "ডোমেইন সংক্রান্ত তথ্য অসম্পূর্ণ, domid অনুপস্থিত"
msgid "domain information incomplete, missing kernel & bootloader"
msgstr "ডোমেইন সংক্রান্ত তথ্য অসম্পূর্ণ, কার্নেল ও বুট-লোডার অনুপস্থিত"
msgid "domain information incomplete, missing name"
msgstr "ডোমেইন সংক্রান্ত তথ্য অসম্পূর্ণ, নাম অনুপস্থিত"
msgid "domain information incomplete, missing uuid"
msgstr "ডোমেইন সংক্রান্ত তথ্য অসম্পূর্ণ, uuid অনুপস্থিত"
msgid "domain information incomplete, vbd has no dev"
msgstr "ডোমেইন সংক্রান্ত তথ্য অসম্পূর্ণ, vbd-র মধ্যে dev অনুপস্থিত"
msgid "domain information incomplete, vbd has no src"
msgstr "ডোমেইন সংক্রান্ত তথ্য অসম্পূর্ণ, vbd-র মধ্যে src অনুপস্থিত"
msgid "domain information incorrect domid not numeric"
msgstr "ডোমেইন সংক্রান্ত তথ্য অসম্পূর্ণ, domid সংখ্যামূলক নয়"
msgid "domain is already running"
msgstr "ডোমেইন বর্তমানে সক্রিয়"
@@ -5340,9 +5217,6 @@ msgstr "ডোমেইনের নাম, id অথবা uuid"
msgid "domain state"
msgstr "ডোমেইনের অবস্থা"
msgid "domainBlockPeek is not supported for dom0"
msgstr "dom0-র জন্য domainBlockPeek সমর্থিত নয়"
msgid "domainMigratePrepare did not set uri"
msgstr "domainMigratePrepare দ্বারা uri নির্ধারণ করা হয়নি"
@@ -5468,35 +5342,19 @@ msgstr "'%s' ফাইল থেকে পড়তে ব্যর্থ"
msgid "failed to apply capabilities: %d"
msgstr "ক্ষমতা প্রয়োগ করতে ব্যর্থ: %d"
msgid "failed to build sexpr"
msgstr "sexpr নির্মাণ করতে ব্যর্থ"
msgid "failed to connect to Xen Store"
msgstr "Xen Store-র সাথে সংযোগ করতে ব্যর্থ"
msgid "failed to connect to monitor socket"
msgstr "মনিটর সকেটের সাথে সংযোগ স্থাপন করতে ব্যর্থ"
msgid "failed to connect to the hypervisor"
msgstr "হাইপার-ভাইসরের সাথে সংযোগ করতে ব্যর্থ"
msgid "failed to connect to xend"
msgstr "xend-র সাথে সংযোগ করতে ব্যর্থ"
msgid "failed to copy security label"
msgstr "নিরাপত্তা স্তর অনুলিপি করতে ব্যর্থ"
msgid "failed to create a socket"
msgstr "সকেট নির্মাণ করতে ব্যর্থ"
#, c-format
msgid "failed to create directory '%s'"
msgstr "'%s' ডিরেক্টরি নির্মাণ করতে ব্যর্থ"
#, c-format
msgid "failed to create link %s to %s"
msgstr "%s লিংক, %s-র জন্য তৈরি করতে ব্যর্থ"
#, c-format
msgid "failed to create logfile %s"
msgstr "%s লগ-ফাইল নির্মাণ করতে ব্যর্থ"
@@ -5588,10 +5446,6 @@ msgstr "SASL লাইব্রেরি আরম্ভ করতে ব্য
msgid "failed to load module %s %s"
msgstr "মডিউল লোড করতে ব্যর্থ %s %s"
#, c-format
msgid "failed to lseek or read from file: %s"
msgstr "ফাইল থেকে lseek অথবা read করতে ব্যর্থ: %s"
#, c-format
msgid "failed to mark network %s as autostarted"
msgstr "নেটওয়ার্ক %s, স্বয়ং প্রারম্ভকারী রূপে চিহ্নিত করতে ব্যর্থ"
@@ -5610,16 +5464,9 @@ msgstr "পড়ার উদ্দেশ্যে কনফিগারেশন
msgid "failed to open file"
msgstr "ফাইল খুলতে ব্যর্থ"
#, c-format
msgid "failed to open for reading: %s"
msgstr "পড়ার উদ্দেশ্যে খুলতে ব্যর্থ: %s "
msgid "failed to open the log file. check the log file path"
msgstr "লগ ফাইল খুলতে ব্যর্থ। লগ ফাইলের পাথ পরীক্ষা করুন"
msgid "failed to parse Xend domain information"
msgstr "Xend ডোমেইন সংক্রান্ত তথ্য পার্স করতে ব্যর্থ"
msgid "failed to parse configuration file"
msgstr "কনফিগারেশন ফাইল পার্স করতে ব্যর্থ"
@@ -5640,9 +5487,6 @@ msgstr "কনফিগারেশন ফাইল পড়তে ব্যর্
msgid "failed to read configuration file %s"
msgstr "কনফিগারেশন ফাইল %s পড়তে ব্যর্থ"
msgid "failed to read from Xen Daemon"
msgstr "Xen Daemon থেকে পড়তে ব্যর্থ"
#, c-format
msgid "failed to read metadata length in '%s'"
msgstr "'%s'-র মধ্যে মিটাডাটার দৈর্ঘ্য পড়তে ব্যর্থ"
@@ -5658,13 +5502,6 @@ msgstr "qemu হেডার পড়তে ব্যর্থ"
msgid "failed to read temporary file created with template %s"
msgstr "%s টেমপ্লেট সহ নির্মিত অস্থায়ী ফাইল পড়তে ব্যর্থ"
#, c-format
msgid "failed to remove link %s"
msgstr "%s লিংক মুছে ফেলতে ব্যর্থ"
msgid "failed to remove old domain from config map"
msgstr "কনফিগ ম্যাপ থেকে পুরোনো ডোমেইন মুছে ফেলতে ব্যর্থ"
#, c-format
msgid "failed to remove pool '%s'"
msgstr "পুল '%s' মুছে ফেলতে ব্যর্থ"
@@ -5716,9 +5553,6 @@ msgstr "কনফিগারেশন ফাইলের মধ্যে লি
msgid "failed to write the log file"
msgstr "লগ ফাইলের মধ্যে লিখতে ব্যর্থ"
msgid "failed to write to Xen Daemon"
msgstr "Xen Daemon-এ লিখতে ব্যর্থ"
#, c-format
msgid "failed writing to file '%s'"
msgstr "ফাইল '%s'-এ লিখতে ব্যর্থ"
@@ -5773,9 +5607,6 @@ msgstr "ফিল্টার একটি লুপের উপস্থাপ
msgid "find potential storage pool sources"
msgstr "সংগ্রহের পুলের সম্ভাব্য সোর্স অনুসন্ধান করা হবে"
msgid "finding dom on config list"
msgstr "কনফিগ তালিকার মধ্যে ডোমেইন অনুসন্ধান করা হচ্ছে"
msgid "flags parameter must be VIR_MEMORY_VIRTUAL or VIR_MEMORY_PHYSICAL"
msgstr "ফ্ল্যাগের পরামিতি VIR_MEMORY_VIRTUAL অথবা VIR_MEMORY_PHYSICAL হওয়া আবশ্যক"
@@ -5866,13 +5697,6 @@ msgstr "hostdev মোড '%s' সমর্থিত নয়"
msgid "hostdev subsys type '%s' not supported"
msgstr "hostdev subsys-র ধরন '%s' সমর্থিত নয়"
msgid "hotplug of device type not supported"
msgstr "এই ধরনের ডিভাইসের হট-প্লাগ সমর্থিত নয়"
#, c-format
msgid "hugepage backing not supported by '%s'"
msgstr "'%s' দ্বারা hugepage ব্যাকিং সমর্থিত নয়"
msgid "hypervisor connection URI"
msgstr "হাইপার-ভাইসর সংযোগের URI"
@@ -5923,9 +5747,6 @@ msgstr "info মাইগ্রেশনের উত্তরের মধ্
msgid "init binary must be specified"
msgstr "init বাইনারি অবশ্যই উল্লেখ করতে হবে"
msgid "initializing inotify"
msgstr "inotify আরম্ভ করা হচ্ছে"
msgid "interface has no name"
msgstr "ইন্টারফেসের কোনো নাম উপস্থিত নেই"
@@ -6359,9 +6180,6 @@ msgstr "VMX বিন্যাসের তালিকা অনুমোদি
msgid "live migration"
msgstr "লাইভ মাইগ্রেশন"
msgid "looking up dom"
msgstr "ডোমেইন অনুসন্ধান করা হচ্ছে"
msgid "lxc state driver is not active"
msgstr "lxc state ড্রাইভার বর্তমানে সক্রিয় নয়"
@@ -6929,10 +6747,6 @@ msgstr "'%s'-র জন্য PCI স্লটের ID উল্লিখিত
msgid "no PCI vendor ID supplied for '%s'"
msgstr "'%s'-র জন্য PCI বিক্রেতার ID উল্লিখিত হয়নি"
#, c-format
msgid "no QEMU URI path given, try %s"
msgstr "কোনো QEMU URI পাথ উল্লেখ করা হয়নি, %s প্রয়োগ করার প্রচেষ্টা করুন"
#, c-format
msgid "no SCSI LUN ID supplied for '%s'"
msgstr "'%s'-র জন্য SCSI LUN ID উল্লিখিত হয়নি"
@@ -6981,10 +6795,6 @@ msgstr "'%s'-র জন্য USB উৎপাদনের ID উল্লিখ
msgid "no USB vendor ID supplied for '%s'"
msgstr "'%s'-র জন্য USB বিক্রেতার ID উল্লিখিত হয়নি"
msgid "no VirtualBox driver path specified (try vbox:///session)"
msgstr ""
"VirtualBox ড্রাইভারের কোনো পাথ উল্লেখ করা হয়নি (vbox:///session প্রয়োগ করুন)"
#, c-format
msgid "no WWNN supplied for '%s', and auto-generation failed"
msgstr "কোনো WWNN '%s' এর জন্য সরবরাহ করা হয়নি, এবং স্বয়ং-প্রস্তুতি ব্যর্থ হয়েছে"
@@ -7036,9 +6846,6 @@ msgstr "কোনো ডোমেইন XML উল্লিখিত হয়ন
msgid "no domain config"
msgstr "ডোমেইন কনফিগ অনুপস্থিত"
msgid "no domain with matching id"
msgstr "সুসংগত id সহ কোনো ডোমেইন উপস্থিত নেই"
#, c-format
msgid "no domain with matching id %d"
msgstr "%d id-র সাথে সুসংগত ডোমেইন অনুপস্থিত"
@@ -7151,9 +6958,6 @@ msgstr "এই প্ল্যাটফর্মের জন্য নোড
msgid "node information"
msgstr "নোড সংক্রান্ত তথ্য"
msgid "node information incomplete, missing scheduler name"
msgstr "নোডের তথ্য অসম্পূর্ণ, সিডিউলারের নাম অনুপস্থিত"
msgid "nodeset for NUMA memory tuning must be set if 'placement' is 'static'"
msgstr ""
"nodeset NUMA মেমরি টিউনিং এর ক্ষেত্রে অবশ্যই সেট থাকতে হবে, যদি 'placement' "
@@ -7180,9 +6984,6 @@ msgstr "VMX বিন্যাসের সংখ্যা অনুমোদি
msgid "offline"
msgstr "অফ-লাইন"
msgid "on_xend_start not present in sexpr"
msgstr "sexpr-র মধ্যে on_xend_start অনুপস্থিত"
msgid "only TCP listen is supported for chr device"
msgstr "chr ডিভাইসের জন্য শুধুমাত্র TCP listen সমর্থিত"
@@ -7247,10 +7048,6 @@ msgstr "পরামিতি=মান"
msgid "parser error"
msgstr "পার্সার সংক্রান্ত ত্রুটি"
#, c-format
msgid "parsing uuid %s"
msgstr "uuid %s পার্স করা হচ্ছে"
msgid "passthrough mode requires a character device type attribute"
msgstr "passthrough মোডের ক্ষেত্রে একটি অক্ষর ডিভাইস ধরন অ্যাট্রিবিউটের প্রয়োজন"
@@ -7516,9 +7313,6 @@ msgstr "VNC পাসওয়ার্ড নির্ধারণ করতে
msgid "setting disk password is not supported"
msgstr "ডিস্কের পাসওয়ার্ড নির্ধারণ ব্যবস্থা সমর্থিত নয়"
msgid "sexpr2string failed"
msgstr "sexpr2string বিফল"
msgid "sgio is only supported for scsi host device"
msgstr "sgio শুধুমাত্র scsi হোস্ট ডিভাইসের ক্ষেত্রে সমর্থিত"
@@ -7830,9 +7624,6 @@ msgstr "অত্যাধিক সংখ্যক মেমরির পরি
msgid "too many secrets for qcow encryption"
msgstr "qcow এনক্রিপশনের জন্য অত্যাধিক গোপনীয় তথ্য"
msgid "topology syntax error"
msgstr "টোপোলজির সিন্টেক্স সংক্রান্ত ত্রুটি"
msgid "total and read/write bytes_sec cannot be set at the same time"
msgstr "total এবং read/write bytes_sec একই সংগে সেট করা যায় না"
@@ -7878,10 +7669,6 @@ msgstr "uml state ড্রাইভার সক্রিয় নয়"
msgid "umlStartup: out of memory"
msgstr "umlStartup: মেমরি অবশিষ্ট নেই"
#, c-format
msgid "unable to connect to '%s:%s'"
msgstr "'%s:%s'-র সাথে সংযোগ স্থাপন করতে ব্যর্থ"
#, c-format
msgid "unable to create hugepage path %s"
msgstr "hugepage পাথ %s নির্মাণ করতে ব্যর্থ"
@@ -7901,9 +7688,6 @@ msgstr ""
"ইন্টারফেস '%s', '%s' নেটওয়ার্কে মুছতে ব্যর্থ। এটি বর্তমানে %d ডোমেন দ্বারা ব্যবহৃত "
"হচ্ছে।"
msgid "unable to determine original VLAN"
msgstr "মূল VLAN নির্ধারণ করতে ব্যর্থ"
#, c-format
msgid "unable to execute QEMU command '%s'"
msgstr "QEMU কমান্ড '%s' সঞ্চালনা করতে ব্যর্থ"
@@ -7919,9 +7703,6 @@ msgstr "uuid নির্মাণ করতে ব্যর্থ"
msgid "unable to get PID %d security context"
msgstr "PID %d-র নিরাপত্তা সূচক কনটেক্সট প্রাপ্ত করতে ব্যর্থ"
msgid "unable to get current time"
msgstr "বর্তমান সময় প্রাপ্ত করতে ব্যর্থ"
msgid "unable to handle disk requests in snapshot"
msgstr "স্ন্যাপশটে ডিস্ক অনুরোধ পরিচালনা করতে ব্যর্থ"
@@ -7945,10 +7726,6 @@ msgstr "MAC ঠিকানা '%s' পার্স করতে ব্যর্
msgid "unable to register monitor events"
msgstr "মনিটর ইভেন্ট নিবন্ধন করতে ব্যর্থ"
#, c-format
msgid "unable to resolve hostname '%s': %s"
msgstr "'%s' হোস্ট-নেম মীমাংসা করতে ব্যর্থ: %s"
#, c-format
msgid "unable to set ownership of '%s' to %d:%d"
msgstr "'%s'-র মালিকানা %d-এ স্থাপন করতে ব্যর্থ:%d"
@@ -7969,9 +7746,6 @@ msgstr "নিরাপত্তার কনটেক্সট '%s', '%s'-র
msgid "unable to set tty attributes: %s"
msgstr "tty-র বৈশিষ্ট্য নির্ধারণ করতে ব্যর্থ: %s"
msgid "unable to store config file handle"
msgstr "কনফিগ ফাইলের হ্যান্ডেল সংরক্ষণ করতে ব্যর্থ"
#, c-format
msgid "unable to visit backing chain file %s"
msgstr "%s ব্যাকিং চেন ফাইলে পৌঁছাতে ব্যর্থ"
@@ -8018,10 +7792,6 @@ msgstr "অপ্রত্যাশিত UML URI পাথ '%s', uml:///session
msgid "unexpected UML URI path '%s', try uml:///system"
msgstr "অপ্রত্যাশিত UML URI পাথ '%s', uml:///system প্রচেষ্টা করুন"
#, c-format
msgid "unexpected Xen URI path '%s', try xen:///"
msgstr "অপ্রত্যাশিত Xen URI পাথ '%s', xen:/// প্রচেষ্টা করুন"
#, c-format
msgid "unexpected accessmode %d"
msgstr "অপ্রত্যাশিত accessmode %d"
@@ -8260,9 +8030,6 @@ msgstr "on_poweroff-র ক্ষেত্রে অপ্রত্যাশি
msgid "unexpected value %s for on_reboot"
msgstr "on_reboot-র ক্ষেত্রে অপ্রত্যাশিত মান %s"
msgid "unexpected value from on_xend_start"
msgstr "on_xend_start থেকে অপ্রত্যাশিত মান"
#, c-format
msgid "unexpected video model %d"
msgstr "অপ্রত্যাশিত ভিডিও মডেল %d"
@@ -8868,9 +8635,6 @@ msgstr "কনফিগারেশন সমর্থিত নয়: %s"
msgid "unsupported data type '%c' for arg '%s'"
msgstr "অসমর্থিত ধরনের তথ্য '%c', '%s' আর্গুমেন্টের জন্য চিহ্নিত করা হয়েছে"
msgid "unsupported device type"
msgstr "এই প্রকৃতির ডিভাইস সমর্থিত নয়"
#, c-format
msgid "unsupported disk bus '%s' with device setup"
msgstr "ডিভাইস প্রস্তুতির সাথে অসমর্থিত ডিস্ক বাস '%s'"
@@ -9004,9 +8768,6 @@ msgstr "সংস্করণে গরমিল (প্রকৃত %x, প্
msgid "virDomainGetXMLDesc with secure flag"
msgstr "নিরাপত্তার ফ্ল্যাগ সহ virDomainGetXMLDesc"
msgid "virHashLookup"
msgstr "virHashLookup"
msgid "virInterfaceDefFormat NULL def"
msgstr "virInterfaceDefFormat NULL def"
@@ -9054,9 +8815,6 @@ msgstr "ভলিউমের ব্যবহার চিহ্নিত কর
msgid "warning"
msgstr "সতর্কবার্তা"
msgid "watch already tracked"
msgstr "watch বর্তমানে অনুসরণ করা হচ্ছে"
msgid "watchdog must contain model name"
msgstr "watchdog-র মধ্যে মডেলের নাম অন্তর্ভুক্ত থাকা আবশ্যক"
@@ -9080,49 +8838,6 @@ msgstr "write: %s: অস্থায়ী ফাইলের মধ্যে ল
msgid "xen bus does not support %s input device"
msgstr "xen bus দ্বারা %s ইনপুট ডিভাইস সমর্থিত হবে না"
msgid ""
"xenDaemonDomainMigrate: Xen does not support bandwidth limits during "
"migration"
msgstr ""
"xenDaemonDomainMigrate: মাইগ্রেশনের সময় Xen দ্বারা ব্যান্ডউইতের সীমাবদ্ধতা সমর্থিত "
"হয় না"
msgid ""
"xenDaemonDomainMigrate: Xen does not support renaming domains during "
"migration"
msgstr ""
"xenDaemonDomainMigrate: মাইগ্রেশনের সময় ডোমেইনের নাম পরিবর্তনের প্রক্রিয়া Xen "
"দ্বারা সমর্থিত হয় না"
msgid "xenDaemonDomainMigrate: a hostname must be specified in the URI"
msgstr "xenDaemonDomainMigrate: URI-র মধ্যে হোস্ট-নেম উল্লেখ করা আবশ্যক"
msgid "xenDaemonDomainMigrate: invalid port number"
msgstr "xenDaemonDomainMigrate: পোর্ট সংখ্যা বৈধ নয়"
msgid "xenDaemonDomainMigrate: only xenmigr:// migrations are supported by Xen"
msgstr ""
"xenDaemonDomainMigrate: Xen দ্বারা শুধুমাত্র xenmigr:// মাইগ্রেশন সমর্থিত হবে"
msgid "xenDaemonDomainMigrate: unsupported flag"
msgstr "xenDaemonDomainMigrate: ফ্ল্যাগ সমর্থিত নয়"
msgid "xenDaemonDomainMigrate: xend cannot migrate paused domains"
msgstr "xenDaemonDomainMigrate: স্থগিত ডোমেইল xend দ্বারা মাইগ্রেট করা সম্ভব নয়"
msgid "xenDaemonGetAutostart failed to find this domain"
msgstr "xenDaemonGetAutostart দ্বারা এই ডোমেইন সন্ধান করা যায়নি"
msgid "xenDaemonSetAutostart failed to find this domain"
msgstr "xenDaemonSetAutostart দ্বারা এই ডোমেইন সন্ধান করা যায়নি"
msgid "xenXMConfigCacheRefresh: virHashAddEntry"
msgstr "xenXMConfigCacheRefresh: virHashAddEntry"
#, c-format
msgid "xend_post: error from xen daemon: %s"
msgstr "xend_post: xen ডেমনে সমস্যা: %s"
msgid "xml data file to export from"
msgstr "এক্সপোর্ট করার উদ্দেশ্যে চিহ্নিত xml তথ্যের ফাইল"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Tibetan\n"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Breton\n"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Bodo\n"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2015-02-26 07:12-0500\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Bosnian (http://www.transifex.com/projects/p/fedora/language/"
@@ -415,24 +415,15 @@ msgstr "podaci domene"
msgid "domain information in XML"
msgstr "podaci domene u XML-u"
msgid "domain information incomplete, missing domid"
msgstr "podaci domene nisu potpuni, nedostaje domid"
msgid "domain information incomplete, missing name"
msgstr "podaci domene nisu potpuni, nedostaje name"
msgid "domain information incomplete, missing uuid"
msgstr "podaci domene nisu potpuni, nedostaje uuid"
msgid "domain information incomplete, vbd has no dev"
msgstr "podaci domene nisu potpuni, vbd nema dev"
msgid "domain information incomplete, vbd has no src"
msgstr "podaci domene nisu potpuni, vbd nema src"
msgid "domain information incorrect domid not numeric"
msgstr "podaci domene nisu ispravni, domid nije broj"
msgid "domain name or uuid"
msgstr "naziv domene ili uuid"
@@ -470,9 +461,6 @@ msgstr "očekuje se vrijednost"
msgid "expecting an assignment"
msgstr "očekuje se dodjeljivanje"
msgid "failed to connect to Xen Store"
msgstr "uspostavljanje veze sa Xen Store nije uspjelo"
msgid "failed to connect to the hypervisor"
msgstr "uspostavljanje veze s hypervisorom nije uspjelo"
@@ -505,9 +493,6 @@ msgstr "otvaranje konfiguracijske datoteke za čitanje nije uspjelo"
msgid "failed to open file"
msgstr "otvaranje datoteke nije uspjelo"
msgid "failed to parse Xend domain information"
msgstr "raščlanjivanje podataka Xend domene nije uspjelo"
msgid "failed to parse configuration file"
msgstr "raščlanjivanje konfiguracijske datoteke nije uspjelo"
@@ -522,9 +507,6 @@ msgstr "čitanje konfiguracijske datoteke nije uspjelo"
msgid "failed to read configuration file %s"
msgstr "čitanje konfiguracijske datoteke %s nije uspjelo"
msgid "failed to read from Xen Daemon"
msgstr "čitanje iz demona Xen nije uspjelo"
msgid "failed to save content"
msgstr "spremanje sadržaja nije uspjelo"

View File

@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2018-02-24 11:19-0500\n"
"Last-Translator: Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>\n"
"Language-Team: Catalan (http://www.transifex.com/projects/p/libvirt/language/"
@@ -941,9 +941,6 @@ msgstr "informació del domini"
msgid "domain information in XML"
msgstr "informació de domini en XML"
msgid "domain information incomplete, missing domid"
msgstr "la informació del domini és incompleta, falta el domid"
msgid "domain information incomplete, missing kernel & bootloader"
msgstr ""
"la informació del domini és incompleta, falta el kernel i el gestor "
@@ -952,18 +949,12 @@ msgstr ""
msgid "domain information incomplete, missing name"
msgstr "la informació del domini és incompleta, falta el nom"
msgid "domain information incomplete, missing uuid"
msgstr "la informació del domini és incompleta, falta l'uuid"
msgid "domain information incomplete, vbd has no dev"
msgstr "la informació del domini és incompleta, vbd no té dev"
msgid "domain information incomplete, vbd has no src"
msgstr "la informació del domini és incompleta, vbd no té src"
msgid "domain information incorrect domid not numeric"
msgstr "la informació del domini és incorrecta, domid no és numèric"
msgid "domain is not in running state"
msgstr "el domini no està en estat d'execució"
@@ -1022,9 +1013,6 @@ msgstr "s'espera un valor"
msgid "expecting an assignment"
msgstr "s'espera una assignació"
msgid "failed to connect to Xen Store"
msgstr "no s'ha pogut connectar al magatzem Xen"
msgid "failed to connect to the hypervisor"
msgstr "no s'ha pogut connectar a l'hipervisor"
@@ -1080,9 +1068,6 @@ msgstr "no s'ha pogut obrir el fitxer"
msgid "failed to open the log file. check the log file path"
msgstr "no s'ha pogut obrir el fitxer de registre, comproveu el camí al fitxer"
msgid "failed to parse Xend domain information"
msgstr "no s'ha pogut analitzar la informació del domini Xend"
msgid "failed to parse configuration file"
msgstr "no s'ha pogut analitzar el fitxer de configuració"
@@ -1097,9 +1082,6 @@ msgstr "no s'ha pogut llegir el fitxer de configuració"
msgid "failed to read configuration file %s"
msgstr "no s'ha pogut llegir el fitxer de configuració %s"
msgid "failed to read from Xen Daemon"
msgstr "no s'ha pogut llegir el dimoni Xen"
msgid "failed to save content"
msgstr "no s'ha pogut desar el contingut"
@@ -1372,9 +1354,6 @@ msgstr "no s'ha trobat cap nom d'usuari de client"
msgid "no config file for %s"
msgstr "no hi ha fitxer de configuració per a %s"
msgid "no domain with matching id"
msgstr "no hi ha cap domini que coincideixi amb l'id"
#, c-format
msgid "no domain with matching id %d"
msgstr "no hi ha cap domini que coincideixi amb l'id %d"

View File

@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2016-09-15 06:18-0400\n"
"Last-Translator: Zdenek <chmelarz@gmail.com>\n"
"Language-Team: Czech (http://www.transifex.com/projects/p/fedora/language/"
@@ -649,10 +649,6 @@ msgstr "Doména %s se restartuje\n"
msgid "Domain %s is being shutdown\n"
msgstr "Doména %s je právě vypínána\n"
#, c-format
msgid "Domain %s isn't running."
msgstr "Doména %s neběží."
#, c-format
msgid "Domain %s marked as autostarted\n"
msgstr "Doména %s označena jako automaticky spouštěná\n"
@@ -1235,9 +1231,6 @@ msgstr "Neplatné jméno zařízení pevného disku: %s"
msgid "Invalid ip address prefix value"
msgstr "Neplatný prefix IP adresy"
msgid "Invalid parameter count"
msgstr "Neplatný počet parametrů"
#, c-format
msgid "Invalid port number: %s"
msgstr "Neplatné číslo portu: %s"
@@ -1857,9 +1850,6 @@ msgstr "Neznámý typ modelu '%s'"
msgid "Unknown protocol '%s'"
msgstr "Neznámý protokol '%s'"
msgid "Unknown scheduler"
msgstr "Neznámý plánovač"
#, c-format
msgid "Unknown source mode '%s'"
msgstr "Neznámý mód pro zdroj '%s'"
@@ -1994,10 +1984,6 @@ msgstr "[--%s] <řetězec>"
msgid "active"
msgstr "aktivní"
#, c-format
msgid "argument out of range: %d"
msgstr "argument je mimo rozsah: %d"
msgid "attach device from an XML file"
msgstr "připojit zařízení z XML souboru"
@@ -2201,10 +2187,6 @@ msgstr "nelze parsovat vnc port %s"
msgid "cannot read dir '%s'"
msgstr "nelze číst adresář '%s'"
#, c-format
msgid "cannot read file %s"
msgstr "nelze číst soubor %s"
#, c-format
msgid "cannot remove config %s"
msgstr "nelze odstranit konfiguraci %s"
@@ -2473,27 +2455,18 @@ msgstr "informace o doméně"
msgid "domain information in XML"
msgstr "informace o doméně v XML"
msgid "domain information incomplete, missing domid"
msgstr "neúplná informace o doméně, chybí domid"
msgid "domain information incomplete, missing kernel & bootloader"
msgstr "neúplná informace o doméně, chybí jádro a zavaděč"
msgid "domain information incomplete, missing name"
msgstr "neúplná informace o doméně, chybí jméno"
msgid "domain information incomplete, missing uuid"
msgstr "neúplná informace o doméně, chybí UUID"
msgid "domain information incomplete, vbd has no dev"
msgstr "neúplná informace o doméně, vbd nemá žádné zařízení"
msgid "domain information incomplete, vbd has no src"
msgstr "neúplná informace o doméně, vbd nemá žádný zdroj"
msgid "domain information incorrect domid not numeric"
msgstr "nesprávná informace o doméně, domid není číslo"
msgid "domain is already running"
msgstr "doména již běží"
@@ -2506,12 +2479,6 @@ msgstr "uuid nebo jméno domény"
msgid "domain name, id or uuid"
msgstr "jméno, id nebo uuid domény"
msgid "domain not active"
msgstr "doména není aktivní"
msgid "domain not running"
msgstr "doména neběží"
msgid "domain snapshot XML"
msgstr "XML definice obrazu domény"
@@ -2584,24 +2551,12 @@ msgstr "selhalo systémové volání Xenu %s"
msgid "failed to allocate buffer"
msgstr "nepodařilo se alokovat buffer"
msgid "failed to build sexpr"
msgstr "selhala serializace sexpr"
msgid "failed to close file"
msgstr "selhalo zavření souboru"
msgid "failed to connect to Xen Store"
msgstr "nepodařilo se připojit ke Xen Store"
msgid "failed to connect to the hypervisor"
msgstr "nepodařilo se připojit se k hypervizoru"
msgid "failed to connect to xend"
msgstr "nepodařilo se připojit ke xend"
msgid "failed to create a socket"
msgstr "nepodařilo se vytvořit socket"
#, c-format
msgid "failed to create directory '%s'"
msgstr "selhalo vytvoření adresáře '%s'"
@@ -2699,9 +2654,6 @@ msgstr "nepodařilo se otevřít soubor"
msgid "failed to open the log file. check the log file path"
msgstr "Nepodařilo se otevřít log soubor. Zkontrolujte cestu k log souboru"
msgid "failed to parse Xend domain information"
msgstr "nepodařilo se parsovat doménové informace o Xend"
msgid "failed to parse configuration file"
msgstr "chyba při parsování konfigurační souboru"
@@ -2722,9 +2674,6 @@ msgstr "nepodařilo se načíst konfigurační soubor"
msgid "failed to read configuration file %s"
msgstr "nepodařilo se načíst konfigurační soubor %s"
msgid "failed to read from Xen Daemon"
msgstr "nepodařilo se číst z démona Xen"
msgid "failed to save content"
msgstr "nepodařilo se uložit obsah"
@@ -3425,10 +3374,6 @@ msgstr "parametr=hodnota"
msgid "parser error"
msgstr "chyba parseru"
#, c-format
msgid "parsing uuid %s"
msgstr "parsuji uuid %s"
#, c-format
msgid "path '%s' is not absolute"
msgstr "cesta '%s' není absolutní"
@@ -3522,9 +3467,6 @@ msgstr "tajné UUID"
msgid "setting up HAL callbacks failed"
msgstr "setting up HAL callbacks selhalo"
msgid "sexpr2string failed"
msgstr "sexpr2string selhalo"
msgid "show version"
msgstr "ukázat verzi"
@@ -3630,9 +3572,6 @@ msgstr "registrováno příliš mnoho ovladačů"
msgid "too many drivers registered in %s"
msgstr "registrováno příliš mnoho ovladačů v %s"
msgid "topology syntax error"
msgstr "chybná syntaxe topologie"
msgid "tty console"
msgstr "tty konzole"
@@ -3649,10 +3588,6 @@ msgstr "udev_monitor_new_from_netlink vrátil NULL"
msgid "unable to close %s"
msgstr "nelze zavřít %s"
#, c-format
msgid "unable to connect to '%s:%s'"
msgstr "nepodařilo se připojit k '%s:%s'"
#, c-format
msgid "unable to create rundir %s: %s"
msgstr "nelze vytvořit rundir %s: %s"

View File

@@ -4,12 +4,13 @@
#
# Translators:
# Daniel <veillard@redhat.com>, 2011.
# Daniel Berrange <dan-zanata@berrange.com>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: libvirt\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"PO-Revision-Date: 2015-02-23 11:00-0500\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2018-04-24 05:01-0400\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Welsh (http://www.transifex.com/projects/p/fedora/language/"
"cy/)\n"
@@ -20,742 +21,3 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
"11) ? 2 : 3;\n"
"X-Generator: Zanata 3.9.6\n"
msgid ""
"\n"
" DESCRIPTION\n"
msgstr ""
"\n"
" DESCRIPTION\n"
msgid ""
"\n"
" OPTIONS\n"
msgstr ""
"\n"
" OPTIONS\n"
#, c-format
msgid ""
"\n"
"(Time: %.3f ms)\n"
"\n"
msgstr ""
"\n"
"(Time: %.3f ms)\n"
"\n"
msgid " NAME\n"
msgstr " NAME\n"
#, c-format
msgid "%s: %d: failed to allocate %d bytes"
msgstr "%s: %d: failed to allocate %d bytes"
msgid "(re)connect to hypervisor"
msgstr "(re)connect to hypervisor"
#, c-format
msgid "--%s <number>"
msgstr "--%s <number>"
#, c-format
msgid "--%s <string>"
msgstr "--%s <string>"
msgid "CPU Affinity:"
msgstr "CPU Affinity:"
msgid "CPU frequency:"
msgstr "CPU frequency:"
msgid "CPU model:"
msgstr "CPU model:"
msgid "CPU socket(s):"
msgstr "CPU socket(s):"
msgid "CPU time:"
msgstr "CPU time:"
msgid "CPU(s):"
msgstr "CPU(s):"
msgid "CPU:"
msgstr "CPU:"
#, c-format
msgid "Cannot extract running %s hypervisor version\n"
msgstr "Cannot extract running %s hypervisor version\n"
msgid "Change the current memory allocation in the guest domain."
msgstr "Change the current memory allocation in the guest domain."
msgid "Change the maximum memory allocation limit in the guest domain."
msgstr "Change the maximum memory allocation limit in the guest domain."
msgid ""
"Connect to local hypervisor. This is built-in command after shell start up."
msgstr ""
"Connect to local hypervisor. This is built-in command after shell start up."
msgid "Core dump a domain."
msgstr "Core dump a domain."
msgid "Core(s) per socket:"
msgstr "Core(s) per socket:"
msgid "Create a domain."
msgstr "Create a domain."
msgid "Define a domain."
msgstr "Define a domain."
msgid "Display the system version information."
msgstr "Display the system version information."
#, c-format
msgid "Domain %s created from %s\n"
msgstr "Domain %s created from %s\n"
#, c-format
msgid "Domain %s defined from %s\n"
msgstr "Domain %s defined from %s\n"
#, c-format
msgid "Domain %s destroyed\n"
msgstr "Domain %s destroyed\n"
#, c-format
msgid "Domain %s has been undefined\n"
msgstr "Domain %s has been undefined\n"
#, c-format
msgid "Domain %s is being rebooted\n"
msgstr "Domain %s is being rebooted\n"
#, c-format
msgid "Domain %s is being shutdown\n"
msgstr "Domain %s is being shutdown\n"
#, c-format
msgid "Domain %s resumed\n"
msgstr "Domain %s resumed\n"
#, c-format
msgid "Domain %s started\n"
msgstr "Domain %s started\n"
#, c-format
msgid "Domain %s suspended\n"
msgstr "Domain %s suspended\n"
msgid "Domain is already active"
msgstr "Domain is already active"
#, c-format
msgid "Domain restored from %s\n"
msgstr "Domain restored from %s\n"
#, c-format
msgid "Failed to core dump domain %s to %s"
msgstr "Failed to core dump domain %s to %s"
#, c-format
msgid "Failed to create domain from %s"
msgstr "Failed to create domain from %s"
#, c-format
msgid "Failed to define domain from %s"
msgstr "Failed to define domain from %s"
#, c-format
msgid "Failed to destroy domain %s"
msgstr "Failed to destroy domain %s"
msgid "Failed to list active domains"
msgstr "Failed to list active domains"
msgid "Failed to list inactive domains"
msgstr "Failed to list inactive domains"
#, c-format
msgid "Failed to reboot domain %s"
msgstr "Failed to reboot domain %s"
#, c-format
msgid "Failed to restore domain from %s"
msgstr "Failed to restore domain from %s"
#, c-format
msgid "Failed to resume domain %s"
msgstr "Failed to resume domain %s"
#, c-format
msgid "Failed to save domain %s to %s"
msgstr "Failed to save domain %s to %s"
#, c-format
msgid "Failed to shutdown domain %s"
msgstr "Failed to shutdown domain %s"
#, c-format
msgid "Failed to start domain %s"
msgstr "Failed to start domain %s"
#, c-format
msgid "Failed to suspend domain %s"
msgstr "Failed to suspend domain %s"
#, c-format
msgid "Failed to undefine domain %s"
msgstr "Failed to undefine domain %s"
msgid "GET operation failed"
msgstr "GET operation failed"
#, c-format
msgid "GET operation failed: %s"
msgstr "GET operation failed: %s"
msgid "Id"
msgstr "Id"
msgid "Id:"
msgstr "Id:"
msgid "Max memory:"
msgstr "Max memory:"
msgid "Memory size:"
msgstr "Memory size:"
msgid "NUMA cell(s):"
msgstr "NUMA cell(s):"
msgid "Name"
msgstr "Name"
msgid "Name:"
msgstr "Name:"
msgid "No error message provided"
msgstr "No error message provided"
msgid "OS Type:"
msgstr "OS Type:"
msgid "POST operation failed"
msgstr "POST operation failed"
#, c-format
msgid "POST operation failed: %s"
msgstr "POST operation failed: %s"
msgid "Pin domain VCPUs to host physical CPUs."
msgstr "Pin domain VCPUs to host physical CPUs."
msgid "Restore a domain."
msgstr "Restore a domain."
msgid "Resume a previously suspended domain."
msgstr "Resume a previously suspended domain."
msgid "Returns basic information about the domain virtual CPUs."
msgstr "Returns basic information about the domain virtual CPUs."
msgid "Returns basic information about the domain."
msgstr "Returns basic information about the domain."
msgid "Returns basic information about the node."
msgstr "Returns basic information about the node."
msgid "Returns list of domains."
msgstr "Returns list of domains."
msgid "Run a reboot command in the target domain."
msgstr "Run a reboot command in the target domain."
msgid "Run shutdown in the target domain."
msgstr "Run shutdown in the target domain."
#, c-format
msgid "Running hypervisor: %s %d.%d.%d\n"
msgstr "Running hypervisor: %s %d.%d.%d\n"
msgid "State"
msgstr "State"
msgid "State:"
msgstr "State:"
msgid "Suspend a running domain."
msgstr "Suspend a running domain."
msgid "Thread(s) per core:"
msgstr "Thread(s) per core:"
msgid ""
"Type: 'help' for help with commands\n"
" 'quit' to quit\n"
"\n"
msgstr ""
"Type: 'help' for help with commands\n"
" 'quit' to quit\n"
"\n"
msgid "UUID:"
msgstr "UUID:"
msgid "Used memory:"
msgstr "Used memory:"
#, c-format
msgid "Using API: %s %d.%d.%d\n"
msgstr "Using API: %s %d.%d.%d\n"
msgid "VCPU:"
msgstr "VCPU:"
#, c-format
msgid ""
"Welcome to %s, the virtualization interactive terminal.\n"
"\n"
msgstr ""
"Welcome to %s, the virtualization interactive terminal.\n"
"\n"
msgid "cannot parse vbd filename, missing driver name"
msgstr "cannot parse vbd filename, missing driver name"
msgid "cannot parse vbd filename, missing driver type"
msgstr "cannot parse vbd filename, missing driver type"
msgid "change maximum memory limit"
msgstr "change maximum memory limit"
msgid "change memory allocation"
msgstr "change memory allocation"
msgid "change number of virtual CPUs"
msgstr "change number of virtual CPUs"
#, c-format
msgid "command '%s' doesn't support option --%s"
msgstr "command '%s' doesn't support option --%s"
#, c-format
msgid "command '%s' requires --%s option"
msgstr "command '%s' requires --%s option"
#, c-format
msgid "command '%s' requires <%s> option"
msgstr "command '%s' requires <%s> option"
msgid "configuration file syntax error"
msgstr "configuration file syntax error"
#, c-format
msgid "configuration file syntax error: %s"
msgstr "configuration file syntax error: %s"
msgid "convert a domain id or UUID to domain name"
msgstr "convert a domain id or UUID to domain name"
msgid "convert a domain name or UUID to domain id"
msgstr "convert a domain name or UUID to domain id"
msgid "convert a domain name or id to domain UUID"
msgstr "convert a domain name or id to domain UUID"
msgid "could not connect to Xen Store"
msgstr "could not connect to Xen Store"
#, c-format
msgid "could not connect to Xen Store %s"
msgstr "could not connect to Xen Store %s"
msgid "could not use Xen hypervisor entry"
msgstr "could not use Xen hypervisor entry"
#, c-format
msgid "could not use Xen hypervisor entry %s"
msgstr "could not use Xen hypervisor entry %s"
msgid "crashed"
msgstr "crashed"
msgid "create a domain from an XML file"
msgstr "create a domain from an XML file"
msgid "define (but don't start) a domain from an XML file"
msgstr "define (but don't start) a domain from an XML file"
#, c-format
msgid "domain %s exists already"
msgstr "domain %s exists already"
msgid "domain id or name"
msgstr "domain id or name"
msgid "domain id or uuid"
msgstr "domain id or uuid"
msgid "domain information"
msgstr "domain information"
msgid "domain information in XML"
msgstr "domain information in XML"
msgid "domain information incomplete, missing domid"
msgstr "domain information incomplete, missing domid"
msgid "domain information incomplete, missing name"
msgstr "domain information incomplete, missing name"
msgid "domain information incomplete, missing uuid"
msgstr "domain information incomplete, missing uuid"
msgid "domain information incomplete, vbd has no dev"
msgstr "domain information incomplete, vbd has no dev"
msgid "domain information incomplete, vbd has no src"
msgstr "domain information incomplete, vbd has no src"
msgid "domain information incorrect domid not numeric"
msgstr "domain information incorrect domid not numeric"
msgid "domain name or uuid"
msgstr "domain name or uuid"
msgid "domain name, id or uuid"
msgstr "domain name, id or uuid"
msgid "domain state"
msgstr "domain state"
msgid "dump the core of a domain to a file for analysis"
msgstr "dump the core of a domain to a file for analysis"
msgid "error"
msgstr "error"
msgid "error: "
msgstr "error: "
#, c-format
msgid "expected syntax: --%s <%s>"
msgstr "expected syntax: --%s <%s>"
msgid "expecting a name"
msgstr "expecting a name"
msgid "expecting a separator"
msgstr "expecting a separator"
msgid "expecting a separator in list"
msgstr "expecting a separator in list"
msgid "expecting a value"
msgstr "expecting a value"
msgid "expecting an assignment"
msgstr "expecting an assignment"
msgid "failed to connect to Xen Store"
msgstr "failed to connect to Xen Store"
msgid "failed to connect to the hypervisor"
msgstr "failed to connect to the hypervisor"
#, c-format
msgid "failed to get domain '%s'"
msgstr "failed to get domain '%s'"
msgid "failed to get domain UUID"
msgstr "failed to get domain UUID"
msgid "failed to get hypervisor type"
msgstr "failed to get hypervisor type"
msgid "failed to get node information"
msgstr "failed to get node information"
msgid "failed to get the hypervisor version"
msgstr "failed to get the hypervisor version"
msgid "failed to get the library version"
msgstr "failed to get the library version"
#, c-format
msgid "failed to open %s for reading"
msgstr "failed to open %s for reading"
msgid "failed to open configuration file for reading"
msgstr "failed to open configuration file for reading"
msgid "failed to open file"
msgstr "failed to open file"
msgid "failed to parse Xend domain information"
msgstr "failed to parse Xend domain information"
msgid "failed to parse configuration file"
msgstr "failed to parse configuration file"
#, c-format
msgid "failed to parse configuration file %s"
msgstr "failed to parse configuration file %s"
msgid "failed to read configuration file"
msgstr "failed to read configuration file"
#, c-format
msgid "failed to read configuration file %s"
msgstr "failed to read configuration file %s"
msgid "failed to read from Xen Daemon"
msgstr "failed to read from Xen Daemon"
msgid "failed to save content"
msgstr "failed to save content"
msgid "failed to serialize S-Expr"
msgstr "failed to serialize S-Expr"
#, c-format
msgid "failed to serialize S-Expr: %s"
msgstr "failed to serialize S-Expr: %s"
msgid "failed to write configuration file"
msgstr "failed to write configuration file"
#, c-format
msgid "failed to write configuration file: %s"
msgstr "failed to write configuration file: %s"
msgid "getting time of day"
msgstr "getting time of day"
#, c-format
msgid "got unknown HTTP error code %d"
msgstr "got unknown HTTP error code %d"
msgid "gracefully shutdown a domain"
msgstr "gracefully shutdown a domain"
msgid "hypervisor connection URI"
msgstr "hypervisor connection URI"
msgid "in shutdown"
msgstr "in shutdown"
msgid "internal error"
msgstr "internal error"
msgid "invalid connection pointer in"
msgstr "invalid connection pointer in"
#, c-format
msgid "invalid connection pointer in %s"
msgstr "invalid connection pointer in %s"
msgid "invalid domain pointer in"
msgstr "invalid domain pointer in"
#, c-format
msgid "invalid domain pointer in %s"
msgstr "invalid domain pointer in %s"
#, c-format
msgid "library call %s failed, possibly not supported"
msgstr "library call %s failed, possibly not supported"
msgid "library call failed, possibly not supported"
msgstr "library call failed, possibly not supported"
msgid "list domains"
msgstr "list domains"
msgid "list inactive & active domains"
msgstr "list inactive & active domains"
msgid "list inactive domains"
msgstr "list inactive domains"
msgid "missing \""
msgstr "missing \""
msgid "missing devices information"
msgstr "missing devices information"
#, c-format
msgid "missing devices information for %s"
msgstr "missing devices information for %s"
msgid "missing kernel information"
msgstr "missing kernel information"
msgid "missing operating system information"
msgstr "missing operating system information"
#, c-format
msgid "missing operating system information for %s"
msgstr "missing operating system information for %s"
msgid "missing root device information"
msgstr "missing root device information"
#, c-format
msgid "missing root device information in %s"
msgstr "missing root device information in %s"
msgid "missing source information for device"
msgstr "missing source information for device"
#, c-format
msgid "missing source information for device %s"
msgstr "missing source information for device %s"
msgid "missing target information for device"
msgstr "missing target information for device"
#, c-format
msgid "missing target information for device %s"
msgstr "missing target information for device %s"
msgid "name of the inactive domain"
msgstr "name of the inactive domain"
msgid "no state"
msgstr "no state"
msgid "no valid connection"
msgstr "no valid connection"
msgid "node information"
msgstr "node information"
msgid "number"
msgstr "number"
msgid "number of virtual CPUs"
msgstr "number of virtual CPUs"
msgid "offline"
msgstr "offline"
msgid "operation failed"
msgstr "operation failed"
#, c-format
msgid "operation failed: %s"
msgstr "operation failed: %s"
msgid "operation forbidden for read only access"
msgstr "operation forbidden for read only access"
msgid "out of memory"
msgstr "out of memory"
msgid "parser error"
msgstr "parser error"
msgid "paused"
msgstr "paused"
msgid "print help"
msgstr "print help"
msgid "quit this interactive terminal"
msgstr "quit this interactive terminal"
msgid "read-only connection"
msgstr "read-only connection"
msgid "reboot a domain"
msgstr "reboot a domain"
msgid "restore a domain from a saved state in a file"
msgstr "restore a domain from a saved state in a file"
msgid "resume a domain"
msgstr "resume a domain"
msgid "running"
msgstr "running"
msgid "save a domain state to a file"
msgstr "save a domain state to a file"
msgid "show version"
msgstr "show version"
msgid "shut off"
msgstr "shut off"
msgid "start a (previously defined) inactive domain"
msgstr "start a (previously defined) inactive domain"
msgid "string"
msgstr "string"
msgid "suspend a domain"
msgstr "suspend a domain"
msgid "the state to restore"
msgstr "the state to restore"
msgid "this domain exists already"
msgstr "this domain exists already"
msgid "too many drivers registered"
msgstr "too many drivers registered"
#, c-format
msgid "too many drivers registered in %s"
msgstr "too many drivers registered in %s"
#, c-format
msgid "unexpected data '%s'"
msgstr "unexpected data '%s'"
msgid "unknown OS type"
msgstr "unknown OS type"
#, c-format
msgid "unknown OS type %s"
msgstr "unknown OS type %s"
#, c-format
msgid "unknown command: '%s'"
msgstr "unknown command: '%s'"
msgid "unknown host"
msgstr "unknown host"
#, c-format
msgid "unknown host %s"
msgstr "unknown host %s"
#, c-format
msgid "unsupported option '-%c'. See --help."
msgstr "unsupported option '-%c'. See --help."
msgid "unterminated number"
msgstr "unterminated number"
msgid "unterminated string"
msgstr "unterminated string"
msgid "vcpu number"
msgstr "vcpu number"
msgid "warning"
msgstr "warning"
msgid "where to dump the core"
msgstr "where to dump the core"
msgid "where to save the data"
msgstr "where to save the data"

View File

@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2015-02-26 08:52-0500\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Danish (http://www.transifex.com/projects/p/fedora/language/"
@@ -547,27 +547,18 @@ msgstr "domæneinformation"
msgid "domain information in XML"
msgstr "domæneinformation i XML"
msgid "domain information incomplete, missing domid"
msgstr "domæneinformation ukomplet, mangler domid"
msgid "domain information incomplete, missing kernel & bootloader"
msgstr "domæneinformation ukomplet, mangler kerne & opstartsindlæser"
msgid "domain information incomplete, missing name"
msgstr "domæneinformation ukomplet, mangler navn"
msgid "domain information incomplete, missing uuid"
msgstr "domæneinformation ukomplet, mangler uuid"
msgid "domain information incomplete, vbd has no dev"
msgstr "domæneinformation ukomplet, vbd har ingen dev"
msgid "domain information incomplete, vbd has no src"
msgstr "domæneinformation ukomplet, vbd har ingen src"
msgid "domain information incorrect domid not numeric"
msgstr "domæneinformation fejl, domid er ikke numerisk"
msgid "domain name or uuid"
msgstr "domænenavn eller uuid"
@@ -605,9 +596,6 @@ msgstr "forventer en værdi"
msgid "expecting an assignment"
msgstr "forventer en tildeling"
msgid "failed to connect to Xen Store"
msgstr "kunne ikke forbinde til Xen Store"
msgid "failed to connect to the hypervisor"
msgstr "kunne ikke forbinde til hypervisor"
@@ -654,9 +642,6 @@ msgstr "kunne ikke åbne konfigurationsfilen for læsning"
msgid "failed to open file"
msgstr "kunne ikke åbne fil"
msgid "failed to parse Xend domain information"
msgstr "kunne ikke analysere domæneinformation for Xend"
msgid "failed to parse configuration file"
msgstr "kunne ikke analysere konfigurationsfilen"
@@ -671,9 +656,6 @@ msgstr "kunne ikke læse konfigurationsfilen"
msgid "failed to read configuration file %s"
msgstr "kunne ikke læse konfigurationsfilen %s"
msgid "failed to read from Xen Daemon"
msgstr "kunne ikke læse fra Xen-dæmonen"
msgid "failed to save content"
msgstr "kunne ikke gemme indhold"

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: German (Switzerland)\n"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2015-02-27 04:41-0500\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Greek (http://www.transifex.com/projects/p/fedora/language/"

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Esperanto\n"

File diff suppressed because it is too large Load Diff

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"PO-Revision-Date: 2015-02-26 09:31-0500\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2018-04-24 06:15-0400\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Estonian (http://www.transifex.com/projects/p/fedora/language/"
"et/)\n"
@@ -19,742 +19,3 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.9.6\n"
msgid ""
"\n"
" DESCRIPTION\n"
msgstr ""
"\n"
" DESCRIPTION\n"
msgid ""
"\n"
" OPTIONS\n"
msgstr ""
"\n"
" OPTIONS\n"
#, c-format
msgid ""
"\n"
"(Time: %.3f ms)\n"
"\n"
msgstr ""
"\n"
"(Time: %.3f ms)\n"
"\n"
msgid " NAME\n"
msgstr " NAME\n"
#, c-format
msgid "%s: %d: failed to allocate %d bytes"
msgstr "%s: %d: failed to allocate %d bytes"
msgid "(re)connect to hypervisor"
msgstr "(re)connect to hypervisor"
#, c-format
msgid "--%s <number>"
msgstr "--%s <number>"
#, c-format
msgid "--%s <string>"
msgstr "--%s <string>"
msgid "CPU Affinity:"
msgstr "CPU Affinity:"
msgid "CPU frequency:"
msgstr "CPU frequency:"
msgid "CPU model:"
msgstr "CPU model:"
msgid "CPU socket(s):"
msgstr "CPU socket(s):"
msgid "CPU time:"
msgstr "CPU time:"
msgid "CPU(s):"
msgstr "CPU(s):"
msgid "CPU:"
msgstr "CPU:"
#, c-format
msgid "Cannot extract running %s hypervisor version\n"
msgstr "Cannot extract running %s hypervisor version\n"
msgid "Change the current memory allocation in the guest domain."
msgstr "Change the current memory allocation in the guest domain."
msgid "Change the maximum memory allocation limit in the guest domain."
msgstr "Change the maximum memory allocation limit in the guest domain."
msgid ""
"Connect to local hypervisor. This is built-in command after shell start up."
msgstr ""
"Connect to local hypervisor. This is built-in command after shell start up."
msgid "Core dump a domain."
msgstr "Core dump a domain."
msgid "Core(s) per socket:"
msgstr "Core(s) per socket:"
msgid "Create a domain."
msgstr "Create a domain."
msgid "Define a domain."
msgstr "Define a domain."
msgid "Display the system version information."
msgstr "Display the system version information."
#, c-format
msgid "Domain %s created from %s\n"
msgstr "Domain %s created from %s\n"
#, c-format
msgid "Domain %s defined from %s\n"
msgstr "Domain %s defined from %s\n"
#, c-format
msgid "Domain %s destroyed\n"
msgstr "Domain %s destroyed\n"
#, c-format
msgid "Domain %s has been undefined\n"
msgstr "Domain %s has been undefined\n"
#, c-format
msgid "Domain %s is being rebooted\n"
msgstr "Domain %s is being rebooted\n"
#, c-format
msgid "Domain %s is being shutdown\n"
msgstr "Domain %s is being shutdown\n"
#, c-format
msgid "Domain %s resumed\n"
msgstr "Domain %s resumed\n"
#, c-format
msgid "Domain %s started\n"
msgstr "Domain %s started\n"
#, c-format
msgid "Domain %s suspended\n"
msgstr "Domain %s suspended\n"
msgid "Domain is already active"
msgstr "Domain is already active"
#, c-format
msgid "Domain restored from %s\n"
msgstr "Domain restored from %s\n"
#, c-format
msgid "Failed to core dump domain %s to %s"
msgstr "Failed to core dump domain %s to %s"
#, c-format
msgid "Failed to create domain from %s"
msgstr "Failed to create domain from %s"
#, c-format
msgid "Failed to define domain from %s"
msgstr "Failed to define domain from %s"
#, c-format
msgid "Failed to destroy domain %s"
msgstr "Failed to destroy domain %s"
msgid "Failed to list active domains"
msgstr "Failed to list active domains"
msgid "Failed to list inactive domains"
msgstr "Failed to list inactive domains"
#, c-format
msgid "Failed to reboot domain %s"
msgstr "Failed to reboot domain %s"
#, c-format
msgid "Failed to restore domain from %s"
msgstr "Failed to restore domain from %s"
#, c-format
msgid "Failed to resume domain %s"
msgstr "Failed to resume domain %s"
#, c-format
msgid "Failed to save domain %s to %s"
msgstr "Failed to save domain %s to %s"
#, c-format
msgid "Failed to shutdown domain %s"
msgstr "Failed to shutdown domain %s"
#, c-format
msgid "Failed to start domain %s"
msgstr "Failed to start domain %s"
#, c-format
msgid "Failed to suspend domain %s"
msgstr "Failed to suspend domain %s"
#, c-format
msgid "Failed to undefine domain %s"
msgstr "Failed to undefine domain %s"
msgid "GET operation failed"
msgstr "GET operation failed"
#, c-format
msgid "GET operation failed: %s"
msgstr "GET operation failed: %s"
msgid "Id"
msgstr "Id"
msgid "Id:"
msgstr "Id:"
msgid "Max memory:"
msgstr "Max memory:"
msgid "Memory size:"
msgstr "Memory size:"
msgid "NUMA cell(s):"
msgstr "NUMA cell(s):"
msgid "Name"
msgstr "Name"
msgid "Name:"
msgstr "Name:"
msgid "No error message provided"
msgstr "No error message provided"
msgid "OS Type:"
msgstr "OS Type:"
msgid "POST operation failed"
msgstr "POST operation failed"
#, c-format
msgid "POST operation failed: %s"
msgstr "POST operation failed: %s"
msgid "Pin domain VCPUs to host physical CPUs."
msgstr "Pin domain VCPUs to host physical CPUs."
msgid "Restore a domain."
msgstr "Restore a domain."
msgid "Resume a previously suspended domain."
msgstr "Resume a previously suspended domain."
msgid "Returns basic information about the domain virtual CPUs."
msgstr "Returns basic information about the domain virtual CPUs."
msgid "Returns basic information about the domain."
msgstr "Returns basic information about the domain."
msgid "Returns basic information about the node."
msgstr "Returns basic information about the node."
msgid "Returns list of domains."
msgstr "Returns list of domains."
msgid "Run a reboot command in the target domain."
msgstr "Run a reboot command in the target domain."
msgid "Run shutdown in the target domain."
msgstr "Run shutdown in the target domain."
#, c-format
msgid "Running hypervisor: %s %d.%d.%d\n"
msgstr "Running hypervisor: %s %d.%d.%d\n"
msgid "State"
msgstr "State"
msgid "State:"
msgstr "State:"
msgid "Suspend a running domain."
msgstr "Suspend a running domain."
msgid "Thread(s) per core:"
msgstr "Thread(s) per core:"
msgid ""
"Type: 'help' for help with commands\n"
" 'quit' to quit\n"
"\n"
msgstr ""
"Type: 'help' for help with commands\n"
" 'quit' to quit\n"
"\n"
msgid "UUID:"
msgstr "UUID:"
msgid "Used memory:"
msgstr "Used memory:"
#, c-format
msgid "Using API: %s %d.%d.%d\n"
msgstr "Using API: %s %d.%d.%d\n"
msgid "VCPU:"
msgstr "VCPU:"
#, c-format
msgid ""
"Welcome to %s, the virtualization interactive terminal.\n"
"\n"
msgstr ""
"Welcome to %s, the virtualization interactive terminal.\n"
"\n"
msgid "cannot parse vbd filename, missing driver name"
msgstr "cannot parse vbd filename, missing driver name"
msgid "cannot parse vbd filename, missing driver type"
msgstr "cannot parse vbd filename, missing driver type"
msgid "change maximum memory limit"
msgstr "change maximum memory limit"
msgid "change memory allocation"
msgstr "change memory allocation"
msgid "change number of virtual CPUs"
msgstr "change number of virtual CPUs"
#, c-format
msgid "command '%s' doesn't support option --%s"
msgstr "command '%s' doesn't support option --%s"
#, c-format
msgid "command '%s' requires --%s option"
msgstr "command '%s' requires --%s option"
#, c-format
msgid "command '%s' requires <%s> option"
msgstr "command '%s' requires <%s> option"
msgid "configuration file syntax error"
msgstr "configuration file syntax error"
#, c-format
msgid "configuration file syntax error: %s"
msgstr "configuration file syntax error: %s"
msgid "convert a domain id or UUID to domain name"
msgstr "convert a domain id or UUID to domain name"
msgid "convert a domain name or UUID to domain id"
msgstr "convert a domain name or UUID to domain id"
msgid "convert a domain name or id to domain UUID"
msgstr "convert a domain name or id to domain UUID"
msgid "could not connect to Xen Store"
msgstr "could not connect to Xen Store"
#, c-format
msgid "could not connect to Xen Store %s"
msgstr "could not connect to Xen Store %s"
msgid "could not use Xen hypervisor entry"
msgstr "could not use Xen hypervisor entry"
#, c-format
msgid "could not use Xen hypervisor entry %s"
msgstr "could not use Xen hypervisor entry %s"
msgid "crashed"
msgstr "crashed"
msgid "create a domain from an XML file"
msgstr "create a domain from an XML file"
msgid "define (but don't start) a domain from an XML file"
msgstr "define (but don't start) a domain from an XML file"
#, c-format
msgid "domain %s exists already"
msgstr "domain %s exists already"
msgid "domain id or name"
msgstr "domain id or name"
msgid "domain id or uuid"
msgstr "domain id or uuid"
msgid "domain information"
msgstr "domain information"
msgid "domain information in XML"
msgstr "domain information in XML"
msgid "domain information incomplete, missing domid"
msgstr "domain information incomplete, missing domid"
msgid "domain information incomplete, missing name"
msgstr "domain information incomplete, missing name"
msgid "domain information incomplete, missing uuid"
msgstr "domain information incomplete, missing uuid"
msgid "domain information incomplete, vbd has no dev"
msgstr "domain information incomplete, vbd has no dev"
msgid "domain information incomplete, vbd has no src"
msgstr "domain information incomplete, vbd has no src"
msgid "domain information incorrect domid not numeric"
msgstr "domain information incorrect domid not numeric"
msgid "domain name or uuid"
msgstr "domain name or uuid"
msgid "domain name, id or uuid"
msgstr "domain name, id or uuid"
msgid "domain state"
msgstr "domain state"
msgid "dump the core of a domain to a file for analysis"
msgstr "dump the core of a domain to a file for analysis"
msgid "error"
msgstr "error"
msgid "error: "
msgstr "error: "
#, c-format
msgid "expected syntax: --%s <%s>"
msgstr "expected syntax: --%s <%s>"
msgid "expecting a name"
msgstr "expecting a name"
msgid "expecting a separator"
msgstr "expecting a separator"
msgid "expecting a separator in list"
msgstr "expecting a separator in list"
msgid "expecting a value"
msgstr "expecting a value"
msgid "expecting an assignment"
msgstr "expecting an assignment"
msgid "failed to connect to Xen Store"
msgstr "failed to connect to Xen Store"
msgid "failed to connect to the hypervisor"
msgstr "failed to connect to the hypervisor"
#, c-format
msgid "failed to get domain '%s'"
msgstr "failed to get domain '%s'"
msgid "failed to get domain UUID"
msgstr "failed to get domain UUID"
msgid "failed to get hypervisor type"
msgstr "failed to get hypervisor type"
msgid "failed to get node information"
msgstr "failed to get node information"
msgid "failed to get the hypervisor version"
msgstr "failed to get the hypervisor version"
msgid "failed to get the library version"
msgstr "failed to get the library version"
#, c-format
msgid "failed to open %s for reading"
msgstr "failed to open %s for reading"
msgid "failed to open configuration file for reading"
msgstr "failed to open configuration file for reading"
msgid "failed to open file"
msgstr "failed to open file"
msgid "failed to parse Xend domain information"
msgstr "failed to parse Xend domain information"
msgid "failed to parse configuration file"
msgstr "failed to parse configuration file"
#, c-format
msgid "failed to parse configuration file %s"
msgstr "failed to parse configuration file %s"
msgid "failed to read configuration file"
msgstr "failed to read configuration file"
#, c-format
msgid "failed to read configuration file %s"
msgstr "failed to read configuration file %s"
msgid "failed to read from Xen Daemon"
msgstr "failed to read from Xen Daemon"
msgid "failed to save content"
msgstr "failed to save content"
msgid "failed to serialize S-Expr"
msgstr "failed to serialize S-Expr"
#, c-format
msgid "failed to serialize S-Expr: %s"
msgstr "failed to serialize S-Expr: %s"
msgid "failed to write configuration file"
msgstr "failed to write configuration file"
#, c-format
msgid "failed to write configuration file: %s"
msgstr "failed to write configuration file: %s"
msgid "getting time of day"
msgstr "getting time of day"
#, c-format
msgid "got unknown HTTP error code %d"
msgstr "got unknown HTTP error code %d"
msgid "gracefully shutdown a domain"
msgstr "gracefully shutdown a domain"
msgid "hypervisor connection URI"
msgstr "hypervisor connection URI"
msgid "in shutdown"
msgstr "in shutdown"
msgid "internal error"
msgstr "internal error"
msgid "invalid connection pointer in"
msgstr "invalid connection pointer in"
#, c-format
msgid "invalid connection pointer in %s"
msgstr "invalid connection pointer in %s"
msgid "invalid domain pointer in"
msgstr "invalid domain pointer in"
#, c-format
msgid "invalid domain pointer in %s"
msgstr "invalid domain pointer in %s"
#, c-format
msgid "library call %s failed, possibly not supported"
msgstr "library call %s failed, possibly not supported"
msgid "library call failed, possibly not supported"
msgstr "library call failed, possibly not supported"
msgid "list domains"
msgstr "list domains"
msgid "list inactive & active domains"
msgstr "list inactive & active domains"
msgid "list inactive domains"
msgstr "list inactive domains"
msgid "missing \""
msgstr "missing \""
msgid "missing devices information"
msgstr "missing devices information"
#, c-format
msgid "missing devices information for %s"
msgstr "missing devices information for %s"
msgid "missing kernel information"
msgstr "missing kernel information"
msgid "missing operating system information"
msgstr "missing operating system information"
#, c-format
msgid "missing operating system information for %s"
msgstr "missing operating system information for %s"
msgid "missing root device information"
msgstr "missing root device information"
#, c-format
msgid "missing root device information in %s"
msgstr "missing root device information in %s"
msgid "missing source information for device"
msgstr "missing source information for device"
#, c-format
msgid "missing source information for device %s"
msgstr "missing source information for device %s"
msgid "missing target information for device"
msgstr "missing target information for device"
#, c-format
msgid "missing target information for device %s"
msgstr "missing target information for device %s"
msgid "name of the inactive domain"
msgstr "name of the inactive domain"
msgid "no state"
msgstr "no state"
msgid "no valid connection"
msgstr "no valid connection"
msgid "node information"
msgstr "node information"
msgid "number"
msgstr "number"
msgid "number of virtual CPUs"
msgstr "number of virtual CPUs"
msgid "offline"
msgstr "offline"
msgid "operation failed"
msgstr "operation failed"
#, c-format
msgid "operation failed: %s"
msgstr "operation failed: %s"
msgid "operation forbidden for read only access"
msgstr "operation forbidden for read only access"
msgid "out of memory"
msgstr "out of memory"
msgid "parser error"
msgstr "parser error"
msgid "paused"
msgstr "paused"
msgid "print help"
msgstr "print help"
msgid "quit this interactive terminal"
msgstr "quit this interactive terminal"
msgid "read-only connection"
msgstr "read-only connection"
msgid "reboot a domain"
msgstr "reboot a domain"
msgid "restore a domain from a saved state in a file"
msgstr "restore a domain from a saved state in a file"
msgid "resume a domain"
msgstr "resume a domain"
msgid "running"
msgstr "running"
msgid "save a domain state to a file"
msgstr "save a domain state to a file"
msgid "show version"
msgstr "show version"
msgid "shut off"
msgstr "shut off"
msgid "start a (previously defined) inactive domain"
msgstr "start a (previously defined) inactive domain"
msgid "string"
msgstr "string"
msgid "suspend a domain"
msgstr "suspend a domain"
msgid "the state to restore"
msgstr "the state to restore"
msgid "this domain exists already"
msgstr "this domain exists already"
msgid "too many drivers registered"
msgstr "too many drivers registered"
#, c-format
msgid "too many drivers registered in %s"
msgstr "too many drivers registered in %s"
#, c-format
msgid "unexpected data '%s'"
msgstr "unexpected data '%s'"
msgid "unknown OS type"
msgstr "unknown OS type"
#, c-format
msgid "unknown OS type %s"
msgstr "unknown OS type %s"
#, c-format
msgid "unknown command: '%s'"
msgstr "unknown command: '%s'"
msgid "unknown host"
msgstr "unknown host"
#, c-format
msgid "unknown host %s"
msgstr "unknown host %s"
#, c-format
msgid "unsupported option '-%c'. See --help."
msgstr "unsupported option '-%c'. See --help."
msgid "unterminated number"
msgstr "unterminated number"
msgid "unterminated string"
msgstr "unterminated string"
msgid "vcpu number"
msgstr "vcpu number"
msgid "warning"
msgstr "warning"
msgid "where to dump the core"
msgstr "where to dump the core"
msgid "where to save the data"
msgstr "where to save the data"

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"PO-Revision-Date: 2015-02-26 06:52-0500\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2018-04-24 06:19-0400\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/fedora/"
"language/eu_ES/)\n"
@@ -19,742 +19,3 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.9.6\n"
msgid ""
"\n"
" DESCRIPTION\n"
msgstr ""
"\n"
" DESCRIPTION\n"
msgid ""
"\n"
" OPTIONS\n"
msgstr ""
"\n"
" OPTIONS\n"
#, c-format
msgid ""
"\n"
"(Time: %.3f ms)\n"
"\n"
msgstr ""
"\n"
"(Time: %.3f ms)\n"
"\n"
msgid " NAME\n"
msgstr " NAME\n"
#, c-format
msgid "%s: %d: failed to allocate %d bytes"
msgstr "%s: %d: failed to allocate %d bytes"
msgid "(re)connect to hypervisor"
msgstr "(re)connect to hypervisor"
#, c-format
msgid "--%s <number>"
msgstr "--%s <number>"
#, c-format
msgid "--%s <string>"
msgstr "--%s <string>"
msgid "CPU Affinity:"
msgstr "CPU Affinity:"
msgid "CPU frequency:"
msgstr "CPU frequency:"
msgid "CPU model:"
msgstr "CPU model:"
msgid "CPU socket(s):"
msgstr "CPU socket(s):"
msgid "CPU time:"
msgstr "CPU time:"
msgid "CPU(s):"
msgstr "CPU(s):"
msgid "CPU:"
msgstr "CPU:"
#, c-format
msgid "Cannot extract running %s hypervisor version\n"
msgstr "Cannot extract running %s hypervisor version\n"
msgid "Change the current memory allocation in the guest domain."
msgstr "Change the current memory allocation in the guest domain."
msgid "Change the maximum memory allocation limit in the guest domain."
msgstr "Change the maximum memory allocation limit in the guest domain."
msgid ""
"Connect to local hypervisor. This is built-in command after shell start up."
msgstr ""
"Connect to local hypervisor. This is built-in command after shell start up."
msgid "Core dump a domain."
msgstr "Core dump a domain."
msgid "Core(s) per socket:"
msgstr "Core(s) per socket:"
msgid "Create a domain."
msgstr "Create a domain."
msgid "Define a domain."
msgstr "Define a domain."
msgid "Display the system version information."
msgstr "Display the system version information."
#, c-format
msgid "Domain %s created from %s\n"
msgstr "Domain %s created from %s\n"
#, c-format
msgid "Domain %s defined from %s\n"
msgstr "Domain %s defined from %s\n"
#, c-format
msgid "Domain %s destroyed\n"
msgstr "Domain %s destroyed\n"
#, c-format
msgid "Domain %s has been undefined\n"
msgstr "Domain %s has been undefined\n"
#, c-format
msgid "Domain %s is being rebooted\n"
msgstr "Domain %s is being rebooted\n"
#, c-format
msgid "Domain %s is being shutdown\n"
msgstr "Domain %s is being shutdown\n"
#, c-format
msgid "Domain %s resumed\n"
msgstr "Domain %s resumed\n"
#, c-format
msgid "Domain %s started\n"
msgstr "Domain %s started\n"
#, c-format
msgid "Domain %s suspended\n"
msgstr "Domain %s suspended\n"
msgid "Domain is already active"
msgstr "Domain is already active"
#, c-format
msgid "Domain restored from %s\n"
msgstr "Domain restored from %s\n"
#, c-format
msgid "Failed to core dump domain %s to %s"
msgstr "Failed to core dump domain %s to %s"
#, c-format
msgid "Failed to create domain from %s"
msgstr "Failed to create domain from %s"
#, c-format
msgid "Failed to define domain from %s"
msgstr "Failed to define domain from %s"
#, c-format
msgid "Failed to destroy domain %s"
msgstr "Failed to destroy domain %s"
msgid "Failed to list active domains"
msgstr "Failed to list active domains"
msgid "Failed to list inactive domains"
msgstr "Failed to list inactive domains"
#, c-format
msgid "Failed to reboot domain %s"
msgstr "Failed to reboot domain %s"
#, c-format
msgid "Failed to restore domain from %s"
msgstr "Failed to restore domain from %s"
#, c-format
msgid "Failed to resume domain %s"
msgstr "Failed to resume domain %s"
#, c-format
msgid "Failed to save domain %s to %s"
msgstr "Failed to save domain %s to %s"
#, c-format
msgid "Failed to shutdown domain %s"
msgstr "Failed to shutdown domain %s"
#, c-format
msgid "Failed to start domain %s"
msgstr "Failed to start domain %s"
#, c-format
msgid "Failed to suspend domain %s"
msgstr "Failed to suspend domain %s"
#, c-format
msgid "Failed to undefine domain %s"
msgstr "Failed to undefine domain %s"
msgid "GET operation failed"
msgstr "GET operation failed"
#, c-format
msgid "GET operation failed: %s"
msgstr "GET operation failed: %s"
msgid "Id"
msgstr "Id"
msgid "Id:"
msgstr "Id:"
msgid "Max memory:"
msgstr "Max memory:"
msgid "Memory size:"
msgstr "Memory size:"
msgid "NUMA cell(s):"
msgstr "NUMA cell(s):"
msgid "Name"
msgstr "Name"
msgid "Name:"
msgstr "Name:"
msgid "No error message provided"
msgstr "No error message provided"
msgid "OS Type:"
msgstr "OS Type:"
msgid "POST operation failed"
msgstr "POST operation failed"
#, c-format
msgid "POST operation failed: %s"
msgstr "POST operation failed: %s"
msgid "Pin domain VCPUs to host physical CPUs."
msgstr "Pin domain VCPUs to host physical CPUs."
msgid "Restore a domain."
msgstr "Restore a domain."
msgid "Resume a previously suspended domain."
msgstr "Resume a previously suspended domain."
msgid "Returns basic information about the domain virtual CPUs."
msgstr "Returns basic information about the domain virtual CPUs."
msgid "Returns basic information about the domain."
msgstr "Returns basic information about the domain."
msgid "Returns basic information about the node."
msgstr "Returns basic information about the node."
msgid "Returns list of domains."
msgstr "Returns list of domains."
msgid "Run a reboot command in the target domain."
msgstr "Run a reboot command in the target domain."
msgid "Run shutdown in the target domain."
msgstr "Run shutdown in the target domain."
#, c-format
msgid "Running hypervisor: %s %d.%d.%d\n"
msgstr "Running hypervisor: %s %d.%d.%d\n"
msgid "State"
msgstr "State"
msgid "State:"
msgstr "State:"
msgid "Suspend a running domain."
msgstr "Suspend a running domain."
msgid "Thread(s) per core:"
msgstr "Thread(s) per core:"
msgid ""
"Type: 'help' for help with commands\n"
" 'quit' to quit\n"
"\n"
msgstr ""
"Type: 'help' for help with commands\n"
" 'quit' to quit\n"
"\n"
msgid "UUID:"
msgstr "UUID:"
msgid "Used memory:"
msgstr "Used memory:"
#, c-format
msgid "Using API: %s %d.%d.%d\n"
msgstr "Using API: %s %d.%d.%d\n"
msgid "VCPU:"
msgstr "VCPU:"
#, c-format
msgid ""
"Welcome to %s, the virtualization interactive terminal.\n"
"\n"
msgstr ""
"Welcome to %s, the virtualization interactive terminal.\n"
"\n"
msgid "cannot parse vbd filename, missing driver name"
msgstr "cannot parse vbd filename, missing driver name"
msgid "cannot parse vbd filename, missing driver type"
msgstr "cannot parse vbd filename, missing driver type"
msgid "change maximum memory limit"
msgstr "change maximum memory limit"
msgid "change memory allocation"
msgstr "change memory allocation"
msgid "change number of virtual CPUs"
msgstr "change number of virtual CPUs"
#, c-format
msgid "command '%s' doesn't support option --%s"
msgstr "command '%s' doesn't support option --%s"
#, c-format
msgid "command '%s' requires --%s option"
msgstr "command '%s' requires --%s option"
#, c-format
msgid "command '%s' requires <%s> option"
msgstr "command '%s' requires <%s> option"
msgid "configuration file syntax error"
msgstr "configuration file syntax error"
#, c-format
msgid "configuration file syntax error: %s"
msgstr "configuration file syntax error: %s"
msgid "convert a domain id or UUID to domain name"
msgstr "convert a domain id or UUID to domain name"
msgid "convert a domain name or UUID to domain id"
msgstr "convert a domain name or UUID to domain id"
msgid "convert a domain name or id to domain UUID"
msgstr "convert a domain name or id to domain UUID"
msgid "could not connect to Xen Store"
msgstr "could not connect to Xen Store"
#, c-format
msgid "could not connect to Xen Store %s"
msgstr "could not connect to Xen Store %s"
msgid "could not use Xen hypervisor entry"
msgstr "could not use Xen hypervisor entry"
#, c-format
msgid "could not use Xen hypervisor entry %s"
msgstr "could not use Xen hypervisor entry %s"
msgid "crashed"
msgstr "crashed"
msgid "create a domain from an XML file"
msgstr "create a domain from an XML file"
msgid "define (but don't start) a domain from an XML file"
msgstr "define (but don't start) a domain from an XML file"
#, c-format
msgid "domain %s exists already"
msgstr "domain %s exists already"
msgid "domain id or name"
msgstr "domain id or name"
msgid "domain id or uuid"
msgstr "domain id or uuid"
msgid "domain information"
msgstr "domain information"
msgid "domain information in XML"
msgstr "domain information in XML"
msgid "domain information incomplete, missing domid"
msgstr "domain information incomplete, missing domid"
msgid "domain information incomplete, missing name"
msgstr "domain information incomplete, missing name"
msgid "domain information incomplete, missing uuid"
msgstr "domain information incomplete, missing uuid"
msgid "domain information incomplete, vbd has no dev"
msgstr "domain information incomplete, vbd has no dev"
msgid "domain information incomplete, vbd has no src"
msgstr "domain information incomplete, vbd has no src"
msgid "domain information incorrect domid not numeric"
msgstr "domain information incorrect domid not numeric"
msgid "domain name or uuid"
msgstr "domain name or uuid"
msgid "domain name, id or uuid"
msgstr "domain name, id or uuid"
msgid "domain state"
msgstr "domain state"
msgid "dump the core of a domain to a file for analysis"
msgstr "dump the core of a domain to a file for analysis"
msgid "error"
msgstr "error"
msgid "error: "
msgstr "error: "
#, c-format
msgid "expected syntax: --%s <%s>"
msgstr "expected syntax: --%s <%s>"
msgid "expecting a name"
msgstr "expecting a name"
msgid "expecting a separator"
msgstr "expecting a separator"
msgid "expecting a separator in list"
msgstr "expecting a separator in list"
msgid "expecting a value"
msgstr "expecting a value"
msgid "expecting an assignment"
msgstr "expecting an assignment"
msgid "failed to connect to Xen Store"
msgstr "failed to connect to Xen Store"
msgid "failed to connect to the hypervisor"
msgstr "failed to connect to the hypervisor"
#, c-format
msgid "failed to get domain '%s'"
msgstr "failed to get domain '%s'"
msgid "failed to get domain UUID"
msgstr "failed to get domain UUID"
msgid "failed to get hypervisor type"
msgstr "failed to get hypervisor type"
msgid "failed to get node information"
msgstr "failed to get node information"
msgid "failed to get the hypervisor version"
msgstr "failed to get the hypervisor version"
msgid "failed to get the library version"
msgstr "failed to get the library version"
#, c-format
msgid "failed to open %s for reading"
msgstr "failed to open %s for reading"
msgid "failed to open configuration file for reading"
msgstr "failed to open configuration file for reading"
msgid "failed to open file"
msgstr "failed to open file"
msgid "failed to parse Xend domain information"
msgstr "failed to parse Xend domain information"
msgid "failed to parse configuration file"
msgstr "failed to parse configuration file"
#, c-format
msgid "failed to parse configuration file %s"
msgstr "failed to parse configuration file %s"
msgid "failed to read configuration file"
msgstr "failed to read configuration file"
#, c-format
msgid "failed to read configuration file %s"
msgstr "failed to read configuration file %s"
msgid "failed to read from Xen Daemon"
msgstr "failed to read from Xen Daemon"
msgid "failed to save content"
msgstr "failed to save content"
msgid "failed to serialize S-Expr"
msgstr "failed to serialize S-Expr"
#, c-format
msgid "failed to serialize S-Expr: %s"
msgstr "failed to serialize S-Expr: %s"
msgid "failed to write configuration file"
msgstr "failed to write configuration file"
#, c-format
msgid "failed to write configuration file: %s"
msgstr "failed to write configuration file: %s"
msgid "getting time of day"
msgstr "getting time of day"
#, c-format
msgid "got unknown HTTP error code %d"
msgstr "got unknown HTTP error code %d"
msgid "gracefully shutdown a domain"
msgstr "gracefully shutdown a domain"
msgid "hypervisor connection URI"
msgstr "hypervisor connection URI"
msgid "in shutdown"
msgstr "in shutdown"
msgid "internal error"
msgstr "internal error"
msgid "invalid connection pointer in"
msgstr "invalid connection pointer in"
#, c-format
msgid "invalid connection pointer in %s"
msgstr "invalid connection pointer in %s"
msgid "invalid domain pointer in"
msgstr "invalid domain pointer in"
#, c-format
msgid "invalid domain pointer in %s"
msgstr "invalid domain pointer in %s"
#, c-format
msgid "library call %s failed, possibly not supported"
msgstr "library call %s failed, possibly not supported"
msgid "library call failed, possibly not supported"
msgstr "library call failed, possibly not supported"
msgid "list domains"
msgstr "list domains"
msgid "list inactive & active domains"
msgstr "list inactive & active domains"
msgid "list inactive domains"
msgstr "list inactive domains"
msgid "missing \""
msgstr "missing \""
msgid "missing devices information"
msgstr "missing devices information"
#, c-format
msgid "missing devices information for %s"
msgstr "missing devices information for %s"
msgid "missing kernel information"
msgstr "missing kernel information"
msgid "missing operating system information"
msgstr "missing operating system information"
#, c-format
msgid "missing operating system information for %s"
msgstr "missing operating system information for %s"
msgid "missing root device information"
msgstr "missing root device information"
#, c-format
msgid "missing root device information in %s"
msgstr "missing root device information in %s"
msgid "missing source information for device"
msgstr "missing source information for device"
#, c-format
msgid "missing source information for device %s"
msgstr "missing source information for device %s"
msgid "missing target information for device"
msgstr "missing target information for device"
#, c-format
msgid "missing target information for device %s"
msgstr "missing target information for device %s"
msgid "name of the inactive domain"
msgstr "name of the inactive domain"
msgid "no state"
msgstr "no state"
msgid "no valid connection"
msgstr "no valid connection"
msgid "node information"
msgstr "node information"
msgid "number"
msgstr "number"
msgid "number of virtual CPUs"
msgstr "number of virtual CPUs"
msgid "offline"
msgstr "offline"
msgid "operation failed"
msgstr "operation failed"
#, c-format
msgid "operation failed: %s"
msgstr "operation failed: %s"
msgid "operation forbidden for read only access"
msgstr "operation forbidden for read only access"
msgid "out of memory"
msgstr "out of memory"
msgid "parser error"
msgstr "parser error"
msgid "paused"
msgstr "paused"
msgid "print help"
msgstr "print help"
msgid "quit this interactive terminal"
msgstr "quit this interactive terminal"
msgid "read-only connection"
msgstr "read-only connection"
msgid "reboot a domain"
msgstr "reboot a domain"
msgid "restore a domain from a saved state in a file"
msgstr "restore a domain from a saved state in a file"
msgid "resume a domain"
msgstr "resume a domain"
msgid "running"
msgstr "running"
msgid "save a domain state to a file"
msgstr "save a domain state to a file"
msgid "show version"
msgstr "show version"
msgid "shut off"
msgstr "shut off"
msgid "start a (previously defined) inactive domain"
msgstr "start a (previously defined) inactive domain"
msgid "string"
msgstr "string"
msgid "suspend a domain"
msgstr "suspend a domain"
msgid "the state to restore"
msgstr "the state to restore"
msgid "this domain exists already"
msgstr "this domain exists already"
msgid "too many drivers registered"
msgstr "too many drivers registered"
#, c-format
msgid "too many drivers registered in %s"
msgstr "too many drivers registered in %s"
#, c-format
msgid "unexpected data '%s'"
msgstr "unexpected data '%s'"
msgid "unknown OS type"
msgstr "unknown OS type"
#, c-format
msgid "unknown OS type %s"
msgstr "unknown OS type %s"
#, c-format
msgid "unknown command: '%s'"
msgstr "unknown command: '%s'"
msgid "unknown host"
msgstr "unknown host"
#, c-format
msgid "unknown host %s"
msgstr "unknown host %s"
#, c-format
msgid "unsupported option '-%c'. See --help."
msgstr "unsupported option '-%c'. See --help."
msgid "unterminated number"
msgstr "unterminated number"
msgid "unterminated string"
msgstr "unterminated string"
msgid "vcpu number"
msgstr "vcpu number"
msgid "warning"
msgstr "warning"
msgid "where to dump the core"
msgstr "where to dump the core"
msgid "where to save the data"
msgstr "where to save the data"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Persian\n"

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2017-03-26 10:24-0400\n"
"Last-Translator: Jiri Grönroos <jiri.gronroos@iki.fi>\n"
"Language-Team: Finnish (http://www.transifex.com/projects/p/fedora/language/"
@@ -766,21 +766,12 @@ msgstr "toimialueen tiedot"
msgid "domain information in XML"
msgstr "toimialuetiedot XML-muodossa"
msgid "domain information incomplete, missing domid"
msgstr "toimialuetieto on epätäydellistä, domid puuttuu"
msgid "domain information incomplete, missing kernel & bootloader"
msgstr "toimialuetieto on epätäydellistä, ydin ja käynnistyslatain puuttuu"
msgid "domain information incomplete, missing name"
msgstr "toimialuetiedot ovat epätäydellisiä, nimi puuttuu"
msgid "domain information incomplete, missing uuid"
msgstr "toimialuetieto on epätäydellistä, uuid puuttuu"
msgid "domain information incorrect domid not numeric"
msgstr "toimialuetieto on virheellistä, domid ei ole numeerinen"
msgid "domain is not running"
msgstr "toimialue ei ole käynnissä"
@@ -824,9 +815,6 @@ msgstr "odotetaan arvoa"
msgid "expecting an assignment"
msgstr "odotetaan sijoitusta"
msgid "failed to connect to Xen Store"
msgstr "yhteydenotto Xen Storeen ei onnistunut"
msgid "failed to connect to the hypervisor"
msgstr "hypervisoriin ei saatu yhteyttä"
@@ -882,9 +870,6 @@ msgstr "ei voitu avata tiedostoa"
msgid "failed to open the log file. check the log file path"
msgstr "lokitiedoston avaaminen epäonnistui, tarkista polku"
msgid "failed to parse Xend domain information"
msgstr "Xend-toimialueen tietojen jäsentäminen epäonnistui"
msgid "failed to parse configuration file"
msgstr "asetustiedoston jäsentäminen epäonnistui"
@@ -899,9 +884,6 @@ msgstr "asetustiedoston lukeminen epäonnistui"
msgid "failed to read configuration file %s"
msgstr "asetustiedoston %s lukeminen epäonnistui"
msgid "failed to read from Xen Daemon"
msgstr "Luku Xen Daemonista epäonnistui"
msgid "failed to save content"
msgstr "sisältöä ei voitu tallentaa"
@@ -1212,9 +1194,6 @@ msgstr "liian monta rekisteröityä ajuria"
msgid "too many drivers registered in %s"
msgstr "liian monta rekisteröityä ajuria kohteessa %s"
msgid "topology syntax error"
msgstr "topologiasyntaksivirhe"
msgid "tty console"
msgstr "tty-konsoli"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Filipino\n"

View File

@@ -23,7 +23,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2015-02-26 09:47-0500\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: French <trans-fr@lists.fedoraproject.org>\n"
@@ -562,12 +562,6 @@ msgstr "Créer un pool"
msgid "Create a vol."
msgstr "Créer un volume."
#, c-format
msgid "Credit scheduler weight parameter (%d) is out of range (1-65535)"
msgstr ""
"Le paramètre « poids » (%d) du planificateur à répartition de charge est "
"hors limites (1-65535)"
msgid "Define a domain."
msgstr "Définir un domaine"
@@ -2499,9 +2493,6 @@ msgstr "informations du domaine en XML"
msgid "domain information incomplete, missing HVM loader"
msgstr "informations de domaine incomplètes, chargeur HVM manquant"
msgid "domain information incomplete, missing domid"
msgstr "informations de domaine incomplètes, domid manquant"
msgid "domain information incomplete, missing kernel & bootloader"
msgstr ""
"informations de domaine incomplètes, noyau et chargeur de démarrage manquants"
@@ -2509,18 +2500,12 @@ msgstr ""
msgid "domain information incomplete, missing name"
msgstr "informations de domaine incomplètes, nom manquant"
msgid "domain information incomplete, missing uuid"
msgstr "informations de domaine incomplètes, UUID manquant"
msgid "domain information incomplete, vbd has no dev"
msgstr "informations de domaine incomplètes, vbd n'a pas de dev"
msgid "domain information incomplete, vbd has no src"
msgstr "informations de domaine incomplètes, vbd n'a pas de src"
msgid "domain information incorrect domid not numeric"
msgstr "informations de domaine incorrectes, domid non numérique"
msgid "domain is not running"
msgstr "le domaine n'est pas actif"
@@ -2582,21 +2567,12 @@ msgstr "chemin absolu attendu : %s"
msgid "expecting an assignment"
msgstr "affectation attendue"
msgid "failed to connect to Xen Store"
msgstr "Impossible de se connecter au magasin Xen"
msgid "failed to connect to the hypervisor"
msgstr "impossible de se connecter à l'hyperviseur"
msgid "failed to connect to xend"
msgstr "impossible de se connecter à Xen"
msgid "failed to copy security label"
msgstr "Impossible de copier le module de sécurité"
msgid "failed to create a socket"
msgstr "impossible de créer un socket"
msgid "failed to generate XML"
msgstr "impossible de créer XML"
@@ -2670,9 +2646,6 @@ msgstr "impossible d'ouvrir le fichier"
msgid "failed to open the log file. check the log file path"
msgstr "impossible d'ouvrir le fichier journal. Vérifiez son chemin d'accès"
msgid "failed to parse Xend domain information"
msgstr "impossible d'analyser les informations du domaine Xen"
msgid "failed to parse configuration file"
msgstr "impossible d'analyser le fichier de configuration"
@@ -2687,9 +2660,6 @@ msgstr "impossible de lire le fichier de configuration"
msgid "failed to read configuration file %s"
msgstr "impossible de lire le fichier de configuration %s"
msgid "failed to read from Xen Daemon"
msgstr "impossible de lire depuis le démon Xen"
#, c-format
msgid "failed to resize the RBD image '%s'"
msgstr "échec de la modification de taille de l'image RBD « %s »"
@@ -3343,10 +3313,6 @@ msgstr "plus de mémoire disponible"
msgid "parser error"
msgstr "erreur de l'analyseur"
#, c-format
msgid "parsing uuid %s"
msgstr "analyse de l'uuid %s"
msgid "passthrough mode requires a character device type attribute"
msgstr ""
"le mode passthrough nécessite un attribut de type de périphérique de "
@@ -3592,9 +3558,6 @@ msgstr "trop de pilotes enregistrés"
msgid "too many drivers registered in %s"
msgstr "trop de pilotes enregistrés dans %s"
msgid "topology syntax error"
msgstr "erreur de syntaxe dans la topologie"
msgid "transient domains do not have any persistent config"
msgstr "Les domaines temporaires n'ont pas de configuration persistante"
@@ -4227,31 +4190,3 @@ msgstr "où enregistrer les données"
#, c-format
msgid "xen bus does not support %s input device"
msgstr "le bus xen ne prend pas en charge le périphérique d'entrée %s"
msgid ""
"xenDaemonDomainMigrate: Xen does not support bandwidth limits during "
"migration"
msgstr ""
"xenDaemonDomainMigrate : Xen ne prend pas en charge la limitation de bande "
"passante durant la migration"
msgid ""
"xenDaemonDomainMigrate: Xen does not support renaming domains during "
"migration"
msgstr ""
"xenDaemonDomainMigrate : Xen ne prend pas en charge le renommage de domaine "
"durant la migration"
msgid "xenDaemonDomainMigrate: a hostname must be specified in the URI"
msgstr "xenDaemonDomainMigrate : un nom d'hôte doit être spécifié dans l'URI"
msgid "xenDaemonDomainMigrate: invalid port number"
msgstr "xenDaemonDomainMigrate : numéro de port invalide"
msgid "xenDaemonDomainMigrate: only xenmigr:// migrations are supported by Xen"
msgstr ""
"xenDaemonDomainMigrate : seules les migrations de xenmigr:// sont supportées "
"par Xen"
msgid "xenDaemonDomainMigrate: unsupported flag"
msgstr "xenDaemonDomainMigrate : indicateur non supporté"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Friulian\n"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Irish\n"

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"PO-Revision-Date: 2015-02-24 05:58-0500\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2018-04-24 06:22-0400\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Galician (http://www.transifex.com/projects/p/fedora/language/"
"gl/)\n"
@@ -19,742 +19,3 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.9.6\n"
msgid ""
"\n"
" DESCRIPTION\n"
msgstr ""
"\n"
" DESCRIPTION\n"
msgid ""
"\n"
" OPTIONS\n"
msgstr ""
"\n"
" OPTIONS\n"
#, c-format
msgid ""
"\n"
"(Time: %.3f ms)\n"
"\n"
msgstr ""
"\n"
"(Time: %.3f ms)\n"
"\n"
msgid " NAME\n"
msgstr " NAME\n"
#, c-format
msgid "%s: %d: failed to allocate %d bytes"
msgstr "%s: %d: failed to allocate %d bytes"
msgid "(re)connect to hypervisor"
msgstr "(re)connect to hypervisor"
#, c-format
msgid "--%s <number>"
msgstr "--%s <number>"
#, c-format
msgid "--%s <string>"
msgstr "--%s <string>"
msgid "CPU Affinity:"
msgstr "CPU Affinity:"
msgid "CPU frequency:"
msgstr "CPU frequency:"
msgid "CPU model:"
msgstr "CPU model:"
msgid "CPU socket(s):"
msgstr "CPU socket(s):"
msgid "CPU time:"
msgstr "CPU time:"
msgid "CPU(s):"
msgstr "CPU(s):"
msgid "CPU:"
msgstr "CPU:"
#, c-format
msgid "Cannot extract running %s hypervisor version\n"
msgstr "Cannot extract running %s hypervisor version\n"
msgid "Change the current memory allocation in the guest domain."
msgstr "Change the current memory allocation in the guest domain."
msgid "Change the maximum memory allocation limit in the guest domain."
msgstr "Change the maximum memory allocation limit in the guest domain."
msgid ""
"Connect to local hypervisor. This is built-in command after shell start up."
msgstr ""
"Connect to local hypervisor. This is built-in command after shell start up."
msgid "Core dump a domain."
msgstr "Core dump a domain."
msgid "Core(s) per socket:"
msgstr "Core(s) per socket:"
msgid "Create a domain."
msgstr "Create a domain."
msgid "Define a domain."
msgstr "Define a domain."
msgid "Display the system version information."
msgstr "Display the system version information."
#, c-format
msgid "Domain %s created from %s\n"
msgstr "Domain %s created from %s\n"
#, c-format
msgid "Domain %s defined from %s\n"
msgstr "Domain %s defined from %s\n"
#, c-format
msgid "Domain %s destroyed\n"
msgstr "Domain %s destroyed\n"
#, c-format
msgid "Domain %s has been undefined\n"
msgstr "Domain %s has been undefined\n"
#, c-format
msgid "Domain %s is being rebooted\n"
msgstr "Domain %s is being rebooted\n"
#, c-format
msgid "Domain %s is being shutdown\n"
msgstr "Domain %s is being shutdown\n"
#, c-format
msgid "Domain %s resumed\n"
msgstr "Domain %s resumed\n"
#, c-format
msgid "Domain %s started\n"
msgstr "Domain %s started\n"
#, c-format
msgid "Domain %s suspended\n"
msgstr "Domain %s suspended\n"
msgid "Domain is already active"
msgstr "Domain is already active"
#, c-format
msgid "Domain restored from %s\n"
msgstr "Domain restored from %s\n"
#, c-format
msgid "Failed to core dump domain %s to %s"
msgstr "Failed to core dump domain %s to %s"
#, c-format
msgid "Failed to create domain from %s"
msgstr "Failed to create domain from %s"
#, c-format
msgid "Failed to define domain from %s"
msgstr "Failed to define domain from %s"
#, c-format
msgid "Failed to destroy domain %s"
msgstr "Failed to destroy domain %s"
msgid "Failed to list active domains"
msgstr "Failed to list active domains"
msgid "Failed to list inactive domains"
msgstr "Failed to list inactive domains"
#, c-format
msgid "Failed to reboot domain %s"
msgstr "Failed to reboot domain %s"
#, c-format
msgid "Failed to restore domain from %s"
msgstr "Failed to restore domain from %s"
#, c-format
msgid "Failed to resume domain %s"
msgstr "Failed to resume domain %s"
#, c-format
msgid "Failed to save domain %s to %s"
msgstr "Failed to save domain %s to %s"
#, c-format
msgid "Failed to shutdown domain %s"
msgstr "Failed to shutdown domain %s"
#, c-format
msgid "Failed to start domain %s"
msgstr "Failed to start domain %s"
#, c-format
msgid "Failed to suspend domain %s"
msgstr "Failed to suspend domain %s"
#, c-format
msgid "Failed to undefine domain %s"
msgstr "Failed to undefine domain %s"
msgid "GET operation failed"
msgstr "GET operation failed"
#, c-format
msgid "GET operation failed: %s"
msgstr "GET operation failed: %s"
msgid "Id"
msgstr "Id"
msgid "Id:"
msgstr "Id:"
msgid "Max memory:"
msgstr "Max memory:"
msgid "Memory size:"
msgstr "Memory size:"
msgid "NUMA cell(s):"
msgstr "NUMA cell(s):"
msgid "Name"
msgstr "Name"
msgid "Name:"
msgstr "Name:"
msgid "No error message provided"
msgstr "No error message provided"
msgid "OS Type:"
msgstr "OS Type:"
msgid "POST operation failed"
msgstr "POST operation failed"
#, c-format
msgid "POST operation failed: %s"
msgstr "POST operation failed: %s"
msgid "Pin domain VCPUs to host physical CPUs."
msgstr "Pin domain VCPUs to host physical CPUs."
msgid "Restore a domain."
msgstr "Restore a domain."
msgid "Resume a previously suspended domain."
msgstr "Resume a previously suspended domain."
msgid "Returns basic information about the domain virtual CPUs."
msgstr "Returns basic information about the domain virtual CPUs."
msgid "Returns basic information about the domain."
msgstr "Returns basic information about the domain."
msgid "Returns basic information about the node."
msgstr "Returns basic information about the node."
msgid "Returns list of domains."
msgstr "Returns list of domains."
msgid "Run a reboot command in the target domain."
msgstr "Run a reboot command in the target domain."
msgid "Run shutdown in the target domain."
msgstr "Run shutdown in the target domain."
#, c-format
msgid "Running hypervisor: %s %d.%d.%d\n"
msgstr "Running hypervisor: %s %d.%d.%d\n"
msgid "State"
msgstr "State"
msgid "State:"
msgstr "State:"
msgid "Suspend a running domain."
msgstr "Suspend a running domain."
msgid "Thread(s) per core:"
msgstr "Thread(s) per core:"
msgid ""
"Type: 'help' for help with commands\n"
" 'quit' to quit\n"
"\n"
msgstr ""
"Type: 'help' for help with commands\n"
" 'quit' to quit\n"
"\n"
msgid "UUID:"
msgstr "UUID:"
msgid "Used memory:"
msgstr "Used memory:"
#, c-format
msgid "Using API: %s %d.%d.%d\n"
msgstr "Using API: %s %d.%d.%d\n"
msgid "VCPU:"
msgstr "VCPU:"
#, c-format
msgid ""
"Welcome to %s, the virtualization interactive terminal.\n"
"\n"
msgstr ""
"Welcome to %s, the virtualization interactive terminal.\n"
"\n"
msgid "cannot parse vbd filename, missing driver name"
msgstr "cannot parse vbd filename, missing driver name"
msgid "cannot parse vbd filename, missing driver type"
msgstr "cannot parse vbd filename, missing driver type"
msgid "change maximum memory limit"
msgstr "change maximum memory limit"
msgid "change memory allocation"
msgstr "change memory allocation"
msgid "change number of virtual CPUs"
msgstr "change number of virtual CPUs"
#, c-format
msgid "command '%s' doesn't support option --%s"
msgstr "command '%s' doesn't support option --%s"
#, c-format
msgid "command '%s' requires --%s option"
msgstr "command '%s' requires --%s option"
#, c-format
msgid "command '%s' requires <%s> option"
msgstr "command '%s' requires <%s> option"
msgid "configuration file syntax error"
msgstr "configuration file syntax error"
#, c-format
msgid "configuration file syntax error: %s"
msgstr "configuration file syntax error: %s"
msgid "convert a domain id or UUID to domain name"
msgstr "convert a domain id or UUID to domain name"
msgid "convert a domain name or UUID to domain id"
msgstr "convert a domain name or UUID to domain id"
msgid "convert a domain name or id to domain UUID"
msgstr "convert a domain name or id to domain UUID"
msgid "could not connect to Xen Store"
msgstr "could not connect to Xen Store"
#, c-format
msgid "could not connect to Xen Store %s"
msgstr "could not connect to Xen Store %s"
msgid "could not use Xen hypervisor entry"
msgstr "could not use Xen hypervisor entry"
#, c-format
msgid "could not use Xen hypervisor entry %s"
msgstr "could not use Xen hypervisor entry %s"
msgid "crashed"
msgstr "crashed"
msgid "create a domain from an XML file"
msgstr "create a domain from an XML file"
msgid "define (but don't start) a domain from an XML file"
msgstr "define (but don't start) a domain from an XML file"
#, c-format
msgid "domain %s exists already"
msgstr "domain %s exists already"
msgid "domain id or name"
msgstr "domain id or name"
msgid "domain id or uuid"
msgstr "domain id or uuid"
msgid "domain information"
msgstr "domain information"
msgid "domain information in XML"
msgstr "domain information in XML"
msgid "domain information incomplete, missing domid"
msgstr "domain information incomplete, missing domid"
msgid "domain information incomplete, missing name"
msgstr "domain information incomplete, missing name"
msgid "domain information incomplete, missing uuid"
msgstr "domain information incomplete, missing uuid"
msgid "domain information incomplete, vbd has no dev"
msgstr "domain information incomplete, vbd has no dev"
msgid "domain information incomplete, vbd has no src"
msgstr "domain information incomplete, vbd has no src"
msgid "domain information incorrect domid not numeric"
msgstr "domain information incorrect domid not numeric"
msgid "domain name or uuid"
msgstr "domain name or uuid"
msgid "domain name, id or uuid"
msgstr "domain name, id or uuid"
msgid "domain state"
msgstr "domain state"
msgid "dump the core of a domain to a file for analysis"
msgstr "dump the core of a domain to a file for analysis"
msgid "error"
msgstr "error"
msgid "error: "
msgstr "error: "
#, c-format
msgid "expected syntax: --%s <%s>"
msgstr "expected syntax: --%s <%s>"
msgid "expecting a name"
msgstr "expecting a name"
msgid "expecting a separator"
msgstr "expecting a separator"
msgid "expecting a separator in list"
msgstr "expecting a separator in list"
msgid "expecting a value"
msgstr "expecting a value"
msgid "expecting an assignment"
msgstr "expecting an assignment"
msgid "failed to connect to Xen Store"
msgstr "failed to connect to Xen Store"
msgid "failed to connect to the hypervisor"
msgstr "failed to connect to the hypervisor"
#, c-format
msgid "failed to get domain '%s'"
msgstr "failed to get domain '%s'"
msgid "failed to get domain UUID"
msgstr "failed to get domain UUID"
msgid "failed to get hypervisor type"
msgstr "failed to get hypervisor type"
msgid "failed to get node information"
msgstr "failed to get node information"
msgid "failed to get the hypervisor version"
msgstr "failed to get the hypervisor version"
msgid "failed to get the library version"
msgstr "failed to get the library version"
#, c-format
msgid "failed to open %s for reading"
msgstr "failed to open %s for reading"
msgid "failed to open configuration file for reading"
msgstr "failed to open configuration file for reading"
msgid "failed to open file"
msgstr "failed to open file"
msgid "failed to parse Xend domain information"
msgstr "failed to parse Xend domain information"
msgid "failed to parse configuration file"
msgstr "failed to parse configuration file"
#, c-format
msgid "failed to parse configuration file %s"
msgstr "failed to parse configuration file %s"
msgid "failed to read configuration file"
msgstr "failed to read configuration file"
#, c-format
msgid "failed to read configuration file %s"
msgstr "failed to read configuration file %s"
msgid "failed to read from Xen Daemon"
msgstr "failed to read from Xen Daemon"
msgid "failed to save content"
msgstr "failed to save content"
msgid "failed to serialize S-Expr"
msgstr "failed to serialize S-Expr"
#, c-format
msgid "failed to serialize S-Expr: %s"
msgstr "failed to serialize S-Expr: %s"
msgid "failed to write configuration file"
msgstr "failed to write configuration file"
#, c-format
msgid "failed to write configuration file: %s"
msgstr "failed to write configuration file: %s"
msgid "getting time of day"
msgstr "getting time of day"
#, c-format
msgid "got unknown HTTP error code %d"
msgstr "got unknown HTTP error code %d"
msgid "gracefully shutdown a domain"
msgstr "gracefully shutdown a domain"
msgid "hypervisor connection URI"
msgstr "hypervisor connection URI"
msgid "in shutdown"
msgstr "in shutdown"
msgid "internal error"
msgstr "internal error"
msgid "invalid connection pointer in"
msgstr "invalid connection pointer in"
#, c-format
msgid "invalid connection pointer in %s"
msgstr "invalid connection pointer in %s"
msgid "invalid domain pointer in"
msgstr "invalid domain pointer in"
#, c-format
msgid "invalid domain pointer in %s"
msgstr "invalid domain pointer in %s"
#, c-format
msgid "library call %s failed, possibly not supported"
msgstr "library call %s failed, possibly not supported"
msgid "library call failed, possibly not supported"
msgstr "library call failed, possibly not supported"
msgid "list domains"
msgstr "list domains"
msgid "list inactive & active domains"
msgstr "list inactive & active domains"
msgid "list inactive domains"
msgstr "list inactive domains"
msgid "missing \""
msgstr "missing \""
msgid "missing devices information"
msgstr "missing devices information"
#, c-format
msgid "missing devices information for %s"
msgstr "missing devices information for %s"
msgid "missing kernel information"
msgstr "missing kernel information"
msgid "missing operating system information"
msgstr "missing operating system information"
#, c-format
msgid "missing operating system information for %s"
msgstr "missing operating system information for %s"
msgid "missing root device information"
msgstr "missing root device information"
#, c-format
msgid "missing root device information in %s"
msgstr "missing root device information in %s"
msgid "missing source information for device"
msgstr "missing source information for device"
#, c-format
msgid "missing source information for device %s"
msgstr "missing source information for device %s"
msgid "missing target information for device"
msgstr "missing target information for device"
#, c-format
msgid "missing target information for device %s"
msgstr "missing target information for device %s"
msgid "name of the inactive domain"
msgstr "name of the inactive domain"
msgid "no state"
msgstr "no state"
msgid "no valid connection"
msgstr "no valid connection"
msgid "node information"
msgstr "node information"
msgid "number"
msgstr "number"
msgid "number of virtual CPUs"
msgstr "number of virtual CPUs"
msgid "offline"
msgstr "offline"
msgid "operation failed"
msgstr "operation failed"
#, c-format
msgid "operation failed: %s"
msgstr "operation failed: %s"
msgid "operation forbidden for read only access"
msgstr "operation forbidden for read only access"
msgid "out of memory"
msgstr "out of memory"
msgid "parser error"
msgstr "parser error"
msgid "paused"
msgstr "paused"
msgid "print help"
msgstr "print help"
msgid "quit this interactive terminal"
msgstr "quit this interactive terminal"
msgid "read-only connection"
msgstr "read-only connection"
msgid "reboot a domain"
msgstr "reboot a domain"
msgid "restore a domain from a saved state in a file"
msgstr "restore a domain from a saved state in a file"
msgid "resume a domain"
msgstr "resume a domain"
msgid "running"
msgstr "running"
msgid "save a domain state to a file"
msgstr "save a domain state to a file"
msgid "show version"
msgstr "show version"
msgid "shut off"
msgstr "shut off"
msgid "start a (previously defined) inactive domain"
msgstr "start a (previously defined) inactive domain"
msgid "string"
msgstr "string"
msgid "suspend a domain"
msgstr "suspend a domain"
msgid "the state to restore"
msgstr "the state to restore"
msgid "this domain exists already"
msgstr "this domain exists already"
msgid "too many drivers registered"
msgstr "too many drivers registered"
#, c-format
msgid "too many drivers registered in %s"
msgstr "too many drivers registered in %s"
#, c-format
msgid "unexpected data '%s'"
msgstr "unexpected data '%s'"
msgid "unknown OS type"
msgstr "unknown OS type"
#, c-format
msgid "unknown OS type %s"
msgstr "unknown OS type %s"
#, c-format
msgid "unknown command: '%s'"
msgstr "unknown command: '%s'"
msgid "unknown host"
msgstr "unknown host"
#, c-format
msgid "unknown host %s"
msgstr "unknown host %s"
#, c-format
msgid "unsupported option '-%c'. See --help."
msgstr "unsupported option '-%c'. See --help."
msgid "unterminated number"
msgstr "unterminated number"
msgid "unterminated string"
msgstr "unterminated string"
msgid "vcpu number"
msgstr "vcpu number"
msgid "warning"
msgstr "warning"
msgid "where to dump the core"
msgstr "where to dump the core"
msgid "where to save the data"
msgstr "where to save the data"

File diff suppressed because it is too large Load Diff

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"PO-Revision-Date: 2015-02-27 04:49-0500\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2018-04-24 06:25-0400\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Hebrew (http://www.transifex.com/projects/p/fedora/language/"
"he/)\n"
@@ -19,742 +19,3 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.9.6\n"
msgid ""
"\n"
" DESCRIPTION\n"
msgstr ""
"\n"
" DESCRIPTION\n"
msgid ""
"\n"
" OPTIONS\n"
msgstr ""
"\n"
" OPTIONS\n"
#, c-format
msgid ""
"\n"
"(Time: %.3f ms)\n"
"\n"
msgstr ""
"\n"
"(Time: %.3f ms)\n"
"\n"
msgid " NAME\n"
msgstr " NAME\n"
#, c-format
msgid "%s: %d: failed to allocate %d bytes"
msgstr "%s: %d: failed to allocate %d bytes"
msgid "(re)connect to hypervisor"
msgstr "(re)connect to hypervisor"
#, c-format
msgid "--%s <number>"
msgstr "--%s <number>"
#, c-format
msgid "--%s <string>"
msgstr "--%s <string>"
msgid "CPU Affinity:"
msgstr "CPU Affinity:"
msgid "CPU frequency:"
msgstr "CPU frequency:"
msgid "CPU model:"
msgstr "CPU model:"
msgid "CPU socket(s):"
msgstr "CPU socket(s):"
msgid "CPU time:"
msgstr "CPU time:"
msgid "CPU(s):"
msgstr "CPU(s):"
msgid "CPU:"
msgstr "CPU:"
#, c-format
msgid "Cannot extract running %s hypervisor version\n"
msgstr "Cannot extract running %s hypervisor version\n"
msgid "Change the current memory allocation in the guest domain."
msgstr "Change the current memory allocation in the guest domain."
msgid "Change the maximum memory allocation limit in the guest domain."
msgstr "Change the maximum memory allocation limit in the guest domain."
msgid ""
"Connect to local hypervisor. This is built-in command after shell start up."
msgstr ""
"Connect to local hypervisor. This is built-in command after shell start up."
msgid "Core dump a domain."
msgstr "Core dump a domain."
msgid "Core(s) per socket:"
msgstr "Core(s) per socket:"
msgid "Create a domain."
msgstr "Create a domain."
msgid "Define a domain."
msgstr "Define a domain."
msgid "Display the system version information."
msgstr "Display the system version information."
#, c-format
msgid "Domain %s created from %s\n"
msgstr "Domain %s created from %s\n"
#, c-format
msgid "Domain %s defined from %s\n"
msgstr "Domain %s defined from %s\n"
#, c-format
msgid "Domain %s destroyed\n"
msgstr "Domain %s destroyed\n"
#, c-format
msgid "Domain %s has been undefined\n"
msgstr "Domain %s has been undefined\n"
#, c-format
msgid "Domain %s is being rebooted\n"
msgstr "Domain %s is being rebooted\n"
#, c-format
msgid "Domain %s is being shutdown\n"
msgstr "Domain %s is being shutdown\n"
#, c-format
msgid "Domain %s resumed\n"
msgstr "Domain %s resumed\n"
#, c-format
msgid "Domain %s started\n"
msgstr "Domain %s started\n"
#, c-format
msgid "Domain %s suspended\n"
msgstr "Domain %s suspended\n"
msgid "Domain is already active"
msgstr "Domain is already active"
#, c-format
msgid "Domain restored from %s\n"
msgstr "Domain restored from %s\n"
#, c-format
msgid "Failed to core dump domain %s to %s"
msgstr "Failed to core dump domain %s to %s"
#, c-format
msgid "Failed to create domain from %s"
msgstr "Failed to create domain from %s"
#, c-format
msgid "Failed to define domain from %s"
msgstr "Failed to define domain from %s"
#, c-format
msgid "Failed to destroy domain %s"
msgstr "Failed to destroy domain %s"
msgid "Failed to list active domains"
msgstr "Failed to list active domains"
msgid "Failed to list inactive domains"
msgstr "Failed to list inactive domains"
#, c-format
msgid "Failed to reboot domain %s"
msgstr "Failed to reboot domain %s"
#, c-format
msgid "Failed to restore domain from %s"
msgstr "Failed to restore domain from %s"
#, c-format
msgid "Failed to resume domain %s"
msgstr "Failed to resume domain %s"
#, c-format
msgid "Failed to save domain %s to %s"
msgstr "Failed to save domain %s to %s"
#, c-format
msgid "Failed to shutdown domain %s"
msgstr "Failed to shutdown domain %s"
#, c-format
msgid "Failed to start domain %s"
msgstr "Failed to start domain %s"
#, c-format
msgid "Failed to suspend domain %s"
msgstr "Failed to suspend domain %s"
#, c-format
msgid "Failed to undefine domain %s"
msgstr "Failed to undefine domain %s"
msgid "GET operation failed"
msgstr "GET operation failed"
#, c-format
msgid "GET operation failed: %s"
msgstr "GET operation failed: %s"
msgid "Id"
msgstr "Id"
msgid "Id:"
msgstr "Id:"
msgid "Max memory:"
msgstr "Max memory:"
msgid "Memory size:"
msgstr "Memory size:"
msgid "NUMA cell(s):"
msgstr "NUMA cell(s):"
msgid "Name"
msgstr "Name"
msgid "Name:"
msgstr "Name:"
msgid "No error message provided"
msgstr "No error message provided"
msgid "OS Type:"
msgstr "OS Type:"
msgid "POST operation failed"
msgstr "POST operation failed"
#, c-format
msgid "POST operation failed: %s"
msgstr "POST operation failed: %s"
msgid "Pin domain VCPUs to host physical CPUs."
msgstr "Pin domain VCPUs to host physical CPUs."
msgid "Restore a domain."
msgstr "Restore a domain."
msgid "Resume a previously suspended domain."
msgstr "Resume a previously suspended domain."
msgid "Returns basic information about the domain virtual CPUs."
msgstr "Returns basic information about the domain virtual CPUs."
msgid "Returns basic information about the domain."
msgstr "Returns basic information about the domain."
msgid "Returns basic information about the node."
msgstr "Returns basic information about the node."
msgid "Returns list of domains."
msgstr "Returns list of domains."
msgid "Run a reboot command in the target domain."
msgstr "Run a reboot command in the target domain."
msgid "Run shutdown in the target domain."
msgstr "Run shutdown in the target domain."
#, c-format
msgid "Running hypervisor: %s %d.%d.%d\n"
msgstr "Running hypervisor: %s %d.%d.%d\n"
msgid "State"
msgstr "State"
msgid "State:"
msgstr "State:"
msgid "Suspend a running domain."
msgstr "Suspend a running domain."
msgid "Thread(s) per core:"
msgstr "Thread(s) per core:"
msgid ""
"Type: 'help' for help with commands\n"
" 'quit' to quit\n"
"\n"
msgstr ""
"Type: 'help' for help with commands\n"
" 'quit' to quit\n"
"\n"
msgid "UUID:"
msgstr "UUID:"
msgid "Used memory:"
msgstr "Used memory:"
#, c-format
msgid "Using API: %s %d.%d.%d\n"
msgstr "Using API: %s %d.%d.%d\n"
msgid "VCPU:"
msgstr "VCPU:"
#, c-format
msgid ""
"Welcome to %s, the virtualization interactive terminal.\n"
"\n"
msgstr ""
"Welcome to %s, the virtualization interactive terminal.\n"
"\n"
msgid "cannot parse vbd filename, missing driver name"
msgstr "cannot parse vbd filename, missing driver name"
msgid "cannot parse vbd filename, missing driver type"
msgstr "cannot parse vbd filename, missing driver type"
msgid "change maximum memory limit"
msgstr "change maximum memory limit"
msgid "change memory allocation"
msgstr "change memory allocation"
msgid "change number of virtual CPUs"
msgstr "change number of virtual CPUs"
#, c-format
msgid "command '%s' doesn't support option --%s"
msgstr "command '%s' doesn't support option --%s"
#, c-format
msgid "command '%s' requires --%s option"
msgstr "command '%s' requires --%s option"
#, c-format
msgid "command '%s' requires <%s> option"
msgstr "command '%s' requires <%s> option"
msgid "configuration file syntax error"
msgstr "configuration file syntax error"
#, c-format
msgid "configuration file syntax error: %s"
msgstr "configuration file syntax error: %s"
msgid "convert a domain id or UUID to domain name"
msgstr "convert a domain id or UUID to domain name"
msgid "convert a domain name or UUID to domain id"
msgstr "convert a domain name or UUID to domain id"
msgid "convert a domain name or id to domain UUID"
msgstr "convert a domain name or id to domain UUID"
msgid "could not connect to Xen Store"
msgstr "could not connect to Xen Store"
#, c-format
msgid "could not connect to Xen Store %s"
msgstr "could not connect to Xen Store %s"
msgid "could not use Xen hypervisor entry"
msgstr "could not use Xen hypervisor entry"
#, c-format
msgid "could not use Xen hypervisor entry %s"
msgstr "could not use Xen hypervisor entry %s"
msgid "crashed"
msgstr "crashed"
msgid "create a domain from an XML file"
msgstr "create a domain from an XML file"
msgid "define (but don't start) a domain from an XML file"
msgstr "define (but don't start) a domain from an XML file"
#, c-format
msgid "domain %s exists already"
msgstr "domain %s exists already"
msgid "domain id or name"
msgstr "domain id or name"
msgid "domain id or uuid"
msgstr "domain id or uuid"
msgid "domain information"
msgstr "domain information"
msgid "domain information in XML"
msgstr "domain information in XML"
msgid "domain information incomplete, missing domid"
msgstr "domain information incomplete, missing domid"
msgid "domain information incomplete, missing name"
msgstr "domain information incomplete, missing name"
msgid "domain information incomplete, missing uuid"
msgstr "domain information incomplete, missing uuid"
msgid "domain information incomplete, vbd has no dev"
msgstr "domain information incomplete, vbd has no dev"
msgid "domain information incomplete, vbd has no src"
msgstr "domain information incomplete, vbd has no src"
msgid "domain information incorrect domid not numeric"
msgstr "domain information incorrect domid not numeric"
msgid "domain name or uuid"
msgstr "domain name or uuid"
msgid "domain name, id or uuid"
msgstr "domain name, id or uuid"
msgid "domain state"
msgstr "domain state"
msgid "dump the core of a domain to a file for analysis"
msgstr "dump the core of a domain to a file for analysis"
msgid "error"
msgstr "error"
msgid "error: "
msgstr "error: "
#, c-format
msgid "expected syntax: --%s <%s>"
msgstr "expected syntax: --%s <%s>"
msgid "expecting a name"
msgstr "expecting a name"
msgid "expecting a separator"
msgstr "expecting a separator"
msgid "expecting a separator in list"
msgstr "expecting a separator in list"
msgid "expecting a value"
msgstr "expecting a value"
msgid "expecting an assignment"
msgstr "expecting an assignment"
msgid "failed to connect to Xen Store"
msgstr "failed to connect to Xen Store"
msgid "failed to connect to the hypervisor"
msgstr "failed to connect to the hypervisor"
#, c-format
msgid "failed to get domain '%s'"
msgstr "failed to get domain '%s'"
msgid "failed to get domain UUID"
msgstr "failed to get domain UUID"
msgid "failed to get hypervisor type"
msgstr "failed to get hypervisor type"
msgid "failed to get node information"
msgstr "failed to get node information"
msgid "failed to get the hypervisor version"
msgstr "failed to get the hypervisor version"
msgid "failed to get the library version"
msgstr "failed to get the library version"
#, c-format
msgid "failed to open %s for reading"
msgstr "failed to open %s for reading"
msgid "failed to open configuration file for reading"
msgstr "failed to open configuration file for reading"
msgid "failed to open file"
msgstr "failed to open file"
msgid "failed to parse Xend domain information"
msgstr "failed to parse Xend domain information"
msgid "failed to parse configuration file"
msgstr "failed to parse configuration file"
#, c-format
msgid "failed to parse configuration file %s"
msgstr "failed to parse configuration file %s"
msgid "failed to read configuration file"
msgstr "failed to read configuration file"
#, c-format
msgid "failed to read configuration file %s"
msgstr "failed to read configuration file %s"
msgid "failed to read from Xen Daemon"
msgstr "failed to read from Xen Daemon"
msgid "failed to save content"
msgstr "failed to save content"
msgid "failed to serialize S-Expr"
msgstr "failed to serialize S-Expr"
#, c-format
msgid "failed to serialize S-Expr: %s"
msgstr "failed to serialize S-Expr: %s"
msgid "failed to write configuration file"
msgstr "failed to write configuration file"
#, c-format
msgid "failed to write configuration file: %s"
msgstr "failed to write configuration file: %s"
msgid "getting time of day"
msgstr "getting time of day"
#, c-format
msgid "got unknown HTTP error code %d"
msgstr "got unknown HTTP error code %d"
msgid "gracefully shutdown a domain"
msgstr "gracefully shutdown a domain"
msgid "hypervisor connection URI"
msgstr "hypervisor connection URI"
msgid "in shutdown"
msgstr "in shutdown"
msgid "internal error"
msgstr "internal error"
msgid "invalid connection pointer in"
msgstr "invalid connection pointer in"
#, c-format
msgid "invalid connection pointer in %s"
msgstr "invalid connection pointer in %s"
msgid "invalid domain pointer in"
msgstr "invalid domain pointer in"
#, c-format
msgid "invalid domain pointer in %s"
msgstr "invalid domain pointer in %s"
#, c-format
msgid "library call %s failed, possibly not supported"
msgstr "library call %s failed, possibly not supported"
msgid "library call failed, possibly not supported"
msgstr "library call failed, possibly not supported"
msgid "list domains"
msgstr "list domains"
msgid "list inactive & active domains"
msgstr "list inactive & active domains"
msgid "list inactive domains"
msgstr "list inactive domains"
msgid "missing \""
msgstr "missing \""
msgid "missing devices information"
msgstr "missing devices information"
#, c-format
msgid "missing devices information for %s"
msgstr "missing devices information for %s"
msgid "missing kernel information"
msgstr "missing kernel information"
msgid "missing operating system information"
msgstr "missing operating system information"
#, c-format
msgid "missing operating system information for %s"
msgstr "missing operating system information for %s"
msgid "missing root device information"
msgstr "missing root device information"
#, c-format
msgid "missing root device information in %s"
msgstr "missing root device information in %s"
msgid "missing source information for device"
msgstr "missing source information for device"
#, c-format
msgid "missing source information for device %s"
msgstr "missing source information for device %s"
msgid "missing target information for device"
msgstr "missing target information for device"
#, c-format
msgid "missing target information for device %s"
msgstr "missing target information for device %s"
msgid "name of the inactive domain"
msgstr "name of the inactive domain"
msgid "no state"
msgstr "no state"
msgid "no valid connection"
msgstr "no valid connection"
msgid "node information"
msgstr "node information"
msgid "number"
msgstr "number"
msgid "number of virtual CPUs"
msgstr "number of virtual CPUs"
msgid "offline"
msgstr "offline"
msgid "operation failed"
msgstr "operation failed"
#, c-format
msgid "operation failed: %s"
msgstr "operation failed: %s"
msgid "operation forbidden for read only access"
msgstr "operation forbidden for read only access"
msgid "out of memory"
msgstr "out of memory"
msgid "parser error"
msgstr "parser error"
msgid "paused"
msgstr "paused"
msgid "print help"
msgstr "print help"
msgid "quit this interactive terminal"
msgstr "quit this interactive terminal"
msgid "read-only connection"
msgstr "read-only connection"
msgid "reboot a domain"
msgstr "reboot a domain"
msgid "restore a domain from a saved state in a file"
msgstr "restore a domain from a saved state in a file"
msgid "resume a domain"
msgstr "resume a domain"
msgid "running"
msgstr "running"
msgid "save a domain state to a file"
msgstr "save a domain state to a file"
msgid "show version"
msgstr "show version"
msgid "shut off"
msgstr "shut off"
msgid "start a (previously defined) inactive domain"
msgstr "start a (previously defined) inactive domain"
msgid "string"
msgstr "string"
msgid "suspend a domain"
msgstr "suspend a domain"
msgid "the state to restore"
msgstr "the state to restore"
msgid "this domain exists already"
msgstr "this domain exists already"
msgid "too many drivers registered"
msgstr "too many drivers registered"
#, c-format
msgid "too many drivers registered in %s"
msgstr "too many drivers registered in %s"
#, c-format
msgid "unexpected data '%s'"
msgstr "unexpected data '%s'"
msgid "unknown OS type"
msgstr "unknown OS type"
#, c-format
msgid "unknown OS type %s"
msgstr "unknown OS type %s"
#, c-format
msgid "unknown command: '%s'"
msgstr "unknown command: '%s'"
msgid "unknown host"
msgstr "unknown host"
#, c-format
msgid "unknown host %s"
msgstr "unknown host %s"
#, c-format
msgid "unsupported option '-%c'. See --help."
msgstr "unsupported option '-%c'. See --help."
msgid "unterminated number"
msgstr "unterminated number"
msgid "unterminated string"
msgstr "unterminated string"
msgid "vcpu number"
msgstr "vcpu number"
msgid "warning"
msgstr "warning"
msgid "where to dump the core"
msgstr "where to dump the core"
msgid "where to save the data"
msgstr "where to save the data"

View File

@@ -19,7 +19,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2015-02-23 12:39-0500\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Hindi (http://www.transifex.com/projects/p/fedora/language/"
@@ -194,10 +194,6 @@ msgstr "भंडारण"
msgid " block_io_throttle reply was missing device list"
msgstr "block_io_throttle उत्तर डिवाइस सूची गुम "
#, c-format
msgid "%d status from xen daemon: %s:%s"
msgstr "%d स्थिति को xen डेमॉन से: %s:%s"
#, c-format
msgid "%s\n"
msgstr "%s\n"
@@ -298,10 +294,6 @@ msgstr "%s: लॉग फाइल लिखने में विफल: %s"
msgid "%s: initialization failed\n"
msgstr "%s: आरंभीकरण असफल\n"
#, c-format
msgid "%s: invalid path"
msgstr "%s: अवैध पथ"
#, c-format
msgid ""
"%s: temporary filename contains shell meta or other unacceptable characters "
@@ -339,9 +331,6 @@ msgstr "'फर्श' विशेषता केवल <inbound> तत्व
msgid "'info blockstats' not supported by this qemu"
msgstr "'info blockstats' इस qemu के द्वारा समर्थित नहीं"
msgid "'multifunction=on' is not supported with this QEMU binary"
msgstr "'multifunction=on' स QEMU द्विपदीय के साथ समर्थित नहीं है"
msgid "'peak' and 'burst' require 'average' attribute"
msgstr "'शिखर' और 'फट' 'औसत' विशेषता की आवश्यकता"
@@ -886,10 +875,6 @@ msgstr "%s नहीं ढूंढ़ सकता है - संभवतः
msgid "Cannot find CPU model with PVR 0x%08x"
msgstr "पीवीआर 0x%08x के साथ सीपीयू मॉडल नहीं खोज सके"
#, c-format
msgid "Cannot find QEMU binary %s"
msgstr "QEMU द्विपदीय %s को नहीं ढूंढ़ सकता है"
#, c-format
msgid "Cannot find UML kernel %s"
msgstr "UML कर्नेल %s नहीं ढूंढ़ सकता है"
@@ -911,9 +896,6 @@ msgid ""
"elements: %s"
msgstr "unresolvable चर या अनुपलब्ध सूची तत्वों के कारण फ़िल्टर इन्स्तांत नहीं कर सकते: %s"
msgid "Cannot modify live config if domain is inactive"
msgstr "लाइव कॉन्फिग को बदल नहीं सकता है यदि डोमेन अक्रिय है"
#, c-format
msgid "Cannot mount filesystem type %s"
msgstr "filesystem प्रकार %s माउंट नहीं कर सका "
@@ -1087,10 +1069,6 @@ msgstr "Virtio क्रम समानांतर/क्रमिक उप
msgid "Cannot write data"
msgstr "आँकड़ा नहीं लिख सकता"
#, c-format
msgid "Cap %s too big for destination"
msgstr "कैप %s गंतव्य के लिए काफी बड़ा है"
msgid "Capacity"
msgstr "क्षमता"
@@ -1814,14 +1792,6 @@ msgstr "निर्माण समय"
msgid "Creation of %s volumes is not supported"
msgstr "%s वॉल्यूम्स तैयार करना समर्थित नहीं है"
#, c-format
msgid "Credit scheduler cap parameter (%d) is out of range (0-65534)"
msgstr "क्रेडिट नियोजक कैप पैरामीटर (%d) परिसर से बाहर है (0-65534)"
#, c-format
msgid "Credit scheduler weight parameter (%d) is out of range (1-65535)"
msgstr "क्रेडिट नियोजक भार पैरामीटर (%d) परिसर से बाहर है (1-65535)"
msgid "Current:"
msgstr "वर्तमान:"
@@ -2022,10 +1992,6 @@ msgstr "%s डोमेन को फिर रिबूट किया जा
msgid "Domain %s is being shutdown\n"
msgstr "डोमेन %s बंद हो रहा है\n"
#, c-format
msgid "Domain %s isn't running."
msgstr "डोमेन %s चल नहीं रहा है."
#, c-format
msgid "Domain %s marked as autostarted\n"
msgstr "%s डोमेन का स्वतः आरंभन चिह्न लग गया\n"
@@ -2209,12 +2175,6 @@ msgstr "%s के लिए उपयोक्तानाम दाखिल
msgid "Enter username for %s [%s]"
msgstr "%s [%s] के लिए उपयोक्तानाम दाखिल करें"
msgid "Error adding file to config cache"
msgstr "कान्फिग कैश में फाइल जोड़ने में त्रुटि"
msgid "Error adding file to config list"
msgstr "कॉन्फिग सूची में फाइल जोड़ने में त्रुटि"
msgid "Error creating initial configuration"
msgstr "आरंभिक विन्यास बनाने में त्रुटि"
@@ -2222,9 +2182,6 @@ msgstr "आरंभिक विन्यास बनाने में त
msgid "Error from child process creating '%s'"
msgstr "'%s' के लिए संतति प्रक्रिया निर्माण में त्रुटि"
msgid "Error looking up domain"
msgstr "त्रुटि जो डोमेन को देख रहा है"
#, c-format
msgid "Error opening file %s"
msgstr "फ़ाइल %s खोलने में त्रुटि"
@@ -2645,9 +2602,6 @@ msgstr "मामूली संख्या %s पाने में वि
msgid "Failed to get UUID of created secret"
msgstr "किसी बनाए गए गुप्त के UUID को पाने में विफल"
msgid "Failed to get a scheduler name"
msgstr "निजोयक नाम पाने में विफल"
#, c-format
msgid "Failed to get block stats %s %s"
msgstr "%s %s ब्लॉक स्थिति पाने में विफल"
@@ -2934,9 +2888,6 @@ msgstr "libxenlight के साथ डोमेन '%d' रिबूट कर
msgid "Failed to reconnect to the hypervisor"
msgstr "हाइपरविजर में फिर कनेक्ट करने में विफल"
msgid "Failed to redefine sexpr"
msgstr "sexpr फिर परिभाषित करने में विफल"
#, c-format
msgid "Failed to refresh pool %s"
msgstr "%s पुल ताजा करने में विफल"
@@ -3638,9 +3589,6 @@ msgstr ""
msgid "Invalid parameter"
msgstr "अवैध पैरामीटर"
msgid "Invalid parameter count"
msgstr "अवैध पैरामीटर गिनती"
msgid "Invalid parameter to virXPathBoolean()"
msgstr "virXPathBoolean() में अवैध पैरामीटर"
@@ -4247,9 +4195,6 @@ msgstr "नाम या सेवा ज्ञात नहीं है"
msgid "Name:"
msgstr "नाम:"
msgid "Named device aliases are not supported"
msgstr "नामित युक्ति एलियास समर्थित नहीं हैं"
#, c-format
msgid "Network %s created from %s\n"
msgstr "%s संजाल को %s बनाया गया\n"
@@ -4504,10 +4449,6 @@ msgstr "केवल 'credit' विवरक समर्थित है"
msgid "Only PCI device addresses with function=0 are supported"
msgstr "केवल PCI युक्ति पता को प्रकार्य=0 के साथ समर्थित है"
msgid ""
"Only PCI device addresses with function=0 are supported with this QEMU binary"
msgstr "इस QEMU द्विपदीय के साथ केवल PCI युक्ति पता को प्रकार्य=0 के साथ समर्थित है"
msgid "Only PTY console types are supported"
msgstr "सिर्फ PTY कंसोल प्रकार ही समर्थित"
@@ -5726,13 +5667,6 @@ msgstr "पूर्व बैकस्लैश"
msgid "Transition started"
msgstr "संक्रमण शुरू हो गया "
#, c-format
msgid ""
"Transport '%s' in URI scheme is not supported, try again without the "
"transport part"
msgstr ""
"URI योजना में परिवहन '%s' का समर्थन नहीं है ,परिवहन पार्ट के बिना फिर से कोशिश करे "
#, c-format
msgid "Transport error during %s: %s (%d)"
msgstr "परिवहन त्रुटि %s के दौरान: %s (%d)"
@@ -5859,9 +5793,6 @@ msgstr "blkid लाइब्रेरी के साथ युक्ति %s
msgid "Unable to attach %s to loop device"
msgstr "%s जोड़ने में असमर्थ लूप युक्ति को "
msgid "Unable to attach network devices without vlan"
msgstr "बिना vlan के संजाल युक्ति जोड़ने में विफल"
msgid "Unable to become session leader"
msgstr "सत्र लीडर बनने में असमर्थ"
@@ -6286,10 +6217,6 @@ msgstr "अप्रत्याशित HTTP अनुक्रिया %s
msgid "Unexpected JSON reply '%s'"
msgstr "अप्रत्याशित JSON जवाब '%s'"
#, c-format
msgid "Unexpected LXC URI path '%s', try lxc:///"
msgstr "अप्रत्याशित LXC URI पथ '%s', try lxc:///"
msgid "Unexpected QEMU agent still active during domain deletion"
msgstr "डोमेन हटाने के दौरान अवि तक अप्रत्याशित QEMU प्रतिनिधि अभी तक सक्रिय "
@@ -6479,9 +6406,6 @@ msgstr "अज्ञात रिलीज: %s"
msgid "Unknown return code"
msgstr "अज्ञात रिटर्न कोड"
msgid "Unknown scheduler"
msgstr "अज्ञात नियोजक"
#, c-format
msgid "Unknown source mode '%s'"
msgstr "अज्ञात स्रोत मोड '%s'"
@@ -6711,10 +6635,6 @@ msgstr "वाल्यूम '%s' जनक पूल स्रोत युक
msgid "WARN"
msgstr "चेतावनी"
#, c-format
msgid "Weight %s too big for destination"
msgstr "भार %s गंतव्य के लिए काफी बड़ा है"
#, c-format
msgid ""
"Welcome to %s, the virtualization interactive terminal.\n"
@@ -6839,16 +6759,6 @@ msgstr ""
msgid "adding %s device failed: %s"
msgstr "%s युक्ति विफल रहा: %s"
msgid "adding watch @introduceDomain"
msgstr "@introduceDomain पर निगरानी जोड़ रहा है"
msgid "adding watch @releaseDomain"
msgstr "@releaseDomain पर निगरानी जोड़ रहा है"
#, c-format
msgid "adding watch on %s"
msgstr "%s पर वाच नहीं जोड़ सकता है"
#, c-format
msgid "address type='%s' not supported in hostdev interfaces"
msgstr "address type='%s' समर्थित नहीं है hostdev अंतरफलक में"
@@ -6892,10 +6802,6 @@ msgstr "वितर्क कुंजी '%s' काफी छोटा है
msgid "argument key '%s' must not have null value"
msgstr "वितर्क कुंजी '%s' का मान रिक्त नहीं होना चाहिए"
#, c-format
msgid "argument out of range: %d"
msgstr "आर्गुमेंट सीमा से बाहर: %d"
msgid "attach device from an XML file"
msgstr "XML फाइल से युक्ति जोड़ें"
@@ -6955,9 +6861,6 @@ msgstr "blkio cgroup आरोहित नही है "
msgid "block"
msgstr "ब्लॉक"
msgid "block I/O throttling not supported with this QEMU binary"
msgstr "ब्लॉक i/O थ्रॉटलिंग इस QEMU द्विपदीय के साथ समर्थित नहीं है"
msgid "block copy is not supported with this QEMU binary"
msgstr "इस QEMU द्विपदीय के साथ ब्लॉक कॉपी समर्थित नहीं है"
@@ -7086,15 +6989,6 @@ msgstr "cputune कोटा मान विश्लेषण नहीं क
msgid "can't parse cputune shares value"
msgstr "cputune साझा मान का विश्लेषण नहीं कर सकता है"
msgid "can't retrieve config entry for domain to overwrite"
msgstr "डोमेन के लिए विन्यास प्रविष्टि अधिलिखित करने के लिए नहीं पा सकता है"
msgid "can't retrieve config file for domain"
msgstr "डोमेन के लिए विन्यास फाइल प्राप्त नहीं कर सकता है"
msgid "can't retrieve config filename for domain to overwrite"
msgstr "डोमेन के लिए विन्यास फाइलनाम अधिलिखित करने के लिए नहीं पा सकता है"
#, c-format
msgid "can't update '%s' section of network '%s'"
msgstr "'%s' खंड का अद्यतन नहीं कर सकता है '%s' संजाल के"
@@ -7363,9 +7257,6 @@ msgstr "वर्ण युक्ति %s नहीं मिल सकता
msgid "cannot find console device '%s'"
msgstr "कंसोल युक्ति '%s' ढूँढ़ नहीं सकता है"
msgid "cannot find default console device"
msgstr "डिफ़ॉल्ट कंसोल युक्ति नहीं मिल सका"
#, c-format
msgid "cannot find init path '%s' relative to container root"
msgstr "कंटेनर रूट के सापेक्ष init पथ '% s' नहीं ढूँढ सकता"
@@ -7406,15 +7297,9 @@ msgstr "CPU एफीनिटी को प्रक्रिया %d पर
msgid "cannot get RSS for domain"
msgstr "डोमेन के लिए RSS नहीं पा सकता है"
msgid "cannot get VCPUs info"
msgstr "VCPUs सूचना नहीं पा सकता है"
msgid "cannot get current time"
msgstr "मौजूदा समय पा नहीं सकता है"
msgid "cannot get domain details"
msgstr "डोमेन विवरण नहीं पा सकता है"
#, c-format
msgid "cannot get file context of '%s'"
msgstr "'%s' का फाइल संदर्भ नहीं पा सकता है"
@@ -7435,9 +7320,6 @@ msgstr "होस्ट uuid नहीं मिल पाया "
msgid "cannot get the path of MEMORY cgroup controller"
msgstr "मेमोरी cgroup नियंत्रक का का रास्ता नहीं मिल सकता है"
msgid "cannot get time of day"
msgstr "दिन का समय नहीं पा सकता है"
msgid "cannot get vCPU placement & pCPU time"
msgstr "vCPU स्थापन व pCPU समय नहीं पा सकता है"
@@ -7793,10 +7675,6 @@ msgstr "निर्देशिका %s नहीं पढ़ सकता
msgid "cannot read domain image '%s'"
msgstr "'%s' डोमेन छवि नहीं पढ़ सकता है"
#, c-format
msgid "cannot read file %s"
msgstr "%s फ़ाइल नहीं पढ़ सकता है"
msgid "cannot read from stream"
msgstr "स्ट्रीम से पढ़ नहीं सका"
@@ -7930,10 +7808,6 @@ msgstr "fd %d स्टेट नहीं कर सकता है"
msgid "cannot stat file '%s'"
msgstr "फाइल '%s' स्टैट नहीं कर सकता है"
#, c-format
msgid "cannot stat: %s"
msgstr "स्टेट नहीं कर सकता है: %s"
#, c-format
msgid "cannot statvfs path '%s'"
msgstr "पथ '%s' statvfs नहीं कर सकता है"
@@ -8102,9 +7976,6 @@ msgstr "फाइल वाक्य रचना त्रुटि विन
msgid "conflicting occurrences of kvmclock feature"
msgstr "kvmclock सुविधा के विरोधाभासी आवृत्तियाँ"
msgid "conn, or private data is NULL"
msgstr "conn, या निजी आंकड़ा रिक्त है"
msgid "connect to the guest console"
msgstr "अतिथि कंसोल में जुड़ें"
@@ -8145,9 +8016,6 @@ msgstr "अंतरफलक MAC पता अंतरफलक नाम म
msgid "convert an interface name to interface MAC address"
msgstr "अंतरफलक MAC पता अंतरफलक नाम में बदलें"
msgid "copy_on_read is not supported by this QEMU binary"
msgstr "copy_on_read इस QEMU द्विपदीय के साथ समर्थित नहीं है"
msgid "could not allocate memory"
msgstr "स्मृति आवंटित नहीं कर सका"
@@ -8249,9 +8117,6 @@ msgstr "तर्क पार्स नहीं कर सका"
msgid "could not parse weight %s"
msgstr "%s भार का विश्लेषण नहीं कर सका"
msgid "could not read CPU flags"
msgstr "CPU फ्लैग नहीं पढ़ सका"
msgid "could not read xml file"
msgstr "xml फ़ाइल को पढ़ने नहीं सका"
@@ -8563,9 +8428,6 @@ msgstr "डिस्क '%s' स्नेपशॉट मोड '%s' का उ
msgid "disk '%s' specified twice"
msgstr "डिस्क '%s' दो बार निर्दिष्ट किया है"
msgid "disk aio mode not supported with this QEMU binary"
msgstr "डिस्क aio मोड इस QEMU द्विपदीय के साथ समर्थित नहीं है"
#, c-format
msgid "disk bus '%s' cannot be hot unplugged."
msgstr "डिस्क बस '%s' को हॉट प्लग नहीं किया जा सकता है."
@@ -8578,12 +8440,6 @@ msgstr "डिस्क बस '%s' को हॉटप्लग नहीं
msgid "disk bus '%s' cannot be updated."
msgstr "डिस्क बस '%s' को अपडेट नहीं किया जा सकता है."
msgid "disk cache mode 'directsync' is not supported by this QEMU"
msgstr "डिस्क कैचे मोड 'directsync' इस QEMU के द्वारा समर्थित नहीं"
msgid "disk cache mode 'unsafe' is not supported by this QEMU"
msgstr "डिस्क कैचे मोड 'unsafe' इस QEMU के द्वारा समर्थित नहीं"
#, c-format
msgid "disk device type '%s' cannot be detached"
msgstr "डिस्क युक्ति प्रकार '%s' अलग नहीं किया जा सकता है"
@@ -8713,33 +8569,18 @@ msgstr "XML में डोमेन सूचना"
msgid "domain information incomplete, missing HVM loader"
msgstr "डोमेन सूचना अपूर्ण, गुम HVM लोडर"
msgid "domain information incomplete, missing cpu_cap"
msgstr "डोमेन सूचना अपूर्ण, गुम cpu_cap"
msgid "domain information incomplete, missing cpu_weight"
msgstr "डोमेन सूचना अपूर्ण, गुम cpu_weight"
msgid "domain information incomplete, missing domid"
msgstr "डोमेन सूचना अपूर्ण, गुम domid"
msgid "domain information incomplete, missing kernel & bootloader"
msgstr "डोमेन सूचना अपूर्ण, गुम कर्नेल और बूटलोडर"
msgid "domain information incomplete, missing name"
msgstr "डोमेन सूचना अपूर्ण, गुम नाम"
msgid "domain information incomplete, missing uuid"
msgstr "डोमेन सूचना अपूर्ण, गुम uuid"
msgid "domain information incomplete, vbd has no dev"
msgstr "डोमेन सूचना अपूर्ण, vbd के पास कोई dev नहीं"
msgid "domain information incomplete, vbd has no src"
msgstr "डोमेन सूचना अपूर्ण, vbd के पास कोई src नहीं"
msgid "domain information incorrect domid not numeric"
msgstr "डोमेन सूचना गलत domid सांख्यिक नहीं"
msgid "domain is already running"
msgstr "डोमेन पहले से चल रहा है"
@@ -8773,9 +8614,6 @@ msgstr "डोमेन नाम या uuid"
msgid "domain name, id or uuid"
msgstr "डोमेन नाम, id या uuid"
msgid "domain not active"
msgstr "डोमेन सक्रिय नहीं है "
msgid "domain save job"
msgstr "डोमेन कार्य सहेजें"
@@ -8788,9 +8626,6 @@ msgstr "डोमेन प्रकार"
msgid "domain vcpu counts"
msgstr "डोमेन vcpu सूचना"
msgid "domainBlockPeek is not supported for dom0"
msgstr "domainBlockPeek को dom0 के लिए समर्थन नहीं दिया जाता है"
msgid "domainMigratePrepare did not set uri"
msgstr "domainMigratePrepare ने uri सेट नहीं किया"
@@ -9004,9 +8839,6 @@ msgstr "क्षमता लागू करने में विफल: %d"
msgid "failed to begin transaction: %s%s%s"
msgstr "ट्रांजेक्शन शुरू करने में विफल: %s%s%s"
msgid "failed to build sexpr"
msgstr "sexpr तैयार करने में विफल"
msgid "failed to close file"
msgstr "फ़ाइल बन्द करने में असफल"
@@ -9017,18 +8849,12 @@ msgstr "बंद करने या प्रोफाइल के लिए
msgid "failed to commit transaction: %s%s%s"
msgstr "ट्रांजेक्शन कमिट करने में विफल: %s%s%s"
msgid "failed to connect to Xen Store"
msgstr "Xen भंडार में जुड़ने में विफल"
msgid "failed to connect to monitor socket"
msgstr "मॉनिटर सॉकेट से जुड़ने में विफल"
msgid "failed to connect to the hypervisor"
msgstr "हाइपरविजर में जुडने में विफल"
msgid "failed to connect to xend"
msgstr "xend से जुड़ने में विफल"
msgid "failed to copy security label"
msgstr "सुरक्षा स्तर नक़ल करने में विफल"
@@ -9040,9 +8866,6 @@ msgstr "%s बनाने में विफल"
msgid "failed to create (start) interface %s: %s%s%s"
msgstr "अंतराफलक %s बनाने (शुरू) करने में विफल: %s%s%s"
msgid "failed to create a socket"
msgstr "एक सॉकेट बनाने में विफल"
#, c-format
msgid "failed to create directory '%s'"
msgstr "निर्देशिका '%s' को बनाने में विफल"
@@ -9050,10 +8873,6 @@ msgstr "निर्देशिका '%s' को बनाने में व
msgid "failed to create include file"
msgstr "शामिल फाइल बनाने में विफल"
#, c-format
msgid "failed to create link %s to %s"
msgstr "कड़ी %s को %s में बनाने में विफल"
#, c-format
msgid "failed to create logfile %s"
msgstr "लॉग फाइल %s बनाने में विफल"
@@ -9194,10 +9013,6 @@ msgstr "%s मॉड्यूल को लोड करने में वि
msgid "failed to lookup interface with MAC address '%s'"
msgstr "मैक पते '%s' के साथ इंटरफेस देखने करने में विफल"
#, c-format
msgid "failed to lseek or read from file: %s"
msgstr "फाइल से lseek या पढ़ने में विफल: %s"
#, c-format
msgid "failed to mark network %s as autostarted"
msgstr "%s संजाल को स्वतः आरंभन चिह्नित करने में विफल"
@@ -9220,16 +9035,9 @@ msgstr "पढ़ने के लिये विन्यास खोलन
msgid "failed to open file"
msgstr "फाइल खोलने में विफल"
#, c-format
msgid "failed to open for reading: %s"
msgstr "पढ़ने के लिए खोलने में विफल: %s"
msgid "failed to open the log file. check the log file path"
msgstr "लॉग फाइल पाने में विफल. लॉग फाइल पथ जांचें"
msgid "failed to parse Xend domain information"
msgstr "Xend डोमेन सूचना विश्लेषण में विफल"
msgid "failed to parse configuration file"
msgstr "विन्यास फाइल के विश्लेषण में विफल"
@@ -9256,9 +9064,6 @@ msgstr "विन्यास फाइल पढ़ने में विफ
msgid "failed to read configuration file %s"
msgstr "%s विन्यास फाइल पढ़ने में विफल"
msgid "failed to read from Xen Daemon"
msgstr "Xen डेमॉन से पढ़ने में विफल"
msgid "failed to read libxl header"
msgstr "libxl हेडर पढ़ने में विफल"
@@ -9280,13 +9085,6 @@ msgstr "नमूना %s के साथ निर्मित अस्थ
msgid "failed to register udev interface driver"
msgstr "udev अंतरफलक ड्राइवर पंजीकृत करने में विफल"
#, c-format
msgid "failed to remove link %s"
msgstr "%s लिंक हटाने में विफल"
msgid "failed to remove old domain from config map"
msgstr "विन्यास मैन से पुराने डोमेन को हटाने में विफल"
#, c-format
msgid "failed to remove pool '%s'"
msgstr "'%s' पूल हटाने में विफल"
@@ -9372,9 +9170,6 @@ msgstr "फ़ाइल '%s' सहेजने के लिए डोमेन
msgid "failed to write the log file"
msgstr "लॉग फाइल लिखने में विफल"
msgid "failed to write to Xen Daemon"
msgstr "Xen डेमॉन को लिखने में विफल"
msgid "failed to write to profile"
msgstr "प्रोफाइल के लिए लिखने में विफल"
@@ -9429,12 +9224,6 @@ msgstr "XML में गुप्त विशेषता समाहित
msgid "filesystem is not of type 'template' or 'mount'"
msgstr "फ़ाइल सिस्टम 'template' या 'mount' प्रकार का नहीं है"
msgid "filesystem passthrough not supported by this QEMU"
msgstr "filesystem passthrough इस QEMU द्वारा समर्थित नहीं"
msgid "filesystem writeout not supported"
msgstr "filesystem writeout समर्थित नहीं "
msgid "filter has no name"
msgstr "फिल्टर का कोई नाम नहीं है"
@@ -9448,9 +9237,6 @@ msgstr "फिल्टर एक लूप को प्रस्तुत क
msgid "find potential storage pool sources"
msgstr "संभावित भंडारण पुल स्रोत ढूंढ़े"
msgid "finding dom on config list"
msgstr "dom को कान्फिग सूची पर ढूंढ़ रहा है"
msgid "flags parameter must be VIR_MEMORY_VIRTUAL or VIR_MEMORY_PHYSICAL"
msgstr ""
"फ्लैग पैरामीटर को VIR_MEMORY_VIRTUAL या VIR_MEMORY_PHYSICAL जरूर होना चाहिए"
@@ -9582,17 +9368,10 @@ msgid ""
msgstr ""
"गंतव्य पर होस्टनाम लोकलहोस्ट करने के लिए हल है, लेकिन उत्प्रवासन एक FQDN की आवश्यकता है"
msgid "hotplug of device type not supported"
msgstr "युक्ति प्रकार का हॉटप्लग प्रकार समर्थित नहीं"
#, c-format
msgid "hub type %s not supported"
msgstr "हब प्रकार %s समर्थित नहीं"
#, c-format
msgid "hugepage backing not supported by '%s'"
msgstr "hugepage बैकिंग को '%s' के द्वारा समर्थित नहीं किया गया है"
msgid "hypervisor connection URI"
msgstr "हाइपरविजर कनेक्शन URI"
@@ -9664,9 +9443,6 @@ msgstr "सूचना प्रवास उत्तर में वाप
msgid "init binary must be specified"
msgstr "init द्विपदीय को निर्दिष्ट करना अनिवार्य है"
msgid "initializing inotify"
msgstr "inotify आरंभीकृत कर रहा है"
#, c-format
msgid "input too large: %d * %d"
msgstr "बहुत बड़ा इनपुट: %d * %d"
@@ -10249,9 +10025,6 @@ msgstr "लॉक प्रबंधक कनेक्शन प्रतिब
msgid "lock owner details have not been registered"
msgstr "लॉक स्वामी विवरण पंजीकृत नहीं किया गया है"
msgid "looking up dom"
msgstr "dom के लिए देख रहा है"
msgid "lxc state driver is not active"
msgstr "lxc स्थिति ड्राइवर सक्रिय नहीं है"
@@ -10932,10 +10705,6 @@ msgstr "कोई PCI स्लॉट ID जो '%s' के लिए दी ग
msgid "no PCI vendor ID supplied for '%s'"
msgstr "कोई PCI विक्रेता ID '%s' के लिए नहीं दी गई"
#, c-format
msgid "no QEMU URI path given, try %s"
msgstr "कोई QEMU URI पथ दिया हुआ नहीं है, आजमाएँ %s"
#, c-format
msgid "no SCSI LUN ID supplied for '%s'"
msgstr "कोई SCSI LUN ID को '%s' के लिए नहीं दिया गया"
@@ -10984,9 +10753,6 @@ msgstr "कोई USB उत्पाद ID को '%s' के लिए नह
msgid "no USB vendor ID supplied for '%s'"
msgstr "कोई USB विक्रेता ID को '%s' के लिए नहीं दिया गया"
msgid "no VirtualBox driver path specified (try vbox:///session)"
msgstr "कोई VirtualBox ड्राइवर पथ निर्दिष्ट नहीं (try vbox:///session)"
#, c-format
msgid "no WWNN supplied for '%s', and auto-generation failed"
msgstr "'%s' के लिए कोई WWNN की आपूर्ति नहीं, और स्वतः जनन विफल"
@@ -11057,9 +10823,6 @@ msgstr "कोई डोमेन विन्यास नहीं"
msgid "no domain snapshot with matching name '%s'"
msgstr "नाम '%s' से मेल खाते के साथ कोई डोमेन स्नैपशॉट नहीं "
msgid "no domain with matching id"
msgstr "मिलान id के साथ कोई डोमेन नहीं"
#, c-format
msgid "no domain with matching id %d"
msgstr "मिलान id %d के साथ कोई डोमेन नहीं"
@@ -11198,9 +10961,6 @@ msgstr "इस प्लैटफॉर्म पर नोड सूचना
msgid "node information"
msgstr "नोड सूचना"
msgid "node information incomplete, missing scheduler name"
msgstr "नोड सूचना अपूर्ण, गुम अनुसूचक नाम"
msgid "node memory stats not implemented on this platform"
msgstr "इस प्लैटफॉर्म पर नोड मेमोरी stats लागू नहीं है"
@@ -11249,9 +11009,6 @@ msgstr "ऑफ़लाइन प्रवास स्रोत होस्ट
msgid "ok"
msgstr "ठीक"
msgid "on_xend_start not present in sexpr"
msgstr "on_xend_start sexpr में मौजूद नहीं"
msgid "online commit not supported with this QEMU binary"
msgstr "इस QEMU द्विपदीय के साथ ऑनलाइन कमिट समर्थित नहीं है"
@@ -11339,10 +11096,6 @@ msgstr "%s का जनक %s चक्र बनाया होगा "
msgid "parser error"
msgstr "विश्लेषक त्रुटि"
#, c-format
msgid "parsing uuid %s"
msgstr "uuid %s विश्लेषित कर रहा है"
msgid "passthrough mode requires a character device type attribute"
msgstr "passthrough मोड को वर्ण युक्ति प्रकार विशेषता की जरुरत है"
@@ -11561,9 +11314,6 @@ msgstr "जागृत एफडी को पढ़ने में विफ
msgid "read-only connection"
msgstr "सिर्फ पठन के लिये कनेक्शन"
msgid "readonly filesystem is not supported by this QEMU binary"
msgstr "readonly filesystem इस QEMU द्विपदीय द्वारा समर्थित नहीं है"
msgid "reattach node device to its device driver"
msgstr "इसकी युक्ति ड्राइवर को नोड युक्ति से फिर जोड़ें"
@@ -11702,10 +11452,6 @@ msgstr "संजाल अंतरफलक ब्रिज करने म
msgid "scripts are not supported on interfaces of type %s"
msgstr "लिपियों प्रकार %s के अंतराफलक पर समर्थित नहीं है"
#, c-format
msgid "sdl not supported by '%s'"
msgstr "'%s' द्वारा sdl समर्थित नहीं"
#, c-format
msgid "secret '%s' does not have a value"
msgstr "गुप्त '%s' के पास कोई मान नहीं है"
@@ -11773,15 +11519,9 @@ msgstr "VNC कूटशब्द का सेट करना विफल"
msgid "setting disk password is not supported"
msgstr "डिस्क कूटशब्द की सेटिंग समर्थित नहीं है"
msgid "setting of link state not supported: Link is up"
msgstr "लिंक अवस्था की सेटिंग समर्थित नहीं: लिंक हो रहा है"
msgid "setting up HAL callbacks failed"
msgstr "HAL कॉलबैक का सेटअप विफल"
msgid "sexpr2string failed"
msgstr "sexpr2string विफल"
msgid "sgio is only supported for scsi host device"
msgstr "sgio केवल एससीएसआई होस्ट के युक्ति के लिए समर्थित है"
@@ -11900,9 +11640,6 @@ msgstr "spice zlib गायब संकुचन"
msgid "spicevmc device type only supports virtio"
msgstr "spicevmc उपकरण क़िस्म केवल virtio का समर्थन करता है"
msgid "spicevmc not supported in this QEMU binary"
msgstr "spicevmc इस QEMU द्विपदीय में समर्थित नहीं"
msgid "start a (previously defined) inactive domain"
msgstr "एक निष्क्रिय डोमेन (पहले से परिभाषित) आरंभ करें"
@@ -12033,10 +11770,6 @@ msgstr "लक्ष्य %s मौज़ूद नहीं है."
msgid "target %s:%d already exists"
msgstr "लक्ष्य %s:%d पहले से मौजूद"
#, c-format
msgid "target '%s' already exists"
msgstr "लक्ष्य '%s' पहले से मौजूद है"
msgid "target config data type format"
msgstr "लक्ष्य विन्यास आंकड़ा प्रकार प्रारूप"
@@ -12081,10 +11814,6 @@ msgstr ""
msgid "the MAC address '%s' matches multiple interfaces"
msgstr "मैक पते '%s' में कई इंटरफेस से मेल खाता है"
#, c-format
msgid "the QEMU binary %s does not support smbios settings"
msgstr "QEMU द्विपदीय %s smbios सेटिंग का समर्थन नहीं करता है"
msgid "the default lockspace already exists"
msgstr "डिफ़ॉल्ट lockspace पहले से मौजूद है"
@@ -12186,9 +11915,6 @@ msgstr "यह संजाल पहले से मौजूद है"
msgid "this platform is missing dlopen"
msgstr "इस मंच से dlopen गुम है"
msgid "this qemu binary requires libvirt to be compiled with yajl"
msgstr " इस qemu द्विपदिय libvirt को संकलित करने की आवश्यकता है yajl के साथ"
#, c-format
msgid "too many NUMA cells: %d > %d"
msgstr "कई NUMA सेल: %d > %d"
@@ -12210,9 +11936,6 @@ msgstr "कई स्मृति स्टैट आग्रहित: %d > %d
msgid "too many secrets for qcow encryption"
msgstr "qcow गोपन के लिए कई गुप्त"
msgid "topology syntax error"
msgstr "टोपोलॉजी वाक्य रचना त्रुटि"
msgid "total and read/write bytes_sec cannot be set at the same time"
msgstr "कुल और read/write bytes_sec एक ही समय में सेट नहीं किया जा सकता है"
@@ -12321,10 +12044,6 @@ msgstr "गर्तिका सुरक्षा संदर्भ '%s' स
msgid "unable to close %s"
msgstr "%s बन्द करने में अक्षम"
#, c-format
msgid "unable to connect to '%s:%s'"
msgstr "'%s:%s' में कनेक्ट करने में असमर्थ"
#, c-format
msgid "unable to connect to server at '%s:%s'"
msgstr "'%s:%s' सर्वर से जुड़ने में असमर्थ"
@@ -12351,9 +12070,6 @@ msgstr ""
msgid "unable to determine array size"
msgstr "सरणी का आकार निर्धारित करने में असमर्थ"
msgid "unable to determine original VLAN"
msgstr "मौलिक VLAN निर्धारित करने में विफल"
#, c-format
msgid "unable to execute QEMU command '%s'"
msgstr "QEMU कमांड '%s' के निष्पादन में असमर्थ"
@@ -12373,9 +12089,6 @@ msgstr "सुरक्षा संदर्भ %d सेट करने म
msgid "unable to get current process context '%s'"
msgstr "मौजूदा प्रक्रिया के संदर्भ '%s' को प्राप्त करने में असमर्थ"
msgid "unable to get current time"
msgstr "मौजूदा नाम पाने में असमर्थ"
msgid "unable to handle disk requests in snapshot"
msgstr "स्नैपशॉट में डिस्क अनुरोध नियंत्रित करने में असमर्थ"
@@ -12412,10 +12125,6 @@ msgstr "सर्वर cert %s को पढ़ने में असमर्
msgid "unable to register monitor events"
msgstr "मॉनिटर घटना पंजीकृत करने में असमर्थ"
#, c-format
msgid "unable to resolve hostname '%s': %s"
msgstr "'%s' होस्टनेम का समाधान नहीं कर सका: %s"
#, c-format
msgid "unable to send file handle '%s': %s"
msgstr "फ़ाइल नियंत्रण '%s' भेजने में असमर्थ: %s"
@@ -12448,9 +12157,6 @@ msgstr "tty गुण सेट करने में असमर्थ: %s"
msgid "unable to stat for disk %s: %s"
msgstr "डिस्क %s के लिए स्टेट करने में असमर्थ: %s"
msgid "unable to store config file handle"
msgstr "विन्यास फाइल नियंत्रण जमा करने में असमर्थ"
msgid "unable to unload already unloaded profile"
msgstr "पहले से ही अनलोड किये गयें प्रोफाइल को खाली करने में असमर्थ"
@@ -12503,10 +12209,6 @@ msgstr "अप्रत्याशित UML URI path '%s', try uml:///session"
msgid "unexpected UML URI path '%s', try uml:///system"
msgstr "अप्रत्याशित UML URI path '%s', try uml:///system"
#, c-format
msgid "unexpected Xen URI path '%s', try xen:///"
msgstr "अप्रत्याशित Xen URI path '%s', आजमाएँ xen:///"
#, c-format
msgid "unexpected accessmode %d"
msgstr "अप्रत्याशित डिस्क कैश मोड %d"
@@ -12759,9 +12461,6 @@ msgstr "on_poweroff के लिए %s अप्रत्याशित मा
msgid "unexpected value %s for on_reboot"
msgstr "on_reboot के लिए %s अप्रत्याशित मान"
msgid "unexpected value from on_xend_start"
msgstr "on_xend_start से अप्रत्याशित मान"
#, c-format
msgid "unexpected video model %d"
msgstr "अप्रत्याशित वीडियो मॉडल %d"
@@ -13402,9 +13101,6 @@ msgstr "असमर्थित कंसोल लक्ष्य प्रक
msgid "unsupported data type '%c' for arg '%s'"
msgstr "असमर्थित डेटा प्रकार '%c' '%s' के लिए तर्क"
msgid "unsupported device type"
msgstr "असमर्थित युक्ति प्रकार"
#, c-format
msgid "unsupported device type in network %s interface pool"
msgstr "संजाल %s अंतरफलक पूल में असमर्थित युक्ति प्रकार"
@@ -13461,9 +13157,6 @@ msgstr "असमर्थित फ्लैग्स: (0x%x)"
msgid "unsupported graphics type '%s'"
msgstr "असमर्थित ग्राफिक्स प्रकार '%s'"
msgid "unsupported in dom interface < 5"
msgstr "dom अंतरफलक में असमर्थित < 5 "
#, c-format
msgid "unsupported input bus %s"
msgstr "असमर्थित इनपुट बस %s"
@@ -13495,10 +13188,6 @@ msgstr "असमर्थित प्रोटोकॉल परिवार
msgid "unsupported protocol type %s"
msgstr "असमर्थित प्रोटोकॉल प्रकार %s"
#, c-format
msgid "unsupported rtc tickpolicy '%s'"
msgstr "असमर्थित rtc tickpolicy '%s'"
#, c-format
msgid "unsupported rtc timer tickpolicy '%s'"
msgstr "असमर्थित rtc टाइमर tickpolicy '%s'"
@@ -13625,9 +13314,6 @@ msgstr "virDomainSaveImageGetXMLDesc सुरक्षित फ्लैग
msgid "virDomainSnapshotGetXMLDesc with secure flag"
msgstr "virDomainSnapshotGetXMLDesc सुरक्षित फ्लैग के साथ"
msgid "virHashLookup"
msgstr "virHashLookup"
msgid "virInterfaceDefFormat NULL def"
msgstr "virInterfaceDefFormat NULL def"
@@ -13678,9 +13364,6 @@ msgstr "आयतन प्रयोग निर्दिष्ट नहीं
msgid "warning"
msgstr "चेतावनी"
msgid "watch already tracked"
msgstr "पहले से ट्रैक किए को देखें"
msgid "watchdog"
msgstr "प्रहरी"
@@ -13707,49 +13390,6 @@ msgstr "write: %s: अस्थायी फ़ाइल में लिखन
msgid "xen bus does not support %s input device"
msgstr "xen बस %s इनपुट युक्ति का समर्थन नहीं करता है"
msgid ""
"xenDaemonDomainMigrate: Xen does not support bandwidth limits during "
"migration"
msgstr ""
"xenDaemonDomainMigrate: Xen बैंडविड्थ सीमा को उत्प्रवासन के दौरान समर्थन नहीं करता है"
msgid ""
"xenDaemonDomainMigrate: Xen does not support renaming domains during "
"migration"
msgstr ""
"xenDaemonDomainMigrate: Xen बचे डोमेन को उत्प्रवासन के दौरान समर्थन नहीं करता है"
msgid "xenDaemonDomainMigrate: a hostname must be specified in the URI"
msgstr ""
"xenDaemonDomainMigrate: एक होस्टनेम को जरूर URI में जरूर निर्दिष्ट किया जाना चाहिए"
msgid "xenDaemonDomainMigrate: invalid port number"
msgstr "xenDaemonDomainMigrate: अवैध पोर्ट संख्या"
msgid "xenDaemonDomainMigrate: only xenmigr:// migrations are supported by Xen"
msgstr ""
"xenDaemonDomainMigrate: सिर्फ xenmigr:// migrations को Xen के द्वारा समर्थित "
"किया जाता है"
msgid "xenDaemonDomainMigrate: unsupported flag"
msgstr "xenDaemonDomainMigrate: असमर्थित झंडा"
msgid "xenDaemonDomainMigrate: xend cannot migrate paused domains"
msgstr "xenDaemonDomainMigrate: xend रुके डोमेन को उत्प्रवासित नहीं कर सकता है"
msgid "xenDaemonGetAutostart failed to find this domain"
msgstr "xenDaemonGetAutostart इस डोमेन को पाने में विफल"
msgid "xenDaemonSetAutostart failed to find this domain"
msgstr "xenDaemonSetAutostart इस डोमेन को पाने में विफल"
msgid "xenXMConfigCacheRefresh: virHashAddEntry"
msgstr "xenXMConfigCacheRefresh: virHashAddEntry"
#, c-format
msgid "xend_post: error from xen daemon: %s"
msgstr "xend_post: xen डेमान से त्रुटि: %s"
msgid "xml data file to export from"
msgstr "xml आंकड़ा फाइल जिससे निर्यात करना है"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Croatian\n"

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2015-02-27 04:56-0500\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Hungarian (http://www.transifex.com/projects/p/fedora/"
@@ -550,9 +550,6 @@ msgstr "tartományinformáció"
msgid "domain information in XML"
msgstr "tartományinformáció XML-ben"
msgid "domain information incomplete, missing domid"
msgstr "a tartományinformáció nem teljes - hiányzik a domid"
msgid "domain information incomplete, missing kernel & bootloader"
msgstr ""
"a tartományinformáció nem teljes - hiányzik a rendszermag és a rendszerindító"
@@ -560,18 +557,12 @@ msgstr ""
msgid "domain information incomplete, missing name"
msgstr "a tartományinformáció nem teljes - hiányzik a név"
msgid "domain information incomplete, missing uuid"
msgstr "a tartományinformáció nem teljes - hiányzik az uuid"
msgid "domain information incomplete, vbd has no dev"
msgstr "a tartományinformáció nem teljes - vbd nem rendelkezik eszközzel (dev)"
msgid "domain information incomplete, vbd has no src"
msgstr "a tartományinformáció nem teljes - vbd nem rendelkezik forrással"
msgid "domain information incorrect domid not numeric"
msgstr "a tartományinformáció helytelen - a domid nem numerikus"
msgid "domain name or uuid"
msgstr "tartománynév vagy uuid"
@@ -609,9 +600,6 @@ msgstr "egy érték várása"
msgid "expecting an assignment"
msgstr "egy hozzárendelés várása"
msgid "failed to connect to Xen Store"
msgstr "nem sikerült csatlakozni a Xen-tárolóhoz"
msgid "failed to connect to the hypervisor"
msgstr "nem sikerült csatlakozni a felügyelőhöz"
@@ -658,9 +646,6 @@ msgstr "nem sikerült olvasásra megnyitni a beállítási fájlt"
msgid "failed to open file"
msgstr "a fájl megnyitása nem sikerült"
msgid "failed to parse Xend domain information"
msgstr "Xend-tartományinformáció értelmezése nem sikerült"
msgid "failed to parse configuration file"
msgstr "nem sikerült értelmezni a beállítási fájlt"
@@ -675,9 +660,6 @@ msgstr "nem sikerült olvasni a beállítási fájlt"
msgid "failed to read configuration file %s"
msgstr "nem sikerült olvasni a(z) %s beállítási fájlt"
msgid "failed to read from Xen Daemon"
msgstr "nem sikerült olvasni a Xen-szolgáltatásból"
msgid "failed to save content"
msgstr "a tartalom mentése nem sikerült"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Interlingua\n"

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2015-02-27 05:03-0500\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Indonesian (http://www.transifex.com/projects/p/libvirt/"
@@ -414,15 +414,9 @@ msgstr "informasi domain"
msgid "domain information in XML"
msgstr "informasi domain di XML"
msgid "domain information incomplete, missing domid"
msgstr "informasi domain tidak lengkap, domid tidak ada"
msgid "domain information incomplete, missing name"
msgstr "informasi domain tidak lengkap, name tidak ada"
msgid "domain information incomplete, missing uuid"
msgstr "informasi domain tidak lengkap, uuid tidak ada"
msgid "domain information incomplete, vbd has no dev"
msgstr "informasi domain tidak lengkap, vbd tidak memiliki dev"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Iloko\n"

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"PO-Revision-Date: 2015-02-27 04:59-0500\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2018-04-24 06:27-0400\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Icelandic (http://www.transifex.com/projects/p/fedora/"
"language/is/)\n"
@@ -19,742 +19,3 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.9.6\n"
msgid ""
"\n"
" DESCRIPTION\n"
msgstr ""
"\n"
" DESCRIPTION\n"
msgid ""
"\n"
" OPTIONS\n"
msgstr ""
"\n"
" OPTIONS\n"
#, c-format
msgid ""
"\n"
"(Time: %.3f ms)\n"
"\n"
msgstr ""
"\n"
"(Time: %.3f ms)\n"
"\n"
msgid " NAME\n"
msgstr " NAME\n"
#, c-format
msgid "%s: %d: failed to allocate %d bytes"
msgstr "%s: %d: failed to allocate %d bytes"
msgid "(re)connect to hypervisor"
msgstr "(re)connect to hypervisor"
#, c-format
msgid "--%s <number>"
msgstr "--%s <number>"
#, c-format
msgid "--%s <string>"
msgstr "--%s <string>"
msgid "CPU Affinity:"
msgstr "CPU Affinity:"
msgid "CPU frequency:"
msgstr "CPU frequency:"
msgid "CPU model:"
msgstr "CPU model:"
msgid "CPU socket(s):"
msgstr "CPU socket(s):"
msgid "CPU time:"
msgstr "CPU time:"
msgid "CPU(s):"
msgstr "CPU(s):"
msgid "CPU:"
msgstr "CPU:"
#, c-format
msgid "Cannot extract running %s hypervisor version\n"
msgstr "Cannot extract running %s hypervisor version\n"
msgid "Change the current memory allocation in the guest domain."
msgstr "Change the current memory allocation in the guest domain."
msgid "Change the maximum memory allocation limit in the guest domain."
msgstr "Change the maximum memory allocation limit in the guest domain."
msgid ""
"Connect to local hypervisor. This is built-in command after shell start up."
msgstr ""
"Connect to local hypervisor. This is built-in command after shell start up."
msgid "Core dump a domain."
msgstr "Core dump a domain."
msgid "Core(s) per socket:"
msgstr "Core(s) per socket:"
msgid "Create a domain."
msgstr "Create a domain."
msgid "Define a domain."
msgstr "Define a domain."
msgid "Display the system version information."
msgstr "Display the system version information."
#, c-format
msgid "Domain %s created from %s\n"
msgstr "Domain %s created from %s\n"
#, c-format
msgid "Domain %s defined from %s\n"
msgstr "Domain %s defined from %s\n"
#, c-format
msgid "Domain %s destroyed\n"
msgstr "Domain %s destroyed\n"
#, c-format
msgid "Domain %s has been undefined\n"
msgstr "Domain %s has been undefined\n"
#, c-format
msgid "Domain %s is being rebooted\n"
msgstr "Domain %s is being rebooted\n"
#, c-format
msgid "Domain %s is being shutdown\n"
msgstr "Domain %s is being shutdown\n"
#, c-format
msgid "Domain %s resumed\n"
msgstr "Domain %s resumed\n"
#, c-format
msgid "Domain %s started\n"
msgstr "Domain %s started\n"
#, c-format
msgid "Domain %s suspended\n"
msgstr "Domain %s suspended\n"
msgid "Domain is already active"
msgstr "Domain is already active"
#, c-format
msgid "Domain restored from %s\n"
msgstr "Domain restored from %s\n"
#, c-format
msgid "Failed to core dump domain %s to %s"
msgstr "Failed to core dump domain %s to %s"
#, c-format
msgid "Failed to create domain from %s"
msgstr "Failed to create domain from %s"
#, c-format
msgid "Failed to define domain from %s"
msgstr "Failed to define domain from %s"
#, c-format
msgid "Failed to destroy domain %s"
msgstr "Failed to destroy domain %s"
msgid "Failed to list active domains"
msgstr "Failed to list active domains"
msgid "Failed to list inactive domains"
msgstr "Failed to list inactive domains"
#, c-format
msgid "Failed to reboot domain %s"
msgstr "Failed to reboot domain %s"
#, c-format
msgid "Failed to restore domain from %s"
msgstr "Failed to restore domain from %s"
#, c-format
msgid "Failed to resume domain %s"
msgstr "Failed to resume domain %s"
#, c-format
msgid "Failed to save domain %s to %s"
msgstr "Failed to save domain %s to %s"
#, c-format
msgid "Failed to shutdown domain %s"
msgstr "Failed to shutdown domain %s"
#, c-format
msgid "Failed to start domain %s"
msgstr "Failed to start domain %s"
#, c-format
msgid "Failed to suspend domain %s"
msgstr "Failed to suspend domain %s"
#, c-format
msgid "Failed to undefine domain %s"
msgstr "Failed to undefine domain %s"
msgid "GET operation failed"
msgstr "GET operation failed"
#, c-format
msgid "GET operation failed: %s"
msgstr "GET operation failed: %s"
msgid "Id"
msgstr "Id"
msgid "Id:"
msgstr "Id:"
msgid "Max memory:"
msgstr "Max memory:"
msgid "Memory size:"
msgstr "Memory size:"
msgid "NUMA cell(s):"
msgstr "NUMA cell(s):"
msgid "Name"
msgstr "Name"
msgid "Name:"
msgstr "Name:"
msgid "No error message provided"
msgstr "No error message provided"
msgid "OS Type:"
msgstr "OS Type:"
msgid "POST operation failed"
msgstr "POST operation failed"
#, c-format
msgid "POST operation failed: %s"
msgstr "POST operation failed: %s"
msgid "Pin domain VCPUs to host physical CPUs."
msgstr "Pin domain VCPUs to host physical CPUs."
msgid "Restore a domain."
msgstr "Restore a domain."
msgid "Resume a previously suspended domain."
msgstr "Resume a previously suspended domain."
msgid "Returns basic information about the domain virtual CPUs."
msgstr "Returns basic information about the domain virtual CPUs."
msgid "Returns basic information about the domain."
msgstr "Returns basic information about the domain."
msgid "Returns basic information about the node."
msgstr "Returns basic information about the node."
msgid "Returns list of domains."
msgstr "Returns list of domains."
msgid "Run a reboot command in the target domain."
msgstr "Run a reboot command in the target domain."
msgid "Run shutdown in the target domain."
msgstr "Run shutdown in the target domain."
#, c-format
msgid "Running hypervisor: %s %d.%d.%d\n"
msgstr "Running hypervisor: %s %d.%d.%d\n"
msgid "State"
msgstr "State"
msgid "State:"
msgstr "State:"
msgid "Suspend a running domain."
msgstr "Suspend a running domain."
msgid "Thread(s) per core:"
msgstr "Thread(s) per core:"
msgid ""
"Type: 'help' for help with commands\n"
" 'quit' to quit\n"
"\n"
msgstr ""
"Type: 'help' for help with commands\n"
" 'quit' to quit\n"
"\n"
msgid "UUID:"
msgstr "UUID:"
msgid "Used memory:"
msgstr "Used memory:"
#, c-format
msgid "Using API: %s %d.%d.%d\n"
msgstr "Using API: %s %d.%d.%d\n"
msgid "VCPU:"
msgstr "VCPU:"
#, c-format
msgid ""
"Welcome to %s, the virtualization interactive terminal.\n"
"\n"
msgstr ""
"Welcome to %s, the virtualization interactive terminal.\n"
"\n"
msgid "cannot parse vbd filename, missing driver name"
msgstr "cannot parse vbd filename, missing driver name"
msgid "cannot parse vbd filename, missing driver type"
msgstr "cannot parse vbd filename, missing driver type"
msgid "change maximum memory limit"
msgstr "change maximum memory limit"
msgid "change memory allocation"
msgstr "change memory allocation"
msgid "change number of virtual CPUs"
msgstr "change number of virtual CPUs"
#, c-format
msgid "command '%s' doesn't support option --%s"
msgstr "command '%s' doesn't support option --%s"
#, c-format
msgid "command '%s' requires --%s option"
msgstr "command '%s' requires --%s option"
#, c-format
msgid "command '%s' requires <%s> option"
msgstr "command '%s' requires <%s> option"
msgid "configuration file syntax error"
msgstr "configuration file syntax error"
#, c-format
msgid "configuration file syntax error: %s"
msgstr "configuration file syntax error: %s"
msgid "convert a domain id or UUID to domain name"
msgstr "convert a domain id or UUID to domain name"
msgid "convert a domain name or UUID to domain id"
msgstr "convert a domain name or UUID to domain id"
msgid "convert a domain name or id to domain UUID"
msgstr "convert a domain name or id to domain UUID"
msgid "could not connect to Xen Store"
msgstr "could not connect to Xen Store"
#, c-format
msgid "could not connect to Xen Store %s"
msgstr "could not connect to Xen Store %s"
msgid "could not use Xen hypervisor entry"
msgstr "could not use Xen hypervisor entry"
#, c-format
msgid "could not use Xen hypervisor entry %s"
msgstr "could not use Xen hypervisor entry %s"
msgid "crashed"
msgstr "crashed"
msgid "create a domain from an XML file"
msgstr "create a domain from an XML file"
msgid "define (but don't start) a domain from an XML file"
msgstr "define (but don't start) a domain from an XML file"
#, c-format
msgid "domain %s exists already"
msgstr "domain %s exists already"
msgid "domain id or name"
msgstr "domain id or name"
msgid "domain id or uuid"
msgstr "domain id or uuid"
msgid "domain information"
msgstr "domain information"
msgid "domain information in XML"
msgstr "domain information in XML"
msgid "domain information incomplete, missing domid"
msgstr "domain information incomplete, missing domid"
msgid "domain information incomplete, missing name"
msgstr "domain information incomplete, missing name"
msgid "domain information incomplete, missing uuid"
msgstr "domain information incomplete, missing uuid"
msgid "domain information incomplete, vbd has no dev"
msgstr "domain information incomplete, vbd has no dev"
msgid "domain information incomplete, vbd has no src"
msgstr "domain information incomplete, vbd has no src"
msgid "domain information incorrect domid not numeric"
msgstr "domain information incorrect domid not numeric"
msgid "domain name or uuid"
msgstr "domain name or uuid"
msgid "domain name, id or uuid"
msgstr "domain name, id or uuid"
msgid "domain state"
msgstr "domain state"
msgid "dump the core of a domain to a file for analysis"
msgstr "dump the core of a domain to a file for analysis"
msgid "error"
msgstr "error"
msgid "error: "
msgstr "error: "
#, c-format
msgid "expected syntax: --%s <%s>"
msgstr "expected syntax: --%s <%s>"
msgid "expecting a name"
msgstr "expecting a name"
msgid "expecting a separator"
msgstr "expecting a separator"
msgid "expecting a separator in list"
msgstr "expecting a separator in list"
msgid "expecting a value"
msgstr "expecting a value"
msgid "expecting an assignment"
msgstr "expecting an assignment"
msgid "failed to connect to Xen Store"
msgstr "failed to connect to Xen Store"
msgid "failed to connect to the hypervisor"
msgstr "failed to connect to the hypervisor"
#, c-format
msgid "failed to get domain '%s'"
msgstr "failed to get domain '%s'"
msgid "failed to get domain UUID"
msgstr "failed to get domain UUID"
msgid "failed to get hypervisor type"
msgstr "failed to get hypervisor type"
msgid "failed to get node information"
msgstr "failed to get node information"
msgid "failed to get the hypervisor version"
msgstr "failed to get the hypervisor version"
msgid "failed to get the library version"
msgstr "failed to get the library version"
#, c-format
msgid "failed to open %s for reading"
msgstr "failed to open %s for reading"
msgid "failed to open configuration file for reading"
msgstr "failed to open configuration file for reading"
msgid "failed to open file"
msgstr "failed to open file"
msgid "failed to parse Xend domain information"
msgstr "failed to parse Xend domain information"
msgid "failed to parse configuration file"
msgstr "failed to parse configuration file"
#, c-format
msgid "failed to parse configuration file %s"
msgstr "failed to parse configuration file %s"
msgid "failed to read configuration file"
msgstr "failed to read configuration file"
#, c-format
msgid "failed to read configuration file %s"
msgstr "failed to read configuration file %s"
msgid "failed to read from Xen Daemon"
msgstr "failed to read from Xen Daemon"
msgid "failed to save content"
msgstr "failed to save content"
msgid "failed to serialize S-Expr"
msgstr "failed to serialize S-Expr"
#, c-format
msgid "failed to serialize S-Expr: %s"
msgstr "failed to serialize S-Expr: %s"
msgid "failed to write configuration file"
msgstr "failed to write configuration file"
#, c-format
msgid "failed to write configuration file: %s"
msgstr "failed to write configuration file: %s"
msgid "getting time of day"
msgstr "getting time of day"
#, c-format
msgid "got unknown HTTP error code %d"
msgstr "got unknown HTTP error code %d"
msgid "gracefully shutdown a domain"
msgstr "gracefully shutdown a domain"
msgid "hypervisor connection URI"
msgstr "hypervisor connection URI"
msgid "in shutdown"
msgstr "in shutdown"
msgid "internal error"
msgstr "internal error"
msgid "invalid connection pointer in"
msgstr "invalid connection pointer in"
#, c-format
msgid "invalid connection pointer in %s"
msgstr "invalid connection pointer in %s"
msgid "invalid domain pointer in"
msgstr "invalid domain pointer in"
#, c-format
msgid "invalid domain pointer in %s"
msgstr "invalid domain pointer in %s"
#, c-format
msgid "library call %s failed, possibly not supported"
msgstr "library call %s failed, possibly not supported"
msgid "library call failed, possibly not supported"
msgstr "library call failed, possibly not supported"
msgid "list domains"
msgstr "list domains"
msgid "list inactive & active domains"
msgstr "list inactive & active domains"
msgid "list inactive domains"
msgstr "list inactive domains"
msgid "missing \""
msgstr "missing \""
msgid "missing devices information"
msgstr "missing devices information"
#, c-format
msgid "missing devices information for %s"
msgstr "missing devices information for %s"
msgid "missing kernel information"
msgstr "missing kernel information"
msgid "missing operating system information"
msgstr "missing operating system information"
#, c-format
msgid "missing operating system information for %s"
msgstr "missing operating system information for %s"
msgid "missing root device information"
msgstr "missing root device information"
#, c-format
msgid "missing root device information in %s"
msgstr "missing root device information in %s"
msgid "missing source information for device"
msgstr "missing source information for device"
#, c-format
msgid "missing source information for device %s"
msgstr "missing source information for device %s"
msgid "missing target information for device"
msgstr "missing target information for device"
#, c-format
msgid "missing target information for device %s"
msgstr "missing target information for device %s"
msgid "name of the inactive domain"
msgstr "name of the inactive domain"
msgid "no state"
msgstr "no state"
msgid "no valid connection"
msgstr "no valid connection"
msgid "node information"
msgstr "node information"
msgid "number"
msgstr "number"
msgid "number of virtual CPUs"
msgstr "number of virtual CPUs"
msgid "offline"
msgstr "offline"
msgid "operation failed"
msgstr "operation failed"
#, c-format
msgid "operation failed: %s"
msgstr "operation failed: %s"
msgid "operation forbidden for read only access"
msgstr "operation forbidden for read only access"
msgid "out of memory"
msgstr "out of memory"
msgid "parser error"
msgstr "parser error"
msgid "paused"
msgstr "paused"
msgid "print help"
msgstr "print help"
msgid "quit this interactive terminal"
msgstr "quit this interactive terminal"
msgid "read-only connection"
msgstr "read-only connection"
msgid "reboot a domain"
msgstr "reboot a domain"
msgid "restore a domain from a saved state in a file"
msgstr "restore a domain from a saved state in a file"
msgid "resume a domain"
msgstr "resume a domain"
msgid "running"
msgstr "running"
msgid "save a domain state to a file"
msgstr "save a domain state to a file"
msgid "show version"
msgstr "show version"
msgid "shut off"
msgstr "shut off"
msgid "start a (previously defined) inactive domain"
msgstr "start a (previously defined) inactive domain"
msgid "string"
msgstr "string"
msgid "suspend a domain"
msgstr "suspend a domain"
msgid "the state to restore"
msgstr "the state to restore"
msgid "this domain exists already"
msgstr "this domain exists already"
msgid "too many drivers registered"
msgstr "too many drivers registered"
#, c-format
msgid "too many drivers registered in %s"
msgstr "too many drivers registered in %s"
#, c-format
msgid "unexpected data '%s'"
msgstr "unexpected data '%s'"
msgid "unknown OS type"
msgstr "unknown OS type"
#, c-format
msgid "unknown OS type %s"
msgstr "unknown OS type %s"
#, c-format
msgid "unknown command: '%s'"
msgstr "unknown command: '%s'"
msgid "unknown host"
msgstr "unknown host"
#, c-format
msgid "unknown host %s"
msgstr "unknown host %s"
#, c-format
msgid "unsupported option '-%c'. See --help."
msgstr "unsupported option '-%c'. See --help."
msgid "unterminated number"
msgstr "unterminated number"
msgid "unterminated string"
msgstr "unterminated string"
msgid "vcpu number"
msgstr "vcpu number"
msgid "warning"
msgstr "warning"
msgid "where to dump the core"
msgstr "where to dump the core"
msgid "where to save the data"
msgstr "where to save the data"

View File

@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2015-02-27 05:14-0500\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Italian (http://www.transifex.com/projects/p/libvirt/language/"
@@ -75,10 +75,6 @@ msgstr ""
msgid " NAME\n"
msgstr " NOME\n"
#, c-format
msgid "%d status from xen daemon: %s:%s"
msgstr "%d stato del demone di xen: %s:%s"
#, c-format
msgid "%s has illegal value %s"
msgstr "%s ha il valore %s non valido"
@@ -123,10 +119,6 @@ msgstr "%s: impossibile scrivere il file di log: %s"
msgid "%s: initialization failed\n"
msgstr "%s: inizializzazione fallita\n"
#, c-format
msgid "%s: invalid path"
msgstr "%s: percorso non valido"
#, c-format
msgid ""
"%s: temporary filename contains shell meta or other unacceptable characters "
@@ -319,10 +311,6 @@ msgstr ""
msgid "Cannot extract running %s hypervisor version\n"
msgstr "Impossibile estrarre la versione dell'hypervisor %s in esecuzione\n"
#, c-format
msgid "Cannot find QEMU binary %s"
msgstr "Impossibile trovare il binario di QEMU %s"
#, c-format
msgid "Cannot find UML kernel %s"
msgstr "Impossibile trovare il kernel UNL %s"
@@ -746,10 +734,6 @@ msgstr "La creazione dei volumi non-file non è supportata"
msgid "Creation of %s volumes is not supported"
msgstr "La creazione di volumi %s non è supportata"
#, c-format
msgid "Credit scheduler weight parameter (%d) is out of range (1-65535)"
msgstr "Il parametro weight del credit scheduler (%d) è fuori scala (1-65535)"
#, c-format
msgid "Datastore has unexpected type '%s'"
msgstr "L'archivio dati presenta un tipo di '%s' non previsto"
@@ -852,10 +836,6 @@ msgstr "Il dominio %s è stato riavviato\n"
msgid "Domain %s is being shutdown\n"
msgstr "Il dominio %s è stato arrestato\n"
#, c-format
msgid "Domain %s isn't running."
msgstr "Il dominio '%s' non è in esecuzione."
#, c-format
msgid "Domain %s marked as autostarted\n"
msgstr "Dominio %s contrassegnato come auto avviante\n"
@@ -966,18 +946,9 @@ msgstr "Modifica la configurazione XML per una rete."
msgid "Edit the XML configuration for a storage pool."
msgstr "Modifica la configurazione XML per uno storage pool."
msgid "Error adding file to config cache"
msgstr "Errore nell'aggiunta di file alla cache di configurazione"
msgid "Error adding file to config list"
msgstr "Errore nell'aggiunta file alla lista configurazione"
msgid "Error creating initial configuration"
msgstr "Errore nella creazione della configurazione iniziale"
msgid "Error looking up domain"
msgstr "Errore nel lookup del dominio"
msgid "Error parsing 'path'. Invalid characters."
msgstr "Errore nel parsing di 'path'. Caratteri non validi."
@@ -1210,9 +1181,6 @@ msgstr "Impossibile eseguire il fork come demone: %s"
msgid "Failed to generate UUID"
msgstr "Impossibile generare UUID"
msgid "Failed to get a scheduler name"
msgstr "Impossibile ottenere un nome per lo scheduler"
#, c-format
msgid "Failed to get block stats %s %s"
msgstr "Impossibile ottenere statistiche blocco di %s %s"
@@ -1334,9 +1302,6 @@ msgstr "Impossibile leggere il mesaggio di continua contenitore"
msgid "Failed to reboot domain %s"
msgstr "Impossibile riavviare il dominio %s"
msgid "Failed to redefine sexpr"
msgstr "Errore nella ridefinizione di sexpr"
#, c-format
msgid "Failed to refresh pool %s"
msgstr "Impossibile aggiornare il pool %s"
@@ -1636,9 +1601,6 @@ msgstr "Attributo match non valido per la specificata CPU"
msgid "Invalid mode: %s"
msgstr "Modo non valido: %s"
msgid "Invalid parameter count"
msgstr "Parametro count non valido"
msgid "Invalid parameter to virXPathBoolean()"
msgstr "Parametro per virXPathBoolean() non valido"
@@ -2490,9 +2452,6 @@ msgstr "Impossibile accedere allo stream per '%s'"
msgid "Unable to add LPAR to the table"
msgstr "Impossibile aggiungere LPAR alla tabella"
msgid "Unable to attach network devices without vlan"
msgstr "Impossibile assegnare i dispositivi di rete senza vlan"
msgid "Unable to become session leader"
msgstr "impossibile diventare il leader della sessione"
@@ -2638,10 +2597,6 @@ msgstr "Feature policy %d della CPU inattesa"
msgid "Unexpected CPU match policy %d"
msgstr "Match policy %d della CPU inattesa"
#, c-format
msgid "Unexpected LXC URI path '%s', try lxc:///"
msgstr "Percorso URI LCX '%s' non atteso, provare con lxc:///"
msgid "Unexpected QEMU monitor still active during domain deletion"
msgstr ""
"Non previsto un monitor di QEMU ancora attivo durante la rimozione del "
@@ -2692,9 +2647,6 @@ msgstr "Protocollo '%s' sconosciuto"
msgid "Unknown release: %s"
msgstr "Release sconosciuta: %s"
msgid "Unknown scheduler"
msgstr "Scheduler sconosciuto"
#, c-format
msgid "Unknown source mode '%s'"
msgstr "Modalità sorgente sconosciuta '%s'"
@@ -2848,16 +2800,6 @@ msgstr "attivo"
msgid "adding %s device failed: %s"
msgstr "aggiunta dispositivo %s fallita: %s"
msgid "adding watch @introduceDomain"
msgstr "aggiunta orologio @introduceDomain"
msgid "adding watch @releaseDomain"
msgstr "aggiunta orologio @releaseDomain"
#, c-format
msgid "adding watch on %s"
msgstr "aggiunta di watch on %s"
msgid "allow the resize to shrink the volume"
msgstr "permetti al ridimensionamento di ridurre il volume"
@@ -2941,19 +2883,6 @@ msgstr "creare un pool"
msgid "building"
msgstr "creazione in corso"
msgid "can't retrieve config entry for domain to overwrite"
msgstr ""
"impossibile ripristinare la voce del file di config per il dominio da "
"sovrascrivere"
msgid "can't retrieve config file for domain"
msgstr "impossibile ripristinare il file di config per il dominio"
msgid "can't retrieve config filename for domain to overwrite"
msgstr ""
"impossibile ripristinare nome del file di config per il dominio da "
"sovrascrivere"
msgid "canceled by client"
msgstr "cancellato dal client"
@@ -3105,9 +3034,6 @@ msgstr "impossibile trovare la definizione del NIC per vlan %d"
msgid "cannot find character device %s"
msgstr "impossibile trovare il dispositivo a caratteri %s"
msgid "cannot find default console device"
msgstr "impossibile trovare il dispositivo console predefinito"
#, c-format
msgid "cannot find newly created volume '%s'"
msgstr "impossibile trovare il volume appena creato '%s'"
@@ -3140,9 +3066,6 @@ msgstr "impossibile ottenere le funzioni della CPU dell'host"
msgid "cannot get the host uuid"
msgstr "Impossibile ottenere l'host uuid"
msgid "cannot get time of day"
msgstr "impossibile ottenere ora del giorno in corso"
msgid "cannot get vCPU placement & pCPU time"
msgstr "impossibile ottenere la posizione di vCPU e l'ora pCPU"
@@ -3356,10 +3279,6 @@ msgstr "impossibile leggere la cartella '%s'"
msgid "cannot read domain image '%s'"
msgstr "impossibile leggere l'immagine del dominio '%s'"
#, c-format
msgid "cannot read file %s"
msgstr "impossibile leggere il file %s"
#, c-format
msgid "cannot read header '%s'"
msgstr "impossibile leggere l'header '%s'"
@@ -3451,10 +3370,6 @@ msgstr "impossibile eseguire stat fd %d"
msgid "cannot stat file '%s'"
msgstr "impossibile eseguire lo stat del file '%s'"
#, c-format
msgid "cannot stat: %s"
msgstr "impossibile eseguire stat: %s"
#, c-format
msgid "cannot statvfs path '%s'"
msgstr "impossibile eseguire lo stat del percorso del vfs '%s'"
@@ -3547,9 +3462,6 @@ msgstr "errore di sintassi del file di configurazione"
msgid "configuration file syntax error: %s"
msgstr "errore di sintassi del file di configurazione: %s"
msgid "conn, or private data is NULL"
msgstr "conn o dato privato NULL"
msgid "connect to the guest console"
msgstr "connettersi alla console guest"
@@ -3732,9 +3644,6 @@ msgstr "il disco %s non presenta alcuna informazione di cifratura"
msgid "disk %s not found"
msgstr "disco %s non trovato"
msgid "disk aio mode not supported with this QEMU binary"
msgstr "modalità aio del disco non supportata con questo binario QEMU"
#, c-format
msgid "disk bus '%s' cannot be hotplugged."
msgstr "il bus del disco '%s' non può essere collegato a caldo."
@@ -3804,33 +3713,18 @@ msgstr "informazioni del dominio in XML"
msgid "domain information incomplete, missing HVM loader"
msgstr "informazioni del dominio incomplete, loader HVM mancante"
msgid "domain information incomplete, missing cpu_cap"
msgstr "informazioni del dominio incomplete, cpu_cap mancante"
msgid "domain information incomplete, missing cpu_weight"
msgstr "informazioni del dominio incomplete, cpu_weight mancante"
msgid "domain information incomplete, missing domid"
msgstr "informazioni del dominio incomplete, domid mancante"
msgid "domain information incomplete, missing kernel & bootloader"
msgstr "informazioni del dominio incomplete, kernel & bootloader mancante"
msgid "domain information incomplete, missing name"
msgstr "informazioni del dominio incomplete, nome mancante"
msgid "domain information incomplete, missing uuid"
msgstr "informazioni del dominio incomplete, uuid mancante"
msgid "domain information incomplete, vbd has no dev"
msgstr "informazioni del dominio incomplete, vbd non presenta dev"
msgid "domain information incomplete, vbd has no src"
msgstr "informazioni del dominio incomplete, vbd non presenta src"
msgid "domain information incorrect domid not numeric"
msgstr "informazioni del dominio non corrette, domid non numerico"
msgid "domain is already running"
msgstr "il dominio è già in esecuzione"
@@ -3849,15 +3743,9 @@ msgstr "nome del dominio o uuid"
msgid "domain name, id or uuid"
msgstr "nome del dominio, id o uuid"
msgid "domain not active"
msgstr "dominio non attivo"
msgid "domain state"
msgstr "stato del dominio"
msgid "domainBlockPeek is not supported for dom0"
msgstr "domainBlockPeek non è supportato per dom0"
msgid "domainMigratePrepare did not set uri"
msgstr "domainMigratePrepare non ha impostato l'uri"
@@ -3944,31 +3832,15 @@ msgstr "errore syscall Xen %s"
msgid "failed to apply capabilities: %d"
msgstr "impossibile applicare le funzioni: %d"
msgid "failed to build sexpr"
msgstr "Impossibile creare sexpr"
msgid "failed to close file"
msgstr "chiusura del file fallita"
msgid "failed to connect to Xen Store"
msgstr "impossibile connettersi allo Xen Store"
msgid "failed to connect to monitor socket"
msgstr "errore nella connessione al socket monitor"
msgid "failed to connect to the hypervisor"
msgstr "impossibile collegarsi all'hypervisor"
msgid "failed to connect to xend"
msgstr "impossibile connettersi a xend"
msgid "failed to create a socket"
msgstr "impossibile creare un socket"
#, c-format
msgid "failed to create link %s to %s"
msgstr "impossibile creare il link %s a %s"
#, c-format
msgid "failed to create logfile %s"
msgstr "errore nella creazione del file di log %s"
@@ -4049,10 +3921,6 @@ msgstr "impossibile inizializzare la libreria SASL: %d (%s)"
msgid "failed to load module %s %s"
msgstr "impossibile caricare il modulo %s %s"
#, c-format
msgid "failed to lseek or read from file: %s"
msgstr "Impossibile eseguire Iseek o la lettura dal file: %s"
#, c-format
msgid "failed to mark network %s as autostarted"
msgstr "Impossibile contrassegnare la rete %s come auto avviante"
@@ -4071,17 +3939,10 @@ msgstr "impossibile aprire in lettura il file di configurazione"
msgid "failed to open file"
msgstr "impossibile aprire un file"
#, c-format
msgid "failed to open for reading: %s"
msgstr "impossibile aprire per la lettura: %s"
msgid "failed to open the log file. check the log file path"
msgstr ""
"impossibile aprire il file di log. controllare il percorso del file di log"
msgid "failed to parse Xend domain information"
msgstr "errore nel parsing delle informazioni del dominio Xend"
msgid "failed to parse configuration file"
msgstr "errore nel parsing del file di configurazione"
@@ -4102,9 +3963,6 @@ msgstr "errore di lettura del file di configurazione"
msgid "failed to read configuration file %s"
msgstr "errore di lettura del file di configurazione %s"
msgid "failed to read from Xen Daemon"
msgstr "impossibile leggere da un demone Xen"
#, c-format
msgid "failed to read metadata length in '%s'"
msgstr "impossibile leggere la lunghezza dei metadata in '%s'"
@@ -4120,13 +3978,6 @@ msgstr "impossibile leggere l'intestazione qemu"
msgid "failed to read temporary file created with template %s"
msgstr "impossibile leggere il file temporaneo creato con il template %s"
#, c-format
msgid "failed to remove link %s"
msgstr "Impossibile rimuovere il link %s"
msgid "failed to remove old domain from config map"
msgstr "impossibile rimuovere il vecchio dominio dalla mappa di configurazione"
msgid "failed to resume domain"
msgstr "impossibile ripristinare il dominio"
@@ -4205,9 +4056,6 @@ msgstr "il filtro introdurrebbe un loop"
msgid "find potential storage pool sources"
msgstr "trovate potenziali sorgenti pool di storage"
msgid "finding dom on config list"
msgstr "ricerca del dominio sulla lista configurazione"
msgid "flags parameter must be VIR_MEMORY_VIRTUAL or VIR_MEMORY_PHYSICAL"
msgstr ""
"il parametro dei flag deve essere VIR_MEMORY_VIRTUAL or VIR_MEMORY_PHYSICAL"
@@ -4284,9 +4132,6 @@ msgstr "modalità hostdev '%s' non supportata"
msgid "hostdev subsys type '%s' not supported"
msgstr "tipo di sottosistema hostdev '%s' non supportato"
msgid "hotplug of device type not supported"
msgstr "collegamento a caldo del tipo di dispositivo non supportata"
msgid "hypervisor connection URI"
msgstr "URI di connessione dell'hypervisor"
@@ -4321,9 +4166,6 @@ msgstr "salvataggio intestazione incompleta in '%s'"
msgid "incorrect boot order '%s', expecting positive integer"
msgstr "ordine di boot '%s' non valido, atteso un intero positivo"
msgid "initializing inotify"
msgstr "inizializzo inotify"
msgid "interface has no name"
msgstr "l'interfaccia non ha un nome"
@@ -4628,9 +4470,6 @@ msgstr "gli elenchi non sono permessi in formato VMX"
msgid "live migration"
msgstr "migrazione a caldo"
msgid "looking up dom"
msgstr "controllo dom"
msgid "lxc state driver is not active"
msgstr "il driver lxc state non è attivo"
@@ -4974,10 +4813,6 @@ msgstr "nessun ID slot PCI fornito per '%s'"
msgid "no PCI vendor ID supplied for '%s'"
msgstr "nessun ID produttore PCI fornito per '%s'"
#, c-format
msgid "no QEMU URI path given, try %s"
msgstr "nessun percorso URI QEMU dato, provare %s"
#, c-format
msgid "no SCSI LUN ID supplied for '%s'"
msgstr "nessun ID LUN SCSI fornito per '%s'"
@@ -5073,9 +4908,6 @@ msgstr "nessuna configurazione dominio"
msgid "no domain snapshot with matching name '%s'"
msgstr "nessuna istantanea del dominio con un nome '%s' corrispondente"
msgid "no domain with matching id"
msgstr "non ci sono domini con id corrispondente"
#, c-format
msgid "no domain with matching id %d"
msgstr "non ci sono domini con id corrispondente: %d"
@@ -5180,9 +5012,6 @@ msgstr "informazioni sul nodo non implementate su questa piattaforma"
msgid "node information"
msgstr "informazione del nodo"
msgid "node information incomplete, missing scheduler name"
msgstr "informazioni del nodo incomplete, nome scheduler mancante"
msgid "nonzero ncpus doesn't match with NULL cpus"
msgstr "nonzero ncpus non corrisponde con il NULL cpus"
@@ -5204,9 +5033,6 @@ msgstr "nwfilter è in uso"
msgid "offline"
msgstr "scollegato"
msgid "on_xend_start not present in sexpr"
msgstr "on_xend_start non è presente in sexpr"
msgid "only TCP listen is supported for chr device"
msgstr "è supportato solo l'ascolto TCP per i dispositivi chr"
@@ -5257,10 +5083,6 @@ msgstr "parametro=valore"
msgid "parser error"
msgstr "errore del parser"
#, c-format
msgid "parsing uuid %s"
msgstr "analisi uuid %s"
msgid "passthrough mode requires a character device type attribute"
msgstr ""
"La modalità passthrough richiede un attributo tipo dispositivo a caratteri"
@@ -5414,10 +5236,6 @@ msgstr "salvataggio dominio '%s' in '%s': scrittura fallita"
msgid "script used to bridge network interface"
msgstr "script utilizzato per l'interfaccia di rete bridge"
#, c-format
msgid "sdl not supported by '%s'"
msgstr "sdl non supportato da '%s'"
#, c-format
msgid "security DOI string exceeds max %d bytes"
msgstr "la stringa DOI di sicurezza eccede il valore massimo di byte %d"
@@ -5445,9 +5263,6 @@ msgstr "non è supportata l'impostazione della password del disco"
msgid "setting up HAL callbacks failed"
msgstr "impostazione callback per HAL fallita"
msgid "sexpr2string failed"
msgstr "sexpr2string fallito"
msgid "show inactive defined XML"
msgstr "mostra XML definito inattivo"
@@ -5499,9 +5314,6 @@ msgstr "grafiche spice non supportate con questo QEMU"
msgid "spicevmc device type only supports virtio"
msgstr "il tipo dispositivo spicevmc supporta solo virtio"
msgid "spicevmc not supported in this QEMU binary"
msgstr "spicevmc non supportato in questo binario di QEMU"
msgid "start a (previously defined) inactive domain"
msgstr "avviare un (precedentemente definito) dominio inattivo"
@@ -5589,10 +5401,6 @@ msgstr "il target type deve essere specificato per il dispositivo %s"
msgid "testOpen: supply a path or use test:///default"
msgstr "testOpen: fornire un percorso o usare test:///default"
#, c-format
msgid "the QEMU binary %s does not support smbios settings"
msgstr "il binario QEMU %s non supporta le impostazioni di smbios"
msgid "the disk password is incorrect"
msgstr "la password del disco non è corretta"
@@ -5648,9 +5456,6 @@ msgstr "troppi driver registrati in %s"
msgid "too many memory stats requested: %d > %d"
msgstr "troppe statistiche di memoria richieste: %d > %d"
msgid "topology syntax error"
msgstr "errore di sintassi della topologia"
msgid "transport methods unix, ssh and ext are not supported under Windows"
msgstr ""
"I metodi di trasporto unix, ssh ed ext non sono supportati sotto Windows"
@@ -5682,10 +5487,6 @@ msgstr "impossibile modificare la configurazione sul tipo di grafici '%s'"
msgid "unable to close %s"
msgstr "impossibile chiudere %s"
#, c-format
msgid "unable to connect to '%s:%s'"
msgstr "impossibile connettersi a '%s: %s'"
#, c-format
msgid "unable to create hugepage path %s"
msgstr "impossibile creare il percorso per le hugepage %s"
@@ -5697,9 +5498,6 @@ msgstr "impossibile creare rundir %s: %s"
msgid "unable to create socket pair"
msgstr "Impossibile creare la coppia di socket"
msgid "unable to determine original VLAN"
msgstr "impossibile determinare il VLAN originale"
#, c-format
msgid "unable to execute QEMU command '%s'"
msgstr "impossibile eseguire il comando '%s' di QEMU"
@@ -5711,9 +5509,6 @@ msgstr "impossibile eseguire il comando QEMU '%s': %s"
msgid "unable to generate uuid"
msgstr "impossibile generare uuid"
msgid "unable to get current time"
msgstr "impossibile ottenere l'ora attuale"
#, c-format
msgid "unable to handle monitor type: %s"
msgstr "impossibile gestire il tipo di monitor: %s"
@@ -5728,10 +5523,6 @@ msgstr "errore nel parsing del mac address '%s'"
msgid "unable to register monitor events"
msgstr "impossibile registrare gli eventi del monitor"
#, c-format
msgid "unable to resolve hostname '%s': %s"
msgstr "impossibile risolvere l'hostname '%s': %s"
#, c-format
msgid "unable to set ownership of '%s' to %d:%d"
msgstr "impossibile impostare il proprietario di '%s' su %d:%d"
@@ -5740,9 +5531,6 @@ msgstr "impossibile impostare il proprietario di '%s' su %d:%d"
msgid "unable to set ownership of '%s' to user %d:%d"
msgstr "impossibile impostare il proprietario di '%s' sull'utente %d:%d"
msgid "unable to store config file handle"
msgstr "impossibile conservare la gestione del file di configurazione"
msgid "undefine an inactive pool"
msgstr "rimuovere la definizione di un pool inattivo"
@@ -5947,9 +5735,6 @@ msgstr "valore inatteso per on_poweroff %s"
msgid "unexpected value %s for on_reboot"
msgstr "valore inatteso per on_reboot %s"
msgid "unexpected value from on_xend_start"
msgstr "valore inaspettato da on_xend_start"
#, c-format
msgid "unexpected video model %d"
msgstr "modello video %d inaspettato"
@@ -6331,9 +6116,6 @@ msgstr "tipo di destinazione della console %s non supportato"
msgid "unsupported data type '%c' for arg '%s'"
msgstr "tipo di dati '%c' non supportati per l'arg '%s'"
msgid "unsupported device type"
msgstr "tipo di dispositivo non supportato"
#, c-format
msgid "unsupported disk bus '%s' with device setup"
msgstr "bus del disco '%s' non supportato con l'impostazione del dispositivo"
@@ -6390,10 +6172,6 @@ msgstr "famiglia protocollo non supportato '%s'"
msgid "unsupported protocol type %s"
msgstr "tipo di protocollo non supportato %s"
#, c-format
msgid "unsupported rtc tickpolicy '%s'"
msgstr "tickpolicy '%s' rtc non supportata"
#, c-format
msgid "unsupported rtc timer tickpolicy '%s'"
msgstr "tickpolocy timer rtc '%s non supportata"
@@ -6476,9 +6254,6 @@ msgstr "virDomainGetXMLDesc con flag di sicurezza"
msgid "virDomainSnapshotGetXMLDesc with secure flag"
msgstr "virDomainSnapshotGetXMLDesc con flag di sicurezza"
msgid "virHashLookup"
msgstr "virHashLookup"
msgid "virInterfaceDefFormat missing interface name"
msgstr "virInterfaceDefFormat non presenta alcun nome per l'interfaccia"
@@ -6515,9 +6290,6 @@ msgstr "specificato l'uso del volume, ma il percorso del volume è mancante"
msgid "warning"
msgstr "attenzione"
msgid "watch already tracked"
msgstr "orologio già tracciato"
msgid "watchdog must contain model name"
msgstr "watchdog deve contenere il nome del modello"
@@ -6538,46 +6310,6 @@ msgstr "write: %s: impossibile scrivere il file temporaneo: %s"
msgid "xen bus does not support %s input device"
msgstr "il bus di xen non supporta il dispositivo di input %s"
msgid ""
"xenDaemonDomainMigrate: Xen does not support bandwidth limits during "
"migration"
msgstr ""
"xenDaemonDomainMigrate: Xen non supporta la limitazione di banda durante la "
"migrazione"
msgid ""
"xenDaemonDomainMigrate: Xen does not support renaming domains during "
"migration"
msgstr ""
"xenDaemonDomainMigrate: Xen non supporta la rinomina del dominio durante la "
"migrazione"
msgid "xenDaemonDomainMigrate: a hostname must be specified in the URI"
msgstr "xenDaemonDomainMigrate: un hostname deve essere specificato nell'URI"
msgid "xenDaemonDomainMigrate: invalid port number"
msgstr "xenDaemonDomainMigrate: numero di porta non valido"
msgid "xenDaemonDomainMigrate: only xenmigr:// migrations are supported by Xen"
msgstr ""
"xenDaemonDomainMigrate: solo le migrazioni xenmigr:// sono supportate da Xen"
msgid "xenDaemonDomainMigrate: unsupported flag"
msgstr "xenDaemonDomainMigrate: flag non supportato"
msgid "xenDaemonGetAutostart failed to find this domain"
msgstr "xenDaemonGetAutostart non è riuscito a trovare questo dominio"
msgid "xenDaemonSetAutostart failed to find this domain"
msgstr "xenDaemonSetAutostart non è riuscito a trovare questo dominio"
msgid "xenXMConfigCacheRefresh: virHashAddEntry"
msgstr "xenXMConfigCacheRefresh: virHashAddEntry"
#, c-format
msgid "xend_post: error from xen daemon: %s"
msgstr "xend_post: errore del demone di xen: %s"
#, c-format
msgid "xsd:dateTime value '%s' has unexpected format"
msgstr "Il valore '%s' di xsd:dateTime ha un formato non atteso"

File diff suppressed because it is too large Load Diff

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"PO-Revision-Date: 2015-02-26 09:50-0500\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: 2018-04-24 06:29-0400\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Georgian (http://www.transifex.com/projects/p/fedora/language/"
"ka/)\n"
@@ -19,742 +19,3 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Zanata 3.9.6\n"
msgid ""
"\n"
" DESCRIPTION\n"
msgstr ""
"\n"
" DESCRIPTION\n"
msgid ""
"\n"
" OPTIONS\n"
msgstr ""
"\n"
" OPTIONS\n"
#, c-format
msgid ""
"\n"
"(Time: %.3f ms)\n"
"\n"
msgstr ""
"\n"
"(Time: %.3f ms)\n"
"\n"
msgid " NAME\n"
msgstr " NAME\n"
#, c-format
msgid "%s: %d: failed to allocate %d bytes"
msgstr "%s: %d: failed to allocate %d bytes"
msgid "(re)connect to hypervisor"
msgstr "(re)connect to hypervisor"
#, c-format
msgid "--%s <number>"
msgstr "--%s <number>"
#, c-format
msgid "--%s <string>"
msgstr "--%s <string>"
msgid "CPU Affinity:"
msgstr "CPU Affinity:"
msgid "CPU frequency:"
msgstr "CPU frequency:"
msgid "CPU model:"
msgstr "CPU model:"
msgid "CPU socket(s):"
msgstr "CPU socket(s):"
msgid "CPU time:"
msgstr "CPU time:"
msgid "CPU(s):"
msgstr "CPU(s):"
msgid "CPU:"
msgstr "CPU:"
#, c-format
msgid "Cannot extract running %s hypervisor version\n"
msgstr "Cannot extract running %s hypervisor version\n"
msgid "Change the current memory allocation in the guest domain."
msgstr "Change the current memory allocation in the guest domain."
msgid "Change the maximum memory allocation limit in the guest domain."
msgstr "Change the maximum memory allocation limit in the guest domain."
msgid ""
"Connect to local hypervisor. This is built-in command after shell start up."
msgstr ""
"Connect to local hypervisor. This is built-in command after shell start up."
msgid "Core dump a domain."
msgstr "Core dump a domain."
msgid "Core(s) per socket:"
msgstr "Core(s) per socket:"
msgid "Create a domain."
msgstr "Create a domain."
msgid "Define a domain."
msgstr "Define a domain."
msgid "Display the system version information."
msgstr "Display the system version information."
#, c-format
msgid "Domain %s created from %s\n"
msgstr "Domain %s created from %s\n"
#, c-format
msgid "Domain %s defined from %s\n"
msgstr "Domain %s defined from %s\n"
#, c-format
msgid "Domain %s destroyed\n"
msgstr "Domain %s destroyed\n"
#, c-format
msgid "Domain %s has been undefined\n"
msgstr "Domain %s has been undefined\n"
#, c-format
msgid "Domain %s is being rebooted\n"
msgstr "Domain %s is being rebooted\n"
#, c-format
msgid "Domain %s is being shutdown\n"
msgstr "Domain %s is being shutdown\n"
#, c-format
msgid "Domain %s resumed\n"
msgstr "Domain %s resumed\n"
#, c-format
msgid "Domain %s started\n"
msgstr "Domain %s started\n"
#, c-format
msgid "Domain %s suspended\n"
msgstr "Domain %s suspended\n"
msgid "Domain is already active"
msgstr "Domain is already active"
#, c-format
msgid "Domain restored from %s\n"
msgstr "Domain restored from %s\n"
#, c-format
msgid "Failed to core dump domain %s to %s"
msgstr "Failed to core dump domain %s to %s"
#, c-format
msgid "Failed to create domain from %s"
msgstr "Failed to create domain from %s"
#, c-format
msgid "Failed to define domain from %s"
msgstr "Failed to define domain from %s"
#, c-format
msgid "Failed to destroy domain %s"
msgstr "Failed to destroy domain %s"
msgid "Failed to list active domains"
msgstr "Failed to list active domains"
msgid "Failed to list inactive domains"
msgstr "Failed to list inactive domains"
#, c-format
msgid "Failed to reboot domain %s"
msgstr "Failed to reboot domain %s"
#, c-format
msgid "Failed to restore domain from %s"
msgstr "Failed to restore domain from %s"
#, c-format
msgid "Failed to resume domain %s"
msgstr "Failed to resume domain %s"
#, c-format
msgid "Failed to save domain %s to %s"
msgstr "Failed to save domain %s to %s"
#, c-format
msgid "Failed to shutdown domain %s"
msgstr "Failed to shutdown domain %s"
#, c-format
msgid "Failed to start domain %s"
msgstr "Failed to start domain %s"
#, c-format
msgid "Failed to suspend domain %s"
msgstr "Failed to suspend domain %s"
#, c-format
msgid "Failed to undefine domain %s"
msgstr "Failed to undefine domain %s"
msgid "GET operation failed"
msgstr "GET operation failed"
#, c-format
msgid "GET operation failed: %s"
msgstr "GET operation failed: %s"
msgid "Id"
msgstr "Id"
msgid "Id:"
msgstr "Id:"
msgid "Max memory:"
msgstr "Max memory:"
msgid "Memory size:"
msgstr "Memory size:"
msgid "NUMA cell(s):"
msgstr "NUMA cell(s):"
msgid "Name"
msgstr "Name"
msgid "Name:"
msgstr "Name:"
msgid "No error message provided"
msgstr "No error message provided"
msgid "OS Type:"
msgstr "OS Type:"
msgid "POST operation failed"
msgstr "POST operation failed"
#, c-format
msgid "POST operation failed: %s"
msgstr "POST operation failed: %s"
msgid "Pin domain VCPUs to host physical CPUs."
msgstr "Pin domain VCPUs to host physical CPUs."
msgid "Restore a domain."
msgstr "Restore a domain."
msgid "Resume a previously suspended domain."
msgstr "Resume a previously suspended domain."
msgid "Returns basic information about the domain virtual CPUs."
msgstr "Returns basic information about the domain virtual CPUs."
msgid "Returns basic information about the domain."
msgstr "Returns basic information about the domain."
msgid "Returns basic information about the node."
msgstr "Returns basic information about the node."
msgid "Returns list of domains."
msgstr "Returns list of domains."
msgid "Run a reboot command in the target domain."
msgstr "Run a reboot command in the target domain."
msgid "Run shutdown in the target domain."
msgstr "Run shutdown in the target domain."
#, c-format
msgid "Running hypervisor: %s %d.%d.%d\n"
msgstr "Running hypervisor: %s %d.%d.%d\n"
msgid "State"
msgstr "State"
msgid "State:"
msgstr "State:"
msgid "Suspend a running domain."
msgstr "Suspend a running domain."
msgid "Thread(s) per core:"
msgstr "Thread(s) per core:"
msgid ""
"Type: 'help' for help with commands\n"
" 'quit' to quit\n"
"\n"
msgstr ""
"Type: 'help' for help with commands\n"
" 'quit' to quit\n"
"\n"
msgid "UUID:"
msgstr "UUID:"
msgid "Used memory:"
msgstr "Used memory:"
#, c-format
msgid "Using API: %s %d.%d.%d\n"
msgstr "Using API: %s %d.%d.%d\n"
msgid "VCPU:"
msgstr "VCPU:"
#, c-format
msgid ""
"Welcome to %s, the virtualization interactive terminal.\n"
"\n"
msgstr ""
"Welcome to %s, the virtualization interactive terminal.\n"
"\n"
msgid "cannot parse vbd filename, missing driver name"
msgstr "cannot parse vbd filename, missing driver name"
msgid "cannot parse vbd filename, missing driver type"
msgstr "cannot parse vbd filename, missing driver type"
msgid "change maximum memory limit"
msgstr "change maximum memory limit"
msgid "change memory allocation"
msgstr "change memory allocation"
msgid "change number of virtual CPUs"
msgstr "change number of virtual CPUs"
#, c-format
msgid "command '%s' doesn't support option --%s"
msgstr "command '%s' doesn't support option --%s"
#, c-format
msgid "command '%s' requires --%s option"
msgstr "command '%s' requires --%s option"
#, c-format
msgid "command '%s' requires <%s> option"
msgstr "command '%s' requires <%s> option"
msgid "configuration file syntax error"
msgstr "configuration file syntax error"
#, c-format
msgid "configuration file syntax error: %s"
msgstr "configuration file syntax error: %s"
msgid "convert a domain id or UUID to domain name"
msgstr "convert a domain id or UUID to domain name"
msgid "convert a domain name or UUID to domain id"
msgstr "convert a domain name or UUID to domain id"
msgid "convert a domain name or id to domain UUID"
msgstr "convert a domain name or id to domain UUID"
msgid "could not connect to Xen Store"
msgstr "could not connect to Xen Store"
#, c-format
msgid "could not connect to Xen Store %s"
msgstr "could not connect to Xen Store %s"
msgid "could not use Xen hypervisor entry"
msgstr "could not use Xen hypervisor entry"
#, c-format
msgid "could not use Xen hypervisor entry %s"
msgstr "could not use Xen hypervisor entry %s"
msgid "crashed"
msgstr "crashed"
msgid "create a domain from an XML file"
msgstr "create a domain from an XML file"
msgid "define (but don't start) a domain from an XML file"
msgstr "define (but don't start) a domain from an XML file"
#, c-format
msgid "domain %s exists already"
msgstr "domain %s exists already"
msgid "domain id or name"
msgstr "domain id or name"
msgid "domain id or uuid"
msgstr "domain id or uuid"
msgid "domain information"
msgstr "domain information"
msgid "domain information in XML"
msgstr "domain information in XML"
msgid "domain information incomplete, missing domid"
msgstr "domain information incomplete, missing domid"
msgid "domain information incomplete, missing name"
msgstr "domain information incomplete, missing name"
msgid "domain information incomplete, missing uuid"
msgstr "domain information incomplete, missing uuid"
msgid "domain information incomplete, vbd has no dev"
msgstr "domain information incomplete, vbd has no dev"
msgid "domain information incomplete, vbd has no src"
msgstr "domain information incomplete, vbd has no src"
msgid "domain information incorrect domid not numeric"
msgstr "domain information incorrect domid not numeric"
msgid "domain name or uuid"
msgstr "domain name or uuid"
msgid "domain name, id or uuid"
msgstr "domain name, id or uuid"
msgid "domain state"
msgstr "domain state"
msgid "dump the core of a domain to a file for analysis"
msgstr "dump the core of a domain to a file for analysis"
msgid "error"
msgstr "error"
msgid "error: "
msgstr "error: "
#, c-format
msgid "expected syntax: --%s <%s>"
msgstr "expected syntax: --%s <%s>"
msgid "expecting a name"
msgstr "expecting a name"
msgid "expecting a separator"
msgstr "expecting a separator"
msgid "expecting a separator in list"
msgstr "expecting a separator in list"
msgid "expecting a value"
msgstr "expecting a value"
msgid "expecting an assignment"
msgstr "expecting an assignment"
msgid "failed to connect to Xen Store"
msgstr "failed to connect to Xen Store"
msgid "failed to connect to the hypervisor"
msgstr "failed to connect to the hypervisor"
#, c-format
msgid "failed to get domain '%s'"
msgstr "failed to get domain '%s'"
msgid "failed to get domain UUID"
msgstr "failed to get domain UUID"
msgid "failed to get hypervisor type"
msgstr "failed to get hypervisor type"
msgid "failed to get node information"
msgstr "failed to get node information"
msgid "failed to get the hypervisor version"
msgstr "failed to get the hypervisor version"
msgid "failed to get the library version"
msgstr "failed to get the library version"
#, c-format
msgid "failed to open %s for reading"
msgstr "failed to open %s for reading"
msgid "failed to open configuration file for reading"
msgstr "failed to open configuration file for reading"
msgid "failed to open file"
msgstr "failed to open file"
msgid "failed to parse Xend domain information"
msgstr "failed to parse Xend domain information"
msgid "failed to parse configuration file"
msgstr "failed to parse configuration file"
#, c-format
msgid "failed to parse configuration file %s"
msgstr "failed to parse configuration file %s"
msgid "failed to read configuration file"
msgstr "failed to read configuration file"
#, c-format
msgid "failed to read configuration file %s"
msgstr "failed to read configuration file %s"
msgid "failed to read from Xen Daemon"
msgstr "failed to read from Xen Daemon"
msgid "failed to save content"
msgstr "failed to save content"
msgid "failed to serialize S-Expr"
msgstr "failed to serialize S-Expr"
#, c-format
msgid "failed to serialize S-Expr: %s"
msgstr "failed to serialize S-Expr: %s"
msgid "failed to write configuration file"
msgstr "failed to write configuration file"
#, c-format
msgid "failed to write configuration file: %s"
msgstr "failed to write configuration file: %s"
msgid "getting time of day"
msgstr "getting time of day"
#, c-format
msgid "got unknown HTTP error code %d"
msgstr "got unknown HTTP error code %d"
msgid "gracefully shutdown a domain"
msgstr "gracefully shutdown a domain"
msgid "hypervisor connection URI"
msgstr "hypervisor connection URI"
msgid "in shutdown"
msgstr "in shutdown"
msgid "internal error"
msgstr "internal error"
msgid "invalid connection pointer in"
msgstr "invalid connection pointer in"
#, c-format
msgid "invalid connection pointer in %s"
msgstr "invalid connection pointer in %s"
msgid "invalid domain pointer in"
msgstr "invalid domain pointer in"
#, c-format
msgid "invalid domain pointer in %s"
msgstr "invalid domain pointer in %s"
#, c-format
msgid "library call %s failed, possibly not supported"
msgstr "library call %s failed, possibly not supported"
msgid "library call failed, possibly not supported"
msgstr "library call failed, possibly not supported"
msgid "list domains"
msgstr "list domains"
msgid "list inactive & active domains"
msgstr "list inactive & active domains"
msgid "list inactive domains"
msgstr "list inactive domains"
msgid "missing \""
msgstr "missing \""
msgid "missing devices information"
msgstr "missing devices information"
#, c-format
msgid "missing devices information for %s"
msgstr "missing devices information for %s"
msgid "missing kernel information"
msgstr "missing kernel information"
msgid "missing operating system information"
msgstr "missing operating system information"
#, c-format
msgid "missing operating system information for %s"
msgstr "missing operating system information for %s"
msgid "missing root device information"
msgstr "missing root device information"
#, c-format
msgid "missing root device information in %s"
msgstr "missing root device information in %s"
msgid "missing source information for device"
msgstr "missing source information for device"
#, c-format
msgid "missing source information for device %s"
msgstr "missing source information for device %s"
msgid "missing target information for device"
msgstr "missing target information for device"
#, c-format
msgid "missing target information for device %s"
msgstr "missing target information for device %s"
msgid "name of the inactive domain"
msgstr "name of the inactive domain"
msgid "no state"
msgstr "no state"
msgid "no valid connection"
msgstr "no valid connection"
msgid "node information"
msgstr "node information"
msgid "number"
msgstr "number"
msgid "number of virtual CPUs"
msgstr "number of virtual CPUs"
msgid "offline"
msgstr "offline"
msgid "operation failed"
msgstr "operation failed"
#, c-format
msgid "operation failed: %s"
msgstr "operation failed: %s"
msgid "operation forbidden for read only access"
msgstr "operation forbidden for read only access"
msgid "out of memory"
msgstr "out of memory"
msgid "parser error"
msgstr "parser error"
msgid "paused"
msgstr "paused"
msgid "print help"
msgstr "print help"
msgid "quit this interactive terminal"
msgstr "quit this interactive terminal"
msgid "read-only connection"
msgstr "read-only connection"
msgid "reboot a domain"
msgstr "reboot a domain"
msgid "restore a domain from a saved state in a file"
msgstr "restore a domain from a saved state in a file"
msgid "resume a domain"
msgstr "resume a domain"
msgid "running"
msgstr "running"
msgid "save a domain state to a file"
msgstr "save a domain state to a file"
msgid "show version"
msgstr "show version"
msgid "shut off"
msgstr "shut off"
msgid "start a (previously defined) inactive domain"
msgstr "start a (previously defined) inactive domain"
msgid "string"
msgstr "string"
msgid "suspend a domain"
msgstr "suspend a domain"
msgid "the state to restore"
msgstr "the state to restore"
msgid "this domain exists already"
msgstr "this domain exists already"
msgid "too many drivers registered"
msgstr "too many drivers registered"
#, c-format
msgid "too many drivers registered in %s"
msgstr "too many drivers registered in %s"
#, c-format
msgid "unexpected data '%s'"
msgstr "unexpected data '%s'"
msgid "unknown OS type"
msgstr "unknown OS type"
#, c-format
msgid "unknown OS type %s"
msgstr "unknown OS type %s"
#, c-format
msgid "unknown command: '%s'"
msgstr "unknown command: '%s'"
msgid "unknown host"
msgstr "unknown host"
#, c-format
msgid "unknown host %s"
msgstr "unknown host %s"
#, c-format
msgid "unsupported option '-%c'. See --help."
msgstr "unsupported option '-%c'. See --help."
msgid "unterminated number"
msgstr "unterminated number"
msgid "unterminated string"
msgstr "unterminated string"
msgid "vcpu number"
msgstr "vcpu number"
msgid "warning"
msgstr "warning"
msgid "where to dump the core"
msgstr "where to dump the core"
msgid "where to save the data"
msgstr "where to save the data"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Kazakh\n"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2018-04-06 15:54+0100\n"
"POT-Creation-Date: 2018-04-24 12:51+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Khmer\n"

Some files were not shown because too many files have changed in this diff Show More