]> xenbits.xensource.com Git - libvirt.git/log
libvirt.git
8 years agoqemu: Introduce qemuAliasFromHostdev
John Ferlan [Mon, 18 Jul 2016 17:19:02 +0000 (13:19 -0400)]
qemu: Introduce qemuAliasFromHostdev

Introduce a common API to generate the alias for a host device

8 years agoqemu: Add attempt to call qemuMonitorDriveDel for AttachSCSI failure path
John Ferlan [Mon, 18 Jul 2016 16:50:52 +0000 (12:50 -0400)]
qemu: Add attempt to call qemuMonitorDriveDel for AttachSCSI failure path

Completion of fix for:
    https://bugzilla.redhat.com/show_bug.cgi?id=1336225

Similar to the other disk types, add the qemuMonitorDriveDel in the failure
to add/hotplug a SCSI disk.

8 years agoqemu: Add attempt to call qemuMonitorDriveDel for USB failure path
John Ferlan [Wed, 29 Jun 2016 20:32:58 +0000 (16:32 -0400)]
qemu: Add attempt to call qemuMonitorDriveDel for USB failure path

Partial fix for:
    https://bugzilla.redhat.com/show_bug.cgi?id=1336225

Similar to the other disk types, add the qemuMonitorDriveDel in the failure
to add/hotplug a USB.

Added a couple of other formatting changes just to have a less cluttered look

8 years agoqemu: Make QEMU_DRIVE_HOST_PREFIX more private
John Ferlan [Wed, 29 Jun 2016 17:34:00 +0000 (13:34 -0400)]
qemu: Make QEMU_DRIVE_HOST_PREFIX more private

Move QEMU_DRIVE_HOST_PREFIX into the qemu_alias.c to dissuade future
callers from using it. Create qemuAliasDiskDriveSkipPrefix in order
to handle the current consumers that desire to check if an alias has
the drive- prefix and "get beyond it" in order to get the disk alias.

8 years agoqemu: Use qemuAliasFromDisk to generate drive alias
John Ferlan [Wed, 29 Jun 2016 17:11:58 +0000 (13:11 -0400)]
qemu: Use qemuAliasFromDisk to generate drive alias

Rather than open code build the drive alias command in multiple places,
use the helper to ensure consistency.

8 years agoqemu: Use qemuAliasFromDisk instead of qemuDeviceDriveHostAlias
John Ferlan [Wed, 29 Jun 2016 16:37:39 +0000 (12:37 -0400)]
qemu: Use qemuAliasFromDisk instead of qemuDeviceDriveHostAlias

Since we already have a function that will generate the drivestr from
the alias, let's use it and remove the qemuDeviceDriveHostAlias.

Move the QEMU_DRIVE_HOST_PREFIX definition into qemu_alias.h

Also alter qemuAliasFromDisk to use the QEMU_DRIVE_HOST_PREFIX instead
of "drive-%s".

8 years agoqemu: Use qemuAliasFromDisk to generate drive alias
John Ferlan [Mon, 1 Aug 2016 12:26:42 +0000 (08:26 -0400)]
qemu: Use qemuAliasFromDisk to generate drive alias

The qemuDomainSnapshotCreateSingleDiskActive open coded generating the
disk drive alias. Let's use the common function.

8 years agoqemu: Remove generation of drive alias from qcow passphrase backends
John Ferlan [Mon, 1 Aug 2016 12:11:44 +0000 (08:11 -0400)]
qemu: Remove generation of drive alias from qcow passphrase backends

Rather than pass the disks[i]->info.alias to qemuMonitorSetDrivePassphrase
and then generate the "drive-%s" alias from that, let's use qemuAliasFromDisk
prior to the call to generate the drive alias and then pass that along
thus removing the need to generate the alias from the monitor code.

8 years agoqemu: Reorder qemuDomainAttachUSBMassStorageDevice failure path
John Ferlan [Mon, 25 Apr 2016 16:26:48 +0000 (12:26 -0400)]
qemu: Reorder qemuDomainAttachUSBMassStorageDevice failure path

Modify the error/exit path to match what was done for Virtio and SCSI.
If nothing else it'll have a consistent look'n'feel

8 years agoevent-test: support node device lifecycle event APIs
Jovanka Gulicoska [Thu, 28 Jul 2016 12:02:56 +0000 (14:02 +0200)]
event-test: support node device lifecycle event APIs

8 years agonode_device: Implement event queue in udev
Jovanka Gulicoska [Thu, 28 Jul 2016 12:02:55 +0000 (14:02 +0200)]
node_device: Implement event queue in udev

8 years agonode_device: implement node device lifecycle event APIs
Jovanka Gulicoska [Thu, 28 Jul 2016 12:02:54 +0000 (14:02 +0200)]
node_device: implement node device lifecycle event APIs

8 years agoremote: implement node device lifecycle event APIs
Jovanka Gulicoska [Thu, 28 Jul 2016 12:02:53 +0000 (14:02 +0200)]
remote: implement node device lifecycle event APIs

8 years agotest: implement node device lifecycle event APIs
Jovanka Gulicoska [Thu, 28 Jul 2016 12:02:52 +0000 (14:02 +0200)]
test: implement node device lifecycle event APIs

Also includes unittests for node device lifecycle events API

8 years agoconf: add node_device_event handling
Jovanka Gulicoska [Thu, 28 Jul 2016 12:02:51 +0000 (14:02 +0200)]
conf: add node_device_event handling

Add node device event handling infrastructure to node_device_event.[ch]

8 years agoIntroduce node device lifecycle event APIs
Jovanka Gulicoska [Thu, 28 Jul 2016 12:02:50 +0000 (14:02 +0200)]
Introduce node device lifecycle event APIs

Node device lifecycle event API entry points for registering and
deregistering node deivce events, as well as types of events
associated with node device.
These entry points will be used for implementing asynchronous
lifecycle events.

Node device API:
virConnectNodeDeviceEventRegisterAny
virConnectNodeDeviceEventDeregisterAny
virNodeDeviceEventLifecycleType which has events CREATED and DELETED

8 years agoqemu: Set fake reboot flag to false when mode=agent
Nikolay Shirokovskiy [Tue, 2 Aug 2016 11:37:39 +0000 (07:37 -0400)]
qemu: Set fake reboot flag to false when mode=agent

As commit id 'e2b86f580' notes, when mode=agent possibly setting the
fake reboot flag to true wouldn't be necessary; however, it doesn't
"force" the issue by just ensuring the fake reboot is false, so this
patch adds the explicit setting for the reboot path.

More investigation and details can be found in commit id '8be502fd'
as well as in the archives at:

  https://www.redhat.com/archives/libvir-list/2015-April/msg00715.html

8 years agoqemu: Set fake reboot flag only in acpi mode for shutdown
Nikolay Shirokovskiy [Thu, 14 Jul 2016 11:08:22 +0000 (14:08 +0300)]
qemu: Set fake reboot flag only in acpi mode for shutdown

Conditional setting of the fake reboot flag should only happen for
the acpi mode shutdown path; however, for the agent mode shutdown,
the fake reboot should be cleared. This patch will essentially revert
commit id '8be502fd', but adds an explicit setting of the flag to false
when using mode=agent while also only conditionally setting the reboot
flag if the guest went away. This also avoids an issue where a shutdown
with reboot semantics is done from agent mode which sets the reboot
flag followed by a shutdown from within the guest which would result
in a reboot due to the fake reboot flag being set. The change will
also properly handle the cases described in the following archive post:

  https://www.redhat.com/archives/libvir-list/2015-April/msg00715.html

8 years agolibxl: Fix broken build attach/detach controller device
John Ferlan [Tue, 2 Aug 2016 13:20:32 +0000 (09:20 -0400)]
libxl: Fix broken build attach/detach controller device

Commit id '44304c6eb' added the API libxlDomainAttachControllerDevice
inside a conditional LIBXL_HAVE_PVUSB, but called that function outside
the conditional in libxlDomainAttachDeviceLive.

Similarly, the API libxlDomainDetachControllerDevice was added inside a
conditional LIBXL_HAVE_PVUSB, but called outside the conditional in
libxlDomainDetachDeviceLive.

This patch adds the conditional LIBXL_HAVE_PVUSB around those two calls
from within the switch.

8 years agolibxl: Fix broken build from libxlDomainCleanup
John Ferlan [Tue, 2 Aug 2016 13:18:56 +0000 (09:18 -0400)]
libxl: Fix broken build from libxlDomainCleanup

Commit id '7d3b2eb5' missed a closing parenthesis on the ignore_value
macro, causing the failure

8 years agorpc: virnetserver: Remove dead code checking the client limits
Erik Skultety [Wed, 20 Jul 2016 10:39:50 +0000 (12:39 +0200)]
rpc: virnetserver: Remove dead code checking the client limits

Prior to commit 2737aaaf, we allowed every client to connect successfully,
however, if accepting a client would eventually lead to an overcommit of the
limits, we would disconnect it immediately with "Too many active clients,
dropping connection from...". Recent changes refactored the code in a way, that
it is not possible for the client-related callback to be dispatched and the
client to be accepted if the limits wouldn't permit to do so, therefore a check
if a connection should be dropped due to limits violation has become a dead
code that could be removed.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
8 years agoadmin: rpc: virnetserver: Fix updating of the client limits
Erik Skultety [Wed, 20 Jul 2016 10:10:29 +0000 (12:10 +0200)]
admin: rpc: virnetserver: Fix updating of the client limits

Commit 2737aaaf changed our policy for accepting new clients in a way, that
instead of accepting new clients only to disconnect them immediately, since
that would overcommit the limit, we temporarily disable polling for the
dedicated file descriptor, so any new connection will queue on the socket.
Commit 8b1f0469 then added the possibility to change the limits during runtime
but it didn't re-enable polling for the previously disabled file descriptor,
thus any new connection would still continue to queue on the socket. This patch
forces an update of the services each time the limits were changed in some way.

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

Signed-off-by: Erik Skultety <eskultet@redhat.com>
8 years agorpc: virnetserver: Add code to CheckLimits to handle suspending of services
Erik Skultety [Wed, 20 Jul 2016 08:36:06 +0000 (10:36 +0200)]
rpc: virnetserver: Add code to CheckLimits to handle suspending of services

So far, virNetServerCheckLimits was only used to possibly re-enable accepting
new clients that might have previously been disabled due to client limits
violation (max_clients, max_anonymous_clients). This patch refactors
virNetServerAddClient, which is currently the only place where the services get
disabled, in order to use the virNetServerCheckLimits helper instead of
checking the limits by itself.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
8 years agorpc: virnetserver: Move virNetServerCheckLimits which is static up in the file
Erik Skultety [Wed, 20 Jul 2016 08:17:19 +0000 (10:17 +0200)]
rpc: virnetserver: Move virNetServerCheckLimits which is static up in the file

Since virNetServerAddClient checks for the limits in order to temporarily
suspend the services, thus not accepting any more clients, there is no reason
why virNetServerCheckLimits, which is only responsible for re-enabling
previously disabled services according to the limits, could not do both. To be
able to do that however, it needs to be moved up in the file since it's static
(and because it's just a helper and there's only one caller it should remain
 static).

Signed-off-by: Erik Skultety <eskultet@redhat.com>
8 years agorpc: virnetserver: Rename ClientSetProcessingControls to ClientSetLimits
Erik Skultety [Wed, 20 Jul 2016 07:32:20 +0000 (09:32 +0200)]
rpc: virnetserver: Rename ClientSetProcessingControls to ClientSetLimits

The original naming was just a leftover that should have been fixed in commit
8b1f0469.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
8 years agolibxl: add hooks support
Cédric Bosdonnat [Mon, 11 Jul 2016 11:55:53 +0000 (13:55 +0200)]
libxl: add hooks support

Introduce libxl hook and use it for start, prepare, started,
stop, stopped, migrate events.

8 years agolibxl: fix segfault in libxlReconnectDomain
Cédric Bosdonnat [Wed, 27 Jul 2016 12:46:41 +0000 (14:46 +0200)]
libxl: fix segfault in libxlReconnectDomain

In case of error, libxlReconnectDomain may call
virDomainObjListRemoveLocked. However it has no local reference on
the domain object, leading to segfault. Get a reference to the domain
object at the start of the function and release it at the end to avoid
problems.

This commit also factorizes code between the error and normal ends.

8 years agolibxl: add a flag to mark guests as tainted by a hook
Cédric Bosdonnat [Mon, 11 Jul 2016 13:54:31 +0000 (15:54 +0200)]
libxl: add a flag to mark guests as tainted by a hook

The migrate hook will affect the migrated guest definition. Allow
these domains be marked as tainted in the libxl driver.

8 years agoqemuDomainDeviceDefPostParse: add USB controller model check
Chunyan Liu [Wed, 15 Jun 2016 06:00:14 +0000 (14:00 +0800)]
qemuDomainDeviceDefPostParse: add USB controller model check

To sync with virDomainControllerModelUSB, we add two models
in qemuControllerModelUSB 'qusb1' and 'qusb2', but those
models are not supported in qemu driver. So add check in
device post parse to report errors if 'qusb1' and 'qusb2'
are specified.

Signed-off-by: Chunyan Liu <cyliu@suse.com>
8 years agoxenconfig: add conversion of usb controller config to and from xml
Chunyan Liu [Wed, 15 Jun 2016 06:00:12 +0000 (14:00 +0800)]
xenconfig: add conversion of usb controller config to and from xml

libxl configuration files conversion can now handle USB controllers.
When parting libxl config file, USB controllers with type PV are
ignored as those aren't handled.

Signed-off-by: Chunyan Liu <cyliu@suse.com>
8 years agolibxl: check available controller and port when hotplugging USB device
Chunyan Liu [Wed, 15 Jun 2016 06:00:11 +0000 (14:00 +0800)]
libxl: check available controller and port when hotplugging USB device

When hotplugging a USB device, check if there is an available controller
and port, if not, automatically create a USB controller of version
2.0 and 8 ports.

Signed-off-by: Chunyan Liu <cyliu@suse.com>
8 years agolibxl: support usb controller hotplug
Chunyan Liu [Wed, 15 Jun 2016 06:00:10 +0000 (14:00 +0800)]
libxl: support usb controller hotplug

Support USB controller hot-plug and hot-unplug.

 #virsh attach-device dom usbctrl.xml
 #virsh detach-device dom usbctrl.xml
 usbctrl.xml example:
 <controller type='usb' index='0' model='qusb2'>

Signed-off-by: Chunyan Liu <cyliu@suse.com>
8 years agolibxl: support USB controllers in creation time
Chunyan Liu [Wed, 15 Jun 2016 06:00:09 +0000 (14:00 +0800)]
libxl: support USB controllers in creation time

To support USB Controller in xen guest domains, just add
USB controller in domain config xml as following:
<controller type='usb' model='qusb2' ports='4'/>

Signed-off-by: Chunyan Liu <cyliu@suse.com>
8 years agoextend usb controller model to support xen pvusb
Chunyan Liu [Wed, 15 Jun 2016 06:00:08 +0000 (14:00 +0800)]
extend usb controller model to support xen pvusb

According to libxl implementation, it supports pvusb
controller of version 1.1 and version 2.0, and it
supports two types of backend, 'pvusb' (dom0 backend)
and 'qusb' (qemu backend). But currently pvusb backend
is not checked in yet.

To match libxl support, extend usb controller schema
to support two more models: qusb1 (qusb, version 1.1)
and 'qusb2' (qusb version 2.0).

Signed-off-by: Chunyan Liu <cyliu@suse.com>
8 years agovirsh: qemu-monitor-command: Simplify control flow
Peter Krempa [Mon, 1 Aug 2016 04:24:35 +0000 (06:24 +0200)]
virsh: qemu-monitor-command: Simplify control flow

Construct the query string by using virBufferTrim rather than having to
remember to add a space and simplify cleanup path.

8 years agovirsh: qemu-monitor-command: Use macro for exclusive options
Peter Krempa [Mon, 1 Aug 2016 04:12:17 +0000 (06:12 +0200)]
virsh: qemu-monitor-command: Use macro for exclusive options

8 years agoqemu: cap: Refactor access to array in virQEMUCapsProbeQMPMachineTypes
Peter Krempa [Fri, 29 Jul 2016 08:35:48 +0000 (10:35 +0200)]
qemu: cap: Refactor access to array in virQEMUCapsProbeQMPMachineTypes

Use a temporary pointer rather than always recalculating the index in a
very verbose way.

8 years agoqemu: caps: Sanitize storage of machine type related data
Peter Krempa [Fri, 29 Jul 2016 08:13:46 +0000 (10:13 +0200)]
qemu: caps: Sanitize storage of machine type related data

Add a structure to store the data and use a single array of the
structures rather than having 3 separate arrays with shared indexes.

8 years agoqemu: capabilities: Drop unused function virQEMUCapsGetMachineTypes
Peter Krempa [Fri, 29 Jul 2016 08:12:05 +0000 (10:12 +0200)]
qemu: capabilities: Drop unused function virQEMUCapsGetMachineTypes

8 years agostorage: Clean up volume wiping
Martin Kletzander [Thu, 14 Jul 2016 05:27:02 +0000 (07:27 +0200)]
storage: Clean up volume wiping

Let's cleanly differentiate what wiping a volume does for ploop and
other volumes so it's more readable what is done for each one instead of
branching out multiple times in different parts of the same function.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
8 years agostorage: Use path instead of volume as an argument
Martin Kletzander [Mon, 1 Aug 2016 12:04:29 +0000 (14:04 +0200)]
storage: Use path instead of volume as an argument

Some functions use volume specification merely to use the target path
from it.  Let's change it to pass the path only so that it can be used
for other files than just volumes.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
8 years agostorage: Move functions around
Martin Kletzander [Mon, 1 Aug 2016 11:38:10 +0000 (13:38 +0200)]
storage: Move functions around

This is done in order to call them in next patches from each other and
definitions would be missing otherwise.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
8 years agoqemu: Fix domain state after reset
Martin Kletzander [Wed, 13 Jul 2016 14:13:58 +0000 (16:13 +0200)]
qemu: Fix domain state after reset

When reset was called from a domain that crashed we didn't change the
crashed state into a paused one which could confuse users.

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

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
8 years agovirsh: Report error when explicit connection fails
Martin Kletzander [Fri, 29 Jul 2016 06:09:22 +0000 (08:09 +0200)]
virsh: Report error when explicit connection fails

Commit 0c56d9431839 forgot to return false in the cmdConnect command
after the clean up made there.

Before (assuming you don't have uri alias for 'asdf'):
  $ virsh connect asdf
  error: failed to connect to the hypervisor

  $ echo $?
  0

After (with the same assumption):
  $ virsh connect asdf
  error: failed to connect to the hypervisor
  error: no connection driver available for asdf

  $ echo $?
  1

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

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
8 years agoqemu: Fix support for startupPolicy with volume/pool disks
Martin Kletzander [Mon, 1 Aug 2016 15:51:28 +0000 (17:51 +0200)]
qemu: Fix support for startupPolicy with volume/pool disks

Until now we simply errored out when the translation from pool+volume
failed.  However, we should instead check whether that disk is needed or
not since there is an option for that.

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

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
8 years agoqemu: Remove unnecessary label and its only reference
Martin Kletzander [Mon, 1 Aug 2016 15:56:26 +0000 (17:56 +0200)]
qemu: Remove unnecessary label and its only reference

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
8 years agoqemu: Make qemuDomainCheckDiskStartupPolicy self-contained
Martin Kletzander [Mon, 1 Aug 2016 15:52:02 +0000 (17:52 +0200)]
qemu: Make qemuDomainCheckDiskStartupPolicy self-contained

There is an error reset following the function and check for
startupPolicy before that.  Let's reflect those things inside that
function so that future code doesn't have to be that complex.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
8 years agoPost-release version bump to 2.2.0
Michal Privoznik [Tue, 2 Aug 2016 11:00:38 +0000 (13:00 +0200)]
Post-release version bump to 2.2.0

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
8 years agoFix unbalanced quotation marks
Yuri Chornoivan [Tue, 2 Aug 2016 07:04:39 +0000 (09:04 +0200)]
Fix unbalanced quotation marks

8 years agoRelease of libvirt-2.1.0
Daniel Veillard [Tue, 2 Aug 2016 08:33:35 +0000 (10:33 +0200)]
Release of libvirt-2.1.0

* docs/news.html.in: updated for release
* po/*.po*: regenerated

8 years agoRevert "Fix unbalanced quotation marks"
Daniel Veillard [Tue, 2 Aug 2016 10:34:18 +0000 (12:34 +0200)]
Revert "Fix unbalanced quotation marks"

This reverts commit 6a40801186d1fcba38360f58659f898b67f08a01.
release of 2.1.0 need to go first

8 years agoFix unbalanced quotation marks
Yuri Chornoivan [Tue, 2 Aug 2016 07:04:39 +0000 (09:04 +0200)]
Fix unbalanced quotation marks

8 years agodaemon: sasl: Don't forget to save SASL username to client's identity
Erik Skultety [Thu, 28 Jul 2016 14:42:04 +0000 (16:42 +0200)]
daemon: sasl: Don't forget to save SASL username to client's identity

Once the SASL authentication process has successfully passed, we should also
save the SASL username used to client's identity, so that when a client like
virt-admin tries to obtain it, the server will actually format the username to
the response data.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
8 years agoadmin: Retrieve the SASL context for both local and remote connection
Erik Skultety [Tue, 19 Jul 2016 06:55:31 +0000 (08:55 +0200)]
admin: Retrieve the SASL context for both local and remote connection

When commit 4a0e9108 added a support for client information retrieval, it made
the API return SASL identity info only for clients connected remotely, yet SASL
can be happily used with UNIX sockets as well.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
8 years agostorage: Document wiping formatted volume types
Martin Kletzander [Thu, 14 Jul 2016 09:34:14 +0000 (11:34 +0200)]
storage: Document wiping formatted volume types

When wiping a volume we just rewrite all the data of the volume, not
only the content.  Since format gets overridden, we need to recreate the
volume.  However we can't do that for every possible format out there.
Since it was only coded for the ploop volume type, let's document what
might be the consequences instead of forbidding it for every other
format out there.

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

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
8 years agoqemu: remove panic dev models s390 and pseries when migrating
Boris Fiuczynski [Thu, 28 Jul 2016 13:15:49 +0000 (15:15 +0200)]
qemu: remove panic dev models s390 and pseries when migrating

The panic devices with models s390 and pseries are autogenerated.
For backwards compatibility reasons the devices are to be removed
when migrating.

Signed-off-by: Boris Fiuczynski <fiuczy@linux.vnet.ibm.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
8 years agowireshark: Drop glib dependency
Michal Privoznik [Mon, 1 Aug 2016 08:21:04 +0000 (10:21 +0200)]
wireshark: Drop glib dependency

The only function that we currently use from glib is g_sprintf().
That's a very big gun for such small target. Not only that, but
we've silently relied on wireshark dragging in the glib. Replace
the g_sprintf() with plain sprinf() so that we can drop the glib
dependency.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
8 years agoschema: fix resolved interfaces of network type
Nikolay Shirokovskiy [Wed, 20 Jul 2016 12:11:46 +0000 (15:11 +0300)]
schema: fix resolved interfaces of network type

  This patch reflects cases when <interface> element and its <source>
subelement for network type are formated based on actual type resolved
from referenced network instead of original one. networkAllocateActualDevice
and virDomainActualNetDefContentsFormat are taken as reference.

8 years agoschema: add missed alias element to memory device
Nikolay Shirokovskiy [Wed, 20 Jul 2016 12:11:45 +0000 (15:11 +0300)]
schema: add missed alias element to memory device

8 years agoqemu: fix domain id after domainCreateWithFlags()
Sascha Silbe [Wed, 27 Jul 2016 14:05:20 +0000 (16:05 +0200)]
qemu: fix domain id after domainCreateWithFlags()

Ever since virDomainCreateWithFlags() was introduced by de3aadaa
[drivers: add virDomainCreateWithFlags if virDomainCreate exists], the
domain ID retrieved with virDomainGetID() was incorrect for several
drivers after virDomainCreateWithFlags() was called. The API consumer
had to look up the domain anew to retrieve the correct ID.

For the ESX driver, this was fixed in 6139b274 [esx: Update ID after
starting a domain]. For the openvz driver, it was fixed in fd81a097
[openvzDomainCreateWithFlags: set domain id to the correct value]. The
test driver, the OpenNebula driver (removed in the meantime) and the
vbox driver were already updating the domain ID correctly in
domainCreate().

Copy over the ID in qemuDomainCreateWithFlags() to fix this for the qemu
driver, too.

Fixes: de3aadaa ("drivers: add virDomainCreateWithFlags if virDomainCreate exists")
Reported-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com>
Signed-off-by: Sascha Silbe <silbe@linux.vnet.ibm.com>
Tested-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com>
8 years agotests: qemu: Don't leak security manager object
Peter Krempa [Fri, 29 Jul 2016 16:06:51 +0000 (18:06 +0200)]
tests: qemu: Don't leak security manager object

==2064442== 200 (88 direct, 112 indirect) bytes in 1 blocks are definitely lost in loss record 54 of 73
==2064442==    at 0x4C2E0F0: calloc (vg_replace_malloc.c:711)
==2064442==    by 0x18E75B80: virAllocVar (viralloc.c:560)
==2064442==    by 0x18EC43B0: virObjectNew (virobject.c:193)
==2064442==    by 0x18EC476E: virObjectLockableNew (virobject.c:219)
==2064442==    by 0x1906BC73: virSecurityManagerNewDriver (security_manager.c:93)
==2064442==    by 0x1906C076: virSecurityManagerNewStack (security_manager.c:115)
==2064442==    by 0x43CC39: qemuTestDriverInit (testutilsqemu.c:548)
==2064442==    by 0x4337ED: mymain (qemumonitorjsontest.c:2440)
==2064442==    by 0x43BABE: virTestMain (testutils.c:982)
==2064442==    by 0x43A490: main (qemumonitorjsontest.c:2558)

8 years agoconf: Catch invalid memory model earlier
Michal Privoznik [Thu, 28 Jul 2016 16:20:31 +0000 (18:20 +0200)]
conf: Catch invalid memory model earlier

Consider the following XML snippet:

    <memory model=''>
      <target>
        <size unit='KiB'>523264</size>
        <node>0</node>
      </target>
    </memory>

Whats wrong you ask? The @model attribute. This should result in
an error thrown into users faces during virDomainDefine phase.
Except it doesn't. The XML validation catches this error, but if
users chose to ignore that, they will end up with invalid XML.
Well, they won't be able to start the machine - that's when error
is produced currently. But it would be nice if we could catch the
error like this earlier.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
8 years agoadmin: Fix default uri config option name s/admin_uri_default/uri_default
Erik Skultety [Wed, 27 Jul 2016 11:23:03 +0000 (13:23 +0200)]
admin: Fix default uri config option name s/admin_uri_default/uri_default

The original name 'admin_uri_default' was introduced to our code by commit
dbecb87f. However, at that time we already had a separate config file for
admin library but the commit mentioned above didn't properly adjust the
config's option name. The result is that when we're loading the config, we
check a non-existent config option (there's not much to do with the URIs
anyway, since we only allow local connection). Additionally, virt-admin's man
page documents, that the default URI can be altered by setting
admin_uri_default option. So the fix proposed by this patch leaves the
libvirt-admin.conf as is and adjusts the naming in the code as well as in the
virt-admin's man page.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
8 years agowireshark: Adapt to dissector function header change
Michal Privoznik [Thu, 28 Jul 2016 08:21:45 +0000 (10:21 +0200)]
wireshark: Adapt to dissector function header change

In wireshark commit bbdd89b9 (contained in 2.1.0 release) they
have changed prototype of dissector function. Now it returns
number of bytes consumed by the dissector, and can get a pointer
to user specified data (which we don't use).

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
8 years agoqemu: Need to free fileprops in error path
John Ferlan [Thu, 28 Jul 2016 13:25:40 +0000 (09:25 -0400)]
qemu: Need to free fileprops in error path

The virJSONValueObjectCreate only consumes the object on success, so on
failure we must free - from commit id 'f4441017' (found by Coverity).

8 years agoiscsi: Establish connection to target via static target login
John Ferlan [Sat, 16 Jul 2016 12:15:03 +0000 (08:15 -0400)]
iscsi: Establish connection to target via static target login

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

Commit id '56057900' altered the discovery of iSCSI node targets by
using the "--op nonpersistent". This caused issues for clean environments
or if by chance a "-m node -o delete" was executed.

Since each iSCSI Storage Pool has the required iSCSI target path, use
that and the virISCSINodeNew API in order to generate the iSCSI node record.

8 years agoutil: Introduce virISCSINodeNew
John Ferlan [Sat, 16 Jul 2016 12:10:30 +0000 (08:10 -0400)]
util: Introduce virISCSINodeNew

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

According to RFC 3721 (https://www.ietf.org/rfc/rfc3721.txt), there are
two ways to "discover" targets in/for the iSCSI environment. Discovery
is the process which allows the initiator to find the targets to which
it has access and at least one address at which each target may be
accessed.

The method currently implemented in libvirt using the virISCSIScanTargets
API is known as "SendTargets" discovery. This method is more useful when
the target IP Address and TCP port information are available, e.g. in
libvirt terms the "portal". It returns a list of targets for the portal.
From that list, the target can be found. This operation can also fill an
iSCSI node table into which iSCSI logins may occur. Commit id '56057900'
altered that filling by adding the "--op nonpersistent" since it was
not necessarily desired to perform that for non libvirt related targets.

The second method is "Static Configuration". This method not only needs
the IP Address and TCP port (e.g. portal), but also the iSCSI target name.
In libvirt terms this would be the device path field from the iSCSI pool
<source> XML. This patch implements the second methodology using that
required device path as the targetname.

8 years agotools: Make use of the correct environment variables
Erik Skultety [Thu, 28 Jul 2016 10:54:16 +0000 (12:54 +0200)]
tools: Make use of the correct environment variables

Since commit 834c5720 which extracted the generic functionality out of virsh
and made it available for other clients like virt-admin to make use of it, it
also introduced a bug when it renamed the original VIRSH_ environment variables
to VSH_ variables. Virt-admin of course suffers from the same bug, so this
patch modifies the generic module vsh.c to construct the correct name for
environment variables of each client from information it has.

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

Signed-off-by: Erik Skultety <eskultet@redhat.com>
8 years agovsh: Make vshInitDebug return int instead of void
Erik Skultety [Thu, 28 Jul 2016 10:33:21 +0000 (12:33 +0200)]
vsh: Make vshInitDebug return int instead of void

Well, the reason behind this change is that if the function is extended in some
way that e.g. would involve allocation we do not have a way of telling it to
the caller. More specifically, vshInitDebug only relies on some hardcoded
environment variables (by a mistake) that aren't documented anywhere so neither
virsh's nor virt-admin's documented environment variables take effect. One
possible solution would be duplicate the code for each CLI client or leave the
method be generic and provide means that it could figure out, which client
called it, thus initializing the proper environment variables but that could
involve operations that might as well fail in certain circumstances and the
caller should know that an error occurred.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
8 years agoRefresh translations from zanata
Daniel P. Berrange [Thu, 28 Jul 2016 10:22:28 +0000 (11:22 +0100)]
Refresh translations from zanata

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agovshReadlineParse: Drop some unused variables
Michal Privoznik [Wed, 27 Jul 2016 15:40:35 +0000 (17:40 +0200)]
vshReadlineParse: Drop some unused variables

My compiler identified some variables that were set, but never
actually used. For instance, opts_required, and data_acomplete.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
8 years agovshCmddefGetOption: Change type of opt_index
Michal Privoznik [Wed, 27 Jul 2016 15:28:40 +0000 (17:28 +0200)]
vshCmddefGetOption: Change type of opt_index

This function tries to look up desired option for a given parsed
command. Upon successful return it also stores option position
into passed *opt_index. Now, this variable is type of int, even
though it is never ever used to store negative value. Moreover,
the variable is set from a local variable which is type of
size_t.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
8 years agolibvirt.spec.in: fix indentation in previous commit
Daniel P. Berrange [Thu, 28 Jul 2016 10:48:00 +0000 (11:48 +0100)]
libvirt.spec.in: fix indentation in previous commit

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agoFix RPM spec for wireshark on Fedora < 24
Daniel P. Berrange [Thu, 28 Jul 2016 10:00:18 +0000 (11:00 +0100)]
Fix RPM spec for wireshark on Fedora < 24

This previous commit

  commit cd9fcc8be7dcb9126d70f744ce54b0b742eeefb8
  Author: Michal Privoznik <mprivozn@redhat.com>
  Date:   Wed Jul 27 16:58:32 2016 +0200

    libvirt.spec.in: Adapt to newest wireshark plugindir

Adapted the libvirt spec for wireshark >= 2.1.0 but
this ignored the fact that we enable wireshark from
Fedora 21 and 2.1.0 was only added in Fedora 24

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agostorage: remove "luks" storage volume type
Daniel P. Berrange [Tue, 26 Jul 2016 16:41:46 +0000 (17:41 +0100)]
storage: remove "luks" storage volume type

The current LUKS support has a "luks" volume type which has
a "luks" encryption format.

This partially makes sense if you consider the QEMU shorthand
syntax only requires you to specify a format=luks, and it'll
automagically uses "raw" as the next level driver. QEMU will
however let you override the "raw" with any other driver it
supports (vmdk, qcow, rbd, iscsi, etc, etc)

IOW the intention though is that the "luks" encryption format
is applied to all disk formats (whether raw, qcow2, rbd, gluster
or whatever). As such it doesn't make much sense for libvirt
to say the volume type is "luks" - we should be saying that it
is a "raw" file, but with "luks" encryption applied.

IOW, when creating a storage volume we should use this XML

  <volume>
    <name>demo.raw</name>
    <capacity>5368709120</capacity>
    <target>
      <format type='raw'/>
      <encryption format='luks'>
        <secret type='passphrase' uuid='0a81f5b2-8403-7b23-c8d6-21ccd2f80d6f'/>
      </encryption>
    </target>
  </volume>

and when configuring a guest disk we should use

  <disk type='file' device='disk'>
    <driver name='qemu' type='raw'/>
    <source file='/home/berrange/VirtualMachines/demo.raw'/>
    <target dev='sda' bus='scsi'/>
    <encryption format='luks'>
      <secret type='passphrase' uuid='0a81f5b2-8403-7b23-c8d6-21ccd2f80d6f'/>
    </encryption>
  </disk>

This commit thus removes the "luks" storage volume type added
in

  commit 318ebb36f1027b3357a32d6f781bd77d7a9043fd
  Author: John Ferlan <jferlan@redhat.com>
  Date:   Tue Jun 21 12:59:54 2016 -0400

    util: Add 'luks' to the FileTypeInfo

The storage file probing code is modified so that it can probe
the actual encryption formats explicitly, rather than merely
probing existance of encryption and letting the storage driver
guess the format.

The rest of the code is then adapted to deal with
VIR_STORAGE_FILE_RAW w/ VIR_STORAGE_ENCRYPTION_FORMAT_LUKS
instead of just VIR_STORAGE_FILE_LUKS.

The commit mentioned above was included in libvirt v2.0.0.
So when querying volume XML this will be a change in behaviour
vs the 2.0.0 release - it'll report 'raw' instead of 'luks'
for the volume format, but still report 'luks' for encryption
format.  I think this change is OK because the storage driver
did not include any support for creating volumes, nor starting
guets with luks volumes in v2.0.0 - that only since then.
Clearly if we change this we must do it before v2.1.0 though.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agovirstoragefile: refactor virStorageFileMatchesNNN methods
Daniel P. Berrange [Tue, 26 Jul 2016 17:10:41 +0000 (18:10 +0100)]
virstoragefile: refactor virStorageFileMatchesNNN methods

Refactor the virStorageFileMatchesNNN methods so that
they don't take a struct FileFormatInfo parameter, but
instead get the actual raw dat items they needs. This
will facilitate reuse in other contexts.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: Adapt to newest wireshark plugindir
Michal Privoznik [Wed, 27 Jul 2016 14:58:32 +0000 (16:58 +0200)]
libvirt.spec.in: Adapt to newest wireshark plugindir

In the old days, when wireshark plugin was introduced it was
installed under /usr/lib64/wireshark/plugins/$VERSION/ while with
wireshark-2.1.0 this path has changed just to
/usr/lib64/wireshark/plugins. We should teach our spec file about
this change.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
8 years agovirt-wireshark: Properly substract wireshark prefix
Michal Privoznik [Wed, 27 Jul 2016 14:44:25 +0000 (16:44 +0200)]
virt-wireshark: Properly substract wireshark prefix

So, when building wireshark plugin, we get the plugindir variable
from the wireshark.pc as well as prefix. Then we replace the
prefix in the plugindir with our own prefix where libvirt is
building to:

  plugindir="${prefix}${plugindir#ws_prefix}"

However, as you can see, there's '$' missing in front of the
ws_prefix variable. This results in the mangled plugindir, for
instance like this:

  plugindir='/usr/usr/lib64/wireshark/plugins'

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
8 years agoqemu: return balloon statistics when all domain statistics reported
Derbyshev Dmitry [Wed, 13 Jul 2016 10:42:16 +0000 (13:42 +0300)]
qemu: return balloon statistics when all domain statistics reported

To collect all balloon statistics for all guests it was necessary to make
several libvirt requests. Now it's possible to get all balloon statiscs via
single connectGetAllDomainStats call.

Signed-off-by: Derbyshev Dmitry <dderbyshev@virtuozzo.com>
8 years agoqemu: split qemuDomainMemoryStats into internal and external functions
Derbyshev Dmitry [Wed, 13 Jul 2016 10:42:15 +0000 (13:42 +0300)]
qemu: split qemuDomainMemoryStats into internal and external functions

Is necessary to call it from other contexts, such as qemuDomainGetStatsBalloon.

Signed-off-by: Derbyshev Dmitry <dderbyshev@virtuozzo.com>
8 years agoqemu: fix domain memory 'last-update' timestamp
Pavel Hrdina [Wed, 27 Jul 2016 13:33:44 +0000 (15:33 +0200)]
qemu: fix domain memory 'last-update' timestamp

This fixes commit 200a40f9 which introduced 'last-update' timestamp.

Signed-off-by: Derbyshev Dmitry <dderbyshev@virtuozzo.com>
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
8 years agoqemu: fix domain memory 'usable' stat
Pavel Hrdina [Wed, 27 Jul 2016 13:28:55 +0000 (15:28 +0200)]
qemu: fix domain memory 'usable' stat

This fixes commit 65bf0446 which introduced 'usable' stat.

Signed-off-by: Derbyshev Dmitry <dderbyshev@virtuozzo.com>
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
8 years agovirsh: Add balloon stats description to .pod
Derbyshev Dmitry [Wed, 13 Jul 2016 10:42:12 +0000 (13:42 +0300)]
virsh: Add balloon stats description to .pod

Description for existing balloon stats was missing for dommemstat.

Signed-off-by: Derbyshev Dmitry <dderbyshev@virtuozzo.com>
8 years agovirt-admin.pod: Remove a statement about remote access to the daemon
Erik Skultety [Wed, 27 Jul 2016 11:39:57 +0000 (13:39 +0200)]
virt-admin.pod: Remove a statement about remote access to the daemon

There's been a forgotten fragment (copy-paste error probably) in the
virt-admin's man page referring the reader to our web page on how to construct
URIs in case of remote access, which sort of implies that we support it which
we don't at the moment, so better remove that.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
8 years agoqemu: command: Add support for multi-host gluster disks
Prasanna Kumar Kalever [Mon, 25 Jul 2016 13:24:54 +0000 (15:24 +0200)]
qemu: command: Add support for multi-host gluster disks

To allow using failover with gluster it's necessary to specify multiple
volume hosts. Add support for starting qemu with such configurations.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
8 years agoqemu: command: Add infrastructure for object specified disk sources
Peter Krempa [Mon, 25 Jul 2016 17:51:18 +0000 (19:51 +0200)]
qemu: command: Add infrastructure for object specified disk sources

To allow richer definitions of disk sources add infrastructure that will
allow to register functionst generating a JSON object based definition.

This infrastructure will then convert the definition to the proper
command line syntax and use it in cases where it's necessary. This will
allow to keep legacy definitions for back-compat when possible and use
the new definitions for the configurations requiring them.

8 years agoutil: qemu: Add support for numbered array members
Peter Krempa [Mon, 25 Jul 2016 17:47:40 +0000 (19:47 +0200)]
util: qemu: Add support for numbered array members

Add support for converting objects nested in arrays with a numbering
discriminator on the command line. This syntax is used for the
object-based specification of disk source properties.

8 years agostorage: gluster: Support multiple hosts in backend functions
Peter Krempa [Fri, 22 Jul 2016 07:48:51 +0000 (09:48 +0200)]
storage: gluster: Support multiple hosts in backend functions

As gluster natively supports multiple hosts for failover reasons we can
easily add the support to the storage driver code in libvirt.

Extract the code setting an individual host into a separate function and
call them in a loop. The new code also tries to keep the debug log
entries sane.

8 years agoqemu: command: Refactor code extracted to qemuBuildDriveSourceStr
Peter Krempa [Mon, 25 Jul 2016 12:33:57 +0000 (14:33 +0200)]
qemu: command: Refactor code extracted to qemuBuildDriveSourceStr

Avoid a large block by tweaking the condition skipping empty drives and
split up the switch containing two branches having different purpose.

8 years agoqemu: command: Extract drive source command line formatter
Peter Krempa [Mon, 25 Jul 2016 12:18:50 +0000 (14:18 +0200)]
qemu: command: Extract drive source command line formatter

The disk source formatting code grew rather ugly and complex and it will
get worse. Extract it into a separated function to contain the mess.

8 years agoqemu: command: Split out network disk URI building
Peter Krempa [Fri, 22 Jul 2016 08:07:24 +0000 (10:07 +0200)]
qemu: command: Split out network disk URI building

Extract the code so that it can be called from multiple places. This
also removes a tricky fallthrough in the large switch in
qemuBuildNetworkDriveStr.

8 years agoqemu: command: Rename qemuBuildNetworkDriveURI to qemuBuildNetworkDriveStr
Peter Krempa [Fri, 22 Jul 2016 08:01:04 +0000 (10:01 +0200)]
qemu: command: Rename qemuBuildNetworkDriveURI to qemuBuildNetworkDriveStr

The function builds also non-uri strings for the various protocols.

8 years agoutil: storage: Add JSON backing volume parser for 'ssh' protocol
Peter Krempa [Fri, 15 Jul 2016 13:12:10 +0000 (15:12 +0200)]
util: storage: Add JSON backing volume parser for 'ssh' protocol

8 years agoutil: storage: Add 'ssh' network storage protocol
Peter Krempa [Tue, 9 Sep 2014 15:56:04 +0000 (17:56 +0200)]
util: storage: Add 'ssh' network storage protocol

Allow using 'ssh' protocol in backing chains and later for disks
themselves.

8 years agoutil: storage: Add JSON backing store parser for 'sheepdog' protocol
Peter Krempa [Thu, 14 Jul 2016 11:07:46 +0000 (13:07 +0200)]
util: storage: Add JSON backing store parser for 'sheepdog' protocol

8 years agoutil: storage: Add JSON backing volume parser for 'nbd' protocol
Peter Krempa [Thu, 14 Jul 2016 06:10:31 +0000 (08:10 +0200)]
util: storage: Add JSON backing volume parser for 'nbd' protocol

8 years agoutil: storage: Add json pseudo protocol support for iSCSI volumes
Peter Krempa [Wed, 13 Jul 2016 13:40:33 +0000 (15:40 +0200)]
util: storage: Add json pseudo protocol support for iSCSI volumes

iSCSI is a bit odd in this aspect since it only supports URIs but using
the 'filename' property and does not have any alternative syntax.

8 years agoutil: storage: Add json pseudo protocol support for gluster volumes
Peter Krempa [Wed, 13 Jul 2016 13:35:29 +0000 (15:35 +0200)]
util: storage: Add json pseudo protocol support for gluster volumes

Along with the legacy URI based syntax add support for the brand-new
fully object based syntax.

8 years agoutil: storage: Add support for URI based backing volumes in qemu's JSON pseudo-protocol
Peter Krempa [Tue, 12 Jul 2016 15:59:58 +0000 (17:59 +0200)]
util: storage: Add support for URI based backing volumes in qemu's JSON pseudo-protocol

http(s), ftp(s) and tftp use URIs for volume definitions in the JSON
pseudo protocol so it's pretty straightforward to add support for them.

8 years agoutil: storage: Add support for host device backing specified via JSON
Peter Krempa [Thu, 14 Jul 2016 11:58:26 +0000 (13:58 +0200)]
util: storage: Add support for host device backing specified via JSON

JSON pseudo protocol for qemu allows to explicitly specify devices.
Add convertor to the internal type.