]> xenbits.xensource.com Git - libvirt.git/log
libvirt.git
7 years agostorage: remove virConnectPtr from all backend functions
Daniel P. Berrangé [Fri, 26 Jan 2018 13:31:58 +0000 (13:31 +0000)]
storage: remove virConnectPtr from all backend functions

Now that we can open connections to the secondary drivers on demand,
there is no need to pass a virConnectPtr into all the backend
functions.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agostorage: open nodedev driver connection at time of use
Daniel P. Berrangé [Wed, 31 Jan 2018 16:31:57 +0000 (16:31 +0000)]
storage: open nodedev driver connection at time of use

Instead of passing around a virConnectPtr object, just open a connection
to the nodedev driver at time of use. Opening connections on demand will
be beneficial when the nodedev driver is in a separate daemon. It also
solves the problem that a number of callers just pass in a NULL
connection today which prevents nodedev lookup working at all.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agostorage: open secret driver connection at time of use
Daniel P. Berrangé [Fri, 26 Jan 2018 13:15:33 +0000 (13:15 +0000)]
storage: open secret driver connection at time of use

Instead of passing around a virConnectPtr object, just open a connection
to the secret driver at time of use. Opening connections on demand will
be beneficial when the secret driver is in a separate daemon. It also
solves the problem that a number of callers just pass in a NULL
connection today which prevents secret lookup working at all.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agodriver: add some helpers for opening secondary driver connections
Daniel P. Berrangé [Wed, 31 Jan 2018 18:21:52 +0000 (18:21 +0000)]
driver: add some helpers for opening secondary driver connections

Various parts of libvirt will want to open connections to secondary
drivers. The right URI to use will depend on the context, so rather than
duplicating that logic in various places, use some helper APIs. This
will also make it easier for us to later pre-open/cache connections to
avoid repeated opening & closing the same connectiong during autostart.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agosecret: allow opening with secret:///system and secret:///session URIs
Daniel P. Berrangé [Fri, 26 Jan 2018 11:16:00 +0000 (11:16 +0000)]
secret: allow opening with secret:///system and secret:///session URIs

Allow the possibility of opening a connection to only the secret
driver, by defining secret:///system and secret:///session URIs
and registering a fake hypervisor driver that supports them.

The hypervisor drivers can now directly open a secret driver
connection at time of need, instead of having to pass around a
virConnectPtr through many functions. This will facilitate the later
change to support separate daemons for each driver.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agonodedev: allow opening with nodedev:///system and nodedev:///session URIs
Daniel P. Berrangé [Fri, 26 Jan 2018 11:16:00 +0000 (11:16 +0000)]
nodedev: allow opening with nodedev:///system and nodedev:///session URIs

Allow the possibility of opening a connection to only the nodedev
driver, by defining nodedev:///system and nodedev:///session URIs
and registering a fake hypervisor driver that supports them.

The hypervisor drivers can now directly open a nodedev driver
connection at time of need, instead of having to pass around a
virConnectPtr through many functions. This will facilitate the later
change to support separate daemons for each driver.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agointerface: allow opening with interface:///system and interface:///session URIs
Daniel P. Berrangé [Fri, 26 Jan 2018 11:16:00 +0000 (11:16 +0000)]
interface: allow opening with interface:///system and interface:///session URIs

Allow the possibility of opening a connection to only the interface
driver, by defining interface:///system and interface:///session URIs
and registering a fake hypervisor driver that supports them.

The hypervisor drivers can now directly open a interface driver
connection at time of need, instead of having to pass around a
virConnectPtr through many functions. This will facilitate the later
change to support separate daemons for each driver.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agonwfilter: allow opening with nwfilter:///system URI
Daniel P. Berrangé [Fri, 26 Jan 2018 11:16:00 +0000 (11:16 +0000)]
nwfilter: allow opening with nwfilter:///system URI

Allow the possibility of opening a connection to only the storage
driver, by defining a nwfilter:///system URI and registering a fake
hypervisor driver that supports it.

The hypervisor drivers can now directly open a nwfilter driver
connection at time of need, instead of having to pass around a
virConnectPtr through many functions. This will facilitate the later
change to support separate daemons for each driver.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agonetwork: allow opening with network:///system and network:///session URIs
Daniel P. Berrangé [Fri, 26 Jan 2018 11:16:00 +0000 (11:16 +0000)]
network: allow opening with network:///system and network:///session URIs

Allow the possibility of opening a connection to only the network
driver, by defining network:///system and network:///session URIs
and registering a fake hypervisor driver that supports them.

The hypervisor drivers can now directly open a network driver
connection at time of need, instead of having to pass around a
virConnectPtr through many functions. This will facilitate the later
change to support separate daemons for each driver.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agonetwork: move driver registration back to end of the file
Daniel P. Berrangé [Fri, 26 Jan 2018 11:21:09 +0000 (11:21 +0000)]
network: move driver registration back to end of the file

By convention the last thing in the driver.c files should be the driver
callback table and function to register it.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agostorage: allow opening with storage:///system and storage:///session URIs
Daniel P. Berrangé [Fri, 26 Jan 2018 11:16:00 +0000 (11:16 +0000)]
storage: allow opening with storage:///system and storage:///session URIs

Allow the possibility of opening a connection to only the storage
driver, by defining storage:///system and storage:///session URIs
and registering a fake hypervisor driver that supports them.

The hypervisor drivers can now directly open a storage driver
connection at time of need, instead of having to pass around a
virConnectPtr through many functions. This will facilitate the later
change to support separate daemons for each driver.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agostorage: move driver registration back to end of the file
Daniel P. Berrangé [Fri, 26 Jan 2018 11:21:09 +0000 (11:21 +0000)]
storage: move driver registration back to end of the file

By convention the last thing in the driver.c files should be the driver
callback table and function to register it.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agoutil: use union for sockaddr structs to avoid aliasing
Daniel P. Berrange [Wed, 31 Jan 2018 17:27:11 +0000 (17:27 +0000)]
util: use union for sockaddr structs to avoid aliasing

Some platforms/toolchains will complain about casting
sockaddr_storage to sockaddr_un because it breaks strict
aliasing rule

../../src/util/virutil.c: In function 'virGetUNIXSocketPath':
../../src/util/virutil.c:2005: error: dereferencing pointer 'un' does break strict-aliasing rules [-Wstrict-aliasing]

Change the code to use a union, in the same way that the
virsocketaddr.h header does.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
7 years agotools: unlink bash completion files before symlinking
Daniel P. Berrangé [Wed, 31 Jan 2018 17:30:55 +0000 (17:30 +0000)]
tools: unlink bash completion files before symlinking

"ln" will not replace an existing symlink, so if you run 'make install'
twice, the second time will get an error:

  ln: failed to create symbolic link 'virsh': File exists

We must always remove the symlink target first.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agoFixed virGetUNIXSocketPath stub on Win32
Daniel P. Berrangé [Wed, 31 Jan 2018 17:10:04 +0000 (17:10 +0000)]
Fixed virGetUNIXSocketPath stub on Win32

The _() macro was not terminated and an argument needs to be marked as
unused.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agoqemu: Update qemuDomainFindSCSIControllerModel return
John Ferlan [Tue, 30 Jan 2018 22:11:54 +0000 (17:11 -0500)]
qemu: Update qemuDomainFindSCSIControllerModel return

Now that the controller model is updated during post parse callback,
this code no longer needs to fetch the model based on the capabilities
and can just return the model directly if the controller is found.

Removal of @qemuCaps cascades through various callers which are now
updated to not pass the capabilities.

7 years agoqemu: Reduce need to call qemuDomainGetSCSIControllerModel
John Ferlan [Tue, 30 Jan 2018 21:12:31 +0000 (16:12 -0500)]
qemu: Reduce need to call qemuDomainGetSCSIControllerModel

Now that post parse processing handles setting the SCSI controller
model, there's no need to call qemuDomainGetSCSIControllerModel to
get the "default controller" when building the command line controller
string or when assigning the spaprvio address since the controller
model value will already be filled in.

7 years agoconf: Allow configuration of implicit controller model
John Ferlan [Tue, 30 Jan 2018 21:09:30 +0000 (16:09 -0500)]
conf: Allow configuration of implicit controller model

When an implicit controller is added, the model is defined as -1
(IOW: undefined). So, if an implicit SCSI controller was added,
can set the model to the default value if the underlying hypervisor
supports it.

7 years agoqemu: Introduce qemuDomainSetSCSIControllerModel
John Ferlan [Tue, 30 Jan 2018 19:19:47 +0000 (14:19 -0500)]
qemu: Introduce qemuDomainSetSCSIControllerModel

During post parse processing, let's force setting the controller
model to default value if not already set for defined controllers
(e.g. the non implicit ones).

7 years agoqemu: Fetch/save the default SCSI controller model during hotplug
John Ferlan [Tue, 30 Jan 2018 22:29:48 +0000 (17:29 -0500)]
qemu: Fetch/save the default SCSI controller model during hotplug

If we're going to add a controller to the domain, let's set the
default SCSI model value if we cannot find another SCSI controller
already present.

NB: Requires updating the live output test data since the model
will now be formatted.

7 years agoqemu: Introduce qemuDomainGetSCSIControllerModel
John Ferlan [Tue, 30 Jan 2018 17:06:36 +0000 (12:06 -0500)]
qemu: Introduce qemuDomainGetSCSIControllerModel

Rename and rework qemuDomainSetSCSIControllerModel since we're
really not setting the SCSI controller model. Instead the code
is either returning the existing SCSI controller model value, the
default value based on the capabilities, or -1 with the error set.

7 years agoqemu: Introduce qemuDomainFindSCSIControllerModel
John Ferlan [Tue, 30 Jan 2018 15:45:43 +0000 (10:45 -0500)]
qemu: Introduce qemuDomainFindSCSIControllerModel

Rather than repeat multiple steps in order to find the SCSI
controller model, let's combine them into one helper that will
return either the model from the definition or the default
model based on the capabilities.

This patch adds an extra check/error that the controller
that's being found actually exists. This just clarifies that
the error was because the controller doesn't exist rather
than the more generic error that we were unable to determine
the model from qemuDomainSetSCSIControllerModel when a -1
was passed in and the capabilities were unable to find one.

7 years agoconf: Rework and rename virDomainDeviceFindControllerModel
John Ferlan [Tue, 30 Jan 2018 15:04:03 +0000 (10:04 -0500)]
conf: Rework and rename virDomainDeviceFindControllerModel

As it turns out virDomainDeviceFindControllerModel was only ever
called for SCSI controllers using VIR_DOMAIN_CONTROLLER_TYPE_SCSI
as a parameter.

So rename to virDomainDeviceFindSCSIController and rather than
return a model, let's return a virDomainControllerDefPtr to let
the caller reference whatever it wants.

7 years agoqemu: Split qemuDomainSetSCSIControllerModel
John Ferlan [Fri, 5 Jan 2018 22:32:28 +0000 (17:32 -0500)]
qemu: Split qemuDomainSetSCSIControllerModel

Rather than one function serving two purposes, let's split out the
else condition which is checking whether the model can be used
during command line building based on the capabilities.

Signed-off-by: John Ferlan <jferlan@redhat.com>
7 years agovirUSBDeviceNew: Construct vroot path properly
Michal Privoznik [Wed, 24 Jan 2018 09:26:07 +0000 (10:26 +0100)]
virUSBDeviceNew: Construct vroot path properly

When starting an LXC container, the /dev entries are created
under temp root (/var/run/libvirt/lxc/$name.dev), relabelled and
then the root is pivoted. However, when it comes to USB devices
which keep path to the device in the structure we need a way to
override the default /dev/usb/... path because we want to work
with the one under temp root. That's what @vroot argument is for
in virUSBDeviceNew. However, what is being passed there is:

  vroot = /var/run/libvirt/lxc/lxc_0.dev/bus/usb

Therefore, constructed path is wrong:

  dev->path = //var/run/libvirt/lxc/lxc_0.dev/bus/usb//dev/bus/usb/002/002

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agoCheck for tabs in augeas files
Daniel P. Berrangé [Wed, 31 Jan 2018 14:53:03 +0000 (14:53 +0000)]
Check for tabs in augeas files

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agolockd: add support for admin protocol in virtlockd
Daniel P. Berrange [Fri, 19 Jan 2018 14:54:00 +0000 (14:54 +0000)]
lockd: add support for admin protocol in virtlockd

Add a virtlockd-admin-sock can serves the admin protocol for the virtlockd
daemon and define a virtlockd:///{system,session}  URI scheme for
connecting to it.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
7 years agologd: add support for admin protocol in virtlogd
Daniel P. Berrange [Fri, 19 Jan 2018 14:54:00 +0000 (14:54 +0000)]
logd: add support for admin protocol in virtlogd

Add a virtlogd-admin-sock can serves the admin protocol for the virtlogd
daemon and define a virtlogd:///{system,session}  URI scheme for
connecting to it.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
7 years agorpc: refactor virNetServer setup for post-exec restarts
Daniel P. Berrange [Mon, 22 Jan 2018 17:38:55 +0000 (17:38 +0000)]
rpc: refactor virNetServer setup for post-exec restarts

With the current code it is neccessary to call

  virNetDaemonNewPostExecRestart()

and then for each server that needs restarting you are supposed
to call

  virNetDaemonAddSeverPostExecRestart()

This is fine if there's only ever one server, but as soon as you
have two servers it is impossible to use this design. The code
has no idea which servers were recorded in the JSON state doc,
nor in which order the hash table serialized its keys.

So this patch changes things so that we only call

  virNetDaemonNewPostExecRestart()

passing in a callback, which is invoked once for each server
found int he JSON state doc.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
7 years agorpc: add method for checking if a named server exists
Daniel P. Berrange [Mon, 22 Jan 2018 17:42:08 +0000 (17:42 +0000)]
rpc: add method for checking if a named server exists

It is not possible to blindly call virNetDaemonGetServer()
because in a post-exec restart scenario, some servers may
not exist and this method will pollute the error logs.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
7 years agorpc: annotate various parameters as being required to be non-NULL
Daniel P. Berrange [Tue, 23 Jan 2018 13:02:06 +0000 (13:02 +0000)]
rpc: annotate various parameters as being required to be non-NULL

The server name and client data callbacks need to be non-NULL or the
system will crash at various times. This is particularly bad when some
of the crashes only occur post-exec restart.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
7 years agorpc: pass virNetServer to post-exec restart callback in typesafe manner
Daniel P. Berrange [Fri, 19 Jan 2018 17:41:13 +0000 (17:41 +0000)]
rpc: pass virNetServer to post-exec restart callback in typesafe manner

The virNetServer class is passing a pointer to itself to the
virNetServerClient as a 'void *' pointer. This is presumably due to fact
that the virnetserverclient.h file doesn't see the virNetServerPtr
typedef. The typedef is easily movable though, which lets us get
typesafe parameter passing, removing the confusion of passing two
distinct 'void *' pointers to one method.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
7 years agorpc: clarify "void *" values passed to client callbacks
Daniel P. Berrange [Fri, 19 Jan 2018 17:24:03 +0000 (17:24 +0000)]
rpc: clarify "void *" values passed to client callbacks

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
7 years agoutil: add virGetUNIXSocketPath helper
Daniel P. Berrange [Fri, 19 Jan 2018 13:48:10 +0000 (13:48 +0000)]
util: add virGetUNIXSocketPath helper

When receiving multiple socket FDs from systemd, it is critical to know
what socket address each corresponds to so we can setup the right
protocols on each.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
7 years agoadmin: add support for post-exec restart callbacks
Daniel P. Berrange [Tue, 23 Jan 2018 13:20:19 +0000 (13:20 +0000)]
admin: add support for post-exec restart callbacks

We don't have any per-client private data we need to persist, but the
RPC infrastructure requires that we provide the callbacks and serialize
an empty JSON object. This makes us future proof going forwards.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
7 years agolibvirtd: rename virNetServerClient callback impls to match type names
Daniel P. Berrange [Mon, 22 Jan 2018 18:29:55 +0000 (18:29 +0000)]
libvirtd: rename virNetServerClient callback impls to match type names

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
7 years agoadmin: move admins server impl/dispatch into src/admin directory
Daniel P. Berrange [Fri, 19 Jan 2018 11:30:31 +0000 (11:30 +0000)]
admin: move admins server impl/dispatch into src/admin directory

The admin server functionality is a generic concept that should be wired
up into all libvirt daemons, but is currently integrated with the
libvirtd code. Move it all into the src/admin directory to prepare for
broader reuse.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
7 years agotools: Make symlinks to vsh bash-completion script
Michal Privoznik [Wed, 24 Jan 2018 15:42:00 +0000 (16:42 +0100)]
tools: Make symlinks to vsh bash-completion script

The bash-completion project documents that only those scripts
from $BASH_COMPLETIONS_DIR that share name with the current
command for which <TAB> was hit are loaded [1]. This means, that
vsh script we have there is not loaded. We have to create
symlinks for virsh and virt-admin.

At the same time, we have to create new RPM package because
virt-admin and client packages are independent. That means we
cannot place the vsh script in either of them. What we can do is
to have a different package that contains the completion script
and then virt-admin and client packages contain only the symlink
and require the bash-completion package.

1: https://github.com/scop/bash-completion#faq

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
7 years agovirsh: Offer only persistent domains for autostart
Michal Privoznik [Thu, 25 Jan 2018 13:50:32 +0000 (14:50 +0100)]
virsh: Offer only persistent domains for autostart

The 'autostart' command accepts only persistent domains. Make the
completer return only those.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
7 years agovirshDomainNameCompleter: Prune accepted flags
Michal Privoznik [Thu, 25 Jan 2018 13:47:56 +0000 (14:47 +0100)]
virshDomainNameCompleter: Prune accepted flags

Only a small subset of VIR_CONNECT_LIST_DOMAINS_* flags are
actually used for this completer. Remove the unused ones. Note
that this is unrelated to other commands using
VIR_CONNECT_LIST_DOMAINS_* (i.e. cmdList) as this commit targets
the completer only and nothing else.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
7 years agoqemu: Restore resctrl alloc data after restart
Martin Kletzander [Tue, 30 Jan 2018 22:57:52 +0000 (23:57 +0100)]
qemu: Restore resctrl alloc data after restart

During reconnect we need to reconstruct the paths of all cachetunes so that they
get cleaned up when the domain is stopped.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoutil: Extract path formatting into virResctrlAllocDeterminePath
Martin Kletzander [Tue, 30 Jan 2018 22:57:42 +0000 (23:57 +0100)]
util: Extract path formatting into virResctrlAllocDeterminePath

We can use this from more places later, so just a future code de-duplication.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoqemu: Restore machinename even without cgroups
Martin Kletzander [Tue, 30 Jan 2018 22:57:24 +0000 (23:57 +0100)]
qemu: Restore machinename even without cgroups

The virresctrl will use this as well and we need to have that info after restart
to properly clean up /sys/fs/resctrl.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoutil: Don't overwrite mask in virResctrlAllocFindUnused
Martin Kletzander [Tue, 30 Jan 2018 14:06:53 +0000 (15:06 +0100)]
util: Don't overwrite mask in virResctrlAllocFindUnused

Due to confusing naming the pointer to the mask got copied which must not
happen, so use UpdateMask instead of SetMask.  That also means we can get
completely rid of SetMask.

Also don't clear the free bits since it is not used again (leftover from
previous versions).

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoutil: Use default group's mask for unspecified resctrl allocations
Martin Kletzander [Fri, 26 Jan 2018 17:14:49 +0000 (18:14 +0100)]
util: Use default group's mask for unspecified resctrl allocations

Introduce virResctrlAllocCopyMasks() and use that to initially copy the default
group schemata to the allocation before reserving any parts of the cache.  The
reason for this is that when new group is created the schemata will have unknown
data in it.  If there was previously group with the same CLoS ID, it will have
the previous valies, if not it will have all bits set.  And we need to set all
unspecified (in the XML) allocations to the same one as the default group.

Some non-Linux functions now need to be made public due to this change.

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

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoutil: Add helpers for getting resctrl group allocs
Martin Kletzander [Thu, 25 Jan 2018 16:03:43 +0000 (17:03 +0100)]
util: Add helpers for getting resctrl group allocs

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoutil: storage: Parse 'lun' for iSCSI protocol from JSON as string or number
Peter Krempa [Wed, 31 Jan 2018 11:00:42 +0000 (12:00 +0100)]
util: storage: Parse 'lun' for iSCSI protocol from JSON as string or number

While the QEMU QAPI schema describes 'lun' as a number, the code dealing
with JSON strings does not strictly adhere to this schema and thus
formats the number back as a string. Use the new helper to retrieve both
possibilities.

Note that the formatting code is okay and qemu will accept it as an int.

Tweak also one of the test strings to verify that both formats work
with libvirt.

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

7 years agoutil: json: Add helper to return string or number properties as string
Peter Krempa [Wed, 31 Jan 2018 10:54:31 +0000 (11:54 +0100)]
util: json: Add helper to return string or number properties as string

The helper is useful in cases when the JSON we have to parse may contain
one of the two due to historical reasons and the number value itself
would be stored as a string.

7 years agoconf: Use correct attribute name in error message
Andrea Bolognani [Tue, 30 Jan 2018 14:11:10 +0000 (15:11 +0100)]
conf: Use correct attribute name in error message

The <capabilities> feature has an attribute named 'policy', but the
error message mentioned the non-existing 'state' attribute instead.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
7 years agostorage: util: Properly ignore errors when backing volume is inaccessible
Peter Krempa [Tue, 30 Jan 2018 10:41:59 +0000 (11:41 +0100)]
storage: util: Properly ignore errors when backing volume is inaccessible

Commit 000e9504559 tried to fix improper bracketing when refreshing disk
volume stats for a backing volume. Unfortunately the condition is still
wrong as in cases as the backing store being inaccessible
storageBackendUpdateVolTargetInfo returns -2 if instructed to ignore
errors. The condition does not take this into account.

Dumping XML of a volume which has inacessible backing store would then
result into:

 # virsh vol-dumpxml http.img --pool default
 error: An error occurred, but the cause is unknown

Properly ignore -2 for backing volumes.

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

7 years agoutil: Don't check if entries under /sys/fs/resctrl/(info/) are directories
Martin Kletzander [Mon, 29 Jan 2018 13:46:45 +0000 (14:46 +0100)]
util: Don't check if entries under /sys/fs/resctrl/(info/) are directories

We are skipping non-directories under /sys/fs/resctrl/(info/) since those are not
interesting for us.  However in tests it can sometimes happen that ent->d_type
is 0 instead of 4 (DT_DIR) for directories.

I've seen it fail on two machines.  Different machines, different systems, I
cannot reproduce it even using the same setup.  So one of the ways how to work
around this is call stat() on it.  The other one is not checking if it is a
directory since we'll find out eventually when we want to read some files
underneath it.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoutil: Remove unused variable in virResctrlGetInfo
Martin Kletzander [Mon, 29 Jan 2018 13:46:12 +0000 (14:46 +0100)]
util: Remove unused variable in virResctrlGetInfo

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoutil: Make it possible for virResctrlAllocSetMask to replace existing mask
Martin Kletzander [Fri, 26 Jan 2018 13:47:19 +0000 (14:47 +0100)]
util: Make it possible for virResctrlAllocSetMask to replace existing mask

This wil be used in the future, but it makes sense for now as well.  It makes
sure there is no mask leftover that would leak.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoutil: Use "resctrl" instead of "resctrlfs" spelling
Martin Kletzander [Sat, 27 Jan 2018 18:01:36 +0000 (19:01 +0100)]
util: Use "resctrl" instead of "resctrlfs" spelling

Pointed out during review on one or two places, but it actually appears in lot
more places.  So let's be consistent.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoutil: Check for empty allocation instead of just NULL pointer
Martin Kletzander [Sat, 27 Jan 2018 18:00:54 +0000 (19:00 +0100)]
util: Check for empty allocation instead of just NULL pointer

When working on the CAT series one of the changes was that the pointer got
allocated in another part of the code, even when resctrl was not available on
the host system.  However this one particular place neglected that so it needs
to be fixed in order to get the proper error message when requesting
<cachetune/> on HW with no support for it.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agobuild: Fix broken build on FreeBSD and OSX after recent nodedev series
Erik Skultety [Mon, 29 Jan 2018 16:07:38 +0000 (17:07 +0100)]
build: Fix broken build on FreeBSD and OSX after recent nodedev series

Commits f83c7c88 and 6eb1f2b9 broke the build on FreeBSD and OSX because
of symbols being undefined for those platforms.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agoqemu: Fix memory leak in processGuestPanicEvent
John Ferlan [Fri, 26 Jan 2018 20:32:27 +0000 (15:32 -0500)]
qemu: Fix memory leak in processGuestPanicEvent

After processing the processEvent->data for a qemuProcessEventHandler
callout, it's expected that the called processEvent->eventType helper
will perform the proper free on the data field. In this case it's
a qemuMonitorEventPanicInfoPtr.

7 years agodocs: formatdomain: Document the CPU feature 'name' attribute
Kashyap Chamarthy [Thu, 25 Jan 2018 09:09:01 +0000 (10:09 +0100)]
docs: formatdomain: Document the CPU feature 'name' attribute

Currently, the CPU feature 'name' XML attribute, as in:

    [...]
    <cpu match='exact'>
      <model fallback='forbid'>IvyBridge</model>
      <vendor>Intel</vendor>
      <feature policy='require' name='pcid'/>
    </cpu>
    [...]

isn't explicitly documented in formatdomain.html.

Document it now.

Signed-off-by: Kashyap Chamarthy <kchamart@redhat.com>
7 years agoconf: nodedev: Update PCI mdev capabilities dynamically
Erik Skultety [Tue, 23 Jan 2018 08:55:18 +0000 (09:55 +0100)]
conf: nodedev: Update PCI mdev capabilities dynamically

Just like SRIOV, a PCI device is only capable of the mediated devices
framework when it's bound to the vendor native driver, thus if a driver
change occurs, e.g. vendor_native->vfio, we need to refresh some of the
device's capabilities to reflect the reality, mdev included.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Suggested-by: Wu Zongyong <cordius.wu@huawei.com>
Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agoconf: Replace usage of virNodeDevCapMdevType with virMediatedDeviceType
Erik Skultety [Tue, 23 Jan 2018 08:51:11 +0000 (09:51 +0100)]
conf: Replace usage of virNodeDevCapMdevType with virMediatedDeviceType

Now that we have all the building blocks in place, switch the nodedev
driver to use the "new" virMediatedDeviceType type instead of the "old"
virNodeDevCapMdevType one.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agonodedev: udev: Drop the unused mdev type helpers
Erik Skultety [Tue, 23 Jan 2018 13:51:27 +0000 (14:51 +0100)]
nodedev: udev: Drop the unused mdev type helpers

These are not necessary anymore, since these are going to be shadowed by
the helpers provided by util/virmdev.c module.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agoutil: pci: Introduce virPCIGetMdevTypes helper
Erik Skultety [Fri, 19 Jan 2018 19:33:43 +0000 (20:33 +0100)]
util: pci: Introduce virPCIGetMdevTypes helper

This is a replacement for the existing udevPCIGetMdevTypesCap which is
static to the udev backend. This simple helper constructs the sysfs path
from the device's base path for each mdev type and queries the
corresponding attributes of that type.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agoutil: mdev: Introduce virMediatedDeviceTypeReadAttrs getter
Erik Skultety [Tue, 23 Jan 2018 08:55:52 +0000 (09:55 +0100)]
util: mdev: Introduce virMediatedDeviceTypeReadAttrs getter

This should serve as a replacement for the existing udevFillMdevType
which is responsible for fetching the device type's attributes from the
sysfs interface. The problem with the existing solution is that it's
tied to the udev backend.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agoutil: mdev: Introduce virMediatedDeviceType structure
Erik Skultety [Tue, 23 Jan 2018 08:47:43 +0000 (09:47 +0100)]
util: mdev: Introduce virMediatedDeviceType structure

This is later going to replace the existing virNodeDevCapMdevType, since:
1) it's going to couple related stuff in a single module
2) util is supposed to contain helpers that are widely accessible across
the whole repository.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agoutil: mdev: Drop some unused symbols/includes from the header
Erik Skultety [Tue, 23 Jan 2018 08:52:21 +0000 (09:52 +0100)]
util: mdev: Drop some unused symbols/includes from the header

There were some leftovers from early development which never got used.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agoconf: nodedev: Refresh capabilities before touching them
Erik Skultety [Thu, 18 Jan 2018 14:25:49 +0000 (15:25 +0100)]
conf: nodedev: Refresh capabilities before touching them

Most of them are static, however in case of PCI and SCSI_HOST devices,
the nested capabilities can change dynamically, e.g. due to a driver
change (from host_pci_driver -> vfio_pci).

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Suggested-by: Wu Zongyong <cordius.wu@huawei.com>
7 years agonodedev: Introduce virNodeDeviceCapsListExport
Erik Skultety [Fri, 19 Jan 2018 09:57:03 +0000 (10:57 +0100)]
nodedev: Introduce virNodeDeviceCapsListExport

Whether asking for a number of capabilities supported by a device or
listing them, it's handled essentially by a copy-paste code, so extract
the common stuff into this new helper which also updates all
capabilities just before touching them.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agonodedev: Export nodeDeviceUpdateCaps from node_device_conf.c
Erik Skultety [Thu, 18 Jan 2018 10:07:25 +0000 (11:07 +0100)]
nodedev: Export nodeDeviceUpdateCaps from node_device_conf.c

Since we moved the helpers from nodedev driver to src/conf, the actual
'update' function using those helpers should be moved as well so that we
don't need to call back into the driver.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agonodedev: Move the sysfs-related cap handling to node_device_conf.c
Erik Skultety [Fri, 12 Jan 2018 12:14:26 +0000 (13:14 +0100)]
nodedev: Move the sysfs-related cap handling to node_device_conf.c

The capabilities are defined/parsed/formatted/queried from this module,
no reason for 'update' not being part of the module as well. This also
involves some module-specific prefix changes.
This patch also drops the node_device_linux_sysfs module from the repo
since:
a) it only contained the capability handlers we just moved
b) it's only linked with the driver (by design) and thus unreachable to
other modules
c) we touch sysfs across all the src/util modules so the module being
deleted hasn't been serving its original intention for some time already.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agonodedev: Drop the nodeDeviceSysfsGetSCSIHostCaps wrapper
Erik Skultety [Fri, 12 Jan 2018 15:23:30 +0000 (16:23 +0100)]
nodedev: Drop the nodeDeviceSysfsGetSCSIHostCaps wrapper

We can call directly the virNodeDeviceGetSCSIHostCaps helper instead.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agoconf: nodedev: Convert virNodeDevObjHasCapStr to a simple wrapper
Erik Skultety [Tue, 23 Jan 2018 11:38:26 +0000 (12:38 +0100)]
conf: nodedev: Convert virNodeDevObjHasCapStr to a simple wrapper

This patch drops the capability matching redundancy by simply converting
the string input to our internal types which are then in turn used for
the actual capability matching.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agoconf: nodedev: Rename virNodeDeviceCapMatch to virNodeDevObjHasCap
Erik Skultety [Thu, 11 Jan 2018 12:43:29 +0000 (13:43 +0100)]
conf: nodedev: Rename virNodeDeviceCapMatch to virNodeDevObjHasCap

We currently have 2 methods that do the capability matching. This should
be condensed to a single function and all the derivates should just call
into that using a proper type conversion.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agoconf: nodedev: Rename virNodeDevObjHasCap to virNodeDevObjHasCapStr
Erik Skultety [Thu, 11 Jan 2018 12:43:29 +0000 (13:43 +0100)]
conf: nodedev: Rename virNodeDevObjHasCap to virNodeDevObjHasCapStr

We currently have 2 methods that do the capability matching. This should
be condensed to a single function and all the derivates should just call
into that using a proper type conversion.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agotest: Implementing testDomainRename().
Julio Faracco [Mon, 15 Jan 2018 19:18:08 +0000 (17:18 -0200)]
test: Implementing testDomainRename().

There is no method to rename inactive domains for test driver.
After this patch, we can rename the domains using 'domrename'.

    virsh# domrename test anothertest
    Domain successfully renamed

Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
7 years agotests: Clean up GIC test cases
Andrea Bolognani [Thu, 25 Jan 2018 14:12:39 +0000 (15:12 +0100)]
tests: Clean up GIC test cases

These test cases are supposed to verify GIC support works as
expected, and shouldn't concern themselves with other features;
we can trim them down significantly, and make them less likely
to need updating after unrelated changes.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
7 years agovhost-user: add support reconnect for vhost-user ports
ZhiPeng Lu [Wed, 17 Jan 2018 16:14:06 +0000 (00:14 +0800)]
vhost-user: add support reconnect for vhost-user ports

For vhost-user ports, Open vSwitch acts as the server and QEMU the client.
When OVS crashes or restarts, the QEMU process should be reconnected to
OVS.

Signed-off-by: ZhiPeng Lu <lu.zhipeng@zte.com.cn>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
7 years agodocs: Add missing element encryption description term entry
John Ferlan [Thu, 25 Jan 2018 18:40:00 +0000 (13:40 -0500)]
docs: Add missing element encryption description term entry

Missed adding the "encryption" description term entry to the list
of possible sub-elements for disk source. The description details
were there, just not the tag.

7 years agoresctl: stub out functions with Linux-only APIs used
Daniel P. Berrangé [Thu, 25 Jan 2018 17:42:36 +0000 (17:42 +0000)]
resctl: stub out functions with Linux-only APIs used

The flock() function and d_type field in struct dirent are not portable
to the mingw platform.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agorpc: fix race sending and encoding sasl data
Daniel P. Berrange [Mon, 18 Dec 2017 17:41:12 +0000 (17:41 +0000)]
rpc: fix race sending and encoding sasl data

The virNetSocketWriteSASL method has to encode the buffer it is given and then
write it to the underlying socket. This write is not guaranteed to send the
full amount of data that was encoded by SASL. We cache the SASL encoded data so
that on the next invocation of virNetSocketWriteSASL we carry on sending it.

The subtle problem is that the 'len' value passed into virNetSocketWriteSASL on
the 2nd call may be larger than the original value. So when we've completed
sending the SASL encoded data we previously cached, we must return the original
length we encoded, not the new length.

This flaw means we could potentially have been discarded queued data without
sending it. This would have exhibited itself as a libvirt client never receiving
the reply to a method it invokes, async events silently going missing, or worse
stream data silently getting dropped.

For this to be a problem libvirtd would have to be queued data to send to the
client, while at the same time the TCP socket send buffer is full (due to a very
slow client). This is quite unlikely so if this bug was ever triggered by a real
world user it would be almost impossible to reproduce or diagnose, if indeed it
was ever noticed at all.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
7 years agolibxl: resume lock process after failed migration
Jim Fehlig [Wed, 24 Jan 2018 21:23:04 +0000 (14:23 -0700)]
libxl: resume lock process after failed migration

During migration, the lock process is paused in the perform phase
but not resumed if there is a subsequent failure, leaving the locked
resource unprotected.

The perform phase itself can fail, in which case the lock process
should be resumed before returning from perform. The finish phase
could also fail on the destination host, in which case the migration
is canceled in the confirm phase and the VM is resumed. The lock
process needs to be resumed there as well.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
7 years agotests: Clean up and modify some vircaps2xmldata
Martin Kletzander [Tue, 23 Jan 2018 13:53:38 +0000 (14:53 +0100)]
tests: Clean up and modify some vircaps2xmldata

Basically the `cpus` and `tasks` files are not needed, and I've witnessed on a
real system that the schemata file may have spaces prepended to a line, so let's
adjust at least one test so that it reflects what can happen.  Also `000`
allocation is invalid and a full mask means it's all free.  So adjust for that
too.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agodocs: Add CAT (resctrl) support into news.xml
Martin Kletzander [Sun, 12 Nov 2017 22:16:36 +0000 (23:16 +0100)]
docs: Add CAT (resctrl) support into news.xml

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoqemu: Add support for resctrl
Martin Kletzander [Fri, 10 Nov 2017 12:21:51 +0000 (13:21 +0100)]
qemu: Add support for resctrl

We've been building up to this.  This adds support for cputune/cachetune
settings for domains in the QEMU driver.  The addition into
qemuProcessSetupVcpu() automatically adds support for hotplug.  For hot-unplug
we need to remove the allocation only if all the vCPUs were unplugged.  But
since the threads are left running, we can't really do much about it now.

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

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agotests: Add virresctrltest
Martin Kletzander [Sat, 11 Nov 2017 08:13:08 +0000 (09:13 +0100)]
tests: Add virresctrltest

This test initializes capabilities from vircaps2xmldata (since it exists there
already) and then requests list of free bitmaps (all unallocated space) from
virresctrl.c

Desirable outputs are saved in virresctrldata.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoconf: Add support for cputune/cachetune
Martin Kletzander [Fri, 10 Nov 2017 13:47:05 +0000 (14:47 +0100)]
conf: Add support for cputune/cachetune

More info in the documentation, this is basically the XML parsing/formatting
support, schemas, tests and documentation for the new cputune/cachetune element
that will get used by following patches.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoresctrl: Add functions to work with resctrl allocations
Martin Kletzander [Mon, 16 Oct 2017 15:17:32 +0000 (17:17 +0200)]
resctrl: Add functions to work with resctrl allocations

With this commit we finally have a way to read and manipulate basic resctrl
settings.  Locking is done only on exposed functions that read/write from/to
resctrlfs.  Not in functions that are exposed in virresctrlpriv.h as those are
only supposed to be used from tests.

More information about how resctrl works:

  https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/x86/intel_rdt_ui.txt

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agofixup_resctrlinfo
Martin Kletzander [Wed, 24 Jan 2018 14:47:31 +0000 (15:47 +0100)]
fixup_resctrlinfo

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoutil: Remove now-unneeded resctrl functions
Martin Kletzander [Mon, 20 Nov 2017 13:01:59 +0000 (14:01 +0100)]
util: Remove now-unneeded resctrl functions

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoconf: Use virResctrlInfo in capabilities
Martin Kletzander [Mon, 20 Nov 2017 12:43:30 +0000 (13:43 +0100)]
conf: Use virResctrlInfo in capabilities

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoutil: Add virResctrlInfo
Martin Kletzander [Mon, 20 Nov 2017 10:12:06 +0000 (11:12 +0100)]
util: Add virResctrlInfo

This will make the current functions obsolete and it will provide more
information to the virresctrl module so that it can be used later.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoRename virResctrlInfo to virResctrlInfoPerCache
Martin Kletzander [Mon, 20 Nov 2017 09:23:04 +0000 (10:23 +0100)]
Rename virResctrlInfo to virResctrlInfoPerCache

Just to ease the review of following patches.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agovsh: Cmd aliases lookups should return results for the aliased command
Erik Skultety [Thu, 25 Jan 2018 15:13:37 +0000 (16:13 +0100)]
vsh: Cmd aliases lookups should return results for the aliased command

Unfortunately, we have a number of aliases in virsh and even though
these are not visible any more, we have to support them. The problem is
that when trying to print help for the alias, we get SIGSEGV because
there isn't any @def structure anymore and we need to query the command
being aliased instead.

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

Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agovsh: Drop redundant definition searches from vshCmd{def,Grp}Help
Erik Skultety [Thu, 25 Jan 2018 15:08:46 +0000 (16:08 +0100)]
vsh: Drop redundant definition searches from vshCmd{def,Grp}Help

These helpers are called from a single place only - cmdHelp wrapper and
just before the wrapper invokes the helpers, it performs the search,
either for command group or for the command itself, except the result is
discarded and the helper therefore needs to do it again. Drop this
inefficient handling and pass the @def structure rather than a name,
thus preventing the helper from needing to perform the search again.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agoqemu: add support for generating SMBIOS OEM strings command line
Daniel P. Berrange [Wed, 17 Jan 2018 17:35:13 +0000 (17:35 +0000)]
qemu: add support for generating SMBIOS OEM strings command line

This wires up the previously added OEM strings XML schema to be able to
generate comamnd line args for QEMU. This requires QEMU >= 2.12 release
containing this patch:

  commit 2d6dcbf93fb01b4a7f45a93d276d4d74b16392dd
  Author: Daniel P. Berrange <berrange@redhat.com>
  Date:   Sat Oct 28 21:51:36 2017 +0100

    smbios: support setting OEM strings table

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
7 years agoconf: add support for setting OEM strings SMBIOS data fields
Daniel P. Berrange [Sat, 28 Oct 2017 13:56:51 +0000 (14:56 +0100)]
conf: add support for setting OEM strings SMBIOS data fields

The OEM strings table in SMBIOS allows the vendor to pass arbitrary
strings into the guest OS. This can be used as a way to pass data to an
application like cloud-init, or potentially as an alternative to the
kernel command line for OS installers where you can't modify the install
ISO image to change the kernel args.

As an example, consider if cloud-init and anaconda supported OEM strings
you could use something like

    <oemStrings>
      <entry>cloud-init:ds=nocloud-net;s=http://10.10.0.1:8000/</entry>
      <entry>anaconda:method=http://dl.fedoraproject.org/pub/fedora/linux/releases/25/x86_64/os</entry>
    </oemStrings>

use of a application specific prefix as illustrated above is
recommended, but not mandated, so that an app can reliably identify
which of the many OEM strings are targetted at it.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
7 years agocpu: Add support for al57 Intel features
Shaohe Feng [Sun, 17 Dec 2017 23:02:44 +0000 (18:02 -0500)]
cpu: Add support for al57 Intel features

We can start qemu with a "cpu,+la57" to set 57-bit vitrual address
space. So VM can be aware that it need to enable 5-level paging.

Corresponding QEMU commits:
        al57 6c7c3c21f95dd9af8a0691c0dd29b07247984122

7 years agomailmap: set preferred spelling for my name
Daniel P. Berrangé [Thu, 25 Jan 2018 09:42:14 +0000 (09:42 +0000)]
mailmap: set preferred spelling for my name

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agolibxl: add explicit linkage to xenstore library
Daniel P. Berrange [Tue, 23 Jan 2018 18:17:13 +0000 (18:17 +0000)]
libxl: add explicit linkage to xenstore library

Since

  commit eee7bd4ecb5a3e83ed47cc89bf0dc4866b4858af
  Author: Joao Martins <joao.m.martins@oracle.com>
  Date:   Tue Jul 26 00:45:14 2016 +0100

    libxl: implement virDomainBlockStats

    Introduce initial support for domainBlockStats API

the libxl driver calls a couple of xenstore APIs, so it must explicitly
link to this library rather than rely on indirect linkage via libxl or
other xen libraries.

Reviewed-by: Jim Fehlig <jfehlig@suse.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
7 years agodocs: Mention just implemented completers
Michal Privoznik [Fri, 12 Jan 2018 15:27:39 +0000 (16:27 +0100)]
docs: Mention just implemented completers

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agovirsh: Introduce virshSnapshotNameCompleter
Michal Privoznik [Fri, 12 Jan 2018 14:28:30 +0000 (15:28 +0100)]
virsh: Introduce virshSnapshotNameCompleter

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>