qemu-server.git
3 days agofixup: delete cloudinit disk before restoring master
Thomas Lamprecht [Fri, 17 May 2019 10:09:51 +0000 (12:09 +0200)]
fixup: delete cloudinit disk before restoring

cloudinit is just completely broken...
Until we rewrite this to a sane designe (i.e., never backup, mirror,
... any CI disk anywhere - the state is in the config and gets
created on start and deleted on stop anyway) do this..

Co-developed-by: Mira Limbek <m.limbek@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 days agoQemuServer: code cleanup
Thomas Lamprecht [Fri, 17 May 2019 08:53:50 +0000 (10:53 +0200)]
QemuServer: code cleanup

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 days agofollouwp: set is_cloudinit in drive to avoid always rechecking
Thomas Lamprecht [Fri, 17 May 2019 08:53:30 +0000 (10:53 +0200)]
follouwp: set is_cloudinit in drive to avoid always rechecking

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
4 days agomap cloudinit disk to new vmid on restore
Mira Limbeck [Thu, 16 May 2019 12:07:01 +0000 (14:07 +0200)]
map cloudinit disk to new vmid on restore

Resolves the issue of restoring a VM that has a cloudinit drive
configured to a new VMID. The VMID of the disk name gets now remapped
correctly and in the process the cloudinit disk is created with the same size
as in PVE/API2/Qemu.pm create_disks and in PVE/QemuServer/Cloudinit
commit_cloudinit_disk as the same constant is used.

This is done by matching any line starting with either 'ide', 'sata' or
'scsi' and then check if it is a cloudinit drive. As cloudinit drives
are attached as cdrom, only those 3 are possible. For the cloudinit
check we use 'parse_drive' followed by 'drive_is_cloudinit' so no custom
regex is necessary.

'--targetstorage' is also taken into account on restore now for
cloudinit disks. If a target storage is specified the format is either
kept if possible, or changed to the default of that storage.

This should fix #1807 completely. The restore error was already resolved
with commit 7e8ab2a, but the vmid of the disk might not have matched the new
one.

Signed-off-by: Mira Limbeck <m.limbeck@proxmox.com>
4 days agointroduce one global CLOUDINIT_DISK_SIZE constant
Mira Limbeck [Thu, 16 May 2019 12:07:00 +0000 (14:07 +0200)]
introduce one global CLOUDINIT_DISK_SIZE constant

The variable is used instead of the literal value so we have one single
place to change the actual value of every use.

Signed-off-by: Mira Limbeck <m.limbeck@proxmox.com>
4 days agofixup: shorter/conciser comment
Thomas Lamprecht [Thu, 16 May 2019 14:28:53 +0000 (16:28 +0200)]
fixup: shorter/conciser comment

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
4 days agofix clone_disk with formats other than raw/qcow2
Mira Limbeck [Thu, 16 May 2019 13:08:50 +0000 (15:08 +0200)]
fix clone_disk with formats other than raw/qcow2

with commit 64d1a6a it's now possible to specify a format other than raw
or qcow2 when creating VMs. This can lead to an error when cloning the
VMs and a cloudinit disk with a different format is attached (e.g.
vmdk).

We use QEMU_FORMAT_RE in drive_is_cloudinit and according to the
QEMU_FORMAT_RE we support 7 different formats.

With this change we add any format other than 'raw' as '.<format>' to the
name and no longer die on any other format. Cloudinit disks with invalid
format are not cloned as the drive is recognized as cdrom, not cloudinit.

Signed-off-by: Mira Limbeck <m.limbeck@proxmox.com>
5 days agofollowup: fixup comment
Thomas Lamprecht [Wed, 15 May 2019 14:33:46 +0000 (16:33 +0200)]
followup: fixup comment

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
5 days agofix existing cloudinit volume not available for file_size_info
Mira Limbeck [Wed, 15 May 2019 10:53:24 +0000 (12:53 +0200)]
fix existing cloudinit volume not available for file_size_info

file_size_info can't find the file if it is not available, e.g.,
RBD storage with KRBD or LVM where the volume was not yet activated,
returns then 0, which we interpret as the disk not existing, thus
call vdisk_alloc which errors as the disk, in fact, really already exists.

With this patch we call activate_volume before trying
file_size_info, so if the volume exists we get it available and else
we can really create it.
If the disk does not exist and is created with vdisk_alloc we still
require an additional call to activate_volume for the new disk.

Signed-off-by: Mira Limbeck <m.limbeck@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
5 days agofix #503: print correct offline time for stop mode backups
Thomas Lamprecht [Wed, 8 May 2019 17:32:37 +0000 (17:32 +0000)]
fix #503: print correct offline time for stop mode backups

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 days agod/control: add ${misc:Depends} to Depends list
Thomas Lamprecht [Mon, 13 May 2019 16:06:50 +0000 (16:06 +0000)]
d/control: add ${misc:Depends} to Depends list

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 days agofixup: correct initial prefix
Thomas Lamprecht [Mon, 13 May 2019 06:05:51 +0000 (06:05 +0000)]
fixup: correct initial prefix

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 days agominor followup cleanups
Thomas Lamprecht [Mon, 13 May 2019 05:49:31 +0000 (05:49 +0000)]
minor followup cleanups

remove now out of date commen about 'our', left over from previous
revision

Pass firs $prefix directly to function and some other small stuff

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 days agofix #1999: create a tree view for qm listsnapshot
Rhonda D'Vine [Fri, 10 May 2019 12:45:55 +0000 (14:45 +0200)]
fix #1999: create a tree view for qm listsnapshot

The look of the tree is based on the GUI variant, so that we have a
consistent output when run multiple times, too.

Signed-off-by: Rhonda D'Vine <rhonda@proxmox.com>
13 days agomigrate: log which local resource causes error
Tim Marx [Fri, 3 May 2019 12:22:39 +0000 (14:22 +0200)]
migrate: log which local resource causes error

Signed-off-by: Tim Marx <t.marx@proxmox.com>
13 days agowhitespace cleanup
Tim Marx [Fri, 3 May 2019 12:22:38 +0000 (14:22 +0200)]
whitespace cleanup

Signed-off-by: Tim Marx <t.marx@proxmox.com>
2 weeks agobump version to 5.0-51
Thomas Lamprecht [Tue, 30 Apr 2019 14:08:27 +0000 (14:08 +0000)]
bump version to 5.0-51

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 weeks agocloudinit: use detected format in volname parsing
Thomas Lamprecht [Tue, 30 Apr 2019 13:24:53 +0000 (13:24 +0000)]
cloudinit: use detected format in volname parsing

keep the ?, as format is raw if no file ending is there, which we
want to handle too.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 weeks agofollowup: do not query size of image we just created
Thomas Lamprecht [Tue, 30 Apr 2019 13:09:21 +0000 (13:09 +0000)]
followup: do not query size of image we just created

we know the size, and even if a storage plugin pads this up (it
mustn't alloc something smaller, but something bigger can be OK) we
know that our 4MB is OK, and can only be used anyway to make this
compatible between storage plugins.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 weeks agofollowup: make ISO exists check a bit stricter
Thomas Lamprecht [Tue, 30 Apr 2019 13:07:55 +0000 (13:07 +0000)]
followup: make ISO exists check a bit stricter

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 weeks agofix #2173: use qemu-img to check cloudinit disk existence
Mira Limbeck [Tue, 30 Apr 2019 12:20:47 +0000 (14:20 +0200)]
fix #2173: use qemu-img to check cloudinit disk existence

use file_size_info to check for existence of cloudinit disk instead of
'-e'. It uses `qemu-img info` to get some file info, which can handle
rbd, and various other paths for volumes not exposed as normal file
or not mapped, yet.

this addresses a problem with rbd where the path returned available
is not checkable with '-e'.

Any size > 0 is interpreted as the image existing.

Signed-off-by: Mira Limbeck <m.limbeck@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 weeks agofix: #1075: Restore VM template to VM and try to convert to template.
Christian Ebner [Fri, 19 Apr 2019 10:06:07 +0000 (12:06 +0200)]
fix: #1075: Restore VM template to VM and try to convert to template.

The restore of a backup from a VM template will first restore the VM and then
convert the restored VM back into a template.
This automatically performes the steps of the current behaviour, where the user
has to manually convert the restored VM back to a template.

Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
3 weeks agocreate ci disk: long line cleanup
Thomas Lamprecht [Wed, 24 Apr 2019 13:33:32 +0000 (13:33 +0000)]
create ci disk: long line cleanup

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 weeks agofollowup: keep raw as default for non-path based stores
Thomas Lamprecht [Wed, 24 Apr 2019 13:27:16 +0000 (13:27 +0000)]
followup: keep raw as default for non-path based stores

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
4 weeks agofix #1829: Cloudinit ignore format parameter
Wolfgang Link [Tue, 16 Apr 2019 07:58:22 +0000 (09:58 +0200)]
fix #1829: Cloudinit ignore format parameter

When a Cloudinit image is created, we allow choosing
the format as parameter.
So, the parameter should also be taken into account.

The default for Cloudinit will stay qcow2 on directory storages.

5 weeks agofollowup: expand check_vm_modify_config_perm comment
Thomas Lamprecht [Fri, 12 Apr 2019 14:19:45 +0000 (16:19 +0200)]
followup: expand check_vm_modify_config_perm comment

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
5 weeks agoallow non root users to add spice usb port
Dominik Csapak [Fri, 12 Apr 2019 14:08:37 +0000 (16:08 +0200)]
allow non root users to add spice usb port

using the same logic like serialX: socket
users need VM.Config.HWType for usbX: spice
but only root can add/remove real devices

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
5 weeks agomove check for serialX: socket
Dominik Csapak [Fri, 12 Apr 2019 14:08:36 +0000 (16:08 +0200)]
move check for serialX: socket

since we do not want the user to change a device which has a real
devices already set, we have to check it later when we have the config

so we do not have to give the params to vm_check_modify_config_perm anymore

also improve the regex to \d+

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
5 weeks agofix #1811: allow non root user to edit serialX: socket entries
Dominik Csapak [Thu, 11 Apr 2019 11:39:49 +0000 (13:39 +0200)]
fix #1811: allow non root user to edit serialX: socket entries

use VM.Config.HWType for 'socket' and root@pam for real serial devices

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
6 weeks agocode cleanup
Thomas Lamprecht [Fri, 5 Apr 2019 15:37:18 +0000 (17:37 +0200)]
code cleanup

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 weeks agofix creating clone if target storage is same as source storage
Alwin Antreich [Fri, 5 Apr 2019 12:35:45 +0000 (14:35 +0200)]
fix creating clone if target storage is same as source storage

the clone API calls (target) 'storage' parameter is optional as we
simply use the source storage in this case, but we did not handle
this case when we added the bandwidth_limit abillity, address that.

This patch only pushes the storage parameter into the storage_list array
if it is defined.

Signed-off-by: Alwin Antreich <a.antreich@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 weeks agobump version to 5.0-50
Thomas Lamprecht [Thu, 4 Apr 2019 14:22:39 +0000 (16:22 +0200)]
bump version to 5.0-50

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 weeks agofollowup: remove unused variable and add spave between value and unit
Thomas Lamprecht [Tue, 2 Apr 2019 12:33:10 +0000 (14:33 +0200)]
followup: remove unused variable and add spave between value and unit

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 weeks agofollowup: reword bwlimit default wording
Thomas Lamprecht [Tue, 2 Apr 2019 08:37:40 +0000 (10:37 +0200)]
followup: reword bwlimit default wording

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
6 weeks agobwlimit: add parameter to API2 calls
Stoiko Ivanov [Mon, 1 Apr 2019 09:31:05 +0000 (11:31 +0200)]
bwlimit: add parameter to API2 calls

for migrate_vm, clone_vm and move_vm_disk and extract it. The 'migrate_vm' call
passes it to PVE::QemuMigrate->migrate for handling.

Additionally the bwlimit option's description of the 'create_vm' call gets
consistent capitalization of I/O.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
6 weeks agobwlimit: add parameter to QemuServer::clone_disk
Stoiko Ivanov [Mon, 1 Apr 2019 09:31:04 +0000 (11:31 +0200)]
bwlimit: add parameter to QemuServer::clone_disk

and pass it to qemu_drive_mirror (used for online disks).

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
6 weeks agobwlimit: add parameter for QemuMigrate::phase2
Stoiko Ivanov [Mon, 1 Apr 2019 09:31:02 +0000 (11:31 +0200)]
bwlimit: add parameter for QemuMigrate::phase2

used for online local disks via qemu_drive_mirror

Add TODO comment for offline disks, as clone_disk calls `qemu-img
convert`, which does not have a bandwidth limit parameter.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
6 weeks agobwlimit: add parameter to QemuMigrate::sync_disks
Stoiko Ivanov [Mon, 1 Apr 2019 09:31:00 +0000 (11:31 +0200)]
bwlimit: add parameter to QemuMigrate::sync_disks

used for offline migration of local volumes

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
6 weeks agobwlimit: add parameter to qemu_drive_mirror
Stoiko Ivanov [Mon, 1 Apr 2019 09:30:59 +0000 (11:30 +0200)]
bwlimit: add parameter to qemu_drive_mirror

used for online drive migrations, move_disk and clone calls.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
6 weeks agobwlimit: honor bwlimit for migrate qmp call
Stoiko Ivanov [Mon, 1 Apr 2019 09:30:58 +0000 (11:30 +0200)]
bwlimit: honor bwlimit for migrate qmp call

The 'migrate_speed' can be set in the VM config. Additionally the 'migrate'
bwlimit from datacenter.cfg (storage-specific limits play no role for
memory+state migration) or the parameter provided to the API call can restrict
the speed. Take the lower of the two.

This patch also refactors the setting of migrate_speed and comments for clarity.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
7 weeks agochange task name for suspend with and without disk
Dominik Csapak [Fri, 29 Mar 2019 09:44:31 +0000 (10:44 +0100)]
change task name for suspend with and without disk

so that we can differentiate in the gui

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
7 weeks agodrive mirror: cleanup exception handling code a bit
Thomas Lamprecht [Sat, 30 Mar 2019 08:36:30 +0000 (09:36 +0100)]
drive mirror: cleanup exception handling code a bit

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
7 weeks agofix #2100: ignore cloudinit drive on offline migration
Mira Limbeck [Fri, 29 Mar 2019 15:32:04 +0000 (16:32 +0100)]
fix #2100: ignore cloudinit drive on offline migration

disk is not copied to the target node but still deleted on cleanup
(phase3_cleanup).

Signed-off-by: Mira Limbeck <m.limbeck@proxmox.com>
Tested-by: Dominik Csapak <d.csapak@proxmox.com>
7 weeks agocloudinit: create disk if it does not exist on start
Mira Limbeck [Fri, 29 Mar 2019 15:32:03 +0000 (16:32 +0100)]
cloudinit: create disk if it does not exist on start

create a fixed size cloudinit disk if it is referenced in config and
does not exist. the size of the disk created when first added to the
config is reduced to 4MiB to match the one created in
commit_cloudinit_disk.
maximum file size per snippet file (network, user, meta) is increased to 1MiB.
preparation for offline migration without the cloudinit disk (that is
always regenerated on start).

also fixes #1807, although a further patch is required to change the
vmid on restore

Signed-off-by: Mira Limbeck <m.limbeck@proxmox.com>
Tested-by: Dominik Csapak <d.csapak@proxmox.com>
7 weeks agopartially revert 4efb58a - unquote configdrive2 ips
Mira Limbeck [Mon, 25 Mar 2019 11:34:44 +0000 (12:34 +0100)]
partially revert 4efb58a - unquote configdrive2 ips

configdrive2 uses /etc/network/interfaces style config instead of the
official yaml one. this does not allow quoting of the ip addresses.

Tested with Windows Server 2016.

Signed-off-by: Mira Limbeck <m.limbeck@proxmox.com>
8 weeks agobump version to 5.0-49
Thomas Lamprecht [Thu, 21 Mar 2019 11:56:02 +0000 (12:56 +0100)]
bump version to 5.0-49

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
8 weeks agoremove registering 'pve-snapshot-name', now in common
Thomas Lamprecht [Thu, 21 Mar 2019 11:53:45 +0000 (12:53 +0100)]
remove registering 'pve-snapshot-name', now in common

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
8 weeks agofollowup: which lock
Thomas Lamprecht [Thu, 21 Mar 2019 11:53:17 +0000 (12:53 +0100)]
followup: which lock

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 months agoadd lock to vm status
Dominik Csapak [Wed, 20 Mar 2019 10:29:01 +0000 (11:29 +0100)]
add lock to vm status

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 months agobump version to 5.0-48
Thomas Lamprecht [Tue, 19 Mar 2019 12:26:20 +0000 (13:26 +0100)]
bump version to 5.0-48

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 months agoapi/resume: allow to resume 'to-disk suspended' VMs
Thomas Lamprecht [Tue, 19 Mar 2019 11:57:08 +0000 (12:57 +0100)]
api/resume: allow to resume 'to-disk suspended' VMs

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Cc: Dominik Csapak <d.csapak@proxmox.com>
Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Dominik CSapak <d.csapak@proxmox.com>
2 months agoincrease timeout when resuming suspended VM
Dominik Csapak [Tue, 19 Mar 2019 08:17:31 +0000 (09:17 +0100)]
increase timeout when resuming suspended VM

when the state is on a slow storage, it can take a while to load it

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 months agosuspend: output some information about progress
Dominik Csapak [Tue, 19 Mar 2019 08:17:30 +0000 (09:17 +0100)]
suspend: output some information about progress

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 months agoadd correct comment about savevm-start
Dominik Csapak [Tue, 19 Mar 2019 08:17:29 +0000 (09:17 +0100)]
add correct comment about savevm-start

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 months agoadd statestorage parameter to suspend API
Dominik Csapak [Thu, 14 Mar 2019 16:04:50 +0000 (17:04 +0100)]
add statestorage parameter to suspend API

this makes it possible to give a storage for state saving, if one
wants to use a different storage than for snapshots or does not
want to save this info into the config

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 months agoadd ability to suspend a vm to disk from the api
Dominik Csapak [Thu, 14 Mar 2019 16:04:49 +0000 (17:04 +0100)]
add ability to suspend a vm to disk from the api

this enables the use of the suspend to disk code

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 months agoresume suspended vm on start
Dominik Csapak [Thu, 14 Mar 2019 16:04:48 +0000 (17:04 +0100)]
resume suspended vm on start

if a vm has the 'suspended' lock, we resume with the saved state
and remove the lock, the saved vmstate and the saved runningmachine
after the vm started

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 months agoimplement suspend to disk for running vms
Dominik Csapak [Thu, 14 Mar 2019 16:04:47 +0000 (17:04 +0100)]
implement suspend to disk for running vms

the idea is to have the same logic as with snapshots, but without
the snapshotting of the disks, and after saving the vm state (incl memory),
we hard shut off the guest.

this way the disks will not be touched anymore by the guest

to prevent any alteration of the vm (incl migration, hw changes, etc) we
add a config lock 'suspend'

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 months agocorrect comment about size
Dominik Csapak [Thu, 14 Mar 2019 16:04:46 +0000 (17:04 +0100)]
correct comment about size

and remove comment that makes no sense

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 months agod/control: bump version dependency of libpve-common-perl
Stoiko Ivanov [Tue, 12 Mar 2019 15:07:46 +0000 (16:07 +0100)]
d/control: bump version dependency of libpve-common-perl

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 months agoconfig: NIC macaddr: enforce unicast MAC addresses
Stoiko Ivanov [Tue, 12 Mar 2019 15:07:45 +0000 (16:07 +0100)]
config: NIC macaddr: enforce unicast MAC addresses

creating a VM with a NIC with multicast mac (see [1]) is possible, but setting
the interface's link up inside the guest fails (tested on Debian stable).
The issue was noted with LXC first (see [0,2]) and then tested with Qemu.

This patch uses the 'mac-addr' standard_option defined in PVE::JSONSchema to
ensure only unicast MAC addresses are used for netconfig.

[0] https://lists.linuxcontainers.org/pipermail/lxc-users/2010-August/000783.html
[1] https://en.wikipedia.org/wiki/MAC_address
[2] https://pve.proxmox.com/pipermail/pve-devel/2019-March/035996.html

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 months agofix #2131: get correct device when deleting iothreads
Dominik Csapak [Wed, 13 Mar 2019 16:28:04 +0000 (17:28 +0100)]
fix #2131: get correct device when deleting iothreads

we map scsiX to virtioscsiX/scsihwX when we use virtio-scsi-single to add
and iothread so we have to map it back when we delete an iothread, else the
parsing fails with

'invalid drive key: virtioscsi0'

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 months agofix #2120: use hosts initiator name with qemu-img
Dominik Csapak [Thu, 7 Mar 2019 12:43:11 +0000 (13:43 +0100)]
fix #2120: use hosts initiator name with qemu-img

qemu-img uses the qemu default initiator name 'iqn.2008-11.org.linux-kvm'
since we use the one of the host (/etc/iscsi/initiatorname.iscsi) when
using it with a running vm, we want to using it also when moving a disk
with qemu-img

to do that we have give qemu-img the image in as a full option string

this fixes the issue that we could not move an zfs-over-iscsi disk
without allowing the default qemu initiator

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 months agocloud-init: allow custom network/user data files via snippets
David Limbeck [Thu, 7 Feb 2019 14:12:35 +0000 (15:12 +0100)]
cloud-init: allow custom network/user data files via snippets

Adds the 'cicustom' option to specify either or both network and user
options as property strings. Their parameters are files in a snippets
storage (e.g. local:snippets/network.yaml). If one or both are specified
they are used instead of their respective generated configuration.
This allows the use of completely custom configurations and is also a
possible solution for bug #2068 by specifying a custom user file that
contains package_upgrade: false.

Tested with Ubuntu 18.10 and cloud-init 18.4.7

Signed-off-by: David Limbeck <d.limbeck@proxmox.com>
2 months agobump version to 5.0-47
Thomas Lamprecht [Mon, 4 Mar 2019 09:09:23 +0000 (10:09 +0100)]
bump version to 5.0-47

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 months agofix indentation and trailing whitespace
Dominik Csapak [Thu, 28 Feb 2019 08:16:00 +0000 (09:16 +0100)]
fix indentation and trailing whitespace

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 months agofix #2114: set correct link status on hotplug
Dominik Csapak [Thu, 28 Feb 2019 08:15:59 +0000 (09:15 +0100)]
fix #2114: set correct link status on hotplug

we also need to set the link status if the whole device changed,
otherwise a change of macaddress allows a network connection even
if link_down is set to 1

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 months agocode cleanup
Thomas Lamprecht [Tue, 26 Feb 2019 07:21:04 +0000 (08:21 +0100)]
code cleanup

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 months agoivmshmem: comment deletion of shm on VM stop in code
Thomas Lamprecht [Tue, 26 Feb 2019 07:20:37 +0000 (08:20 +0100)]
ivmshmem: comment deletion of shm on VM stop in code

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 months agoivmshmem: follouwp code cleanup
Thomas Lamprecht [Tue, 26 Feb 2019 07:09:43 +0000 (08:09 +0100)]
ivmshmem: follouwp code cleanup

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 months agoadd ivshmem device to config
Dominik Csapak [Fri, 22 Feb 2019 10:38:33 +0000 (11:38 +0100)]
add ivshmem device to config

with such a shared memory device, a vm can share data with other
vms or with the host via memory

one of the use cases is looking-glass[1] with pci-passthrough, which copies
the guest fb to the host and you get a high-speed, low-latency
display client for the vm

on vm stop we delete the file again

1: https://looking-glass.hostfission.com/

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 months agoFix 2097 allow to set and pass wwn parameter for ide, sata and scsi disks
Christian Ebner [Mon, 25 Feb 2019 16:30:48 +0000 (17:30 +0100)]
Fix 2097 allow to set and pass wwn parameter for ide, sata and scsi disks

This allows to set the wwn parameter for ide, sata and scsi disks in the VM
config and passes it to the qemu command on execution.

VirtIO Block does not supports this property, so exclude it from
there.

Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 months agod/control: bump version dependency to pve-doc-generator
Thomas Lamprecht [Fri, 22 Feb 2019 12:31:32 +0000 (13:31 +0100)]
d/control: bump version dependency to pve-doc-generator

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 months ago1891 Add zsh command completion for qm and qmrestore
Christian Ebner [Thu, 21 Feb 2019 13:25:04 +0000 (14:25 +0100)]
1891 Add zsh command completion for qm and qmrestore

This adds the zsh command completion for qm and qmrestore.

Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
2 months agofix #2101: ipv6 ending in ':' not parsed as a string
David Limbeck [Thu, 21 Feb 2019 15:18:53 +0000 (16:18 +0100)]
fix #2101: ipv6 ending in ':' not parsed as a string

Space or newline after ':' is recognized as a mapping and as a result an
ipv6 ending in ':' is not parsed as a string. The solution is to quote
the address. For consistency all other addresses (including mac) are
quoted.

Signed-off-by: David Limbeck <d.limbeck@proxmox.com>
2 months agofollowup whitespace fixes
Thomas Lamprecht [Wed, 20 Feb 2019 06:34:10 +0000 (07:34 +0100)]
followup whitespace fixes

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 months agoQemuMigrate : cleanup identation
Alexandre Derumier [Wed, 20 Feb 2019 00:25:51 +0000 (01:25 +0100)]
QemuMigrate : cleanup identation

2 months agomemory: fix automatic num amapping
Wolfgang Bumiller [Mon, 18 Feb 2019 09:45:16 +0000 (10:45 +0100)]
memory: fix automatic num amapping

when no numaX config options were present we returned the
hash as a list instead of a hash reference...

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 months agoUse nr_hugepages from /proc/cmdline
Kamil Trzciński [Sun, 17 Feb 2019 12:39:37 +0000 (13:39 +0100)]
Use nr_hugepages from /proc/cmdline

Currently Proxmox VE always deallocates HugePagesTLB
when starting a new machine and it makes it impossible
to preconfigure kernel /proc/cmdline with persistent allocation.

This change makes deallocation to prefer defaults set by /proc/cmdline,
by parsing the cmdline and respecting hugepages= and hugepagesz=.

Signed-off-by: Kamil Trzciński <ayufan@ayufan.eu>
3 months agofix #2043: vm start: always stop existing systemd scopes
Thomas Lamprecht [Tue, 5 Feb 2019 08:40:17 +0000 (09:40 +0100)]
fix #2043: vm start: always stop existing systemd scopes

commit 3c23aa808ccc946bad92d9bc63b6f833c61d0f52 tried to fix a issue
where after a stop mode backup a scope could still linger around, but
it actually removed the wrong check. If we want to remove a
lingering, not yet cleaned up, scope we need to check if said scope
exists not if a VM process is still running. While they are corelated
the scope will always get cleaned up _after_ it's processes are gone.

Should fix #2043, but as this is seemingly not that easy to fix one
for all I'll put the should as disclaimer here.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Cc: Wolfgang Bumiller <w.bumiller@proxmox.com>
3 months agod/control: bump version dependency of libpve-guest-common-perl
Thomas Lamprecht [Fri, 1 Feb 2019 12:15:08 +0000 (13:15 +0100)]
d/control: bump version dependency of libpve-guest-common-perl

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 months agobump version to 5.0-46
Thomas Lamprecht [Fri, 1 Feb 2019 12:05:50 +0000 (13:05 +0100)]
bump version to 5.0-46

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 months agod/control: bump version dependency of libpve-guest-common-perl
Thomas Lamprecht [Fri, 1 Feb 2019 12:03:44 +0000 (13:03 +0100)]
d/control: bump version dependency of libpve-guest-common-perl

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 months agoadd pre- start/stop hookscripts to VMs
Dominik Csapak [Thu, 31 Jan 2019 13:33:39 +0000 (14:33 +0100)]
add pre- start/stop hookscripts to VMs

this adds a new config option for it, and executes it on four
points in time:

'pre-start'
'post-start'
'pre-stop'
'post-stop'

on pre-start we abort if the script fails
and pre-stop will not be called if the vm crashes or if
the vm gets powered off from inside the guest

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
3 months agod/cointrol is not autogenerated anymore, remove from .gitignore
Thomas Lamprecht [Thu, 31 Jan 2019 11:10:47 +0000 (12:10 +0100)]
d/cointrol is not autogenerated anymore, remove from .gitignore

a bit ago we had a control.in file which generated the control one,
so we added the build result to the list of git ignored files.

This is not the case anymore.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 months agofollowup code cleanup
Thomas Lamprecht [Wed, 30 Jan 2019 14:08:15 +0000 (15:08 +0100)]
followup code cleanup

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 months agofix some indentaion errors
Thomas Lamprecht [Wed, 30 Jan 2019 14:07:56 +0000 (15:07 +0100)]
fix some indentaion errors

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 months agoFix #1924: add snapshot parameter
Rhonda D'Vine [Wed, 30 Jan 2019 13:43:38 +0000 (14:43 +0100)]
Fix #1924: add snapshot parameter

The qm CLI command offer the config and showcmd functions. Both of those
outputs may vary with respect to a given snapshot. This adds a switch
that shows the corresponding snapshot's config and command line.

The code needs a newer libpve-guest-common-perl, thus bumping the
dependency.

Signed-off-by: Rhonda D'Vine <rhonda@proxmox.com>
3 months agoallow explicit set vga with gpu passthrough
Dominik Csapak [Mon, 21 Jan 2019 14:56:54 +0000 (15:56 +0100)]
allow explicit set vga with gpu passthrough

this patch allows the user to explicitely set a virtual vga,
even when using the 'x-vga' flag, this is sometimes necessary,
as some users need the 'x-vga' flag on the pci device,
but still want to use a virtual vga

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
3 months agoapi/create: print correct error message if cleanup fails
Thomas Lamprecht [Sat, 26 Jan 2019 13:39:38 +0000 (14:39 +0100)]
api/create: print correct error message if cleanup fails

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 months agofollowup: HV ID description
Thomas Lamprecht [Fri, 25 Jan 2019 16:10:49 +0000 (17:10 +0100)]
followup: HV ID description

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 months agoallow explicit hv-vendor-id
Dominik Csapak [Mon, 21 Jan 2019 14:56:53 +0000 (15:56 +0100)]
allow explicit hv-vendor-id

with this, a user can set the hv_vendor_id independently of
any 'x-vga=on' setting he may or may not have configured.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
3 months agobump version to 5.0-45
Thomas Lamprecht [Mon, 21 Jan 2019 09:42:34 +0000 (10:42 +0100)]
bump version to 5.0-45

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
4 months agomigrate: fix local disk migration with online VMs
Thomas Lamprecht [Thu, 17 Jan 2019 09:53:36 +0000 (10:53 +0100)]
migrate: fix local disk migration with online VMs

commit 4530494bf9f3d45c4a405c53ef3688e641f6bd8e introduced an
regression with local disk migrations if the VM is online and thus
needs to live migrated and no target storage was passed as parameter.

We made the hack to write "1" to the targetstorage option in this
case obsolete, but it was still used on deciding if there are any
drives to mirror at all. Here it is enough to check if there are any
'online_local_volumes' because that hash gets only filled if we can
and are told to live mirror local disk on migrations anyway. Also,
we abort early if local disks are found and the 'with-local-disks'
option is not set.

This was reported at:
https://forum.proxmox.com/threads/livemigration-with-localdisk-doesnt-coppy-and-data-from-the-hdds-anymore.50744/

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
4 months agofix #2003: give 'qm terminal' a terminal over ssh
Dominik Csapak [Thu, 29 Nov 2018 09:51:50 +0000 (10:51 +0100)]
fix #2003: give 'qm terminal' a terminal over ssh

this prevents a connection loop when using novnc on a vm with
vga: serialX
when proxying via ssh

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
4 months agovnc/termproxy: use ssh_info_to_command for ssh tunnel
Dominik Csapak [Thu, 29 Nov 2018 09:51:49 +0000 (10:51 +0100)]
vnc/termproxy: use ssh_info_to_command for ssh tunnel

this way we have two places less where we define a ssh cmd

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
4 months agoconfig2command test: mock kernel_has_vhost_net
Thomas Lamprecht [Thu, 20 Dec 2018 09:44:13 +0000 (10:44 +0100)]
config2command test: mock kernel_has_vhost_net

just return true for now, the use is guarded by an 'is_native($arch)'
check anyway.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
4 months agoconfig2command test: diff: use /proc/self/fd
Thomas Lamprecht [Thu, 20 Dec 2018 09:38:07 +0000 (10:38 +0100)]
config2command test: diff: use /proc/self/fd

/dev/fd works only through some compatibility hacks in some shells,
use the correct one for Linux: /proc/self/fd/*

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
4 months agoconfig2command test: mock kvm_version too
Thomas Lamprecht [Thu, 20 Dec 2018 09:27:21 +0000 (10:27 +0100)]
config2command test: mock kvm_version too

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
4 months agobump version to 5.0-44
Thomas Lamprecht [Thu, 20 Dec 2018 09:18:48 +0000 (10:18 +0100)]
bump version to 5.0-44

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>