Commit Graph

12611 Commits

Author SHA1 Message Date
Peter Krempa
f36a94f236 qemu: shared: Split out insertion code to the shared device list
To allow reuse split the code into a separate function and refactor it.
To update an existing entry there's no need to copy it first, just
update it inplace.
2014-08-20 09:28:04 +02:00
Peter Krempa
b57ca1320c qemu: hotplug: Format proper source string for cdrom media change
Use the qemu source string formatter to format the source string
correctly for remote and other storage instead of passing source->path
blindly.
2014-08-20 09:28:04 +02:00
Peter Krempa
1f39218e4f qemu: hotplug: Change arguments for qemuDomainChangeEjectableMedia
Pass the source of the changed media instead of a complete disk
definition.

Note that the @disk argument now contains what @olddisk would contain.
The new source is passed as a virStorageSource struct.
2014-08-20 09:28:04 +02:00
Peter Krempa
ca91ba78bd qemu: hotplug: Add helper to initialize/teardown new disks for VMs
When we are changing media (or doing other hotplug operations) we need
to setup cgroups, locking and seclabels on the new disk. This is a
multi-step process where every piece can fail. To simplify dealing with
this introduce qemuDomainPrepareDisk that similarly to
qemuDomainPrepareDiskChainElement initializes/tears down  a whole new
disk to be used with the domain.

Additionally the function supports passing a different source struct for
media changes of cdroms that will be refactored later.
2014-08-20 09:28:03 +02:00
Peter Krempa
240eb2fb89 qemu: hotplug: Untangle cleanup paths in qemuDomainChangeEjectableMedia
Avoid the "audit" label to simplify control flow.
2014-08-20 09:28:03 +02:00
Peter Krempa
1cc6bdc2e6 conf: Pass virStorageSource into virDomainDiskSourceIsBlockType
All checks are based on the storage source, thus there's no need to pass
the complete disk def.
2014-08-20 09:28:03 +02:00
Peter Krempa
afa44743b6 qemu: Explicitly state that hotplugging cdroms and floppies doesn't work 2014-08-20 09:28:03 +02:00
Giuseppe Scrivano
2143934009 conf: fix comment
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2014-08-19 21:47:49 +02:00
Giuseppe Scrivano
62df8ce07f qemu_command: fix block indentation
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2014-08-19 21:47:49 +02:00
Giuseppe Scrivano
583b7aa7d9 conf, virDomainFSDefPtr: rename "path" argument to "target"
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2014-08-19 21:47:49 +02:00
Roman Bogorodskiy
6c2e7d0b17 bhyve: add volumes support
Update bhyveBuildDiskArgStr to support volumes:

 - Make virBhyveProcessBuildBhyveCmd and
   virBhyveProcessBuildLoadCmd take virConnectPtr as the
   first argument instead of bhyveConnPtr as virConnectPtr is
   needed for virStorageTranslateDiskSourcePool,
 - Add virStorageTranslateDiskSourcePool call to
   virBhyveProcessBuildBhyveCmd and
   virBhyveProcessBuildLoadCmd,
 - Allow disks of type VIR_STORAGE_TYPE_VOLUME
2014-08-19 20:50:22 +04:00
Roman Bogorodskiy
8c170c9fe6 storage: make disk source pool translation generic
Currently, qemu driver uses qemuTranslateDiskSourcePool()
to translate disk volume information. This function is
general enough and could be used for other drivers as well,
so move it to conf/domain_conf.c along with its helpers.

 - qemuTranslateDiskSourcePool: move to storage/storage_driver.c
   and rename to virStorageTranslateDiskSourcePool,
 - qemuAddISCSIPoolSourceHost: move to storage/storage_driver.c
   and rename to virStorageAddISCSIPoolSourceHost,
 - qemuTranslateDiskSourcePoolAuth: move to storage/storage_driver.c
   and rename to virStorageTranslateDiskSourcePoolAuth,
 - Update users of qemuTranslateDiskSourcePool to use a
   new name.
2014-08-19 20:50:12 +04:00
Peter Krempa
2b748fb604 driver: Move virDrvNetworkGetDHCPLeases to the appropriate section
The prototype was along with domain API prototypes instead of network
API ones.
2014-08-19 15:08:20 +02:00
Martin Kletzander
7d9def2ec1 qemu: allow device block I/O tuning in session mode
In commit 45ad1adb I added a nicer message for tunings that need
cgroups when unavailable (unprivileged), but I added this check for
I/O tuning of block devices, which doesn't need cgroups, because it is
done by QEMU, so let's fix that.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
2014-08-19 14:03:11 +02:00
Jim Fehlig
337a136282 src/xenconfig: move common parsing/formatting to xen_common
XM and XL config are very similar.  Disks are specified differently
in XL, but the old XM disk config is still supported by XL.  XL also
supports new config like spice that was never supported by XM.

This patch moves all the common parsing and formatting functions to
the new file xen_common.c and adapts the XM parser/formatter accordingly.
This restructuring paves way for introducing an XL parser/formatter in
the future.

While moving the code, fixup whitespace, comments, and style issues.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
2014-08-18 20:47:38 -06:00
Kiarie Kahurani
f67bf6e9b5 src/xenconfig: wrap common formatting code
Wrap formatting code common to xm and xl in xenFormatConfigCommon
and export it.

Signed-off-by: Kiarie Kahurani <davidkiarie4@gmail.com>
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
2014-08-18 20:37:07 -06:00
Kiarie Kahurani
512f673835 src/xenconfig: wrap common parsing code
Wrap parsing code common to xm and xl in xenParseConfigCommon
and export it.

Signed-off-by: Kiarie Kahurani <davidkiarie4@gmail.com>
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
2014-08-18 20:36:56 -06:00
Jim Fehlig
870c90c70f xen: rename xenxs to xenconfig
src/xenxs contains parsing/formating functions for the various xen
config formats, and is better named src/xenconfig.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
2014-08-18 20:36:24 -06:00
Peter Krempa
482f4e596f qemu: process: Pin on per-vcpu basis instead of per-vcpupin element
Pin existing vcpus rather than existing vcpu pinning infos. This
increases the complexity of the lookup, but avoids pinning cpus that are
not enabled actually.
2014-08-18 17:43:05 +02:00
Peter Krempa
60df621f75 qemu: cpu: unplug: Remove vcpu pinning on cold cpu unplug
Remove the pinning info when removing to CPU, otherwise when the VM will
be started our code will try to pin non-existing vcpus as the definition
wasn't updated.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1129372
2014-08-18 17:43:05 +02:00
Peter Krempa
64bbf4c33d conf: Refactor virDomainVcpuPinDefParseXML
Tidy up control flow, change boolean argument to use 'bool', improve
error message in case the function is used to parse emulator pinning
info and avoid a few temp variables that made no sense.

Also when the function is called to parse emulator pinning info, there's
no need to check the processor ID in that case.
2014-08-18 17:43:05 +02:00
Peter Krempa
cb8a94bfa0 conf: cpupin: Remove useless checking of vcpupin element count
The check doesn't make much sense as right below it the entries are
either checked for duplicity or ignored in some cases. Having this check
doesn't actually forbid passing invalid values.
2014-08-18 17:43:05 +02:00
Peter Krempa
a821f1f028 qemu: process: Remove unnecessary argument and rename function
We set just one affinity of the emulator and the virConnectPtr isn't
needed for that function.
2014-08-18 17:43:05 +02:00
Erik Skultety
9b1759bbe9 qemu: Redundant listen address entry in quest xml
When editing guest's XML (on QEMU), it was possible to add multiple
listen elements into graphics parent element. However QEMU does not
support listening on multiple addresses. Configuration is tested for
multiple 'listen address' and if positive, an error is raised.

https://bugzilla.redhat.com/show_bug.cgi?id=1119212
2014-08-18 14:45:37 +02:00
Taowei
cdba7c90c9 vbox: Introducing vboxCommonDriver
After this patch, we will have only one common domain driver.
So, the rewritten on domain driver is finished in this patch.
2014-08-15 09:25:13 +02:00
Taowei
37cf7594cf vbox: Add registerDomainEvent 2014-08-15 09:25:13 +02:00
Taowei
1eda86b049 vbox: Rewrite vboxNode functions
Four functions are rewrite in this patch, that is:
vboxNodeGetInfo
vboxNodeGetCellsFreeMemory
vboxNodeGetFreeMemory
vboxNodeGetFreePages
Since these functions has nothing to do with vbox,
it can be directly moved to vbox_common.c. So, I
merged these things into one patch.
2014-08-15 09:25:13 +02:00
Taowei
df11b63382 vbox: Rewrite vboxConnectListAllDomains 2014-08-15 09:25:12 +02:00
Taowei
72f92bce44 vbox: Rewrite vboxDomainScreenshot 2014-08-15 09:25:12 +02:00
Taowei
4fab8d3f07 vbox: Rewrite vboxDomainSnapshotDelete 2014-08-15 09:25:12 +02:00
Taowei
a9725126bf vbox: Rewrite vboxDomainRevertToSnapshot 2014-08-15 09:25:12 +02:00
Taowei
410b2183b7 vbox: Rewrite vboxDomainSnapshotHasMetadata 2014-08-15 09:25:12 +02:00
Taowei
d722d8c7a9 vbox: Rewrite vboxDomainSnapshotIsCurrent 2014-08-15 09:25:12 +02:00
Taowei
8bd1316258 vbox: Rewrite vboxDomainSnapshotCurrent 2014-08-15 09:25:12 +02:00
Taowei
cb348feeef vbox: Rewrite vboxDomainSnapshotGetParent 2014-08-15 09:25:12 +02:00
Taowei
7528bf20a2 vbox: Rewrite vboxDomainHasCurrentSnapshot 2014-08-15 09:25:12 +02:00
Taowei
e36d9a7637 vbox: Rewrite vboxSnapshotLookupByName 2014-08-15 09:25:12 +02:00
Taowei
47eb32d311 vbox: Rewrite vboxDomainSnapshotListNames 2014-08-15 09:25:12 +02:00
Taowei
1157d85c12 vbox: Rewrite vboxDomainSnapshotNum 2014-08-15 09:25:12 +02:00
Taowei
72c23d65c1 vbox: Rewrite vboxDomainSnapshotGetXMLDesc 2014-08-15 09:25:12 +02:00
Taowei
677ecdc070 vbox: Rewrite vboxDomainSnapshotCreateXML
The vboxDomainSnapshotCreateXML integrated the snapshot redefine
with this patch:
http://www.redhat.com/archives/libvir-list/2014-May/msg00589.html
This patch introduced vboxSnapshotRedefine in vboxUniformedAPI to
enable the features.

This patch replace all version specified APIs to the uniformed api,
then, moving the whole implementation to vbox_common.c. As there
is only API level changes, the behavior of the function doesn't
change.

Some old version's defects has brought to the new one. The already
known things are:
    *goto cleanup in a loop without releasing the pointers in the
    loop.
    *When function failed after machine unregister, no roll back
    to recovery it and the virtual machine would disappear.
2014-08-15 09:25:12 +02:00
Taowei
51d1a29dd8 vbox: Add API for vboxDomainSnapshotCreateXML 2014-08-15 09:25:12 +02:00
Taowei
2ad7b494a9 vbox: Rewrite vboxDomainDetachDeviceFlags 2014-08-15 09:25:12 +02:00
Taowei
fa12d7c300 vbox: Rewrite vboxDomainDetachDevice 2014-08-15 09:25:12 +02:00
Taowei
6be94596a8 vbox: Rewrite vboxDomainUpdateDeviceFlags
Since vboxDomainAttachDeviceImple not used in vbox_tmpl.c, it has
been deleted.
2014-08-15 09:25:12 +02:00
Taowei
5877687765 vbox: Rewrite vboxDomainAttachDeviceFlags 2014-08-15 09:25:12 +02:00
Taowei
2b5e727413 vbox: Rewrite vboxDomainAttachDevice 2014-08-15 09:25:11 +02:00
Taowei
400bdccb2a vbox: Rewrite vboxDomainUndefine 2014-08-15 09:25:11 +02:00
Taowei
4eaa78be7a vbox: Rewrite vboxConnectNumOfDefinedDomains 2014-08-15 09:25:11 +02:00
Taowei
4ebae5e8b6 vbox: Rewrite vboxConnectListDefinedDomains 2014-08-15 09:25:11 +02:00
Taowei
3611c4000c vbox: Rewrite vboxDomainGetXMLDesc 2014-08-15 09:25:11 +02:00
Taowei
80095678d8 vbox: Add API for vboxDomainGetXMLDesc 2014-08-15 09:25:11 +02:00
Taowei
696ad27977 vbox: Rewrite vboxDomainGetMaxVcpus 2014-08-15 09:25:11 +02:00
Taowei
e9f17c5330 vbox: Rewrite vboxDomainGetVcpusFlags 2014-08-15 09:25:11 +02:00
Taowei
35cb445a51 vbox: Rewrite vboxDomainSetVcpus 2014-08-15 09:25:11 +02:00
Taowei
da3b862aad vbox: Rewrite vboxDomainSetVcpusFlags 2014-08-15 09:25:11 +02:00
Taowei
97d8a17bf5 vbox: Rewrite vboxDomainGetState 2014-08-15 09:25:11 +02:00
Taowei
b412975345 vbox: Rewrite vboxDomainGetInfo 2014-08-15 09:25:11 +02:00
Taowei
2cd7a218de vbox: Rewrite vboxDomainSetMemory 2014-08-15 09:25:11 +02:00
Taowei
0ba1c21471 vbox: Rewrite vboxDomainGetOSType 2014-08-15 09:25:11 +02:00
Taowei
40b733e7e2 vbox: Rewrite vboxDomainDestroy 2014-08-15 09:25:11 +02:00
Taowei
25d807d42a vbox: Rewrite vboxDomainDestroyFlags 2014-08-15 09:25:11 +02:00
Taowei
14babb4981 vbox: Rewrite vboxDomainReboot 2014-08-15 09:25:11 +02:00
Taowei
502c43ee44 vbox: Rewrite vboxDomainShutdown 2014-08-15 09:25:11 +02:00
Taowei
67533a8148 vbox: Rewrite vboxDomainShutdownFlags 2014-08-15 09:25:11 +02:00
Taowei
395ecc456e vbox: Rewrite vboxDomainResume 2014-08-15 09:25:11 +02:00
Taowei
8b89505a20 vbox: Rewrite vboxDomainSuspend 2014-08-15 09:25:10 +02:00
Taowei
caba5247fd vbox: Rewrite vboxDomainIsUpdated 2014-08-15 09:25:10 +02:00
Taowei
c9537d13b0 vbox: Rewrite vboxDomainIsPersistent 2014-08-15 09:25:10 +02:00
Taowei
fa2f9abcc1 vbox: Rewrite vboxDomainIsActive 2014-08-15 09:25:10 +02:00
Taowei
2ba3ccbb88 vbox: Rewrite vboxDomainLookupByName 2014-08-15 09:25:10 +02:00
Taowei
856ceb8cb3 vbox: Rewrite vboxDomainCreateXML 2014-08-15 09:25:10 +02:00
Taowei
e979ad3991 vbox: Rewrite vboxDomainCreate 2014-08-15 09:25:10 +02:00
Taowei
815d17398c vbox: Rewrite vboxDomainCreateWithFlags 2014-08-15 09:25:10 +02:00
Taowei
34364df3c6 vbox: Rewrite vboxDomainDefineXML 2014-08-15 09:25:10 +02:00
Taowei
e60e8da4cb vbox: Rewrite vboxDomainUndefineFlags 2014-08-15 09:25:10 +02:00
Taowei
e89a93c071 vbox: Rewrite vboxDomainLookupByUUID 2014-08-15 09:25:10 +02:00
Taowei
9dd4f8eded vbox: Rewrite vboxDomainLookupById 2014-08-15 09:25:10 +02:00
Taowei
5f15b511e9 vbox: Rewrite vboxConnectNumOfDomains 2014-08-15 09:25:10 +02:00
Taowei
0958334ac0 vbox: Rewrite vboxConnectListDomains 2014-08-15 09:25:10 +02:00
Taowei
30a95f30ef vbox: Rewrite vboxConnectGetCapabilities 2014-08-15 09:25:10 +02:00
Taowei
82513be8ba vbox: Rewrite vboxConnectGetMaxVcpus 2014-08-15 09:25:10 +02:00
Taowei
427931ae0c vbox: Rewrite vboxConnectIsAlive 2014-08-15 09:25:10 +02:00
Taowei
16dcbaf09b vbox: Rewrite vboxConnectIsEncrypted 2014-08-15 09:25:10 +02:00
Taowei
3a959b36fd vbox: Rewrite vboxConnectIsSecure 2014-08-15 09:25:10 +02:00
Taowei
86142d8e9a vbox: Rewrite vboxConnectGetHostname 2014-08-15 09:25:09 +02:00
Taowei
6e906ffa91 vbox: Rewrite vboxConnectGetVersion 2014-08-15 09:25:09 +02:00
Taowei
7e052265c9 vbox: Rewrite vboxDomainSave
All vbox objects are child objects from the nsISupports in vbox's
C++ API version. Since the CAPI is generated from the C++ API, I
kept their relationship here, by the definitations below:

typedef struct nsISupports nsISupports;
typedef nsISupports IVirtualBox;
typedef nsISupports ISession;
and so on...

So, when calling the API from nsISupports, we don't need to do
typecasting, and things work still work well.
2014-08-15 09:25:09 +02:00
Taowei
c6084f19d0 vbox: Rewrite vboxConnectClose 2014-08-15 09:25:09 +02:00
Taowei
7f0f415b87 vbox: Begin to rewrite, vboxConnectOpen
Introduce vbox_uniformed_api to deal with version conflicts. Use
vbox_install_api to register the currect vboxUniformedAPI with
vbox version.

vboxConnectOpen has been rewritten.
2014-08-15 09:25:09 +02:00
Laine Stump
7809615056 network: fix crash when starting a network with no <pf> element
Martin Kletzander pointed out in email that my commit 2a193f64
introduced a crash in networkCreateInterfacePool() during startup of
any network that doesn't have a <pf> subelement of its <forward>
element. He also supplied a patch.

 http://www.redhat.com/archives/libvir-list/2014-August/msg00655.html

I expanded on that patch by cleaning up now-extraneous checks in the
callers of networkCreateInterfacePool().

Fortunately the offending patch hasn't been in any release, and hasn't
been (to my knowledge) backported to any other branch.
2014-08-15 02:42:52 -04:00
Jim Fehlig
62c817e516 src/xenxs: Refactor code formating vif device config
Handle formating of VIF config in a new function xenFormatXMVif().

Signed-off-by: Kiarie Kahurani <davidkiarie4@gmail.com>
2014-08-14 11:49:53 -06:00
Kiarie Kahurani
2e2ac1ed4a src/xenxs: Refactor code formating peripheral device config
introduce functions
  xenFormatXMSound
  xenFormatXMInputDevs(virConfPtr conf,....);
which formats peripheral device config instead

Signed-off-by: Kiarie Kahurani <davidkiarie4@gmail.com>
2014-08-14 11:49:53 -06:00
Kiarie Kahurani
a54b4144fb src/xenxs: Refactor code formating Vfb config
introduce function
   xenFormatXMVfb(virConfPtr conf,.........);
which formats Vfb config instead

Signed-off-by: Kiarie Kahurani <davidkiarie4@gmail.com>
2014-08-14 11:49:53 -06:00
Kiarie Kahurani
5c5cac8ced src/xenxs: Refactor code formating OS config
introduce functions
   xenFormatXMEmulator(virConfPtr conf,........);
   xenFormatXMCDROM(virConfPtr conf, .......);
   xenFormatXMOS(virConfPtr conf,........);
which formats OS and associated config instead

Signed-off-by: Kiarie Kahurani <davidkiarie4@gmail.com>
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
2014-08-14 11:49:53 -06:00
Kiarie Kahurani
208660e046 src/xenxs: Refactor code formating CPU config
introduce functions
  xenFormatXMCPUAllocation(virConfPtr conf, ......);
  xenFormatXMCPUFeatures(virConfPtr conf, ......);
which formats CPU allocation and features config

Signed-off-by: Kiarie Kahurani <davidkiarie4@gmail.com>
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
2014-08-14 11:49:53 -06:00
Kiarie Kahurani
f8ad0198a1 src/xenxs: Refactor code formating xm disk config
introduce function
  xenFormatXMDisks(virConfPtr conf,.........);
which formats domain disks config instead

Signed-off-by: Kiarie Kahurani <davidkiarie4@gmail.com>
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
2014-08-14 11:49:53 -06:00
Kiarie Kahurani
5dde1629fb src/xenxs: Refactor code formating Char devices config
introduce function
   xenFormatXMCharDev(virConfPtr conf,........);
which formats Char devices config instead

Signed-off-by: Kiarie Kahurani <davidkiarie4@gmail.com>
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
2014-08-14 11:49:53 -06:00
Kiarie Kahurani
c849d01c5e src/xenxs: Refactor code formating event actions config
introduce function
   xenFormatXMEventActions(virConfPtr conf,.........);
which formats event actions instead

Signed-off-by: Kiarie Kahurani <davidkiarie4@gmail.com>
2014-08-14 11:49:53 -06:00
Kiarie Kahurani
a7de003a94 src/xenxs: Refactor code formating virtual time config
introduce function
  xenFormatXMTimeOffset(virConfPtr conf,........);
which formats time config instead

Signed-off-by: Kiarie Kahurani <davidkiarie4@gmail.com>
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
2014-08-14 11:49:53 -06:00